Создать модуль среды для работы с 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
и скомпилируйте его в свой домашний каталог