Commit Graph

47 Commits

Author SHA1 Message Date
Aurelien Bouteiller e783b47388 Bump version number for post-7.2 devel (#356)
[ROCm/rocshmem commit: 64460f0ec9]
2025-12-10 13:03:20 -05:00
Yiltan 258d264ecc Add default context alltoall API (#350)
[ROCm/rocshmem commit: fddbe7b15d]
2025-12-10 11:43:15 -05:00
Aurelien Bouteiller 92459fa840 Update version to 3.2.0 for 7.2.0 rocm release (#351)
[ROCm/rocshmem commit: ef5f2be215]
2025-12-09 10:26:55 -05:00
Anatolii Rozanov f98c72d627 Add host API for *_on_stream operations (#340)
* Add functional test for barrier_all_on_stream

* Add rocshmem_barrier_all_on_stream support for GDA and RO backends

Implements rocshmem_barrier_all_on_stream operation for
GPU Direct Access and Reverse Offload backends.

Previously, rocshmem_barrier_all_on_stream was only supported for IPC backend.

* Add functional test for rocshmem_broadcastmem_on_stream

* Add host-side rocshmem_broadcastmem_on_stream API

Implement stream-based broadcast collective operation

- Add rocshmem_broadcastmem_on_stream host API and kernel implementation
- Add functional test TeamBroadcastmemOnStreamTester with multi-stream
  support and correctness verification
- Use per-workgroup contexts to avoid contention across parallel streams

API:
rocshmem_broadcastmem_on_stream(team, dest, source, nelems, pe_root, stream)

* Add functional test for rocshmem_getmem_on_stream

* Add host-side rocshmem_getmem_on_stream API

Implement stream-based point-to-point RMA get operation

- Add rocshmem_getmem_on_stream host API and kernel implementation
- Support for asynchronous getmem operations on HIP streams
- Add backend support for GDA, RO, and IPC contexts
- Use work-group collective getmem for efficient memory transfer

API:
rocshmem_getmem_on_stream(dest, source, nelems, pe, stream)

(AI Assist)

* Add host-side rocshmem_putmem_on_stream API

- Add rocshmem_putmem_on_stream for asynchronous remote writes
- Support for concurrent RMA operations on HIP streams
- Add backend support for GDA, RO, and IPC contexts
- Use work-group device collective operation

API:
rocshmem_putmem_on_stream(dest, source, bytes, pe, stream)

(AI Assist)

* Add functional test for rocshmem_putmem_on_stream

* Add host-side rocshmem_putmem_signal_on_stream API

Enables asynchronous putmem operations with signaling on HIP streams.

The implementation includes:
- Kernel wrapper rocshmem_putmem_signal_kernel
- Host interface putmem_signal_on_stream method
- Context layer support across all backends (IPC, GDA, RO)
- Public API

Function signature:
void rocshmem_putmem_signal_on_stream(void *dest, const void *source,
                                      size_t bytes, uint64_t *sig_addr,
                                      uint64_t signal, int sig_op,
                                      int pe, hipStream_t stream);

* Add functional test for rocshmem_putmem_signal_on_stream

* Add host-side rocshmem_signal_wait_until_on_stream API

Enables asynchronous signal wait operations on HIP streams.

The implementation includes:
- Kernel wrapper rocshmem_signal_wait_until_kernel
- Host interface signal_wait_until_on_stream method
- Context layer support across all backends (IPC, GDA, RO)
- Native uint64_t support in wait_until API (generated from P2P_SYNC.py)

Function signature:
void rocshmem_signal_wait_until_on_stream(uint64_t *sig_addr, int cmp,
                                          uint64_t cmp_value,
                                          hipStream_t stream);

(AI Assist)

* Add functional test for rocshmem_signal_wait_until_on_stream

* Add documentation for stream API functions

This commit adds API documentation for the following host-side
stream functions:

- rocshmem_barrier_all_on_stream (collective routines)
- rocshmem_broadcastmem_on_stream (collective routines)
- rocshmem_getmem_on_stream (RMA operations)
- rocshmem_putmem_on_stream (RMA operations)
- rocshmem_putmem_signal_on_stream (signaling operations)
- rocshmem_signal_wait_until_on_stream (point-to-point sync)

The documentation includes function signatures, parameter descriptions,
and detailed explanations of asynchronous behavior and stream handling.

(AI Assist)

* Rename "bytes" -> "nelems"

* Add "_TEST_" to the variables used in tests

* Remove incorrect hipStreamDefault usage

hipStreamDefault is not a default stream. This is a flag.

If stream == nullptr, then just pass it to kernel. It will launch the kernel on the default stream

[ROCm/rocshmem commit: d0c8380650]
2025-12-09 08:55:46 -06:00
Anatolii Rozanov 4b04b540bf Add host API for alltoallmem_on_stream collective operation (#333)
* Add host-side rocshmem_alltoallmem_on_stream function

Function signature:
  rocshmem_alltoallmem_on_stream(rocshmem_team_t team, void *dest,
                                 const void *source, size_t size,
                                 hipStream_t stream)

- The function launches rocshmem_alltoallmem_kernel which calls
device-side alltoall<char> workgroup collective through default context.
- Uses dynamic block size determination via occupancy API.
- Implemented for all backends.

* Fix incorrect sync buffer size allocation for alltoall in GDA and IPC backends

When allocating memory for alltoall_pSync_pool in setup_teams() and
teams_init() functions, the code incorrectly used ROCSHMEM_BCAST_SYNC_SIZE
instead of ROCSHMEM_ALLTOALL_SYNC_SIZE.

* Add functional test for team_alltoallmem_on_stream

This commit adds a new functional test to verify the correctness of
the host-side rocshmem_team_alltoallmem_on_stream API.

* Add documentation for rocshmem_alltoallmem_on_stream

This commit adds API documentation for the host-side
rocshmem_alltoallmem_on_stream function in the collective routines
section. The documentation includes:

[ROCm/rocshmem commit: 5577feb70d]
2025-12-03 08:40:24 -05:00
Yiltan f9caef6908 Add rocshmem_int64_p (#335)
[ROCm/rocshmem commit: d9e2890222]
2025-11-26 10:31:23 -05:00
Yiltan cfb3d42524 Update change log for rocm 7.1.1 (#320) (#321)
(cherry picked from commit 783ab37f68ffb72b4baffda516fcc19e2f28804e)

[ROCm/rocshmem commit: 1fb0fc4bd0]
2025-11-14 13:51:03 -05:00
Edgar Gabriel 722b54fddb replace MPI function call. (#317)
* replace MPI function call.

* add two missing defs for RO

[ROCm/rocshmem commit: e1a7e20b1b]
2025-11-12 07:38:47 -06:00
Aurelien Bouteiller 76e8750d88 Add backend type query method, use it to disable 32bit amo testers on gda (#307)
* Add backend type query method, use it to disable 32bit amo testers on
gda

* The infrateam testers work

[ROCm/rocshmem commit: 8c175315f2]
2025-11-05 10:24:07 -05:00
Avinash Kethineedi b771a26916 Add ROCSHMEM_CTX_INVALID for invalid context handling (#287)
* Add `ROCSHMEM_CTX_INVALID` for invalid context handling
  - Define `ROCSHMEM_CTX_INVALID` as {nullptr, nullptr}
  - Add == and != operators to rocshmem_ctx_t
  - Use `ROCSHMEM_CTX_INVALID` on failed context creation
  - Skip ctx destroy if context is invalid

* Update docs for context create and destroy APIs usage and behavior

[ROCm/rocshmem commit: 955c22aeed]
2025-10-22 12:00:56 -05:00
Yiltan 92a7904656 Implement rocshmem_pe_quiet() (#282)
Co-authored-by: Aurelien Bouteiller <aurelien.bouteiller@amd.com>

[ROCm/rocshmem commit: c3eeae473b]
2025-10-20 11:42:39 -04:00
Yiltan c269577b89 Updated docs for ROCm 7.x.x (#239)
Co-authored-by: Aurelien Bouteiller <aurelien.bouteiller@amd.com>
Co-authored-by: yugang-amd <yugang.wang@amd.com>

[ROCm/rocshmem commit: 9338c84480]
2025-10-17 12:10:37 -04:00
Dimple Prajapati 6c4325d131 Add host API for enqueuing barrier on given stream (#274)
* add host API for enqueuing barrier on given stream

[ROCm/rocshmem commit: a44b581997]
2025-10-15 14:29:07 -07:00
Aurelien Bouteiller 8837414042 Cleanup/wg init (#260)
* remove wg_init and wg_finalize from functional tests

* Remove wg_init and wg_finalize from examples

* deprecate wg_init/finalize

* Updated docs

* Typo in documentation

---------

Co-authored-by: Yiltan <yiltan@amd.com>

[ROCm/rocshmem commit: 6e7277b544]
2025-10-07 14:34:18 -04:00
Edgar Gabriel 53fa35b980 Remove MPI compile-time dependency (#264)
* use dlsym for MPI functions

to allow compiling without MPI support, convert the usage of MPI functions and symbols to be based on a dlopen/dlsym based mechanism. Turns out this cannot be done entirely vendor neutral, slightly different solutions might be required for Open MPI, MPICH and the new MPI ABI.

* checkpoint

more work to be done.

* checkpoint 2

* checkpoint 3

* checkpoint 4

examples compile and link correctly

* checkpoitn 5 (I think)

* Checkpoitn 6

* dyld-mpi: adapt GDA

* dyldmpi: tests that depend on MPI need to link with it themselves

* do not ../mpi_instance.h

* dyldmpi: make the symetricHeapTestFixture compile

* dyldmpi: Change cmakery, compiles and run gda w/o external MPI

* Make it also compile in external MPI mode

* dyldmpi: ipc unit tests compile but do not link

* dyldmpi: new approach, if external mpi required, link with mpi,
otherwise use ompi5 abi

* C-style comments in cmakelist..

* dyldmpi: examples: do not fail compiling if MPI not found at build time,
instead do not compile the MPI required examples

* more updates to CMake logic

* convert RO backend

and a few other cleanups

* update some unit tests

to work with the dlopen MPI environment correctly.

---------

Co-authored-by: Aurelien Bouteiller <abouteil@amd.com>

[ROCm/rocshmem commit: e4c427a736]
2025-10-01 08:06:56 -05:00
Aurelien Bouteiller fb7d89c7e6 Cleanup/remove a2a buff (#232)
* Do not allocate a large unused buffer for alltoall

* Remove ATA_MAX_WRKDATA_SIZE from include/rocshmem_common.hpp

[ROCm/rocshmem commit: 30ba79bcad]
2025-09-08 10:55:06 -04:00
Dimple Prajapati 7436abeaa9 rocSHMEM device API changes for bitcode support (#211)
ROCSHMEM_CTX_DEFAULT's visibility needs to be explicitly set to expose that as external device global variable in device bitcode.

[ROCm/rocshmem commit: c952ffb40e]
2025-08-11 12:23:41 -07:00
Dimple Prajapati 72ed270a5c Add host APIs for querying device ctx and remote heap pointer (#200)
* Add host APIs for querying device ctx and remote heap pointer

* Host API to query device pointer for ROCSHMEM_DEFAULT_CONTEXT,
  this is needed to support dynamic module initialization via device kernel
  library bitcode.
* Host API to query remote symmetric heap pointer that can be used in
  custom device kernel for RMA operations.

* Added rocshmem_ptr implementation within the Host Context class
* Enables pointer retrieval functionality for symmetric data objects
* Copy IPC pointers to host memory in RO host context

---------

Co-authored-by: avinashkethineedi <avinash.kethineedi@amd.com>

[ROCm/rocshmem commit: 87f99e7ec6]
2025-07-24 11:03:03 -07:00
Edgar Gabriel f38ffbf84d Revert "Add host API to query Device side context detail (#183)" (#196)
This reverts commit 31804fcad3.

[ROCm/rocshmem commit: a66f782540]
2025-07-07 16:51:44 -05:00
Dimple Prajapati 31804fcad3 Add host API to query Device side context detail (#183)
* API support for enabling rocshmem bitcode integration

* move implementation to along with host side APIs

[ROCm/rocshmem commit: 105382710a]
2025-07-07 16:04:16 -05:00
Avinash Kethineedi 14756a73b1 Refactor Barrier_all and Sync_all APIs to use default context (#159)
* Refactor `Barrier_all` and `Sync_all` to use default context

- Removed context-specific implementations of barrier_all and sync_all
- Added barrier_all and sync_all to the default context implementation
- Updated functional tests to use the default context for barrier_all and sync_all

* Update `Barrier_all` and `Sync_all` API usage in documentation

* Update `CHANGELOG`

---------

Co-authored-by: Yiltan <ytemucin@amd.com>

[ROCm/rocshmem commit: bf48bcabf2]
2025-06-17 11:16:18 -05:00
akolliasAMD 032d5e5c6b updated version and made the header its only source of truth (#144)
* updated version and made it only source of truth

* bumped Version number

[ROCm/rocshmem commit: ca5fdd4718]
2025-05-28 14:48:20 -06:00
Yiltan 6a7644e467 Updated ROCm-docs to match the current status of the repository (#117)
* Updated docs to match the current status of the repository

Co-authored-by: yugang-amd <yugang.wang@amd.com>

[ROCm/rocshmem commit: f43e3cf4fa]
2025-05-16 09:26:59 -04:00
Yiltan 1667e63e30 Initial ROCm-docs (#92)
* Initial ROCm-docs commit

Co-authored-by: Aurélien Bouteiller <bouteill@icl.utk.edu>
Co-authored-by: Alex Xu <alex.xu@amd.com>
Co-authored-by: yugang-amd <yugang.wang@amd.com>

[ROCm/rocshmem commit: f693c98fb2]
2025-05-08 13:39:28 -04:00
Avinash Kethineedi c4de6833f6 Add SPDX license identifiers and update copyright headers (#85)
* Update copyright information and add SPDX license identifier

* Update AUTHORS

* Remove `sos_tests`

[ROCm/rocshmem commit: f6ef19f5a9]
2025-04-15 15:37:53 -05:00
Edgar Gabriel bac7769483 Revamp the uniqueId code to support subgroups of processes (#80)
* add code for bootstrapping

the bootstrapping code has been extracted from the MSCCLPP library,
which in parts is based on the code from NVIDIA. The code has been
modified to match the specific requirements of the rocSHMEM library.

* add code to use the new uniqueId bootstrapping

* adjust init_attr example

extend the rocshmem_init_attr example to use two disjoint groups
of processe, in order to trigger the new code path.

* add env variable for bootstrap timeout

* Update examples/rocshmem_init_attr_test.cc

Co-authored-by: Aurelien Bouteiller <Aurelien.bouteiller@gmail.com>

* Update src/rocshmem.cpp

Co-authored-by: Aurelien Bouteiller <Aurelien.bouteiller@gmail.com>

---------

Co-authored-by: Aurelien Bouteiller <Aurelien.bouteiller@gmail.com>

[ROCm/rocshmem commit: b5830a623b]
2025-04-14 12:02:09 -05:00
Avinash Kethineedi 41d5d739e2 Update collective APIs naming (#77)
* Update the naming convention for collective APIs to ensure consistency across the interface.

* Move all collective API declarations to rocshmem_COLL.hpp

* The following APIs were updated as part of this change:
  - `barrier`
  - `barrier_all`
  - `sync`
  - `sync_all`
  - `all_to_all`
  - `broadcast`
  - `fcollect`
  - `all_reduce`

* Update header file generation code for collective APIs

[ROCm/rocshmem commit: 68421895d6]
2025-04-10 12:14:47 -05:00
Avinash Kethineedi 9bd2b04899 Update Barrier and Sync APIs (#73)
* Add thread, wavefront, and workgroup-level `barrier` APIs in IPC and RO conduits; remove collectives on default context
 - Implemented `barrier` APIs for thread, wavefront, and workgroup scopes
 - Added support into both IPC and RO conduits
 - Added functional tests to cover all `barrier` APIs
 - Removed collective operations on default context

* Add thread, wavefront, and workgroup-level `sync` APIs in IPC and RO conduits.
  - Implemented `sync` APIs for thread, wavefront, and workgroup scopes
  - Added support into both IPC and RO conduits
  - Added functional tests to cover all `sync` APIs

* update naming convention for context-based `barrier` APIs

[ROCm/rocshmem commit: dc61bca066]
2025-04-08 11:25:31 -05:00
Avinash Kethineedi 426bbf525b Update Barrier_All and Sync_All APIs (#72)
* Fix deadlock in `rocshmem_ctx_wg_barrier_all` API in IPC conduit by adding per-context pSync buffers and context IDs
  - Added separate pSync buffers for each device context
  - Resolved deadlock when invoking barrier API (`rocshmem_ctx_wg_barrier_all`) concurrently from multiple contexts

* Update barrier_all functional tests for multi-context support

* Add thread, wavefront, and workgroup-level barrier_all APIs in IPC and RO conduits
  - Implemented barrier_all APIs at thread, wavefront, and workgroup granularity
  - Added support in both IPC and RO conduits
  - Updated functional tests to cover all `barrier_all` APIs

* Add thread, wavefront, and workgroup-level sync_all APIs in IPC and RO conduits
  - Implemented sync_all APIs for thread, wavefront, and workgroup scopes
  - Added support into both IPC and RO conduits
  - Added functional tests to cover all `sync_all` APIs

[ROCm/rocshmem commit: c652f58cef]
2025-04-02 11:58:55 -05:00
Edgar Gabriel 2ab585ce8d add uniqueID initialization (#69)
add the interfaces required to support rocshmem initialization
through the uniqueID mechanism. At the moment this still maps to
MPI initialization underneath the hood, but adding the functions might
simplify the porting of some applications to rocshmem. In addition, if
we need to transition away from MPI one day, this is also one step into
this direction.

[ROCm/rocshmem commit: e9f6227d75]
2025-03-28 16:34:00 -05:00
Edgar Gabriel 1ee9b72449 add rocshmem_barrier() (#61)
* add team-barrier implementation

add a team-barrier API and implementation in the IPC and RO conduit.
Clean up some of the logic in the RO Conduit to distinguish between
sync, sync_all, barrier, and barrier_all.

* add team_barrier_tests to functional tests

[ROCm/rocshmem commit: bcbc42e78f]
2025-03-24 11:23:03 -05:00
avinashkethineedi 6c70aee32e Remove rocshmem_timer function
[ROCm/rocshmem commit: 21dbd5cc5e]
2025-02-17 17:10:51 +00:00
Yiltan Temucin 8da69cf1f4 Renamed debug.hpp to rocshmem_debug.hpp
[ROCm/rocshmem commit: 658915ed35]
2024-12-06 15:49:50 -06:00
avinashkethineedi 29b0518afc Rename config.h to roc_shmem_config.h
[ROCm/rocshmem commit: 6486e29078]
2024-12-06 01:08:13 +00:00
avinashkethineedi 52088167ae Add header files based on sections in OpenSHMEM specifications
* rocshmem_RMA.hpp
* rocshmem_AMO.hpp
* rocshmem_SIG_OP.hpp
* rocshmem_COLL.hpp
* rocshmem_P2P_SYNC.hpp
* rocshmem_RMA_X.hpp


[ROCm/rocshmem commit: 3117a47b8d]
2024-12-05 23:24:10 +00:00
avinashkethineedi 04daad3625 Merge branch PR #55 into naming_scheme
[ROCm/rocshmem commit: d8ce066adc]
2024-12-04 21:46:38 +00:00
Brandon Potter 913ce47ef1 Use new naming scheme
[ROCm/rocshmem commit: fd8dbc7fb6]
2024-11-25 14:25:29 -06:00
Yiltan Temucin ba618ba7a9 Added Signalling Operations
[ROCm/rocshmem commit: d8f44e4436]
2024-11-22 15:36:17 -06:00
Yiltan Temucin 40e28826c9 converted roc_shmemx to roc_shmem
[ROCm/rocshmem commit: c2b736ef3d]
2024-11-12 08:37:56 -06:00
Yiltan Hassan Temucin f887e9b886 removed external access to non-team based reduce
[ROCm/rocshmem commit: 9aa9aea7e6]
2024-11-06 09:46:47 -06:00
Yiltan Hassan Temucin 7f3dd33144 modified team based to_all -> reduce
[ROCm/rocshmem commit: 997eb69b5a]
2024-11-06 09:46:43 -06:00
avinashkethineedi 058aa3ccf3 Remove device-side active-set-based broadcast API interface from rocSHMEM
[ROCm/rocshmem commit: e1ff06913c]
2024-10-29 19:04:49 +00:00
avinashkethineedi 9f9ecd9a38 Remove the device-side active-set-based reduction API interface from rocSHMEM
[ROCm/rocshmem commit: c22048112e]
2024-10-28 21:35:14 +00:00
Yiltan Hassan Temucin 31fe937259 updated atomic_fetch() parameters
[ROCm/rocshmem commit: 8b3854b252]
2024-10-11 13:34:28 -07: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
Brandon Potter ad4ab69c19 Transfer files from RAD repository
[ROCm/rocshmem commit: ea8f264a11]
2024-07-01 09:57:08 -05:00