mpicc/mpicxx/mpiexec

C程序用mpicc编译

C++程序用mpicxx编译,可以加参数用g++太烦了,要加很多参数

mpiexec执行

如:mpicxx  -Wall -march=pentium4 -mmmx ft.cpp -o ft -lpthread

 

mpiexec启动应用程序的标准命令写作:mpiexec -n 32 app,该命令为app程序启动32个进程。

mpiexec -n 1-host node1 master: -n 32-host node2 slave 该命令在node1上启动一个进程运行master,在node2机器上启动32个进程运行slave.

不使用mpiexec而直接运行可执行文件也可以启动MPI程序,只要程序中调用了MPI_Init函数,则所启动的进程即为MPI进程,并可执行其它MPI调用。

 

 

 

附一个简单的测试程序:

//sum=1+2+3+...+n重复100次,打印总耗时

#include <stdio.h>
#include <math.h>
#include "mpi.h"
int main(int argc,char *argv[])
{
 int i,j,k,n,myid,numprocs,namelen;
 char processor_name[MPI_MAX_PROCESSOR_NAME];
 double startwtime=0.0,endwtime;
 float mysum, sum;
 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);
 n = 1;

        for(j = 1; j <= 1000; ++j) {
     mysum = 0;
            for(k = myid + 1; k <= 16; k += numprocs) {
  mysum += k;
     }
            MPI_Reduce(&mysum,&sum,1,MPI_FLOAT,MPI_SUM,0,MPI_COMM_WORLD);
 }

 for(i = 1; i <= 14; ++i) {
  n = n << 2;
                startwtime=MPI_Wtime();
  for(j = 1; j <= 100; ++j) {
   mysum = 0;
   for(k = myid + 1; k <= n; k += numprocs) {
    mysum += k;
   }
                        MPI_Reduce(&mysum,&sum,1,MPI_FLOAT,MPI_SUM,0,MPI_COMM_WORLD);
  }
                if (myid == 0) {
                    fprintf(stderr,"4^%d: total 100 times cost:%lf s and result is %f/n", i
                        , (MPI_Wtime() - startwtime), sum);
                }
 }

 MPI_Finalize();
 return 0;
}

 

 

//

编译g++ atu.cpp -I /usr/include/mpich2 -lmpi -o test或者mpicxx atu.cpp -o test

然后将可执行文件拷到不同的结点上的相同位置

mpdboot -n 4 -f mpd.hosts

mpiexec -n 4 ./test

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
如果在Linux系统下使用`which mpicc`命令时报错“no mpicc in”,说明MPI编译器没有正确安装或者安装路径没有加入系统环境变量。 可以使用以下命令检查MPI编译器是否已经安装: 在Ubuntu系统下,可以使用以下命令检查MPICH编译器是否已经安装: ``` dpkg -l | grep mpich ``` 在CentOS系统下,可以使用以下命令检查MPICH编译器是否已经安装: ``` rpm -qa | grep mpich ``` 如果MPI编译器已经安装,可以使用以下命令查找MPI编译器的安装路径: ``` find / -name mpicc 2>/dev/null ``` 这个命令会在系统中查找MPI编译器,如果找到了MPI编译器,会输出MPI编译器的安装路径。 如果MPI编译器没有安装,可以使用相应的软件包管理工具进行安装。例如,在Ubuntu系统下,可以使用以下命令安装MPICH编译器: ``` sudo apt-get update sudo apt-get install mpich ``` 在CentOS系统下,可以使用以下命令安装MPICH编译器: ``` sudo yum install mpich mpich-devel ``` 安装完成后,需要将MPI编译器的安装路径加入系统环境变量,使终端可以找到MPI编译器。可以使用以下命令将MPI编译器的安装路径加入系统环境变量: ``` export PATH=$PATH:/usr/lib64/mpich/bin ``` 其中,`/usr/lib64/mpich/bin`是MPICH编译器的安装路径。这个命令将MPI编译器加入了系统环境变量,使得终端可以找到MPI编译器。 需要注意的是,不同的MPI编译器的安装路径可能会有所不同。如果你使用的是其他MPI编译器,如Open MPI或Intel MPI等,可以使用相应的安装命令和路径将MPI编译器安装并加入系统环境变量。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值