-
Notifications
You must be signed in to change notification settings - Fork 99
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Allow user to specify logical topology for multi-GPU communications #46
Comments
I recently became aware of this issue when trying to integrate Quda with MILC. On Mon, Jan 30, 2012 at 07:19:52PM -0800, Ron Babich wrote:
|
All sounds readable to me. How much work is this? On Jan 30, 2012, at 19:19, Ron Babichreply@reply.github.com wrote:
|
This is easy, I think, but I want Balint and Guochun to sign off first, since it requires corresponding changes to Chroma and MILC. |
Note that the user-supplied |
Should this be 0.4.0, wouldn't 0.4.1 be more appropriate? |
Adding another reason this: this makes multi-GPU in QUDA for BQCD much less hacky (issue 73). To enable support for it currently in BQCD I have to add a comm_set_gridsize interface to the outside world so that BQCD can communicate its MPI topology to QUDA. |
I'm about to push a commit that implements this. From quda.h:
|
At present, to properly run an application built with QUDA over QMP, it's necessary to specify "-geom Px Py Pz Pt" on the command-line. This is awkward in cases where the application has built-in logic to determine the best layout and is also incompatible with QDP/C, as summarized by James Osborn:
At this stage, I'd suggest not going so far as to rely on QMP communicators, which are still an "alpha" feature, but allowing the user to pass in mapping function seems like a nice solution. This would also add much-needed flexibility to the MPI code path, which currently assumes a simple lexicographical ordering when assigning logical grid coordinates to MPI ranks.
To summarize, I propose replacing this declaration:
with:
Here
fdata
points to any auxiliary data required by the user-supplied mapping functionfunc()
. PassingNULL
forfdata
is perfectly valid. As an implementation detail, note that since we'll no longer be able to assume the existence of a QMP logical topology, we'll have to eliminate the use of "relative" sends and receives in face_qmp.cpp. This is a minor inconvenience but again quoting James Osborn:Comments?
The text was updated successfully, but these errors were encountered: