NVIDIA éåéä¿¡åº (NCCL)
NVIDIA éåéä¿¡åºï¼NCCLï¼æ¯ä¸æ¬¾ä¸ä¸º NVIDIA GPU ä¸ç½ç»ç¯å¢ä¼åçå¤ GPUãå¤èç¹éä¿¡åè¯åºï¼å®ç°äºé«æçå¤ GPU åå¤èç¹éä¿¡è½åã
NCCL çå·¥ä½åç
NCCL æä¾ all-gatherãall-reduceãbroadcastãreduceãreduce-scatter 以åç¹å¯¹ç¹ send/recv çéä¿¡ä¾ç¨ï¼è¿äºä¾ç¨ç»è¿ä¼åï¼å¯å¨åæºå
éè¿ PCIeãNVIDIA NVLink⢠çé«éäºè¿ï¼ä»¥åè·¨èç¹éè¿ NVIDIA ç½ç»ï¼æä¾é«å¸¦å®½ã使¶å»¶çæ°æ®ä¼ è¾ã
éè¿å°éä¿¡ä¸è®¡ç®èåå¨åä¸ä¸ª GPU å
æ ¸ä¸ï¼NCCL è½å®ç°ä½æ¶å»¶åæ¥ï¼é常éåç¨äºåå¸å¼è®ç»å宿¶æ¨ççåºæ¯ã å婿æå¨ææ¢æµæºå¶åç²¾ç®ç C è¯è¨ APIï¼å¼åè
æ éé对ç¹å®ç¡¬ä»¶æå·¥è°ä¼å³å¯å¨å¤èç¹é´è¿è¡æ©å±ã
NCCL å¯ä»¥ä» GitHub è·åæºç è¿è¡æå»ºåå®è£
ï¼ä¹å¯ä»¥ä½ä¸º NVIDIA HPC SDK çä¸é¨åè·åï¼æè
ç´æ¥å¨ NVIDIA Developer Zone ä¸ä¸è½½é¢ç¼è¯äºè¿å¶å
ã

æ§è½
NCCL 使å¼åè
æ éé对ç¹å®æºå¨ä¼åå
¶åºç¨ç¨åºãNCCL å¨èç¹å
åèç¹é´éè¿å¤ä¸ª GPU æä¾å¿«é群éã
æäºç¼ç¨
NCCL 使ç¨ç®åç C APIï¼å¯éè¿åç§ç¼ç¨è¯è¨è½»æ¾è®¿é®ãNCCL ä¸¥æ ¼éµå¾ªç±æ¶æ¯ä¼ éæ¥å£ (MPI) å®ä¹ççé¨ç¾¤é APIã
å ¼å®¹æ§
NCCL ä¸ä»»ä½å¤ GPU å¹¶è¡æ¨¡åå
¼å®¹ï¼å
æ¬å线ç¨ãå¤çº¿ç¨ (æ¯ä¸ª GPU 使ç¨ä¸ä¸ªçº¿ç¨) åå¤è¿ç¨ ( MPI ä¸ GPU ä¸çå¤çº¿ç¨æä½ç¸ç»å) ã
主è¦ç¹æ§
髿§è½éåéä¿¡åç¹å¯¹ç¹éä¿¡ï¼å¯å å¿«å¤ GPU åå¤èç¹è®ç»é度
è®¾å¤ API æ¯æç´æ¥ä» CUDA å æ ¸è¿è¡éä¿¡ï¼ä»èéä½å»¶è¿å¹¶æ¹å计ç®åéä¿¡éå
è·¨ PCIeãNVLink®ãNVSwitchâ¢ãInfiniBandãRoCE åå ¶ä»ç½ç»è¿è¡èªå¨æææ£æµï¼ä»¥æ´å¤§éåº¦å°æé«æ§è½
å è¿çå¾å½¢æç´¢ç®æ³ï¼å¯æå»ºæ´é«æçç¯åæ ï¼ä»¥å®ç°å³°å¼å¸¦å®½åæ´ä½å»¶è¿
çµæ´»çæä»¶æ¡æ¶ï¼å¯å° NCCL æ©å±å°èªå®ä¹ä¼ è¾åæ°ä¸ä»£äºè¿
å ¨é¢æ¯æå¤çº¿ç¨ãå¤è¿ç¨å MPI 驱å¨çåå¸å¼åºç¨ç¨åº
éæçåæãå¯é æ§åå¯è§å¯æ§å·¥å · (å¦ NCCL RAS å NCCL Inspector) å¯å éè°è¯åæ§è½è°ä¼
NCCL å客
æ´å¤èµæº
请è§çç±æä»¬ç NCCL å¢éæä¾ç以ä¸è§é¢ï¼äºè§£æ´å¤ä¿¡æ¯ã
详ç»äºè§£ç¸å ³åºå软件ã
ç«å³å¼å§ä½¿ç¨ NCCLã