研究一下如何一起使用mpi和openmp
先上程序:
#include <stdio.h>
#include <stdlib.h>
#ifdef _OPENMP
#include <omp.h>
#endif
#ifdef MPICH_CC
#include <mpi.h>
#endif
#define SIZE 512
#define SIZEM SIZE
#define SIZEN SIZE
#define SIZEK SIZE
#define DISPLAYT 1
double mytic()
{
double result = 0.0;
struct timeval tv;
gettimeofday( &tv, NULL );
result = tv.tv_sec*1e6 + tv.tv_usec;
return result;
}
int main(int argc, char** argv)
{
#ifdef MPICH_CC
int mpirank;
int mpisize;
MPI_Status mpistatus;
#endif
float *ma;
float *mb;
float *mc;
int m, n, k;
int r, s, t;
float tsum;
double tstart, tend;
#ifdef MPICH_CC
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &mpirank);
#endif
#ifdef _OPENMP
omp_set_num_threads(2);
#endif
/*Matrx A, B, C allocation.*/
m = SIZEM; n = SIZEN; k = SIZEK;
ma = (float*)malloc(m*n*sizeof(float));
if (!ma){return -1;}