使用vs直接到setting里面设置即可支持openmp了,然而我太懒了装了个codeblocks with mingw版本
本来gcc4.4后就完全支持openmp了,结果codeblocks怎么配置都提示-fopenmp这些找不到。
搞了一上午终于发现,虽然mingw支持openmp但是在codeblocks安装过程中并不让装这些组件,需要自己装个tdm-gcc with mingw,蛋疼╮(╯▽╰)╭
配置流程:
1)下载tdm-gcc,安装的时候注意默认openmp支持是没有勾选的,记得勾选起来,要么安装全部组件...
路径的话安装的时候会自己配置,没有的话自己搞一下
2)安装codeblocks(不用带mingw了)
3)Settings->compiler里设置codeblocks编译器路径
4)Setting->compiler->Compiler settings->other options里输入-fopenmp
Setting->compiler->linker settings->other linker options里输入-lgomp -lpthread
5)至此配置完毕_(:зゝ∠)_ 写一下代码试试看
#include "omp.h" #include <iostream> #include <time.h> void test() { int a = 0; for (int i=0;i<100000000;i++) a++; } int main() { clock_t t1 = clock(); for (int i=0;i<8;i++) test(); clock_t t2 = clock(); std::cout<<"sequential time: "<<t2-t1<<std::endl; clock_t t3 = clock(); #pragma omp parallel for for (int i=0;i<8;i++) test(); clock_t t4 = clock(); std::cout<<"parallel time: "<<t4-t3<<std::endl; return 0; }
运行结果发现串行和并行运行时间还是有区别的!
还有一点是编译时候我是debug模式编译的,用release模式编译时间就全部都是0了(因为速度太快了....)
原文:http://www.cnblogs.com/IvanSSSS/p/4928783.html