Intel® Fortran Compiler 16.0 User and Reference Guide
This topic only applies to Intel® Many Integrated Core Architecture (Intel® MIC Architecture).
Some CPU APIs have offload equivalents, each of which take two additional arguments to specify the target type and target number, defined by the following arguments:
The mic_lib.f90 header file defines all the function calls that can be made from the CPU to affect the coprocessor's environment.
This topic uses the CPU API omp_set_num_threads and its offload variations as an example. See also the topics listed below for more CPU APIs.
CPU API |
---|
subroutine omp_set_num_threads (num_threads) & bind (C, name = "omp_set_num_threads") import :: c_int integer (kind=c_int), value :: num_threads end subroutine omp_set_num_threads |
Offload API |
---|
subroutine omp_set_num_threads_target (target_type, & target_number, & num_threads) & bind (C, name = "omp_set_num_threads_target") import :: c_int integer (kind=c_int), value :: target_type, target_number, num_threads end subroutine omp_set_num_threads_target |
use mic_lib use omp_lib integer :: result, value value = 66 call omp_set_num_threads_target & (TARGET_MIC, 0, value) !DIR$ OMP OFFLOAD target(mic) out(result) !$omp parallel !$omp master result = omp_get_num_threads() !$omp end master !$omp end parallel print "(A, I)", "Number of threads on target", result stop end