Commit Graph

336 Commits

Author SHA1 Message Date
Wenkai Du 0108a1219d Use cached value for detecting GDR support only once
[ROCm/rccl commit: 67c8e72ce3]
2020-05-22 17:19:10 +00:00
Wenkai Du 5ba51914f1 Update rccl_bfloat16.h to match rocBLAS
[ROCm/rccl commit: d5a07a7b5c]
2020-05-08 22:48:07 +00:00
Wenkai Du 9813d67cd1 Merge remote-tracking branch 'nccl/master' into HEAD
[ROCm/rccl commit: c4edc257b0]
2020-04-27 17:16:54 +00:00
Sylvain Jeaugey 627e1a06d0 Fix bug #307 : wrong NIC selection on the reduction tree.
The reduction tree (tree up) was inverting the NICs to use,
causing performance issue in cases where we are using different
NICs on a given channel.


[ROCm/rccl commit: b5b6c6acdd]
2020-04-09 17:14:07 -07:00
Wenkai Du 4aeb7f041e Merge remote-tracking branch 'nccl/master' into v2.6.4_merge
[ROCm/rccl commit: fa36fd9ef9]
2020-04-01 13:35:12 -07:00
Sylvain Jeaugey 40adc74496 2.6.4-1
Add support for network collectives.
Add support for XML topology dump/injection.
Add text values for GDR and P2P Levels, including "NVL".
Add speed detection for PCI, Infiniband and Ethernet cards.
Add CPU detection for ARM and AMD CPUs.
Add support for adaptive routing on Infiniband.
Change NET plugin API to v3 : merge PCI path and GPU pointer
  capability into a single structure and add other properties.


[ROCm/rccl commit: b221128eca]
2020-03-20 14:58:36 -07:00
Stanley Tsang e5419407c4 Updating copyright notices for 2020.
[ROCm/rccl commit: 20fa04d9b6]
2020-01-29 15:28:08 -08:00
Wenkai Du d2fbcfea02 Misc fixes and improvements for 2.5.6
1. Fix RCCL unit test
2. Add ROME detection and tuning
3. Change default P2P level
4. Fix search algorithm for XGMI
5. Remove explicit channel duplication with implicit by using half of link speed
6. Add collective trace support
7. Correct Intel Skylake CPU detection and bandwidth
8. Fix topo connect function
9. Disable GDR read and remove unreachable code
10. Disable LL128 kernels
11. Add tuning parameters
12. Use original clock64() implementation which returns RTC counter value
13. Print out timestamp of collective trace
14. Do not use struct ncclColl in kernel launch parameter
15. Fix abort handling and add tracing
17. Add __launch_bounds__ to kernel functions
18. Remove unused abortCount
19. Unset default MIN_NRINGS and MIN_NCHANNELS
20. Do not allocate shared memory when not using LL128 kernels
21. Correct time print out in tuning log


[ROCm/rccl commit: 1e55645d97]
2020-01-29 15:27:05 -08:00
Wenkai Du d7d4175df0 Merge remote-tracking branch 'remotes/nccl/master' into rccl_2.5.6
[ROCm/rccl commit: 6648c81dc6]
2019-12-03 15:42:04 -08:00
Sylvain Jeaugey 71560fd67b 2.5.6-1 (#255)
Add LL128 Protocol.

Rewrite the topology detection and tree/ring creation (#179). Improve
tree performance by sending/receiving from different GPUs. Add
model-based tuning to switch between the different algorithms and
protocols.

Rework P2P/SHM detection in containers (#155, #248).

Detect duplicated devices and return an error (#231).

Add tuning for GCP

[ROCm/rccl commit: 299c554dcc]
2019-11-19 14:57:39 -08:00
Wenkai Du 1e182391ad Add bfloat16 support in RCCL
Preprocessor symbol RCCL_BFLOAT16 is used as feature indicator


[ROCm/rccl commit: 5e109ed400]
2019-11-18 13:45:53 -08:00
Wenkai Du 41f6319b33 Check for fine grain support using memory allocation
[ROCm/rccl commit: 669f1951a4]
2019-11-01 15:58:49 -07:00
Wenkai Du 60989a3fc9 Merge remote-tracking branch 'remotes/nccl/master' into HEAD
[ROCm/rccl commit: 7c38da0939]
2019-08-16 16:13:34 -07:00
Michael LIAO f4a240065f Fix build with hip-clang.
- Add necessary function attribute for HIP programming model.
- Explicitly include hsa headers.


[ROCm/rccl commit: 9369f8d75d]
2019-08-15 14:56:04 -04:00
Wenkai Du d4862fa605 Tune LL threshold for VEGA
Also move abort check after SPINS_BEFORE_CHECK_ABORT as NCCL


[ROCm/rccl commit: 2223cccf15]
2019-08-15 09:16:11 -07:00
Wenkai Du 6047487815 RCCL 2.4 update
[ROCm/rccl commit: f11c8f60cd]
2019-08-14 10:42:35 -07:00
David Addison d57c0b0f92 Updated PR#196 to use a common hash function
[ROCm/rccl commit: fad079a8ae]
2019-08-14 10:08:39 -07:00
David Addison bb5b11fa23 Merge branch 'shm' of git://github.com/lowintelligence/nccl into lowintelligence-shm
[ROCm/rccl commit: 01d1836668]
2019-08-14 09:45:45 -07:00
David Addison c7957daee3 Make use of SO_REUSEPORT conditional
Fixes: #244

SO_RESUEPORT was introduced in Linux 3.9 and later.
This change allows NCCL to compile against older releases.

The functionality is only required if the user is specifying
a NCCL bootstrap address via an environment variable.


[ROCm/rccl commit: 7f2b337e70]
2019-08-13 16:32:07 -07:00
Ke Wen 4211da6d29 Size up IPC buffers to multiples of 2MB
Avoid potential CUDA error in concurrent communicator initialization


[ROCm/rccl commit: c8c68fb5f7]
2019-07-12 09:50:17 -07:00
Hirochika Asai ee08e8b421 Add the exact matching modifier support "=" to the NCCL_IB_HCA variable (#236)
Perform exact matching when the prefix "=" is specified in the NCCL_IB_HCA variable to exclude HCAs mlx5_X[0-9]+ when mlx5_X is specified.

[ROCm/rccl commit: 0b192d2299]
2019-07-09 14:45:41 -07:00
Ke Wen b91d8170f8 2.4.8-1
Fix #209: improve socket transport performance
  Split transfers over multiple sockets
  Launch multiple threads to drive sockets
  Detect AWS NICs and set nsockets/nthreads accordingly


[ROCm/rccl commit: 7c72dee660]
2019-06-25 13:22:47 -07:00
David Addison 17c8317cb1 NCCL 2.4.6-1
Added detection of IBM/Power NVLink bridge device.
    Add NUMA support to PCI distance calculations.
    Added NCCL_IGNORE_CPU_AFFINITY env var.
    Fix memory leaks; GithubIssue#180
    Compiler warning fix; GithubIssue#178
    Replace non-standard variable length arrays. GithubIssue#171
    Fix Tree+Shared Memory crash. GithubPR#185
    Fix LL cleanup hang during long running DL jobs.
    Fix NCCL_RINGS environment variable handling.
    Added extra checks to catch repeat calls to ncclCommDestroy() GithubIssue#191
    Improve bootstrap socket connection reliability at scale.
    Fix hostname hashing issue. GithubIssue#187
    Code cleanup to rename all non device files from *.cu to *.cc


[ROCm/rccl commit: f40ce73e89]
2019-04-05 13:05:45 -07:00
Cao Zongyan 8b3bc4ef7a Fix share memory collision in multi-communicator case.
Current SHM object name would only use pidHash and ranks as
identification, which would collide each other when program runs with
multiple communicators. Here we added commId info into pidHash, it makes
'pidHash'es of different communicators keeping in same process will be
distincted with each other.


[ROCm/rccl commit: 161763aab2]
2019-03-15 12:50:32 +08:00
Sylvain Jeaugey ffc55560a1 2.4.2-1
Add tree algorithms for allreduce to improve performance at scale.
Add ncclCommAbort() and ncclCommGetAsyncError() to properly handle
network errors and be permit recover.
Detect initial CPU affinity and no longer escape it.


[ROCm/rccl commit: 1450d42675]
2019-01-29 15:19:27 -08:00
Sylvain Jeaugey 4e32c7a19a Replace CUDA_VERSION by CUDART_VERSION
[ROCm/rccl commit: c244b51ae7]
2018-12-13 15:22:17 -08:00
Christian Sigg 457c2ab5ae Change __CUDACC_VER_*__ preprocessor directives to CUDA_VERSION because clang doesn't define the former.
[ROCm/rccl commit: d08e9b5279]
2018-12-13 14:17:46 -08:00
Sylvain Jeaugey 7fa81a40a1 Fix #163 : remove warnings
[ROCm/rccl commit: 469b69a5d0]
2018-12-11 09:19:16 -08:00
David Addison f842c81503 Fixed some compilation errors when TRACE=1 set
[ROCm/rccl commit: 5fe2618c0e]
2018-11-29 14:12:14 -08:00
Sylvain Jeaugey 5dffba1287 Rework shared memory code to use SYSCHECK macros.
This is to handle EINTR/EGAIN properly (issue #137), and also
make the code consistent with the rest.

Unfortunately posix_fallocate and mmap do not follow the classic
return code/errno pattern, so we need to write wrappers around those
functions.


[ROCm/rccl commit: eed8218e17]
2018-11-29 12:52:13 -08:00
Sylvain Jeaugey 57bff87e1d Rework SYSCHECK macros to better handle retries.
SYSCHECKVAL was not retrying when a retry was needed. Since not all
calls are inside a loop, that means we could silently miss an
EINTR/EAGAIN return code.

Also rework the socket connection code and improve error reporting.


[ROCm/rccl commit: 302d538b73]
2018-11-29 12:52:13 -08:00
Sylvain Jeaugey f0e160728f Improve net API description
[ROCm/rccl commit: 61b50a63ef]
2018-11-26 16:24:31 -08:00
Sylvain Jeaugey ec1247221e Make network isend/irecv non blocking
[ROCm/rccl commit: 98adf2fe11]
2018-11-26 16:24:31 -08:00
Sylvain Jeaugey 378a103248 Add support for external network.
Dynamically load external network from libnccl-net.so.
Add init function in networks.
Move PCI scoring to net.cu, only ask transport to provide a path.
Simplify CUDA PCI path detection.
Add dummy external network


[ROCm/rccl commit: 0d3a20f96d]
2018-11-26 16:24:31 -08:00
David Addison 8c945929af 2.3.7-1
Improved LL tuning for multi-node jobs.
Improved bootstrap for large job scaling.
Fixed a hang during bootstrap due to socket reuse.
Added operation name to the COLL INFO logging.


[ROCm/rccl commit: b56650c7f5]
2018-10-24 14:44:59 -07:00
Sylvain Jeaugey 8ffcfac437 2.3.5-5
Add support for inter-node communication using sockets and InfiniBand/RoCE.
Improve latency.
Add support for aggregation.
Improve LL/regular tuning.
Remove tests as those are now at github.com/nvidia/nccl-tests .


[ROCm/rccl commit: f93fe9bfd9]
2018-09-25 14:12:01 -07:00