「OpenMPでSIMDを有効にする」の版間の差分
提供: C言語入門
(ページの作成:「OpenMP 4.0で導入された主要な機能の1つは、ベクトル化/SIMD です。 '''読み方''' ;SIMD:えすあいえむでぃ ;Single Instruction Multiple...」) |
|||
行4: | 行4: | ||
;SIMD:えすあいえむでぃ | ;SIMD:えすあいえむでぃ | ||
;Single Instruction Multiple Data:しんぐる いんすとらくしょん まるちぷる でーた | ;Single Instruction Multiple Data:しんぐる いんすとらくしょん まるちぷる でーた | ||
+ | ;ベクトル化:べくとる か | ||
+ | ;ベクトル演算:べくとる えんざん | ||
__TOC__ | __TOC__ | ||
2016年1月21日 (木) 00:59時点における最新版
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 ...