?? mpi_lbm.c
字號:
/********************************************************** * mpi_lbm.c * * mpicc -o mpi_lbm mpi_lbm.c mpi_D2Q9.c MyArrays.c -lm * **********************************************************/#include "mpi.h"#include <stdio.h>#include "mpi_D2Q9.h"int main(int argc, char *argv[]){ double wtime, ctime, wtime_max, ctime_sum; int namelen, myid, numprocs, i; char processor_name[MPI_MAX_PROCESSOR_NAME];// STEP 1 (MPI Initialization) MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &numprocs); MPI_Comm_rank(MPI_COMM_WORLD, &myid); MPI_Get_processor_name(processor_name, &namelen);// STEP 2 (Data distribution --- periodic) if(myid == 0) { if(argc>1) ReadParaFile(argv[1]); else ReadParaFile("bdy.lbm"); } InitData(numprocs, myid);// STEP 3 (Parallel dowork) MPI_Barrier(MPI_COMM_WORLD); ctime = CPU_time(); wtime = MPI_Wtime(); for(i=0; i<5000; i++) evolution(numprocs, myid);// STEP 4 (Collect the results) ctime = CPU_time() - ctime; wtime = MPI_Wtime() - wtime; printf("Process %d of %d on %s, tc=%f, tw=%f\n", myid, numprocs, processor_name, ctime, wtime); fflush(stdout); CollectData(numprocs, myid); if(myid==0) SaveFile();// STEP 5 (Display the results) MPI_Reduce(&ctime, &ctime_sum, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD); MPI_Reduce(&wtime, &wtime_max, 1, MPI_DOUBLE, MPI_MAX, 0, MPI_COMM_WORLD); if(myid==0) { printf("Sum_CPU_time = %f, Max_WALL_time = %f\n", ctime_sum, wtime_max); printf("Sum_CPU_time/Max_WALL_time = %f\n", ctime_sum/wtime_max); }// STEP 6 (Terminates MPI execution environment) Finish(); MPI_Finalize(); return 0;}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -