関数の例(例を以下に示します)を考えると、forループは、OpenMPを使用して並列化するか、ベクトル化を使用してベクトル化することができます(コンパイラーがベクトル化を行うと仮定)。
例
void function(float* a, float* b, float* c, int n)
{
for(int i = 0; i < n; i++)
{
c[i] = a[i] * b[i];
}
}
私が知りたいのですが
- OpenMPとVectorizationのパフォーマンスに違いがあるかどうか
- どちらか一方を使用することに利点はありますか?
- OpenMPとベクトル化の両方を一緒に使用する可能性はありますか?
注: SSEのバージョンの違い、プロセッサー/コアの数(OpenMPではスレッドの数が増えるため)などについては説明しませんでした...私の質問は一般的なものです。答えもより具体的にすることができます。