天道酬勤,学无止境

openmpi

使用 MPI_Type_create_subarray 发送时可以转置数组吗?(Can you transpose array when sending using MPI_Type_create_subarray?)

问题 我正在尝试使用 C 中的 MPI 转置矩阵。每个进程都有一个方形子矩阵,我想将其发送到正确的进程(网格上的“相反”进程),将其转置为通信的一部分。 我正在使用MPI_Type_create_subarray它有一个顺序参数,分别是行MPI_ORDER_FORTRAN和列MPI_ORDER_C或MPI_ORDER_FORTRAN 。 我想,如果我作为其中一个发送,并作为另一个接收,那么我的矩阵将作为通信的一部分被转置。 然而,这似乎并没有发生——它只是保持非转置。 代码的重要部分在下面,整个代码文件都可以在这个要点上找到。 有没有人知道为什么这不起作用? 这种进行转置的方法应该起作用吗? 在阅读了MPI_ORDER_C和MPI_ORDER_FORTRAN的描述后,我原以为会,但也许不会。 /* ----------- DO TRANSPOSE ----------- */ /* Find the opposite co-ordinates (as we know it's a square) */ coords2[0] = coords[1]; coords2[1] = coords[0]; /* Get the rank for this process */ MPI_Cart_rank(cart_comm, coords2, &rank2); /* Send to

2021-12-05 03:20:19    分类:技术分享    c   mpi   parallel-processing   hpc   openmpi

如何在 Infiniband 中使用 GPUDirect RDMA(How to use GPUDirect RDMA with Infiniband)

问题 我有两台机器。 每台机器上有多张特斯拉卡。 每台机器上还有一个InfiniBand卡。 我想通过 InfiniBand 在不同机器上的 GPU 卡之间进行通信。 只需点对点单播就可以了。 我当然想使用 GPUDirect RDMA,这样我就可以避免额外的复制操作。 我知道 Mellanox 现在有一个驱动程序可用于其 InfiniBand 卡。 但它没有提供详细的开发指南。 我也知道 OpenMPI 支持我要求的功能。 但是 OpenMPI 对于这个简单的任务来说太重了,它不支持单个进程中的多个 GPU。 我想知道直接使用驱动程序进行通信是否可以获得任何帮助。 代码示例,教程,任何东西都会很好。 另外,如果有人能帮我在 OpenMPI 中找到处理此问题的代码,我将不胜感激。 回答1 要使 GPUDirect RDMA 工作,您需要安装以下内容: 已安装 Mellanox OFED(来自 http://www.mellanox.com/page/products_dyn?product_family=26&mtag=linux_sw_drivers) 最近安装的 NVIDIA CUDA 套件 Mellanox-NVIDIA GPUDirect 插件(来自您上面提供的链接 - 以访客身份发布阻止我发布链接:() 应该安装以上所有内容(按照上面列出的顺序),并加载相关模块。 之后

2021-11-29 19:38:39    分类:技术分享    cuda   openmpi   infiniband   gpudirect

运行基于 OpenMPI 的库时出错(Error when running OpenMPI based library)

问题 我已经从 Ubuntu 中可用的标准 apt-get install 安装了 openmpi 库。 我运行了一个调用 MPI 库的 python 代码。 我收到以下错误。 任何想法错误的根源是什么? 这是 OpenMPI 配置错误吗? 如何解决这个问题? [thebigbang:17162] mca: base: component_find: unable to open /usr/lib/openmpi/lib/openmpi/mca_paffinity_hwloc: perhaps a missing symbol, or compiled for a different version of Open MPI? (ignored) [thebigbang:17162] mca: base: component_find: unable to open /usr/lib/openmpi/lib/openmpi/mca_carto_auto_detect: perhaps a missing symbol, or compiled for a different version of Open MPI? (ignored) [thebigbang:17162] mca: base: component_find: unable to open /usr/lib

2021-11-28 23:24:57    分类:技术分享    python   ubuntu-14.04   openmpi

difference between MPI_Send() and MPI_Ssend()?

I know MPI_Send() is a blocking call ,which waits until it is safe to modify the application buffer for reuse. For making the send call synchronous(there should be a handshake with the receiver) , we need to use MPI_Ssend() . I want to know the difference between the two. Suppose i need to send fix amount of Bytes among the processes , which one is supposed to take longer time ? With me the code works well the MPI_Send() call but waiting indefinitely for MPI_Ssend(). What could be the possible reasons ? And the most important thing is , i am pretty sure the data is being received at the

2021-11-27 18:23:06    分类:问答    ipc   mpi   openmpi

mpirun 的自定义中断处理程序(a custom interrupt handler for mpirun)

问题 显然, mpirun使用一个 SIGINT 处理程序,它将 SIGINT 信号“转发”到它产生的每个进程。 这意味着您可以为启用了 mpi 的代码编写一个中断处理程序,执行mpirun -np 3 my-mpi-enabled-executable然后将为三个进程中的每一个引发 SIGINT。 不久之后,mpirun 退出。 当您有一个仅打印错误消息然后退出的小型自定义处理程序时,这可以正常工作。 但是,当您的自定义中断处理程序正在执行一项重要的工作(例如,进行重要的计算或持久化数据)时,该处理程序不会运行完成。 我假设这是因为 mpirun 决定过早退出。 这是执行my-mpi-enabled-executable后按ctrl-c (即导致 SIGINT)时的标准错误。 这是理想的预期行为: interrupted by signal 2. running viterbi... done. persisting parameters... done. the master process will now exit. 这是执行mpirun -np 1 my-mpi-enabled-executable后按ctrl-c时的标准错误。 这是有问题的行为: interrupted by signal 2. running viterbi... mpirun: killing

2021-11-26 14:30:22    分类:技术分享    mpi   interrupt   openmpi   interrupt-handling   keyboardinterrupt

如何通过自制软件的mpi支持来构建提升?(How to build boost with mpi support on homebrew?)

问题 根据这篇文章(https://github.com/mxcl/homebrew/pull/2953),标志“ --with-mpi ”应该启用boost_mpi构建对相关自制程序的支持,所以我试图通过安装boost像这样的自制软件: brew install boost --with-mpi 但是,实际的 boost mpi 库尚未构建,因此无法找到。 根据:https://github.com/mxcl/homebrew/pull/15689,目前正在围绕此进行一些工作 总之,我目前可以构建 boost,但似乎“ --with-mpi ”标志被忽略了。 有人可以检查一下,我是否应该能够在 Mac OS X Mountain Lion (10.8) 上构建 boost(支持 mpi)? (详细)输出生成这些行: MPI auto-detection failed: unknown wrapper compiler mpic++ Please report this error to the Boost mailing list: http://www.boost.org You will need to manually configure MPI support. warning: skipping optional Message Passing Interface

2021-11-25 14:44:49    分类:技术分享    macos   boost   mpi   homebrew   openmpi

对 pthread_atfork` 的未定义引用(Undefined reference to pthread_atfork`)

问题 在Ubuntu使用克++ 4.9版本,编译C ++命名的源文件时test.cpp需要命名的共享库libUtils.so (这反过来需要打开MPI共享库,因此参数-Wl,-rpath-link,/home/dummy/openmpi/build/lib ) 如下: g++ test.cpp -lUtils -Wl,-rpath-link,/home/dummy/openmpi/build/lib 抛出错误/home/dummy/openmpi/build/lib/libopen-pal.so.20: undefined reference to pthread_atfork 。 我将-pthread和-lpthread传递给 g++,但这些都没有解决错误。

2021-11-24 13:25:28    分类:技术分享    c++   gcc   g++   openmpi

a custom interrupt handler for mpirun

Apparently, mpirun uses a SIGINT handler which "forwards" the SIGINT signal to each of the processes it spawned. This means you can write an interrupt handler for your mpi-enabled code, execute mpirun -np 3 my-mpi-enabled-executable and then SIGINT will be raised for each of the three processes. Shortly after that, mpirun exits. This works fine when you have a small custom handler which only prints an error message and then exits. However, when your custom interrupt handler is doing a non-trivial job (e.g. doing serious computations or persisting data), the handler does not run to completion

2021-11-24 00:18:57    分类:问答    mpi   interrupt   openmpi   interrupt-handling   keyboardinterrupt

Error when running OpenMPI based library

I have install openmpi library from the standard apt-get install available in Ubuntu. I run a python code which call MPI libraries. I get the following error. Any ideas whatis the source of error? Is it an OpenMPI configuration error? How to fix this? [thebigbang:17162] mca: base: component_find: unable to open /usr/lib/openmpi/lib/openmpi/mca_paffinity_hwloc: perhaps a missing symbol, or compiled for a different version of Open MPI? (ignored) [thebigbang:17162] mca: base: component_find: unable to open /usr/lib/openmpi/lib/openmpi/mca_carto_auto_detect: perhaps a missing symbol, or compiled

2021-11-23 21:33:16    分类:问答    python   ubuntu-14.04   openmpi

How to build boost with mpi support on homebrew?

According to this post (https://github.com/mxcl/homebrew/pull/2953), the flag "--with-mpi" should enable boost_mpi build support for the related homebrew formula, so I am trying to install boost via homebrew like this: brew install boost --with-mpi However, the actual boost mpi library is not being build and can not be found. There is currently some work being done around this, according to: https://github.com/mxcl/homebrew/pull/15689 In summary, I can currently build boost, but it seems the "--with-mpi" flag is being ignored. Could someone please check, if I should be able to build boost

2021-11-23 18:53:07    分类:问答    macos   boost   mpi   homebrew   openmpi