Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
swiftmpistepsim
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
SWIFT
swiftmpistepsim
Commits
8360c935
Commit
8360c935
authored
5 years ago
by
Peter W. Draper
Browse files
Options
Downloads
Patches
Plain Diff
Add an overview of what the code does and how to get the error
parent
1d66318b
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
exchange-test.c
+33
-0
33 additions, 0 deletions
exchange-test.c
with
33 additions
and
0 deletions
exchange-test.c
+
33
−
0
View file @
8360c935
...
...
@@ -16,6 +16,39 @@
*
******************************************************************************/
/**
* This program simulates the exchange of packed cells between the proxies in
* SWIFT.
*
* What we do here is exchange a fixed sized data area between all MPI ranks,
* so each rank sends that data to all the other ranks, and so in return also
* receives data from all the other ranks. The sends and receives are done
* asynchronously.
*
* So we start isends to send the size of the data to all the other ranks
* (note the size not fixed in SWIFT and all ranks are not in general
* contacted), and also irecvs to receive the sizes from the other ranks. At
* this stage we also start the isends of the data. The data areas are filled
* with the number of the rank that they originate in, so we can check that
* the local data areas have been updated.
*
* We then waitany for the sizes to be received, on receipt we can then setup
* the irecvs for the data (since we now know the size).
*
* We then wait for the local isends to complete (must happen), and proceed to
* waitany for the data to arrive locally. Finally we wait for all the
* irecvs to complete.
*
* This works with Intel MPI 2018 and 2019, but not 2020 when using 16 ranks,
* a data size greater than 32MB and using transport over Mellanox
* (verbs;ofi_rxm). So the simple test:
*
* mpirun -np 16 ./exchange-test
*
* Fails reporting that the local data is not updated, but the irecv for the
* data receipt is supposed to be completed.
*/
#include
<limits.h>
#include
<mpi.h>
#include
<pthread.h>
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment