`
ihuashao
  • 浏览: 4813650 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

在Windows下使用MingGW[GCC+OpenMP]和CodeBlocks开发多核应用基本环境配置

阅读更多

从06年开始,多核开发已经越来越多的成为所有应用设计必须考虑的问题。我使用MingGW+CodeBlocks来测试OpenMP多核计算框架。虽然VC8里面已经有了对OpenMP的支持,但是VC体积有点大,而且众所周知的MS编译器在兼容性上的问题,所以决定采用标准的GCC来做开发。

OpenMP只是并行开发的一种库,支持多核开发本质是将原本单线程的程序或算法变成多线程执行。OpenMP采用了类似Java的Annotation的方法来支持自动将任务转换成多线程,例如如果你的机器是双核的,自动将一个10000次的for循环自动分成两个5000次的循环,如果你的机器是四核的,则自动分成4个2500次的循环。

1 安装MingGW

GCC目前最稳定的版本是3.4.5,此外4.3.0里面默认对OpenMP进行支持。因此最好在机器上同时装两个版本。

Windows下使用GCC可以使用MingGW和Cygwin,我个人认为Cygwin过于庞大了,所以选用MingGW。

https://sourceforge.net/project/showfiles.php?group_id=2435中下载MingGW

对于GCC3一般下载以下几个包:下载到C:\MinGW3目录中,然后直接解压到当前目录下。

mingw-runtime-3.9.tar.gz

gcc-core-3.4.5-20060117-3.tar.gz

gcc-g++-3.4.5-20060117-3.tar.gz

gdb-6.8-mingw-3.tar.bz2

w32api-3.12-mingw32-dev.tar.gz

binutils-2.19-mingw32-rc1-bin.tar.gz

gdb-6.8-mingw-3.tar.bz2

但是由于要开发OpenMP,所以还要再使用GCC4,一般包括以下几个包,从加粗的部分可以看到,最大的区别是gcc核心库的版本。下载到C:\MinGW4目录中,然后直接解压到当前目录下。

mingw-runtime-3.9.tar.gz

gcc-4.3.0-20080502-mingw32-alpha-bin.tar.gz

gdb-6.8-mingw-3.tar.bz2

w32api-3.12-mingw32-dev.tar.gz

binutils-2.19-mingw32-rc1-bin.tar.gz

gdb-6.8-mingw-3.tar.bz2

MingGW安装好之后,将C:\MingGW\bin 加入到PATH变量里面就可以在命令行下面是用GCC了。

2 CodeBlocks

这是MingGW官方Wiki里面推荐的开源IDE,我试用了一下,基本编译调试都没有什么问题。

请到以下地址下载http://www.codeblocks.org/downloads/5

安装好之后,在菜单Settings -> Compiler and debugging settings里面的Toolchain executables里面,可以切换不同的GCC版本。

3 使用OpenMP

如果想让编译器能够编译OpenMP,首先在上面的配置中,使用C:\MinGW4.

然后再Compiler settings里面的Other Options里面填入-fopenmp

在Linker settings里面的Other linker Options里面填入-lgomp -lpthread

如果在命令行下编译,可以使用命令

g++ -fopenmp main.cpp -lgomp -lpthread -o main.exe

注意如果发生一些找不到引用的错误,多办的可能就是没有加上-lgomp -lpthread

好,到此位置,我们就可以开发OpenMP应用了,下面给出几个例子,都是网上的,不过我稍微改了一下:

  1. #include<stdio.h>
  2. #include<omp.h>
  3. #include<time.h>
  4. usingnamespacestd;
  5. voideg_print()
  6. {
  7. #pragmaompparallel
  8. printf("[%d]Hello\n",omp_get_thread_num());
  9. }
  10. voideg_for()
  11. {
  12. #pragmaompparallelfor
  13. for(inti=0;i<10;i++)
  14. {
  15. printf("i=%d\n",i);
  16. }
  17. }
  18. voideg_long_for()
  19. {
  20. intc=0;
  21. clock_tt1=clock();
  22. for(inti=0;i<1000000000;i++)
  23. {
  24. c++;
  25. }
  26. clock_tt2=clock();
  27. printf("Count=%d,t2=%d,t1=%d,Time=%d\n",c,t2,t1,t2-t1);
  28. }
  29. intmain()
  30. {
  31. //eg_print();
  32. //eg_for();
  33. //测试
  34. clock_tt1=clock();
  35. #pragmaompparallelfor
  36. for(intj=0;j<2;j++)
  37. {
  38. eg_long_for();
  39. }
  40. clock_tt2=clock();
  41. printf("Totaltime=%d\n",t2-t1);
  42. eg_long_for();
  43. return0;
  44. }
分享到:
评论

相关推荐

    Qt 4 下载地址和环境配置(mingGW+Qtwin4.8+Qtcreator2.6)

    mingGW(Minimalist GNU for Windows)是一个开源的Windows兼容开发环境,它提供了GCC编译器和其他GNU工具集,用于在Windows系统上构建原生的Windows应用程序。下载mingGW-get-inst-20120426或访问SourceForge...

    Windows系统MingGW最新

    这个项目的目标是让开发者能够在Windows环境下编写、编译和运行C、C++以及其他GNU支持的语言,而无需使用像Microsoft Visual Studio这样的集成开发环境(IDE)。MingGW包含了GCC(GNU Compiler Collection)和其他...

    GCC编译器(TDM-GCC) v5.1.0 windows 64bit

    TDM-GCC是一款Windows平台下GCC编译器,安装使用简单,适用于XP-Win10间的所有操作系统,它可以创建32位 或 64位的二进制文件。 mingw和tdm-gcc是什么关系 相同点: 一、 他们都是用于编译生成Windows应用程序的...

    MingGW 5.1.6

    MingGW,全称为“Minimalist GNU for Windows”,其目标是在不依赖任何第三方C运行时库的情况下,为Windows提供一个原生的、与GNU工具集兼容的开发环境。MingGW 5.1.6 版本发布于某个时间点,相较于早期版本,它可能...

    minggw64-posix-sjlj.zip

    它的全称是Minimalist GNU for Windows,提供了在Windows环境下编译原生Windows应用程序所需的C、C++以及其他语言的编译器和相关工具。与传统的MingGW相比,MingGW64支持更大的地址空间,可以充分利用64位系统的性能...

    minggw-w64安装包

    MingGW-W64是一个在Windows平台上使用的开源编译器套件,它提供了GCC(GNU Compiler Collection)和其他GNU工具集,允许开发者在Windows系统上构建原生的Windows应用程序。MingGW-W64是对原始MingGW项目的扩展,特别...

    windows上安装arm交叉编译工具gcc-4.9.4

    Windows下的arm编译器,gcc-linaro-4.9.4-2017.01-i686-mingw32_arm-linux-gnueabihf.tar.xz 安装方法: 1.将下载的包用7zip解压到D:\gcc 2.添加环境变量: 解压文件后,将D:\gcc\bin目录,添加到系统PATH环境变量...

    mingw-w64位完整包,下载解压后可以直接用,完美解决gcc报错等问题

    总的来说,这个"MingW-w64位完整包"对于需要在64位Windows系统上使用GCC或进行Go语言开发的用户来说是一个非常实用的工具,它简化了环境配置过程,提高了开发效率,并且能够有效解决常见的编译错误。

    mingw64位编译器(gcc6.3)

    它为C和C++开发者提供了一套完整的开发工具链,包括预处理器、编译器、链接器以及其他必要的工具,使得用户可以在Windows环境下编写、编译和运行C和C++程序,而无需借助Microsoft Visual Studio或其他商业IDE。...

    codeblock mingGW

    描述中提到,MinGW在Windows上模拟了Linux下GCC的开发环境,使得开发者可以在Windows环境下使用类似于Linux的C++开发体验。这主要是因为MinGW包含了GNU Compiler Collection (GCC),它是Linux开发中的标准编译器。...

    windows gcc测试工程文件

    在Windows环境下,开发C或C++程序时,通常会使用GCC(GNU Compiler Collection)作为编译器,而MinGW(Minimalist GNU for Windows)则是一个为Windows提供GCC编译环境的项目。CMake是一个跨平台的构建系统,用于...

    gcc-g++-3.4.5-20060117-3.tar.gz

    在Windows环境下,经常配合MinGW(Minimalist GNU for Windows)使用,MinGW是一个集成了GCC的Windows移植版本,提供了与标准GCC类似的开发环境。MinGW-5.1.4是MinGW的一个版本,它为Windows平台提供了POSIX兼容性,...

    OpenCV 3.4.3 源码MingGW编译版本

    本篇文章将深入解析“OpenCV 3.4.3 源码 MingGW 编译版本”这一主题的核心内容及其实际应用场景,旨在帮助读者理解如何利用已有的编译成果来快速搭建开发环境,并探讨其背后的技术细节。 #### OpenCV 3.4.3 简介 ...

    OpenCV 2.4.13.6 源码MingGW编译版

    ### OpenCV 2.4.13.6 源码MingGW编译版 ...对于那些希望在 Windows 环境下使用 OpenCV 的开发者来说,此资源是一个很好的选择。通过直接下载提供的库文件,可以跳过复杂的编译步骤,立即投入到实际项目开发中去。

    最新Msys+MinGW离线压缩包.zip

    安装完成后,用户可以在Windows环境下使用命令行工具,如gcc和g++,进行程序编译,也可以利用makefile进行项目构建,极大地提高了开发效率。 总的来说,"最新Msys+MinGW离线压缩包.zip"为Windows开发者提供了一个...

    MingGW-w64.rar

    windows下的gcc/g++编译器,可配合VSCode或者CodeBlock等IDE或编辑器使用。 使用方法:将压缩包解压放入目录后,添加MingGW/bin到环境变量$PATH,之后就可以使用命令行进行编译了

    用mingw编译好的qtwebkit组件

    本文将详细讲解如何使用MingW编译和集成QtWebKit组件,以便在Windows环境下开发Qt应用时使用。 首先,确保你已经安装了最新版本的MingW和Qt开发环境。MingW提供了命令行编译工具,而Qt开发环境则包含构建和调试Qt...

    mingw-w64-gcc-4.9.2

    gcc所有版本为4.9.2(两个版本相同的内置支持):个人使用newen的脚本+gcc-4.9.1重新编译版本,增加对isl和cloog的支持,包含32我和64位版本

    windows下socket编程示例

    开发时,通常会使用MinGW(Minimalist GNU for Windows)这样的GCC编译器,因为它是Windows下的开源C/C++编译工具链,可以编译出与Visual C++兼容的二进制文件,而不需要安装完整的Visual Studio环境。 总的来说,...

    golang 交叉编译MinGW x64

    在本文中,我们将深入探讨如何...通过遵循上述步骤,开发者可以在自己的开发环境中轻松地创建适用于Windows x64平台的应用程序。同时,了解如何编写批处理文件可以极大地提高工作效率,尤其在重复编译和部署的场景下。

Global site tag (gtag.js) - Google Analytics