英特尔优化大赛参赛选手经验分享
我就谈一下自己学到的OpenMP的知识:
1、OpenMP中设置线程的2种方法:
(1)使用 OpenMP 编译提示语句
#omp parallel num_threads(n)
n为下面并行语句块中的线程数
(2)使用 OpenMP API函数来设置环境变量,需要用到2个函数和1个头文件
#include <omp.h> //正确Intel编译器环境后应该可以找到这个头文件
int num_threads;
num_threads = omp_get_num_procs(); //这个函数取得CPU个数
omp_set_num_threads(num_threads); //设置线程后,遇到#omp parallel编译指示就能开启线程了
// 这里将CPU个数设为生成的线程数,可以检测到双核,当然可以根据需要自行设定
2、关于线程的优先级
OpenMP线程不像本地线程可以直接设定优先级,但是可以通过提高原进程的优先级来提高线程优先级
使用函数SetPriorityClass,相关内容在windows SDK中有说明。
作者:李子东