Programmation basée sur les tâches: #pragma omp tâche versus #pragma omp parallèle pour

Considérant :

    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];
      }
    }

Et

    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];
         }
      }
   }

Quelle est la différence à l'aide de tâches et l'omp parallel directive ? Pourquoi peut-on écrire des algorithmes récursifs tels que la fusion de tri avec des tâches, mais pas avec un partage des tâches ?

source d'informationauteur user1511956