考慮:
void saxpy_worksharing(float* x, float* y, float a, int N) {
#pragma omp parallel for
for (int i = 0; i < N; i++) {
y[i] = y[i]+a*x[i];
}
}
と
void saxpy_tasks(float* x, float* y, float a, int N) {
#pragma omp parallel
{
for (int i = 0; i < N; i++) {
#pragma omp task
{
y[i] = y[i]+a*x[i];
}
}
}
tasks と omp parallel ディレクティブを使用する違いは何ですか? マージソートなどの再帰アルゴリズムをタスクで記述できるのに、ワークシェアリングでは記述できないのはなぜですか?