Commit Graph

46 Commits

Author SHA1 Message Date
Wenkai Du e6b6a37528 Revert "Remove unused code path (#1527)" (#1530)
This reverts commit a7d9bfda6e.

[ROCm/rccl commit: d00e903d72]
2025-02-04 13:14:43 -08:00
Wenkai Du a7d9bfda6e Remove unused code path (#1527)
[ROCm/rccl commit: 091bf899a1]
2025-02-04 10:24:56 -08:00
Bertan Dogancay b52af8d803 [P2P] Have connIdx for both send and recv (#1524)
[ROCm/rccl commit: 387c973b5d]
2025-02-04 11:53:20 -05:00
Bertan Dogancay e171f59719 [BUILD] Fix unsupported arguments in generator (#1519)
* Fix unsupported arguments in generator

* Get ROCM_PATH as env variable

[ROCm/rccl commit: 5804603632]
2025-02-03 14:51:55 -05:00
Wenkai Du 37409368f9 Add back opCount and channel ID to debug trace (#1520)
[ROCm/rccl commit: a5c6b547a2]
2025-02-03 08:55:27 -08:00
Wenkai Du f94af0c9ba Add HDP flush for gfx940 (#1434)
* Fix collective trace

* Use nontemporal for st_global

* Fix previous commit

* Add HDP flush to data receive path

* Fix previous commit

* Control flushing by NCCL_NET_FORCE_FLUSH and RCCL_NET_HDP_FLUSH

* Introduce RCCL_NET_HDP_FLUSH and RCCL_NET_GDR_FLUSH

Both are on by default. Turn both off will skip all flush will likely
result in data error.

* Enable GDR copy by default

* Remove GDR flush env var because it is disabled by GDC flush

* Output kernel collective trace at comm destroy by default

* Limit kernel timeout messages to 100

* Use system relaxed atomic for loadInt

* Refine timeout messages and use atomic for setting offset from CPU

* Add kernel trace for barrier timeout

* Add backup barrier to avoid race in atomicAdd

* Use different counters for different warps

* Rework barrier implementation

* Fix for other GFX

* Use __hip_atomic_store and __hip_atomic_load

* Fix bug in previous commit

* Don't reset barrier values in running kernel

* Update trace format

* Fix typo

* Switch back to hip_atomic_fetch_add

* Use same barrier implementation for all GFX

* Remove extra threadfence

* Turn off HDP flush by default

Please use RCCL_NET_HDP_FLUSH=1 to switch on HDP flush

* Remove unnecessary changes from alterative barrier implementation

* Added back __threadfence_block

* Revert back to threadfence for gfx other than gfx94x

[ROCm/rccl commit: caba0bc049]
2025-01-31 07:51:10 -08:00
BertanDogancay 1b000665df Merge remote-tracking branch 'nccl/master' into develop
[ROCm/rccl commit: 36343be84f]
2025-01-23 12:08:46 -06:00
corey-derochie-amd abc9197821 Removing duplicate definitions of INC_COLL_TRACE and traceData macros (#1500)
They are nearly identical, except the common.h definition sets `collTrace->channelId`.

[ROCm/rccl commit: f77308a2fe]
2025-01-22 16:50:27 -07:00
Dingming Wu b6ae2fd71d improving kernel traces on opCount bits and adding channelId in ncclCollTrace (#1485)
[ROCm/rccl commit: 69d0134ed2]
2025-01-10 07:57:46 -08:00
Bertan Dogancay df51937f09 Fix typo in ncclGetKernelIndex macro (#1424)
[ROCm/rccl commit: dfe4a3ed81]
2024-11-18 10:40:05 -05:00
Bertan Dogancay 9041572e23 Template generic kernel for unroll factor (#1419)
* Template generic kernel for unroll factor

[ROCm/rccl commit: cb175fb0b3]
2024-11-12 18:27:29 -05:00
Bertan Dogancay 57710c1183 Dynamically select unroll factor to build for when targeting local arch (#1371)
* Dynamically select unroll factor to build for when targeting local arch only

[ROCm/rccl commit: 373f113524]
2024-10-21 10:53:11 -04:00
akolliasAMD ad2c8c3eb8 added atomic acquire for gfx12 on prims_simple (#1382)
[ROCm/rccl commit: af5678641d]
2024-10-18 11:26:38 -06:00
akolliasAMD 949fdd027b disabled wbinvl1 for gfx9x on ll128 (#1365)
[ROCm/rccl commit: bc519fd733]
2024-10-08 08:43:29 -06:00
Bertan Dogancay 974c13cd62 [BUILD] Move code generation to python from CMake (#1360)
* Use generate.py for func generation

* Convert AddUnroll.cmake to bash

[ROCm/rccl commit: 2dd10c8f17]
2024-10-03 10:21:19 -04:00
BertanDogancay 9059445acb Merge remote-tracking branch 'nccl/master' into develop
[ROCm/rccl commit: 84081064a0]
2024-10-02 09:31:25 -05:00
akolliasAMD 38e189bb1e removed hcc mentions (#1291)
[ROCm/rccl commit: d6c317d6ae]
2024-08-14 15:04:13 -06:00
Richard Barnes 92d874be50 Remove unused but set variable from all_reduce.h (#1258)
Allows `-Wunused-but-set-variable` to pass

[ROCm/rccl commit: d09b152aa0]
2024-07-29 08:11:24 -07:00
Richard Barnes 3d208c8eb9 Remove unused but set variable from prims_ll128.h (#1257)
Allows `-Wunused-but-set-variable` to pass

[ROCm/rccl commit: 86a4ad6e8b]
2024-07-29 08:11:01 -07:00
Richard Barnes 780324296c Remove unused but set variable from prims_ll.h (#1256)
Allows `-Wunused-but-set-variable` to pass

[ROCm/rccl commit: 7ad432ee23]
2024-07-29 08:10:38 -07:00
Wenkai Du 54e4899607 Template unroll for RCCL kernels (#1250)
* Template unroll for RCCL kernels

* Adding unroll template arg during CMake hipification

* Reduce linking parallel jobs to avoid OOM in CI

* Workaround issues with UT tests

SWDEV-469533: register spill fix is needed for mainline build
LWPCOMMLIBS-369: cannot enable 112 channels with 80 CUs
Use -parallel-jobs=8 for linking

* CI: do not use -j 16 when building

* CI: use -j 8 when building

* Only reduce parallel linking job for CI extended

* Restore original jenkins command. Change parallel linking jobs in cmake

* Disable MSCCLPP

---------

Co-authored-by: gilbertlee-amd <gilbert.lee@amd.com>

[ROCm/rccl commit: 89349f2ce4]
2024-07-19 08:15:59 -07:00
akolliasAMD 942555fd21 gfx12 initial enablement (#1219)
[ROCm/rccl commit: 63e4d76e23]
2024-07-10 13:32:09 -06:00
Wenkai Du b3e9d2d61b NPKit: separate time stamps for GPU access from different blocks (#1229)
To avoid races in memory access in GPU

[ROCm/rccl commit: 9d8f68b4ee]
2024-06-28 08:00:22 -07:00
Sylvain Jeaugey 5ca1b6c160 2.22.3-1
Rework core for NVIDIA Trusted Computing
 * Compress work structs so that they are shared between channels
 * Utilize the full amount of kernel argument space permitted (4k)
   before resorting to work fifo.
 * Rework the task preprocessing phase.
 * Use a separate abortDevFlag which is kept in sync with abortFlag
   using cudaMemcpy operations.
 * Rename src/include/align.h to src/include/bitops.h

Add lazy connection establishment for collective operations
 * Move buffer allocation and connection establishment to the first
   collective operation using that algorithm.
 * Accelerate init time and reduce memory usage.
 * Avoid allocating NVLS buffers if all calls are registered.
 * Compute algo/proto in ncclLaunchCollTasksInfo early on.
 * Connect peers in ncclCollPreconnectFunc if not connected already.
 * Also move shared buffer creation to the first send/recv call.

Accelerate intra-node NVLink detection
 * Make each rank only detect NVLinks attached to its GPU.
 * Fuse XMLs to reconstruct the full NVLink topology

Add init profiling to report time spend in different init phases.
 * Report timings of bootstrap, allgather, search, connect, etc.
 * Add new "PROFILE" category for NCCL_DEBUG_SUBSYS.

Add support for PCI p2p on split PCI switches
 * Detect split PCI switches through a kernel module exposing
   switch information.
 * Update the topology XML and graph to add those inter-switch
   connections.

Add cost estimation API
 * Add a new ncclGroupEndSimulate primitive to return the estimated
   time a group would take.

Net/IB: Add separate traffic class for fifo messages
 * Add NCCL_IB_FIFO_TC to control the traffic class of fifo messages
   independently from NCCL_IB_TC.
   Merges PR #1194

Net/IB: Add support for IB router
 * Use flid instead of lid if subnets do not match
 * Warn if flid is 0

Optimizations and fixes for device network offload (unpack)
 * Double the default number of channels
 * Cache netDeviceType
 * Fix save/increment head logic to enable Tree support.

Support ncclGroupStart/End for ncclCommAbort/Destroy
 * Allow Abort/Destroy to be called within a group when managing
   multiple GPUs with a single process.

Improve Tuner API
 * Provide to the plugin the original cost table so that the plugin
   can leave unknown or disabled algo/proto combinations untouched.
 * Remove nvlsSupport and collnetSupport.

Do not print version to stdout when using a debug file
 * Also print version from all processes with INFO debug level.
   Fixes issue #1271

Fix clang warnings in NVTX headers
 * Update NVTX headers to the latest version
   Fixes issue #1270

Disable port fusion in heterogeneous systems
 * Do not fuse ports if a mix of multi-port and single port are detected.

Fix NVLS graphs search for dual NICs.
 * Fix NVLS graph search when we have more than one NIC per GPU.

Fix crash with collnetDirect
 * Add separate graph search for collnetDirect, testing alltoall paths
   and working similarly to the NVLS search.

Fix hang when nodes have different CPU types
 * Add the CPU type to the rank peer info.
 * Align all ranks on the CPU type after the first allgather.
 * Only use the aligned CPU type for all tuning operations.
   Fixes issue #1136
   Fixes issue #1184

Fix performance of registered send/recv operations
 * Allow for single full size operations
 * Add INFO to confirm the registration of send/recv buffers.

Move all sync ops to finalize stage
 * Ensure ncclCommDestroy is non-blocking if ncclCommFinalize has
   been called.

Improve error reporting during SHM segment creation

Improve support of various compilers
   Merges PR #1177
   Merges PR #1228

Allow net and tuner plugins to be statically linked
 * Search for ncclNet or ncclTuner symbols in the main binary.
   Merges PR #979

Plugin examples includes cleanup
 * Harmonize err.h and common.h usage.
 * Add mixed plugin with both net and tuner.


[ROCm/rccl commit: 178b6b7590]
2024-06-19 01:57:16 -07:00
Nusrat Islam 48821ad0d7 set MAXCHANNELS to 128
[ROCm/rccl commit: ef442f8f92]
2024-06-03 13:05:05 -05:00
Nusrat Islam ed2f96bc6a device: update the logic for channelId assignment
[ROCm/rccl commit: 48859a97b1]
2024-06-03 13:03:18 -05:00
Nusrat Islam b0b2aa1166 add 256 channels support
[ROCm/rccl commit: 506f16c506]
2024-06-03 13:03:18 -05:00
Wenkai Du 0ff5fc0bad npkit: add broadcast trace (#1166)
[ROCm/rccl commit: a0cef69110]
2024-05-07 14:00:16 -07:00
Wenkai Du 3906e992f8 MSCCL: add support for out-of-place all reduce (#1156)
[ROCm/rccl commit: 4e1b8c1cbb]
2024-04-28 19:49:09 -07:00
Wenkai Du 3c94f98688 Revert "Use relaxed atomics for LL on GFX11 (#859)" (#1148)
This reverts commit 5983f0e371.

Use inline asm for 128b load on GFX11 for better peformance.

[ROCm/rccl commit: f330b82985]
2024-04-26 07:49:55 -07:00
Shilei Tian 9a203f439c SWDEV-455705: Fix an UB that could lead to miscompilation (#1155)
[ROCm/rccl commit: efe99057b0]
2024-04-25 10:10:01 -07:00
Wenkai Du e494f29235 Replace __HIP_PLATFORM_HCC__ with __HIP_PLATFORM_AMD__ (#1154)
[ROCm/rccl commit: 9e0c9b4ed8]
2024-04-25 07:19:18 -07:00
BertanDogancay 36f9492cda Merge remote-tracking branch 'nccl/master' into develop
[ROCm/rccl commit: e1a835910e]
2024-04-23 13:34:00 -07:00
mberenjk da835cff9c replacing rccl_bfloat16 with hip_bfloat16 (#1126)
Co-authored-by: mberenjk <mberenjk@amd.com>

[ROCm/rccl commit: 428837ffe4]
2024-04-11 11:30:37 -05:00
Sylvain Jeaugey 792c33598f 2.21.5-1
Add support for IB SHARP 1PPN operation with user buffers.
Improve support for MNNVL, add NVLS support and multi-clique support.
 * Detect the NVLS clique through NVML
 * Exchange XML between peers in the same NVLS clique and fuse XMLs
   before creating the topology graph.
 * Rework bootstrap allgather algorithms to allow for large allgather
   operations intra-node (XML exchange).
Net/IB: add support for dynamic GID detection.
 * Automatically select RoCEv2/IPv4 interface by default. Allow to
   select IPv6 or even the network/mask.
Reduce NVLS memory usage.
 * Add stepSize as property of a connection to allow for different
   sizes on different peers; set it to 128K for NVLink SHARP.
Improve tuner loading
 * Look for more paths, be more consistent with the network device
   plugin.
 * Also search for tuner support inside the net plugin.
Improve tuner API
 * Add context to support multi-device per process.
Add magic number around comm object to detect comm corruption.
 * Add some basic check around communicators so that we can report a
   problem when a communicator gets corrupted or a wrong comm pointer
   is passed to NCCL.
Fix net/IB error path. Github PR #1164
Fix collnet rail mapping with split comm.
Fix packet reordering issue causing bootstrap mismatch
 * Use a different tag in ncclTransportP2pSetup for the connectInfo
   exchange and the following barrier.
Fix hang when crossNic is inconsistent between ranks.
Fix minCompCap/maxCompCap computation. Github issue #1184


[ROCm/rccl commit: ab2b89c4c3]
2024-04-02 01:53:21 -07:00
Andy li e373bd44bf Enable fp8 support (#1101)
* initial checkin

* resolve cr comments

* resolve the build issue

* fix the data correctless issue

* update fp8 header file and update the unit test for fp8 support

* remove fp16 from fp8 headers

* fix ut issue and catch up the latest code from develop

* udate according to cr comments

* update ut according to cr comments

* update num floats for each SumPostDiv from 4 to 6

* update fp8 header file name

* fix the typo

[ROCm/rccl commit: 6777e65c1d]
2024-03-08 15:17:53 -08:00
BertanDogancay ef72944015 Disable unsupported ld/st instructions
[ROCm/rccl commit: 6f3310605c]
2024-02-15 13:58:16 -08:00
BertanDogancay 7842411fb3 Merge remote-tracking branch 'rccl/develop' into 2.19.4
[ROCm/rccl commit: 76f83f95ab]
2024-02-15 13:37:14 -08:00
Sylvain Jeaugey 2ab8a3a750 2.20.3-1
Add support for alternating rings, allow for cross-nic rings without
cross-rail communication.
Add support for user buffer registration for network send/recv.
Optimize aggregated operations to better utilize all channels.
Add flattening for BCM PCI gen5 switches.
Add support for inter-node NVLink communication
Add support for port fusion in NET/IB.
Add support for ReduceScatter and AllGather using Collnet.
Update net API to v8.
Fix hang during A2A connection.


[ROCm/rccl commit: b6475625fb]
2024-02-13 04:22:38 -08:00
Wenkai Du d5f5091e5d Merge remote-tracking branch 'rccl/develop' into 2.19.4
[ROCm/rccl commit: d999d9ad21]
2024-02-09 11:31:03 -06:00
BertanDogancay 5ce968f570 Fix stack size
[ROCm/rccl commit: da85abab54]
2024-01-31 17:09:07 -08:00
Wenkai Du 4f4e52aafe Merge remote-tracking branch 'rccl/develop' into 2.19.4
[ROCm/rccl commit: 1a134b283b]
2024-01-31 11:53:10 -06:00
BertanDogancay a2b3e1ab2d correct data type
[ROCm/rccl commit: 31ec5d5cb0]
2024-01-28 19:55:19 -08:00
Wenkai Du a7a60a06ec Fix sendrecv merge
[ROCm/rccl commit: 4aafb2a3c5]
2024-01-24 16:23:53 -08:00
BertanDogancay 404d398bac Merge remote-tracking branch 'nccl/v2.19' into develop
[ROCm/rccl commit: 81ddf9de89]
2024-01-24 15:25:33 -08:00
Sylvain Jeaugey 506d6c332c 2.19.1-1
Add local user buffer registration for NVLink SHARP.
Add tuning plugin support.
Increase net API to v7 to allow for device-side packet reordering;
remove support for v4 plugins.
Add support for RoCE ECE.
Add support for C2C links.
Better detect SHM allocation failures to avoid crash with Bus Error.
Fix missing thread unlocks in bootstrap (Fixes #936).
Disable network flush by default on H100.
Move device code from src/collectives/device to src/device.


[ROCm/rccl commit: f9c3dc251e]
2023-09-26 05:50:33 -07:00