根据我的小知识mpirun
,mpiexec
两者都是发射器.谁能告诉mpiexec
和之间的确切区别mpirun
?
我不明白错误信息.我试图做的是在我安装mpich2版本1.4或1.5后运行MPICH2应用程序/opt/mpich2
(两个版本都失败并出现相同的错误).我的MPI应用程序是用1.3编译的,但是我可以在另一个工作站上用mpi 1.4运行它.我在Ubuntu 12.04上测试它.
Fatal error in PMPI_Init_thread: Other MPI error, error stack:
MPIR_Init_thread(467)..............:
MPID_Init(177).....................: channel initialization failed
MPIDI_CH3_Init(70).................:
MPID_nem_init(319).................:
MPID_nem_tcp_init(171).............:
MPID_nem_tcp_get_business_card(418):
MPID_nem_tcp_init(377).............: gethostbyname failed, localhost (errno 3)
Run Code Online (Sandbox Code Playgroud) 我试图在运行Ubuntu 11.04(Natty Narwhal)的64位机器上安装MPICH 2.我用了
sudo apt-get install mpich2
Run Code Online (Sandbox Code Playgroud)
首先,我惊讶地发现没有安装mpd.在查看Google时,我看到Hydra是新的默认包管理器.所以我试着运行我的MPI代码.我收到以下错误.
> -------------------------------------------------------------------------------------------
> [ip-10-99-75-58:02212] [[INVALID],INVALID] ORTE_ERROR_LOG: A
> system-required executable either could not be found or was not
> executable by this user in file
> ../../../../../../orte/mca/ess/singleton/ess_singleton_module.c at
> line 357 [ip-10-99-75-58:02212] [[INVALID],INVALID] ORTE_ERROR_LOG: A
> system-required executable either could not be found or was not
> executable by this user in file
> ../../../../../../orte/mca/ess/singleton/ess_singleton_module.c at
> line 230 [ip-10-99-75-58:02212] [[INVALID],INVALID] ORTE_ERROR_LOG: A
> system-required executable either could …
Run Code Online (Sandbox Code Playgroud) 我有两个问题 -
Q1.除了检查点/回滚之外,是否有更有效的方法来处理MPI中的错误情况?我看到如果节点"死",程序会突然停止.在节点死后,有没有办法继续执行?(如果以准确性为代价则没有问题)
Q2.我在"http://stackoverflow.com/questions/144309/what-is-the-best-mpi-implementation"中读到,OpenMPI具有更好的容错能力,最近MPICH-2也提出了类似的功能.谁知道它们是什么以及如何使用它们?这是一种"模式"吗?他们可以帮助解决第一季度的情况吗?
亲切的回复.谢谢.
我试图理解这个MPI_Reduce_scatter
功能,但似乎我的推论总是错误的:(
文档说(链接):
MPI_Reduce_scatter首先对count = S(i)的向量进行逐元素减少,在sendbuf,count和datatype定义的发送缓冲区中recvcounts [i]元素.接下来,结果的结果向量被分成n个不相交的段,其中n是组中的进程数.段i包含recvcounts [i]元素.第i个段被发送到进程i并存储在由recvbuf,recvcounts [i]和datatype定义的接收缓冲区中.
我有以下(非常简单)的C程序,我希望获得第一个recvcounts [i]元素的最大值,但似乎我做错了...
#include <stdio.h>
#include <stdlib.h>
#include "mpi.h"
#define NUM_PE 5
#define NUM_ELEM 3
char *print(int arr[], int n);
int main(int argc, char *argv[]) {
int rank, size, i, n;
int sendbuf[5][3] = {
{ 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 },
{ 10, 11, 12 },
{ 13, 14, 15 }
};
int recvbuf[15] = {0};
int recvcounts[5] = { …
Run Code Online (Sandbox Code Playgroud) 我是HPC的新手,手头的任务是在集群上对MPICH和OpenMPI进行性能分析和比较,该集群包含运行在ClusterVisionOS上的配备双核AMD Opteron处理器的IBM服务器.
我应该选择哪个基准程序来比较MPICH和OpenMPI实现?
我不确定High-Performance Linpack Benchmark是否可以提供帮助,因为我并没有尝试衡量集群本身的性能..请建议..
谢谢
当我通过TCP/IP套接字在进程之间发送MPI消息时,OpenMPI和MPICH如何处理安全性?
特别是,它们如何阻止同一网络的其他用户连接到侦听套接字并发送伪MPI消息?
具体方案如下:
我正在使用CLion.我的CMakeLists.txt看起来像这样:
cmake_minimum_required(VERSION 3.2)
project(MPI)
add_executable(MPI main.cpp)
# Require MPI for this project:
find_package(MPI REQUIRED)
set(CMAKE_CXX_COMPILE_FLAGS ${CMAKE_CXX_COMPILE_FLAGS} ${MPI_COMPILE_FLAGS})
set(CMAKE_CXX_LINK_FLAGS ${CMAKE_CXX_LINK_FLAGS} ${MPI_LINK_FLAGS})
include_directories(MPI_INCLUDE_PATH)
target_link_libraries(MPI ${MPI_LIBRARIES})
Run Code Online (Sandbox Code Playgroud)
MPI - Hello World运行良好.但是,如何更改cmakelists中的处理器数量?
我已经尝试将-np 4和-n 4添加到CLion中的程序参数中.但我还是得到了
Hello World进程0 of 1
我正在研究自动与MPICH2一起出现的新进程管理器,但直到现在我还无法弄清楚这个实现有什么大的进步,有人知道一个很好的教程或者有一些经验吗?
氩维基是一种太简单:http://wiki.mcs.anl.gov/mpich2/index.php/Using_the_Hydra_Process_Manager