2

I have done a significant amount of testing trying to use windows named shared memory between multiple independently run programs, across two MPI hosts. The result has been MPI with admin rights not having windows privileges to access the Global\ shared memory.

If the MPI was to launch the EXE would they be considered child processes, and windows would allow memory access to them?

One of the processes contains DirectX, seems like it would be messy to incorporate DirectX directly into a MPI program, therefore I have kept them as independent EXE.

Previously asked about windows privileges for Intel MPI, on Intel's forms but no solutions found yet. ( https://software.intel.com/en-us/forums/intel-clusters-and-hpc-technology/topic/635157 ) Asking here in a more general sense to see if there are other approaches to this that I haven't been able to find.

Still looking for solutions to:

  • Gaining windows privileges for programs run with mpiexec
  • Running a Direct3D app with mpiexec

Decided to go with WinSockets seems promising.

Greg X
  • 61
  • 4

1 Answers1

1

How MPI launches the processes is highly implementation and configuration defined. Any assumptions will result in a poorly portable program. Evidently you cannot even assume that the processes are launched on the same node.

I see no reason not to incorporate MPI into a DirectX program. One solution to keep separate exe (although all using MPI), is to rely on MPMD.

See the OpenMPI FAQ, this should work similarly for IntelMPI or MPICH:

mpirun -np 2 app.exe : -np 1 dx-app.exe

Then use MPI communicators to separate the different kinds of processes and normal MPI facilities for communication (e.g. MPI-3 RMA, if you don't want messages).

You could even go for inter-communicators with MPI_COMM_SPAWN / MPI_COMM_CONNECT, but I see little benefit the way you describe the use-case.

Zulan
  • 21,896
  • 6
  • 49
  • 109
  • I added enough to my DirectX portion of my program to be run with MPI. When I launch using "mpiexec -np 1 -localonly program.exe" it pops up and runs. But when I don't include -localonly it just hangs in the console window and I can find program.exe in the background with windows task manager. Any ideas why this is? (no reported errors when I enable debugging in the console) – Greg X Jun 06 '16 at 11:19
  • Does the same work with a hello-world-example? Is it still Intel MPI? I'm afraid I have little specific experience with MPI on windows, but usually there are lots of options for `mpirun` to debug the launch. – Zulan Jun 06 '16 at 13:06
  • With a hello world example a MPMD test works perfect. Yes it is Intel MPI. -I was able to setup the project to run in VisualStudio with the MPI cluster debugger and found the error DXGI_ERROR_NOT_CURRENTLY_AVAILABLE when not using local only. It seems there are issues with Direct3D and remote operations according to other forums still looking into this. – Greg X Jun 07 '16 at 02:57