openmpi

Exchange Data Between MPI processes (halo)

一世执手 提交于 2019-11-29 12:40:30
Given the following scenario, I have N MPI processes each with an object. when the communication stage comes, data "usually small" from these object will be exchanged. In general, there is data exchange between any two nodes. What is the best strategy?: In any node X, create tow buffers for each other node with a connection with this node X. and then do send/receive on peer-to-peer basis. in Each node X, create one buffer to gather all the halo data to be communicated. and then "bcast" that buffer. Is there any other strategy I am not aware of? For nearest neighbour style halo swaps, usually

How to use GPUDirect RDMA with Infiniband

我只是一个虾纸丫 提交于 2019-11-29 11:35:01
I have two machines. There are multiple Tesla cards on each machine. There is also an InfiniBand card on each machine. I want to communicate between GPU cards on different machines through InfiniBand. Just point to point unicast would be fine. I surely want to use GPUDirect RDMA so I could spare myself of extra copy operations. I am aware that there is a driver available now from Mellanox for its InfiniBand cards. But it doesn't offer a detailed development guide. Also I am aware that OpenMPI has support for the feature I am asking. But OpenMPI is too heavy weight for this simple task and it

Difference between running a program with and without mpirun

十年热恋 提交于 2019-11-29 09:40:52
I implemented a peer-to-peer connection in MPI using MPI_Open_port and MPI_Comm_accept . I run a server and a client program using rafael@server1:~$ mpirun server rafael@server2:~$ mpirun client on different computers. I noticed that rafael@server1:~$ ./server rafael@server2:~$ ./client also works just fine. Do you know if there is any difference between starting an MPI executable with and without mpirun ? Of course, I can't give additional parameters (e.g. mpirun --mca btl self,openib ), and the rank of all processes is 0, which is all totally fine. But is there anything less obvious? Running

Error loading MPI DLL in mpi4py

自闭症网瘾萝莉.ら 提交于 2019-11-29 07:17:59
I am trying to use Mpi4py 1.3 with python 2.7 on Windows 7 64bits. I downloaded the installable version from here which includes OpenMPI 1.6.3 so in the installed directory (*/Python27\Lib\site-packages\mpi4py\lib) following libraries exist: libmpi.lib, libmpi_cxx.lib, libopen-pal.lib, and libopen-rte.lib. Now in my codes when trying to import it: from mpi4py import MPI It returns following error: ImportError: DLL load failed: The specified module could not be found. I tried to copy a bove lib files alongside the */Python27\Lib\site-packages\mpi4py\MPI.pyd and even to Windows/System32, but it

fault tolerance in MPICH/OpenMPI

只谈情不闲聊 提交于 2019-11-29 06:30:00
I have two questions- Q1 . Is there a more efficient way to handle the error situation in MPI, other than check-point/rollback? I see that if a node "dies", the program halts abruptly.. Is there any way to go ahead with the execution after a node dies ?? (no issues if it is at the cost of accuracy) Q2 . I read in "http://stackoverflow.com/questions/144309/what-is-the-best-mpi-implementation", that OpenMPI has better fault tolerance and recently MPICH-2 has also come up with similar features.. does anybody know what they are and how to use them? is it a "mode"? can they help in the situation

what does it mean configuring MPI for shared memory?

我与影子孤独终老i 提交于 2019-11-29 01:31:02
问题 I have a bit of research related question. Currently I have finished implementation of structure skeleton frame work based on MPI (specifically using openmpi 6.3). the frame work is supposed to be used on single machine. now, I am comparing it with other previous skeleton implementations (such as scandium, fast-flow, ..) One thing I have noticed is that the performance of my implementation is not as good as the other implementations. I think this is because, my implementation is based on MPI

When do I need to use MPI_Barrier()?

↘锁芯ラ 提交于 2019-11-28 22:19:17
问题 I wonder when do I need to use barrier? Do I need it before/after a scatter/gather for example? Or should OMPI ensure all processes have reached that point before scatter/gather-ing? Similarly, after a broadcast can I expect all processes to already receive the message? 回答1: All collective operations in MPI before MPI-3.0 are blocking, which means that it is safe to use all buffers passed to them after they return. In particular, this means that all data was received when one of these

fatal error: mpi.h: No such file or directory #include <mpi.h>

一曲冷凌霜 提交于 2019-11-28 19:10:35
when I compile my script with only #include <mpi.h> it tells me that there is no such file or directory. But when i include the path to mpi.h as #include "/usr/include/mpi/mpi.h" (the path is correct) it returns: In file included from /usr/include/mpi/mpi.h:2087:0, from lbm.cc:7: /usr/include/mpi/openmpi/ompi/mpi/cxx/mpicxx.h:35:17: fatal error: mpi.h: No such file or directory #include "mpi.h" ^ compilation terminated. Anyone know how to fix this? The problem is almost certainly that you're not using the MPI compiler wrappers. Whenever you're compiling an MPI program, you should use the MPI

Exchange Data Between MPI processes (halo)

大兔子大兔子 提交于 2019-11-28 06:57:36
问题 Given the following scenario, I have N MPI processes each with an object. when the communication stage comes, data "usually small" from these object will be exchanged. In general, there is data exchange between any two nodes. What is the best strategy?: In any node X, create tow buffers for each other node with a connection with this node X. and then do send/receive on peer-to-peer basis. in Each node X, create one buffer to gather all the halo data to be communicated. and then "bcast" that

Difference between running a program with and without mpirun

前提是你 提交于 2019-11-28 03:05:30
问题 I implemented a peer-to-peer connection in MPI using MPI_Open_port and MPI_Comm_accept . I run a server and a client program using rafael@server1:~$ mpirun server rafael@server2:~$ mpirun client on different computers. I noticed that rafael@server1:~$ ./server rafael@server2:~$ ./client also works just fine. Do you know if there is any difference between starting an MPI executable with and without mpirun ? Of course, I can't give additional parameters (e.g. mpirun --mca btl self,openib ), and