NCCL WARN Ошибка Cuda «недопустимая функция устройства» и «неверный порядковый номер устройства»

Среда:

Фреймворк: TensorFlow Версия Framework: 2.4.0 Версия Horovod: 0.25.0 Версия MPI: 4.0.0 Версия CUDA: 11.0 Версия NCCL: 2.8.3 Версия Python: 3.6 ОС и версия: Ubuntu 18.04 Версия GCC: 7.5.0

Привет, я использую hovorod и TensorFlow2.4 для проведения параллельного обучения на графических процессорах NVIDIA GeForce GTX 1080 Ti. Я использую этот общий параметр «NCCL_DEBUG=WARN mpirun -n 2 python3 train.py», но он выдает следующую ошибку.

Предпочитайте tf.tensor_scatter_nd_update, который предлагает ту же функциональность с четко определенной семантикой чтения и записи. 2023-07-2617:30:24.238869: Itensorflow/stream_executor/platform/default/dso_loader.cc:49] Успешно открыта динамическая библиотека libcublas.so.11 2023-07-2617:30:24.516433: Itensorflow/stream_executor/platform/default/dso_loader.cc:49] Динамическая библиотека libcublasLt.so.11 успешно открыта 26 июля 2023 17:30:24.728742: Itensorflow/stream_executor/platform/default/dso_loader.cc:49] Динамическая библиотека успешно открыта libcudnn.so.8 26.07.2023 17:30:28.026432: Itensorflow/stream_executor/platform/default/dso_loader.cc:49] Динамическая библиотека libcublas.so.11 успешно открыта 26.07.2023 17:30:28.277099: Itensorflow/stream_executor/platform/default/dso_loader.cc:49] Динамическая библиотека libcublasLt.so.11 успешно открыта 2023-07-2617:30:28.470335: Itensorflow/stream_executor/platform/default/dso_loader.cc:49] Динамическая библиотека libcudnn.so.8 успешно открыта.

администратор:3274:3298 [0] misc/ibvwrap.cc:63 NCCL WARN Не удалось открыть libibverbs.so[.1] NCCL версии 2.8.3+cuda10.0

администратор:3275:3301 [1] misc/ibvwrap.cc:63 NCCL WARN Не удалось открыть libibverbs.so[.1]

администратор: 3275:3301 [1] enqueue.cc:231 NCCL WARN Ошибка Cuda «недопустимая функция устройства»

администратор: 3274:3298 [0] enqueue.cc:231 NCCL WARN Ошибка Cuda «недопустимая функция устройства»

администратор:3274:3298 [0] misc/argcheck.cc:14 NCCL WARN AllReduce: sendbuff не является допустимым указателем

администратор: 3274:3298 [0] init.cc:956 NCCL WARN Ошибка Cuda «неверный порядковый номер устройства»

администратор:3275:3301 [1] misc/argcheck.cc:39 NCCL WARN AllReduce: неверный корень 0 (корень должен находиться в диапазоне 0..0)

[администратор:03275] *** Обработка полученного сигнала ***

[администратор:03275] Сигнал: ошибка сегментации (11)

[администратор:03275] Код сигнала: Адрес не сопоставлен (1)

[администратор:03275] Ошибка по адресу: 0x1.

[администратор:03275] [0]/lib/x86_64-linux-gnu/libpthread.so.0(+0x12980)[0x7fa2f9ef1980]

[администратор:03275] [1]/home/ASR/.conda/envs/tensorflow2/lib/python3.6/site-packages/horovod/tensorflow/mpi_lib.cpython-36m-x86_64-linux-gnu.so(+0x14cf2c)[0x7fa293addf2c]

[администратор:03275] [2]/home/ASR/.conda/envs/tensorflow2/lib/python3.6/site-packages/horovod/tensorflow/mpi_lib.cpython-36m-x86_64-linux-gnu.so(_ZN7horovod6common11NCCLContext10ErrorCheckESs12ncclResult_tRP8ncclComm+0x50)[0x7fa293abbbb0]

[администратор:03275] [3]/home/ASR/.conda/envs/tensorflow2/lib/python3.6/site-packages/horovod/tensorflow/mpi_lib.cpython-36m-x86_64-linux-gnu.so(_ZN7horovod6common13NCCLAllreduce7ExecuteERSt6vectorINS0_16TensorTableEntryESaIS3_EERKNS0_8ResponseE+0x1e8)[0x7fa293abd4d8]

[администратор:03275] [4]/home/ASR/.conda/envs/tensorflow2/lib/python3.6/site-packages/horovod/tensorflow/mpi_lib.cpython-36m-x86_64-linux-gnu.so(_ZNK7horovod6common16OperationManager16ExecuteAllreduceERSt6vectorINS0_16TensorTableEntryESaIS3_EERKNS0_8ResponseE+0x71)[0x7fa293a78dc1]

[администратор:03275] [5]/home/ASR/.conda/envs/tensorflow2/lib/python3.6/site-packages/horovod/tensorflow/mpi_lib.cpython-36m-x86_64-linux-gnu.so(_ZNK7horovod6common16OperationManager16ExecuteOperationERSt6vectorINS0_16TensorTableEntryESaIS3_EERKNS0_8ResponseERNS0_10ProcessSetE+0xf1)[0x7fa293a79471]

[администратор:03275] [6]/home/ASR/.conda/envs/tensorflow2/lib/python3.6/site-packages/horovod/tensorflow/mpi_lib.cpython-36m-x86_64-linux-gnu.so(+0xb29f6)[0x7fa293a439f6]

[администратор:03275] [7]/home/ASR/.conda/envs/tensorflow2/lib/python3.6/site-packages/tensorflow/python/../libtensorflow_framework.so.2(+0x1832eff)[0x7fa2c7208eff]

[администратор:03275] [8]/lib/x86_64-linux-gnu/libpthread.so.0(+0x76db)[0x7fa2f9ee66db]

[администратор:03275] [9]/lib/x86_64-linux-gnu/libc.so.6(clone+0x3f)[0x7fa2f9c0f61f]

[администратор:03275]

Основное задание завершилось нормально, но 1 процесс вернул ненулевой код выхода. По указанию пользователя задание было прервано. mpirun заметил, что процесс ранга 1 с PID 0 на администраторе узла завершился по сигналу 11 (ошибка сегментации).

Я установил nccl2.8.3-1+cuda11.0, используйте команду «dpkg -l | grep nccl» может просмотреть информацию о libnccl2 и libnccl-dev. введите сюда описание изображения

И я также протестировал nccl, выполнив следующие шаги:

  1. клон git https://github.com/NVIDIA/nccl-tests.git
  2. компакт-диск nccl-тест
  3. make MPI=1 MPI_HOME=/путь/к/mpi CUDA_HOME=/путь/к/cuda NCCL_HOME=/путь/к/nccl
  4. ./build/all_reduce_perf -b 8 -e 128M -f 2 -g 6
  5. mpirun -np 6 ./build/all_reduce_perf -b 8 -e 128M -f 2 -g 1

Все в порядке!введите сюда описание изображения введите сюда описание изображения

Я также выполнил инструкции в https://github.com//issues/1171 и подтвердил, что в библиотеке NCCL есть разделы sm_61 (вычислительная способность графического процессора NVIDIA GeForce GTX 1080 Ti равна 6.1). Введите описание изображения здесь.

Я также переустановил хоровод 0.25.0 с помощью HOROVOD_GPU_ALLREDUCE=NCCL HOROVOD_CUDA_HOME=/usr/local/cuda-11.0 HOROVOD_NCCL_HOME=/usr/local/cuda-11.0 pip install --no-cache-dir horovod, но все равно выдает ту же ошибку.

В чем дело? Кто-нибудь может мне помочь? Большое спасибо. Кстати, я установил nccl2.8.3+cuda11.0, но почему NCCL_DEBUG выдает информацию о версии NCCL 2.8.3+cuda10.0? Хотя на моей машине установлены CUDA10.0 и CUDA11.0, но я не устанавливал эту версию nccl и не могу найти nccl в каталоге CUDA10.0.

0 ответов

Другие вопросы по тегам