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