Research Article
Locality-Aware Task Scheduling and Data Distribution for OpenMP Programs on NUMA Systems and Manycore Processors
Listing 2
Program using the proposed interface for selecting data distribution policies.
int main(…) { | … | /* Allocate data */ | size_t sz = 8 * UNIT_SIZE; | /* NUMA system: UNIT_SIZE = PAGE_SIZE */ | /* TILEPro64: UNIT_SIZE = PAGE_SIZE/CACHE_LINE_SIZE */ | void* A = omp_malloc(sz); | void* B = omp_malloc(sz); | void* C = omp_malloc_specific(sz, OMP_MALLOC_COARSE); | void* D = omp_malloc_specific(sz, OMP_MALLOC_COARSE); | void* E = omp_malloc_specific(sz, OMP_MALLOC_FINE); | /* Initialize data */ | init(A, B, C, D, E, sz, …); | /* Work in parallel */ | #pragma omp parallel | { | … | | … | | export OMP_DATA_DISTRIBUTION=<standard fine coarse> | <invoke program> |
|