在选择上面的选项之后,直接可以用“#pragma omp parallel for”标示给代码中的for循环加速,实例如下:
#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"); }在本人的四核八线程i7 CPU上,其运行消耗时间为261ms,如果删除掉“#pragma omp parallel for”,则运行花费时间为1816ms,相差接近七倍,而如果把main里面的循环次数改为9次,则花费时间变为477ms,可见其正的用上了CPU能支持的最多线程数(八条线程)进行了处理。
#include <stdio.h> #include <time.h> #include <stdlib.h> void test(int time)//纯粹浪费时间 { int add = 0; for (int runtime = 0; runtime < 100000000; runtime++) add++; printf("%d\n", time); } void main() { int beginClock = clock();//记录开始时间 /*并行内容*/ #pragma omp parallel sections { #pragma omp section { test(1); } #pragma omp section { test(2); } #pragma omp section { test(3); } #pragma omp section { test(4); } } /*并行内容*/ printf("运行时间为:%dms\n", clock() - beginClock);//输出图像处理花费时间信息 system("pause"); }运行时间是211ms,也比单线程运行快了不少实现了并行加速。
原文:http://blog.csdn.net/weixinhum/article/details/44465231