OpenMP与MPI混合编程小例子

下面的例子比较简单,主要为说明使用OpenMP以及MPI的混合编译命令。

#include "mpi.h"
#include "omp.h"
#include 
 
#define N 1000000000
 
int main( int argc, char* argv[] ){
    int rank, nproc;
    int i,low,up;
    double local = 0.0, pi, w, temp;
   
    MPI_Status  status;
    MPI_Init( &argc, &argv );
    MPI_Comm_size( MPI_COMM_WORLD, &nproc );
    MPI_Comm_rank( MPI_COMM_WORLD, &rank );
 
    w = 1.0/N;
   low = rank*(N / nproc);
   up = low + N/nproc - 1;
 
    #pragma omp parallel for reduction(+:local) private(temp,i)
    for (i=low;i

编译命令如下:

mpicc -o my -fopenmp my.c -lm -O3
mpirun -np NUM_of_Procs -x OMP_NUM_THREADS=8 -machinefile nodes ./my

你可能感兴趣的:(OpenMP与MPI混合编程小例子)