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> |
|