/************************************************************************* * Copyright (c) 2015-2021, NVIDIA CORPORATION. All rights reserved. * * See LICENSE.txt for license information ************************************************************************/ #ifndef NCCL_CORE_H_ #define NCCL_CORE_H_ #include #include #include #include #include // For std::min/std::max #include "nccl.h" #ifdef PROFAPI #define NCCL_API(ret, func, args...) \ __attribute__ ((visibility("default"))) \ __attribute__ ((alias(#func))) \ ret p##func (args); \ extern "C" \ __attribute__ ((visibility("default"))) \ __attribute__ ((weak)) \ ret func(args) #else #define NCCL_API(ret, func, args...) \ extern "C" \ __attribute__ ((visibility("default"))) \ ret func(args) #endif // end PROFAPI static __inline__ int ncclTypeSize(ncclDataType_t type) { switch (type) { case ncclInt8: case ncclUint8: return 1; case ncclFloat16: #if defined(__CUDA_BF16_TYPES_EXIST__) case ncclBfloat16: #endif return 2; case ncclInt32: case ncclUint32: case ncclFloat32: return 4; case ncclInt64: case ncclUint64: case ncclFloat64: return 8; default: return -1; } } #include "debug.h" #include "checks.h" #include "alloc.h" #include "utils.h" #include "param.h" #include "nvtx.h" #endif // end include guard