zhang0311的专栏

Intel编译器include文件夹下有MIC的头文件:offload.h

列举几个常用的函数说明:

_Offload_number_of_devices() //获取MIC数目

_Offload_get_device_number() //获取MIC编号

omp_get_max_threads_target(TARGET_MIC, 0) //获取MIC上可以最多支持的线程数

omp_get_num_procs_target(TARGET_MIC, 0) //获取MIC上的处理器数目

测试代码:

#include <stdio.h>#include "offload.h"int main(int argc, char **argv){ printf("_Offload_number_of_devices()=%d\n",_Offload_number_of_devices()); printf("host: _Offload_get_device_number()=%d\n",_Offload_get_device_number()); printf("host: _Offload_get_physical_device_number()=%d\n\n",_Offload_get_physical_device_number()); if(_Offload_number_of_devices()>=1) {#pragma offload target(mic:0) { printf("mic0: _Offload_get_device_number()=%d\n",_Offload_get_device_number()); printf("mic0: _Offload_get_physical_device_number()=%d\n\n",_Offload_get_physical_device_number()); } } if(_Offload_number_of_devices()>=2) {#pragma offload target(mic:1) { printf("mic1: _Offload_get_device_number()=%d\n",_Offload_get_device_number()); printf("mic1: _Offload_get_physical_device_number()=%d\n\n",_Offload_get_physical_device_number()); } } printf("omp_get_max_threads_target(TARGET_MIC, 0)=%d\n",omp_get_max_threads_target(TARGET_MIC, 0)); printf("omp_get_num_procs_target(TARGET_MIC, 0)=%d\n\n",omp_get_num_procs_target(TARGET_MIC, 0)); return 0;}

运行结果:

_Offload_number_of_devices()=2host: _Offload_get_device_number()=-1host: _Offload_get_physical_device_number()=-1omp_get_default_device()=0omp_get_num_devices()=2omp_get_max_threads_target(TARGET_MIC, 0)=240 //7110P上运行的结果,,7110P有61个核,1个运行uos,其它每个核上可以运行4个线程,所以这里显示的是240omp_get_num_procs_target(TARGET_MIC, 0)=240 mic1: _Offload_get_device_number()=1mic1: _Offload_get_physical_device_number()=1mic0: _Offload_get_device_number()=0mic0: _Offload_get_physical_device_number()=0

设置环境变量:

export MIC_ENV_PREFIX=MIC

export MIC_OMP_NUM_THREADS=180

再次运行结果:

_Offload_number_of_devices()=2host: _Offload_get_device_number()=-1host: _Offload_get_physical_device_number()=-1omp_get_default_device()=0omp_get_num_devices()=2omp_get_max_threads_target(TARGET_MIC, 0)=180 //环境变量MIC_OMP_NUM_THREADS改变omp_get_max_threads_target的值omp_get_num_procs_target(TARGET_MIC, 0)=240mic1: _Offload_get_device_number()=1mic1: _Offload_get_physical_device_number()=1mic0: _Offload_get_device_number()=0mic0: _Offload_get_physical_device_number()=0

读书破万卷,下笔如有神。

zhang0311的专栏

相关文章:

你感兴趣的文章:

标签云: