我有一个关于GOMP的问题,我认为与gcc有关。
我使用这个图像作为一些实验的基础。 看来我正在使用基于这个未经修改的图像的一个好的版本(4.9.2),但是我得到了一些Cython相关软件包的一些奇怪的行为。
例1
在未修改的jupyter / all-spark-notebook docker镜像上运行时,试图运行Python时出现以下问题,
import lightfm Traceback (most recent call last): File "", line 1, in File "/opt/conda/lib/python3.4/site-packages/lightfm/init.py", line 1, in from .lightfm import LightFM File "/opt/conda/lib/python3.4/site-packages/lightfm/lightfm.py", line 7, in from .lightfm_fast import (CSRMatrix, FastLightFM, ImportError: /opt/conda/lib/python3.4/site-packages/lightfm/lightfm_fast.cpython-34m.so: undefined symbol: GOMP_parallel
我已经尝试过的事情:
转到文件lightfm.py并将所有依赖关系移动到一行上,如下所示:
from .lightfm_fast import (CSRMatrix, FastLightFM, fit_logistic, predict_lightfm, fit_warp, fit_bpr, fit_warp_kos)
至
from .lightfm_fast import (CSRMatrix, FastLightFM, fit_logistic, predict_lightfm, fit_warp, fit_bpr, fit_warp_kos).
同样的错误。
也试过“ .lightfm
”到“ lightfm
”从相对导入改变。 同样的错误。
Checking gcc and kernel versions: gcc 4.9.2 Ubuntu 14.04 Linux 00846c176840 3.13.0-67-generic #110-Ubuntu SMP Fri Oct 23 13:24:41 UTC 2015 x86_64 GNU/Linux
但我想如果你只是拉泊坞映像,并做一个点安装lightfm
它应该复制错误精确。
例2
当运行pip install xgboost
,安装成功,但是在笔记本中我试图做:
--------------------------------------------------------------------------- OSError Traceback (most recent call last) <ipython-input-2-afdaff4619ce> in <module>() ----> 1 import xgboost /home/jovyan/.local/lib/python3.5/site-packages/xgboost-0.4-py3.5.egg/xgboost/__init__.py in <module>() 9 import os 10 ---> 11 from .core import DMatrix, Booster 12 from .training import train, cv 13 from . import rabit /home/jovyan/.local/lib/python3.5/site-packages/xgboost-0.4-py3.5.egg/xgboost/core.py in <module>() 81 82 # load the XGBoost library globally ---> 83 _LIB = _load_lib() 84 85 def _check_call(ret): /home/jovyan/.local/lib/python3.5/site-packages/xgboost-0.4-py3.5.egg/xgboost/core.py in _load_lib() 75 if len(lib_path) == 0: 76 return None ---> 77 lib = ctypes.cdll.LoadLibrary(lib_path[0]) 78 lib.XGBGetLastError.restype = ctypes.c_char_p 79 return lib /opt/conda/lib/python3.5/ctypes/__init__.py in LoadLibrary(self, name) 423 424 def LoadLibrary(self, name): --> 425 return self._dlltype(name) 426 427 cdll = LibraryLoader(CDLL) /opt/conda/lib/python3.5/ctypes/__init__.py in __init__(self, name, mode, handle, use_errno, use_last_error) 345 346 if handle is None: --> 347 self._handle = _dlopen(self._name, mode) 348 else: 349 self._handle = handle OSError: /opt/conda/bin/../lib/libgomp.so.1: version `GOMP_4.0' not found (required by /home/jovyan/.local/lib/python3.5/site-packages/xgboost-0.4-py3.5.egg/xgboost/libxgboost.so)
我刚刚注意到,这是一个反复出现的模式,有时可能是相当有限的,但我不明白编译器,很好地知道,如果这实际上是一个问题的形象,如果这不是一个真正的'问题',而是一个devise决定。 有任何想法吗?
非常感激!
我已经尝试过的事情:
我试着conda install -c https://conda.anaconda.org/anaconda gcc
在terminal,但无济于事。
另外,当我试图在R中执行install.packages('xgboost')
(等效)时,我得到这个错误:
错误:.onLoad在loadNamespace()for'xgboost'失败,详细信息:call:dyn.load(file,DLLpath = DLLpath,…)错误:无法加载共享对象'/usr/local/spark-1.6.0 -bin-hadoop2.6 / R / lib / xgboost / libs / xgboost.so':/usr/local/spark-1.6.0-bin-hadoop2.6/R/lib/xgboost/libs/xgboost.so:undefined符号:GOMP_parallel
sudo apt-get install libgomp1
也没有帮助我,因为它已经安装。
conda list
,发现这一行: libgcc 4.8.5 1 r
但是没有gcc我也有glib。 但是在terminal:
jovyan@aaaaaaa:~/work$ gcc --version gcc (Debian 4.9.2-10) 4.9.2 Copyright (C) 2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
更新 :我现在认为,检测到的编译器实际上是一个较早的版本,所以也许这是问题的根源,因为运行
%install_ext https://raw.githubusercontent.com/rasbt/watermark/master/watermark.py %load_ext watermark # show a watermark for this environment %watermark -d -m -v -p numpy,matplotlib -g
我得到以下回应:
CPython 2.7.11 IPython 4.1.2 numpy 1.10.4 matplotlib 1.5.1 compiler : GCC 4.4.7 20120313 (Red Hat 4.4.7-1) system : Linux release : 4.4.5-15.26.amzn1.x86_64 machine : x86_64 processor : CPU cores : 4 interpreter: 64bit Git hash :
任何其他的想法?
最有可能的作者已经找到了答案,但是我仍然会把它留在这里,因为它可能为某人节省时间。
这个问题确实与使用的gcc版本错误有关。 在all-spark-notebook
上安装xgboost之前运行这个命令帮助我解决了gomp问题:
RUN conda install -y gcc
你可以在github上的我all-spark-notebook
扩展中看到工作解决方案。