C/C++ --MPI安装MPICH2小问题

本文介绍了MPI(消息传递接口)的基本概念,它是一种用于并行编程的标准,支持跨多种操作系统进行消息传递。此外,还详细介绍了在64位Windows系统上安装MPICH2过程中可能遇到的问题及解决方案。

MPI是一种被广泛采用的消息传递标准。与OpenMP并行程序不同,MPI是一种基于消息传递的并行编程技术。消息传递接口是一种编程接口标准,而不是一种具体的编程语言。简而言之,MPI标准定义了一组具有可移植性的编程接口。各个厂商或组织遵循这些标准实现自己的MPI软件包,典型的实现包括开放源代码的MPICHLAM MPI以及不开放源代码的Intel MPI。由于MPI提供了统一的编程接口,程序员只需要设计好并行算法,使用相应的MPI库就可以实现基于消息传递的并行计算。MPI支持多种操作系统,包括大多数的类UNIXWindows系统。

MPI的安装和使用问网上能找到很多文章,这里介绍一个自己安装时遇到的问题:在64位windosw系统安装MPICH2时,可能遇到无法配置的问题,这一般是因为设置了开机密码导致的。如果设置了密码,注册时就用开机用的用户名和密码。否则无法连接主机。 当然最好为MPI建立一个用户账户

g++ -fdiagnostics-color=always -g '/thfs1/home/test653/shengjh/exam of CSRf1.cpp' -o '/thfs1/home/test653/shengjh/exam of CSRf1' -DAdd_ -DUSE_FORTRAN_UNDERSCORE -I/thfs1/software/eigen3/3.4.90-gcc9.3/include/eigen3 -I/thfs1/software/mpich/4.0.2-mpi-x-gcc9.3.0/include -I/thfs1/software/mumps/5.5.1-gcc9.3.0-mpi-x/include -L/thfs1/software/mpich/4.0.2-mpi-x-gcc9.3.0/lib -L/thfs1/software/mumps/5.5.1-gcc9.3.0-mpi-x/lib -L/thfs1/software/scalapack/2.2.2-gcc9.3.0-mpi-x/lib -L/thfs1/software/metis/5.1.0-gcc9.3.0/lib -L/thfs1/software/lapack/3.8.0-gcc9.3.0/lib -L/thfs1/software/blas/3.8.0-gcc9.3.0/lib -L/thfs1/software/openblas/0.3.30-gcc9.3.0/lib -Wl,--start-group -ldmumps -lmumps_common -lpord -lscalapack -lmetis -lopenblas -llapack -lgfortran -lm -Wl,--end-group -lmpi -lstdc++fsg++ -fdiagnostics-color=always -g '/thfs1/home/test653/shengjh/exam of CSRf1.cpp' -o '/thfs1/home/test653/shengjh/exam of CSRf1' -DAdd_ -DUSE_FORTRAN_UNDERSCORE -I/thfs1/software/eigen3/3.4.90-gcc9.3/include/eigen3 -I/thfs1/software/mpich/4.0.2-mpi-x-gcc9.3.0/include -I/thfs1/software/mumps/5.5.1-gcc9.3.0-mpi-x/include -L/thfs1/software/mpich/4.0.2-mpi-x-gcc9.3.0/lib -L/thfs1/software/mumps/5.5.1-gcc9.3.0-mpi-x/lib -L/thfs1/software/scalapack/2.2.2-gcc9.3.0-mpi-x/lib -L/thfs1/software/metis/5.1.0-gcc9.3.0/lib -L/thfs1/software/lapack/3.8.0-gcc9.3.0/lib -L/thfs1/software/blas/3.8.0-gcc9.3.0/lib -L/thfs1/software/openblas/0.3.30-gcc9.3.0/lib -Wl,--start-group -ldmumps -lmumps_common -lpord -lscalapack -lmetis -lopenblas -llapack -lgfortran -lm -Wl,--end-group -lmpi -lstdc++fsg++ -fdiagnostics-color=always -g '/thfs1/home/test653/shengjh/exam of CSRf1.cpp' -o '/thfs1/home/test653/shengjh/exam of CSRf1' -DAdd_ -DUSE_FORTRAN_UNDERSCORE -I/thfs1/software/eigen3/3.4.90-gcc9.3/include/eigen3 -I/thfs1/software/mpich/4.0.2-mpi-x-gcc9.3.0/include -I/thfs1/software/mumps/5.5.1-gcc9.3.0-mpi-x/include -L/thfs1/software/mpich/4.0.2-mpi-x-gcc9.3.0/lib -L/thfs1/software/mumps/5.5.1-gcc9.3.0-mpi-x/lib -L/thfs1/software/scalapack/2.2.2-gcc9.3.0-mpi-x/lib -L/thfs1/software/metis/5.1.0-gcc9.3.0/lib -L/thfs1/software/lapack/3.8.0-gcc9.3.0/lib -L/thfs1/software/blas/3.8.0-gcc9.3.0/lib -L/thfs1/software/openblas/0.3.30-gcc9.3.0/lib -Wl,--start-group -ldmumps -lmumps_common -lpord -lscalapack -lmetis -lopenblas -llapack -lgfortran -lm -Wl,--end-group -lmpi -lstdc++fs /usr/bin/ld: /thfs1/software/mumps/5.5.1-gcc9.3.0-mpi-x/lib/libdmumps.a(dmumps_c.o): in function `dmumps_set_tmp_ptr_c__': mumps_c.c:(.text+0x44): undefined reference to `dmumps_set_tmp_ptr__' /usr/bin/ld: /thfs1/software/mumps/5.5.1-gcc9.3.0-mpi-x/lib/libdmumps.a(dmumps_c.o): in function `dmumps_c': mumps_c.c:(.text+0x1db4): undefined reference to `dmumps_f77__' collect2: error: ld returned 1 exit status在实际运行代码时出现了这些问题,头文件如下#include <iostream> #define MUMPS_CALL #define dmumps_set_tmp_ptr_ dmumps_set_tmp_ptr__ #define dmumps_f77_ dmumps_f77__ #include <vector> #include <cmath> #include <fstream> #include <sstream> #include <chrono> #include <Eigen/Dense> #include <Eigen/Sparse> extern "C" { #define MUMPS_CALL #include "dmumps_c.h" // 显式声明使用单下划线符号 void dmumps_f77_(DMUMPS_STRUC_C* id); void dmumps_set_tmp_ptr_(DMUMPS_STRUC_C* id); // 添加缺失的初始化函数声明 void dmumps_init_(DMUMPS_STRUC_C* id, int* comm_fortran); } using namespace std; using namespace chrono; using namespace Eigen; typedef SparseMatrix<double, RowMajor> SparseMatrixR; typedef complex<double> cd; typedef SparseMatrix<cd, RowMajor> SparseMatrixC; // MUMPS 预定义常量 #define JOB_INIT -1 #define JOB_ANALYZE -2 #define JOB_FACTORIZE -3 #define JOB_SOLVE -4 #define JOB_END -5 #ifndef USE_COMM_WORLD #define USE_COMM_WORLD (-987654) #endif,json如下{ "tasks": [ { "type": "cppbuild", "label": "C/C++: g++ MUMPS build", "command": "g++", "args": [ "-fdiagnostics-color=always", "-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}", "-DAdd_", "-DUSE_FORTRAN_UNDERSCORE", // 关键添加 "-I/thfs1/software/eigen3/3.4.90-gcc9.3/include/eigen3", "-I/thfs1/software/mpich/4.0.2-mpi-x-gcc9.3.0/include", "-I/thfs1/software/mumps/5.5.1-gcc9.3.0-mpi-x/include", "-L/thfs1/software/mpich/4.0.2-mpi-x-gcc9.3.0/lib", "-L/thfs1/software/mumps/5.5.1-gcc9.3.0-mpi-x/lib", "-L/thfs1/software/scalapack/2.2.2-gcc9.3.0-mpi-x/lib", "-L/thfs1/software/metis/5.1.0-gcc9.3.0/lib", "-L/thfs1/software/lapack/3.8.0-gcc9.3.0/lib", "-L/thfs1/software/blas/3.8.0-gcc9.3.0/lib", "-L/thfs1/software/openblas/0.3.30-gcc9.3.0/lib", "-Wl,--start-group", "-ldmumps", "-lmumps_common", "-lpord", "-lscalapack", "-lmetis", "-lopenblas", "-llapack", "-lgfortran", "-lm", "-Wl,--end-group", "-lmpi", "-lstdc++fs" // 可能需要添加 C++ 文件系统库 ], "options": { "cwd": "${fileDirname}", "env": { "PATH": "/thfs1/software/mpich/4.0.2-mpi-x-gcc9.3.0/bin:${env:PATH}", "LD_LIBRARY_PATH": "/thfs1/software/mumps/5.5.1-gcc9.3.0-mpi-x/lib:/thfs1/software/openblas/0.3.30-gcc9.3.0/lib:/thfs1/software/gcc/9.3.0/lib64:${env:LD_LIBRARY_PATH}" } }, "problemMatcher": ["$gcc"], "group": "build" } ], "version": "2.0.0" }{ "version": "0.2.0", "configurations": [ { "name": "C/C++ 调试", "type": "cppdbg", "request": "launch", "program": "${fileDirname}/${fileBasenameNoExtension}", "args": [], "stopAtEntry": false, "cwd": "${fileDirname}", "environment": [], "externalConsole": false, "MIMode": "gdb", "preLaunchTask": "C/C++: g++ MUMPS build", "miDebuggerPath": "/usr/bin/gdb", "setupCommands": [ { "description": "启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] }{ "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**", "/thfs1/software/eigen3/3.4.90-gcc9.3/include/eigen3", "/thfs1/software/mpich/4.0.2-mpi-x-gcc9.3.0/include", "/thfs1/software/mumps/5.5.1-gcc9.3.0-mpi-x/include" ], "defines": [], "cStandard": "c17", "cppStandard": "c++14", "intelliSenseMode": "linux-clang-arm64" } ], "version": 4 }同时加载的模块如下 module list Currently Loaded Modulefiles: 1) mpich/4.0.2-mpi-x-gcc9.3.0 3) openblas/0.3.30-gcc9.3.0 5) metis/5.1.0-gcc9.3.0 7) blas/3.8.0-gcc9.3.0 2) GCC/9.3.0(default) 4) scalapack/2.2.2-gcc9.3.0-mpi-x 6) lapack/3.8.0-gcc9.3.0 test653@ln0:~/shengjh$ which ld /usr/bin/ld解决问题
最新发布
08-16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值