たとえば、n要素のベクトルとn_threadを利用できます。 #pragma omp parallel
を使用して、各スレッドがn/n_threadsチャンクサイズ( )を受け取り、最後にもう1つをケースに応じて使用するようにします。OpenMPはランタイム・パラメータに基づいてチャンクの固定サイズを設定します
#include <stdio.h>
#include <omp.h>
int main()
{
int *v = malloc (n * sizeof(int));
#pragma omp parallel for (what should i put here?)
for(i = 0; i < n; ++i)
{
++v[i];
}
return 0;
}
例:N = 10003、n_threads = 2500のチャンク2500のチャンクを取得する必要thread_2
が- 4チャンク
私は、実行時のベクトルサイズだけを知っています(暗黙的にもchunk_sizeも)。私はpthreadsの使用を避けようとしていましたが、私が今必要なことを行うためにopenmpを使用することはできないようです。 –
GNU OpenMPランタイムが、Mac OS X上の4つのスレッド間で 'schedule(static)'の繰り返しを103回スケジューリングする例を示します:スレッド0 - 26反復、スレッド1 - 26反復、スレッド2 - 26反復、 25反復。すべての反復は連続しています。 –