Fedora20搭建OpenMP和MPICH3并行开发环境

时间:2021-07-15 06:59:05

OpenMP

OpenMP属于共享内存编程模型技术,通过在程序源码中加入编译制导指令#pragma omp行实现程序的并发运行,支持C、C++和Fortran,需要编译器的支持。

配置

GCC支持OpenMP,通过在编译命令中加入编译选项-fopenmp和链接选项-lgomp -lpthread实现。

对于IDE可以在对应配置选项中添加或附加编译项中直接输入上述指令:

CodeBlocks的OpenMP支持

1、选择Project菜单的Build options选项或管理栏项目右键菜单的Build options选项;

2、根据需要选择Debug、Release或项目名称(Debug和Release全选);

3、选择Compiler settings页的Other options页,填入-fopenmp;

4、选择Linker settings页,在Other linker options中填入-lgomp -lpthread。

QT的OpenMP支持

直接在项目的pro文件中添加以下内容:

QMAKE_CXXFLAGS += -fopenmp

LIBS += -lgomp -lpthread

简单测试

源码中合适位置添加下列内容,将会打印8行的‘Hello workd!’(注意打印函数要替换为对应的语言):
#pragma omp parallel num_threads(8) //启动8个并行线程
{
    printf("Hello world!\n");
}


MPICH3

1、下载mpich-3.1.tar.gz
      地址:http://www.mpich.org/downloads/
2、安装
      tar xzf mpich-3.1.tar.gz
      cd mpich-3.1
      ./configure --prefix=/usr/local/mpich --disable-f77 --disable-fc 2>&1 | tee c.txt
      make 2>&1 | tee m.txt
      make install 2>&1 | tee mi.txt
3、设置环境变量
      PATH=/usr/local/mpichl/bin:$PATH ; export PATH
4、检测安装
      which mpicc
      which mpiexec
5、执行测试

可以使用mpich自带的例子,执行:mpiexec -n 4 ./examples/cpi

也可以自己编写简单测试程序,创建hello.c,输入下列内容:

#include <stdio.h>

#include "mpi.h"

int main(int argc, char ** argv)

{

    int myrank, nprocs, namelen;

    char processor_name[MPI_MAX_PROCESSOR_NAME];


    MPI_Init(&argc, &argv);

    MPI_Comm_size(MPI_COMM_WORLD, &nprocs);

    MPI_Comm_rank(MPI_COMM_WORLD, &myrank);

    MPI_Get_processor_name(processor_name, &namelen);


    printf("Hello World! I'm rank %d of %d on %s\n", myrank,

        nprocs, processor_name);


    MPI_Finalize();

    return 0;

}


编译:mpicc -o hello hello.c

执行:mpirun -np 4 ./hello //注意hello之前的./不能省略,否则肯能报错。