MPI学习之路(二):程序编译

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)参考

  1. https://blog.csdn.net/shijinupc/article/details/6788908

 

猜你喜欢

转载自blog.csdn.net/themingyi/article/details/84954897
今日推荐