2018-09-24 16:06:59 -07:00
|
|
|
/*************************************************************************
|
2019-03-14 19:39:20 -07:00
|
|
|
* Copyright (c) 2015-2019, NVIDIA CORPORATION. All rights reserved.
|
2018-09-24 16:06:59 -07:00
|
|
|
*
|
|
|
|
|
* See LICENSE.txt for license information
|
|
|
|
|
************************************************************************/
|
|
|
|
|
|
|
|
|
|
#ifndef NCCL_CORE_H_
|
|
|
|
|
#define NCCL_CORE_H_
|
|
|
|
|
|
2019-03-14 19:39:20 -07:00
|
|
|
#include <pthread.h>
|
|
|
|
|
#include <algorithm>
|
2018-09-24 16:06:59 -07:00
|
|
|
#include "nccl.h"
|
|
|
|
|
#include "debug.h"
|
2019-03-14 19:39:20 -07:00
|
|
|
#include "checks.h"
|
|
|
|
|
#include "alloc.h"
|
|
|
|
|
#include "transport.h"
|
|
|
|
|
#include "devcomm.h"
|
|
|
|
|
#include "comm.h"
|
|
|
|
|
#include "info.h"
|
|
|
|
|
#include "argcheck.h"
|
2018-09-24 16:06:59 -07:00
|
|
|
#include <cstdio>
|
|
|
|
|
#include <unistd.h>
|
|
|
|
|
#include <stdlib.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
|
|
|
|
|
|
|
|
|
|
int ncclCudaCompCap();
|
2018-12-13 15:56:12 -08:00
|
|
|
ncclResult_t ncclNvlinkGpu(int* nvlink);
|
|
|
|
|
int64_t ncclTreeThreshold();
|
|
|
|
|
|
|
|
|
|
static __inline__ int ncclTypeSize(ncclDataType_t type) {
|
|
|
|
|
switch (type) {
|
|
|
|
|
case ncclInt8:
|
|
|
|
|
case ncclUint8:
|
|
|
|
|
return 1;
|
|
|
|
|
case ncclFloat16:
|
|
|
|
|
return 2;
|
|
|
|
|
case ncclInt32:
|
|
|
|
|
case ncclUint32:
|
|
|
|
|
case ncclFloat32:
|
|
|
|
|
return 4;
|
|
|
|
|
case ncclInt64:
|
|
|
|
|
case ncclUint64:
|
|
|
|
|
case ncclFloat64:
|
|
|
|
|
return 8;
|
|
|
|
|
default:
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
}
|
2018-09-24 16:06:59 -07:00
|
|
|
|
|
|
|
|
#endif // end include guard
|