C# Parallel.For を使用して次の OpenMP コードに実装する方法
OpenMP コード
#pragma omp parallel
{
float[] data = new float[1000];
#pragma omp for
for(int i = 0; i < 500; i++)
{
for(int j = 0; j < 1000; j++)
{
data[j] =100;
// do some computation using data
}
}
}
私も次のことを試しましたが、それは OpenMP コードが行うこととまったく同じではありませんでした。openMP コードでは、スレッドごとにメモリを割り当て、ネストされたループの計算を実行します。以下のコードは、実際にはスレッドごとではなく i ごとにメモリを割り当て、計算を実行します。
Parallel.For(0, 500, i =>
{
float[] data = new float[1000];
for(int j = 0; j < 1000; j++)
{
data[j] =100;
// do some computation using data
}
});