旅するバイク乗り

旅が大好きなバイク乗りのブログです

広告

【Solved】NCCL2.0 : Warn Call to connect failed : Connection refused 【日本語有】

広告

An error occurred while running
http:// http://docs.nvidia.com/deeplearning/sdk/nccl-developer-guide/index.html#onedevprothrd
This program on multiple node(machine or GPUs)
Also, ChainerMN 1.0 and CNTK 2.2 didn't work with same error.

*server name* [0] include/socket.h:185 WARN Call to connect failed : Connection refused
Failed, NCCL error nvidia-sample.cu:88 'unhandled system error'

This error is happen on ncclCommInitRank()

Cause

This error was occurred by NCCL2 environment setting
NCCL2 was trying to use virtual network IF for docker, and it made it impossible to communicate among each node.

I added

NCCL_SOCKET_IFNAME=^docker0

to system environment variable and it worked



日本語

NCCL2.0でNVIDIAのサンプルプログラムを分散環境で動かそうとするとエラーが発生

*server name* [0] include/socket.h:185 WARN Call to connect failed : Connection refused
Failed, NCCL error nvidia-sample.cu:88 'unhandled system error'

ChainerMNやCNTK2.2も同様のエラーでncclCommInitRank()を実行した際にConnection refusedが発生

原因

NCCL2.0がネットワークインターフェースを選択する際にdockerの仮想IFを通信経路として選択することに起因するエラー
OpenMPIのmcaのconfで

mca btl_tcp_if_exclude=docker0,lo

を指定していても,別でNCCL2.0の設定が必要

解決方法

~/.bash_profileや~/.bashrcに

NCCL_SOCKET_IFNAME=^docker0

を追加することで解決


そもそもNVIDIAはNCCL2.0のDeveloper GuideにNCCL_DEBUGのオプションをWARNとVERSIONだけじゃなくてINFOも記載してくれ・・・

広告