「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 ...

実行例

 

関連項目