Research Article

SPOT: A DSL for Extending Fortran Programs with Metaprogramming

Table 3

Examples of calling OpenMP functions of SPOT.

TypeExampleTransformation effect

Pair directivesOmpUseParallel(startStmt, endStmt,
Private(var1, var2), Shared(var3),)
!$OMP PARALLEL PRIVATE(var1, var2)
SHARED(var3)
startStatement
other sequential code
endStatement
!$OMP END PARALLEL

Single directivesOmpUseBarrierBefore(targetStmt)!$OMP BARRIER
targetStatement
other equential code

Runtime library callsOmpGetNumThreads(var)var = omp_get_num_threads( )