Calling Functions on the CPU to Modify the Coprocessor's Execution Environment

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:


target_type is static. It is recommended to use the following pre-defined default:



The specific coprocessor to target.

An expression whose value is interpreted as follows:


Executes the statement on a specified target according to the following formula:

target = target-number % number_of_targets

For example, in a system with four targets:

  • Specifying 2 or 6 tells the runtime systems to execute the code on target 2, because the result of 2 % 4 and 6 % 4 is 2.

  • Specifying 1000 tells the runtime systems to execute the code on target 0, because the result of 1000 % 4 is 0.

-1 or no value

Executes the statements on a target selected by the runtime system.



The offload.h 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.


void omp_set_num_threads (int num_threads);
Offload API
void omp_set_num_threads_target (TARGET_TYPE target_type, int target_number, int num_threads);
#include "offload.h"
#include "omp.h"
#include <stdio.h>

int main()
        int value, result;

        value = 66;
        omp_set_num_threads_target(TARGET_MIC, 0, value);
        #pragma offload target(mic) out(result)
        #pragma omp parallel
        #pragma omp master
        result = omp_get_num_threads();

        printf("Number of threads on target %d\n", result);
        if (result != value) {
          printf("failed1 result=%d, value=%d\n", result, value);
          return 1;
        return 0;
For more complete information about compiler optimizations, see our Optimization Notice.