OpenMPでSIMDを有効にする

提供: C言語入門
2016年1月21日 (木) 00:59時点におけるDaemon (トーク | 投稿記録)による版

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索
スポンサーリンク

OpenMP 4.0で導入された主要な機能の1つは、ベクトル化/SIMD です。

読み方

SIMD
えすあいえむでぃ
Single Instruction Multiple Data
しんぐる いんすとらくしょん まるちぷる でーた
ベクトル化
べくとる か
ベクトル演算
べくとる えんざん

概要

OpenMP 4.0から、C言語やC++言語のプログラムをプラグマを用いて、明示的にSIMDに変換するように指示できます。

ベクトル化とは

ベクトル命令化 は、コンパイル時にループをベクトル演算命令に変換することです。

配列(ベクトル)をループで1つ1つ計算するようなコードを、ベクトル演算に変換して高速化できる場合があります。

SIMD(ベクトル演算)とは

SIMD (Single Instruction Multiple Data) とは、命令1つで、複数のデータ列を処理します。この演算は、パック演算ベクトル演算と呼ばれています。

ソースコード

simd construct は、「ループがSIMD ループに変換できること」を示すために、ループに対して適用できます。

#pragma omp simd
	for-loops

loop SIMD construct は、SIMD命令を使用して、並列に実行できるループを明示します。

#pragma omp for simd
	for-loop

コンパイル

gcc5 -fopenmp ...

実行例

 

関連項目




スポンサーリンク