Создать модуль среды для работы с opencv-python на узлах hpc

У меня есть задача обучать нейронные сети с использованием tenorflow и opencv-python на узлах HPC через Torque.

Я сделал privatemodule с python virtualenv и установил в него модули tenorflow и opencv-python.

В узле я могу загрузить свой модуль Python. Но когда я пытаюсь запустить обучающий скрипт, я получаю следующую ошибку:

Traceback (most recent call last): File "tensornetwork/train_user_ind_single_subj2.py", line 16, in <module> from reader_user_ind_single_subj import MyData File "/home/trig/tensornetwork/reader_user_ind_single_subj.py", line 10, in <module> import cv2 File "/home/trig/privatemodules/venv_python275/lib/python2.7/site-packages/cv2/__init__.py", line 4, in <module> from .cv2 import * ImportError: libSM.so.6: cannot open shared object file: No such file or directory

Учебный скрипт может выполняться на головном узле, но не может на вычислительном узле.

Можете ли вы предложить, как изменить мой модуль или добавить новый модуль, чтобы тренировка проходила на вычислительном узле с использованием Torque.

1 ответ

Решение

Модуль Python использует системную библиотеку (а именно libSM.so.6: поддержка библиотеки для версии X freedesktop.org, которая присутствует на головном узле, но не на вычислительных узлах (что неудивительно)

Вы также можете:

  • попросите администраторов установить эту библиотеку в масштабе всей системы на вычислительных узлах через менеджер пакетов;
  • или найдите файл на главном узле (возможно, в /usr/lib или же /usr/lib64 или братьев и сестер), и скопировать его в /home/trig/privatemodules/venv_python275/lib/python2.7/site-packages/cv2/где Python должен найти его. Если Python все еще не находит его, запустите export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/trig/privatemodules/venv_python275/lib/python2.7/site-packages/cv2/ в вашем скрипте Torque после загрузки модуля.
  • или вы можете найти источник для libSM и скомпилируйте его в свой домашний каталог
Другие вопросы по тегам