Research Article

Locality-Aware Task Scheduling and Data Distribution for OpenMP Programs on NUMA Systems and Manycore Processors

Listing 1

Parallel map implemented using OpenMP tasks.
/* Allocate and initialize data */
for(int i=0; i<N; i++) {
  list[i] = malloc(sizeof(int) * SZ);
  initialize(i, list[i], SZ);
/* Work in parallel */
for(int i=0; i<N; i++) {
#pragma omp task input(list[i][0:SZ-1])
  map(list[i], SZ);
#pragma omp taskwait