OpenMP、MPI Visual Studio Code author:zoxiii
参考书籍:并行计算:结构·算法·编程_陈国良
前提:安装gcc
gcc安装步骤
一、OpenMP
1、介绍
OpenMP基于共享内存的。
2、实现一个例子
- 写代码文件test.c
#include"stdio.h"
#include"omp.h"
void main()
{
int nthreads,tid;
char buf[32];
#pragma omp parallel private(nthreads,tid)
{
tid=omp_get_thread_num();
printf("Hello World from OpenMP thread %d\n",tid);
if(tid==0)
{
nthreads=omp_get_num_threads();
printf("Number of threads id %d\n",nthreads);
}
}
}
- 打开Visual Studio Code的终端框(cmd),进入代码所在的文件夹
E:
cd E:\Project_All_Apps\OpenMP

- 使用OpenMP编译
gcc -fopenmp -o test test.c
./test.exe

二、MPI
0、安装
下载地址  
安装 MPI Setup
    
安装 MPI SDK
     安装两个文件后,打开cmd窗口,输入set MSMPI可以看到安装路径,如果有如下输出,表示已经安装成功。 
1、介绍
MPI是基于消息传递的。
2、实现一个例子
- 写代码文件testmpi.c
#define N 100
#include"mpi.h"
#include<stdio.h>
#include<math.h>
int main(int argc,char **argv)
{
double local=0,pi,w,temp;
int i,rank,size;
w=1.0/N;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
MPI_Comm_size(MPI_COMM_WORLD,&size);
if(rank != 0){
printf("precess rank is %d\n",rank);
}
for(i=rank;i<N;i=i+size)
{
temp=(i+0.5)*w;
local=4.0/(1.0+temp*temp)+local;
}
MPI_Reduce(&local, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);
if(rank==0)
printf("pi is %f\n",pi*w);
MPI_Finalize();
return 0;
}
- 打开Visual Studio Code的终端框(cmd),进入代码所在的文件夹
 - 使用MPI编译
gcc -I"D:\Program Files (x86)\Microsoft SDKs\MPI\Include" -o MPI testmpi.c "D:\Program Files (x86)\Microsoft SDKs\MPI\Lib\x64\msmpi.lib"
mpiexec -n 12 MPI.exe

|