我正在尝试安装scikit-learn,以便它无法访问ATLAS(其他BLAS和LAPACK库可以)。有没有办法设置安装,以便ATLAS不被使用?对不起基本问题,但我看不出这样做的好方法。
我想这样做的原因:我正在开发一个我无法构建地图册的集群,但预先安装的版本已经破解(在16个内核上编译,只有8个内核节点,pthread问题),所以当我安装scikit-learn我的scikit-learn试图启动这些库时我会收到错误。
由于
编辑:看起来我有些不对劲,实际上scipy在我打开openblas之后仍然被打破了。在我得到的其中一个单元测试中:断言!pthread_create(& thr-> thrH,& attr,rout,arg)失败,文件的第111行/var/tmp/portage/sci-libs/atlas-3.10.1-r2/work/ ATLAS // SRC /线程/ ATL_thread_start.c
现在有点过分,但任何想法为什么我的scipy构建甚至看着ATLAS?
答案 0 :(得分:2)
Numpy,scipy和scikit-learn都会尝试链接到ATLAS,如果他们找到的话。虽然scikit-learn可以在其系统中找不到ATLAS或其他BLAS / LAPACK的情况下构建其自己的嵌入式BLAS子集,但scipy仍需要BLAS / LAPACK实现。
你可以做的是建立你自己的numpy,scipy和scikit版本 - 学习本地构建的ATLAS或OpenBLAS(在github上使用后者的主分支)。
为此,您需要在构建之前在numpy和scipy源文件夹中自定义site.cfg文件。
此外,你应该用以下内容构建OpenBLAS:
make TARGET=NEHALEM NO_AFFINITY=1 NUM_THREADS=8 USE_OPENMP=0