首先,VS中设置步骤:
工程属性 —> C/C++ —> language 中的Open MP Suport中选择Yes 就OK了。
之后在for循环前加 #pragma omp parallel for num_thread(n) ,其中这里的n是你要开的线程数。
需要注意的问题:
(1)这里的for训练中不要有太多无关变量:
例如:
#pragma omp parallel for num_thread(2)
for(int i, size_x = @; i<size_x; i+=strip_size),这样就会报错。
需要分开写:intsize_x = @;
#pragma omp parallel for num_thread(n)
for(int i; i<size_x; i+=strip_size)
(2)size_x不能为float,double等类型,需要为int,可以前面加(int)size_x。
最后给一段小程序,感受一下:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void test()//纯粹浪费时间
{
int add = 0;
for (int runtime = 0; runtime < 100000000; runtime++)
add++;
printf("%d\n", add);
}
void main()
{
int beginClock = clock();//记录开始时间
#pragma omp parallel for
for (int testtime = 0; testtime<8; testtime++)
{
test();//运行计算
}
printf("运行时间为:%dms\n", clock() - beginClock);//输出图像处理花费时间信息
system("pause");
}