themingyi@themingyi:~/wmw$ mpicc -o try_mpi1 try_mpi1.c
themingyi@themingyi:~/wmw$ mpiexec -n 1 ./try_mpi1
Hello World! Process 0 of 1 on themingyi
themingyi@themingyi:~/wmw$ mpiexec -n 2 ./try_mpi1
Hello World! Process 0 of 2 on themingyi
Hello World! Process 1 of 2 on themingyi
(1)问题
自己尝试写了一个.c的程序,然后使用运行命令直接运行:
mpirun -n 1 ./try_mpi1.c
出现了一下的错误提示:
./try_mpi1.c: 4: ./try_mpi1.c: Syntax error: "(" unexpected
(2)问题定位
网上查找内容发现此问题类似与下面网址内的问题相似:
linux 运行一个可执行文件,出现 line 1: syntax error: unexpected "(" 的错误
在mpi编译时使用的mpicc来编译;
1、To compile a single file foo.c, use
mpicc -c foo.c
2、To link the output and make an executable, use
mpicc -o foo foo.c
is a convenient way to build simple programs.
(3)解决问题
在尝试中发现,直接使用命令:
mpicc -c foo.c
行不通,使用第二个命令编译之后再运行就可以了,具体流程如下:
themingyi@themingyi:~/wmw$ mpicc -o try_mpi1 try_mpi1.c
themingyi@themingyi:~/wmw$ mpiexec -n 1 ./try_mpi1
Hello World! Process 0 of 1 on themingyi
themingyi@themingyi:~/wmw$ mpiexec -n 2 ./try_mpi1
Hello World! Process 0 of 2 on themingyi
Hello World! Process 1 of 2 on themingyi
测试程序:
#include"mpi.h"↩
#include<stdio.h>↩
#include<math.h>↩
void main(argc,argv)↩
int argc;↩
char *argv[];↩
{↩
int myid,numprocs;↩
int namelen;↩
char processor_name[MPI_MAX_PROCESSOR_NAME];↩
MPI_Init(&argc,&argv);↩
MPI_Comm_rank(MPI_COMM_WORLD,&myid);↩
MPI_Comm_size(MPI_COMM_WORLD,&numprocs);↩
MPI_Get_processor_name(processor_name,&namelen);↩
↩
fprintf(stderr,"Hello World! Process %d of %d on %s\n",myid,nu mprocs,processor_name);↩
MPI_Finalize();↩
}↩
(4)参考