Open DaisukeMiyamoto opened 5 years ago
マッピングはここでやっている。 この関数群を実装すれば、デバイス側は置き換えられる?
https://github.com/aws/aws-ofi-nccl/blob/master/src/nccl_ofi_net.c#L1450
const ncclNet_t NCCL_PLUGIN_SYMBOL = {
.name = "AWS Libfabric",
.init = ofi_init,
.devices = ofi_devices,
.pciPath = ofi_pciPath,
.ptrSupport = ofi_ptrSupport,
.listen = ofi_listen,
.connect = ofi_connect,
.accept = ofi_accept,
.regMr = ofi_regMr,
.deregMr = ofi_deregMr,
.isend = ofi_isend,
.irecv = ofi_irecv,
.flush = ofi_flush,
.test = ofi_test,
.closeSend = ofi_closeSend,
.closeRecv = ofi_closeRecv,
.closeListen = ofi_closeListen,
};
NCCL側はこらへん
https://github.com/NVIDIA/nccl/blob/9db4b1d801624a00591b7aafd426d6dd23547443/ext-net/dummy/plugin.c
おおよそ
に対応しそう?
plug-in関係、結局 net_ib.cc
も net_socket.cc
も最終的に ncclNet_t
型の構造体?を作ってる。
GPU Directのサポート
aws-ofi-nccl
https://github.com/aws/aws-ofi-nccl/blob/master/src/nccl_ofi_net.c#L770
static ncclResult_t ofi_ptrSupport(int dev, int *supportedTypes)
{
*supportedTypes = NCCL_PTR_HOST;
return ncclSuccess;
}
目的: EFA (Elastic Fabric Adapter) 実装の深堀り。
EFAのドライバはlibfabric内でプロバイダとして提供されている。 NCCL自体は、デフォルトではlibfabricを使用していないため、NCCLのplug-inとして、aws-ofi-nccl (https://github.com/aws/aws-ofi-nccl) が提供されている。
疑問:NCCLのplug-inとはなにか。どういう実装か