Граф коммитов

33 Коммитов

Автор SHA1 Сообщение Дата
Edgar Gabriel 2836240906 fix odd-case allreduce scenarios
if the number of elements to be used in the allreduce operation is not
exact multiple of the work-array buffer size and number of pe's, we need
to adjust the algorithm to:
 - initially perform a ring_allreduce on n_segments * chunk_size (which
   is the integer division of the number of elements and the work-buffer
   size, i.e. will not cover the entire buffer)
 - perform another ring_allreduce where chunk_size is reduced to match
   the remaining elements
 - if the remaining elements from the previous step cannot evenly be
   divded by the number of pe's, we need to perform a direct_allreduce on
   the outstanding number of elements.


[ROCm/rocshmem commit: a4b4281f50]
2024-10-24 15:08:32 +00:00
Edgar Gabriel 7b760bb023 fix barrier synchronization on gfx90a
[ROCm/rocshmem commit: 87db7f7d38]
2024-10-24 15:08:28 +00:00
Edgar Gabriel c9b5f03548 ipc: add ring_allreduce algorithms
add the ring allreduce algorithm to the ipc conduit in order to be able
to execute slightly largers reductions.


[ROCm/rocshmem commit: 1fbb89bc73]
2024-10-24 15:07:17 +00:00
Edgar Gabriel 5f0f2f6e85 ipc/to_all: add direct allreduce algorithm
add a simple version of an allreduce algorithm as a starting point.


[ROCm/rocshmem commit: ba21cb7b85]
2024-10-24 15:07:14 +00:00
Avinash Kethineedi 6979677ec5 Merge pull request #41 from avinashkethineedi/collective_routine_buffers
Fine grained memory buffers for work/sync arrays

[ROCm/rocshmem commit: 8a16968cf2]
2024-10-23 23:33:48 -05:00
avinashkethineedi 82d296db73 Fix quiet and fence of default context
* Update tinfo of default context


[ROCm/rocshmem commit: d5ea5868e3]
2024-10-22 16:18:05 +00:00
avinashkethineedi fbcba80cd3 Add fine grained memory buffers for work/sync arrays
* Add interanl put_mem/get_mem{_wave, _wg} functions to read/write to work/sync arrays
* Add condition check to ensure all MPI processes are on the same compute node for IPC conduit


[ROCm/rocshmem commit: 6685d0ab60]
2024-10-21 15:28:39 +00:00
Yiltan Hassan Temucin 3d0fca0387 updated *_wait* APIs to use int rather than roc_shmem_cmps
[ROCm/rocshmem commit: 722a5f0731]
2024-10-11 13:34:28 -07:00
Yiltan Hassan Temucin 496f06dd2b *_wait* routines changed parameter from ptr to ivars to match OpenSHMEM
[ROCm/rocshmem commit: bcf3fdff10]
2024-10-11 13:34:28 -07:00
Yiltan Hassan Temucin 17323323f8 fixed notifier bug
[ROCm/rocshmem commit: 509277c034]
2024-10-10 06:45:43 -07:00
Yiltan Hassan Temucin 8334214b98 added notifier->sync() when we are not using cooperative groups
updated scope bug


[ROCm/rocshmem commit: b1134e8633]
2024-10-09 13:11:28 -07:00
Yiltan Hassan Temucin caa6d356c0 Added Cooperative Groups configure option and header
[ROCm/rocshmem commit: 63667a3167]
2024-10-09 13:11:12 -07:00
Yiltan Hassan Temucin 45976b23ae Fix initialization order bug
[ROCm/rocshmem commit: 1baa071edf]
2024-10-09 13:11:12 -07:00
Yiltan Hassan Temucin ef571f5863 fixed barrier issue on MI250X
[ROCm/rocshmem commit: e2f6a65284]
2024-10-08 13:18:04 -07:00
avinashkethineedi 37b1de86cd Add team information to the context
* Update roc_shmem_ctx_fence API to use team-relative PE numbering
* Update backend to populate team_opaque member of ROC_SHMEM_CTX_DEFAULT (used to store information about the team wrt TEAM_WORLD)


[ROCm/rocshmem commit: 92fb1abaf2]
2024-10-04 17:56:15 +00:00
avinashkethineedi 69784a7423 Add fence and quiet functionality
* Perform atomic stores to enforce memory ordering


[ROCm/rocshmem commit: 979aed105a]
2024-10-03 06:28:12 +00:00
Avinash Kethineedi c88645e402 Merge branch 'ipc_bringup' into ipc_atomics
[ROCm/rocshmem commit: e58077e3cf]
2024-09-09 14:22:55 -05:00
Edgar Gabriel 1ddc82fc28 remove pSync from internal_bcast functions
remove the pSync arguments from the internal_broadcast functions,
they are not used anyway.


[ROCm/rocshmem commit: dfcacdc4a3]
2024-09-09 12:06:30 -07:00
avinashkethineedi e381ea5478 remove local_pe calculation from puts, gets and atomics functions
* All the PEs are assumed to be accessible using IPC backend


[ROCm/rocshmem commit: 7bbf34d334]
2024-09-05 11:52:00 -07:00
Edgar Gabriel 6f93dd9585 ipc/context_ipc_device.cpp: set barrier_sync
set the barrier_sync variable on the context during
object creation


[ROCm/rocshmem commit: aae6295460]
2024-08-28 09:41:05 -07:00
avinashkethineedi 14a8bf726a Add atomics
* Add atomic_add, atomic_set, atomic_cas, atomic_fetch_add and atomic_fetch_cas to IPC backend


[ROCm/rocshmem commit: e1e1ac6df6]
2024-08-28 08:30:46 -07:00
avinashkethineedi 1335d98f1f Update IPC object
* Update the IPC object in the context class with the instance created in the IPC backend


[ROCm/rocshmem commit: 45a8cb3354]
2024-08-28 08:14:38 -07:00
Edgar Gabriel 9a380a65ff first cut on collectives and sync
code is based on the GPUIB implementations of the routines, which seem
however generic enough to work also for the IPC conduit.

Some code is in for broadcast, fcollect, and alltoall.


[ROCm/rocshmem commit: 0de3b5e6fc]
2024-08-27 15:03:38 -07:00
Edgar Gabriel f0127c9e21 remove device wait_until functions
adding the device versions of the wait_until* and test functions in the
ipc folder leads to linking errors of the functional tests. Remove them
and use for now the upper level versions of the functions, similarly to
the RO conduit. Might have to revisit this later again.


[ROCm/rocshmem commit: e2e30b5339]
2024-08-27 15:03:32 -07:00
avinashkethineedi 1432a6be71 Add buffers required for collectives
[ROCm/rocshmem commit: a9571ec002]
2024-08-22 09:28:09 -07:00
avinashkethineedi 6f8d2df73a Add IPC teams
[ROCm/rocshmem commit: a59bdd4f6b]
2024-08-22 09:15:44 -07:00
avinashkethineedi 6228db57e4 Add gets and puts functionality to IPC context
[ROCm/rocshmem commit: c8b0f2378e]
2024-08-15 13:17:44 -07:00
avinashkethineedi d06394fa2c remove ipc_policy.{hpp & cpp} and context_ipc.{hpp & cpp}
* move ipc_policy.{hpp & cpp} to src
* rename context_ipc.{hpp & cpp} to context_ipc_device.{hpp & cpp}


[ROCm/rocshmem commit: b68867ee17]
2024-08-15 08:52:06 -07:00
avinashkethineedi 60fb77de73 Add IPC backend
* add backend_ipc.{cpp & hpp}
* rename context_ipc.{cpp & hpp} to context_ipc_device.{cpp & hpp}
* add host interface to IPC backend
* add context_ipc_host.{cpp & hpp} to support host interface
* add USE_RO compile flag to enable support for single backend interface at a time
* add ipc_single script to build rocSHMEM with IPC backend


[ROCm/rocshmem commit: 49779863c2]
2024-08-14 22:59:02 -07:00
avinashkethineedi a13e2599d9 Code refactor
move ipc_policy.hpp and ipc_policy.cpp files to src, since they are used by all the conduits.


[ROCm/rocshmem commit: 24375a949e]
2024-08-14 20:44:35 -07:00
Brandon Potter bda68c964e Add ipc unit_tests
[ROCm/rocshmem commit: 58c5a98b5d]
2024-08-07 12:18:12 -07:00
Edgar Gabriel e3e8f13414 src/ipc: add context_ipc barebone code
[ROCm/rocshmem commit: de750ddacc]
2024-07-26 08:22:33 -07:00
Edgar Gabriel edf3f98d66 src/ipc: IPC folder refactor
mv ipc_policy.{hpp,cpp} into a separate folder as a start for the
standalone IPC conduit.

Unit tests and functional tests pass on the developmpent system.


[ROCm/rocshmem commit: 1183006e20]
2024-07-25 07:33:41 -07:00