-
Notifications
You must be signed in to change notification settings - Fork 5.9k
Description
目前paddle处理blas相关的依赖库如下:
分支A:
1默认安装 MKLML WITH_MKLML=ON
2 下载 mklml库 include(external/mklml)
3 检查机器上是否存在blas库 include(externel/openblas) —> include(cblas)
因为已经下载安装mklml库,所以检查成功
分支B:
1 如果关闭MKLML库 WITH_MKLML=OFF
2 跳过下载mklml库
3 检查机器上是否存在blas库 include(externel/openblas) —> include(cblas)
4 依次搜索MKL/ATLAS/OpenBLAS等库,用户可以设置MKL_ROOT/ATLAS_ROOT/OPENBLAS_ROOT等指定路径;如果找到,会加上相应的编译选项,例如add_definitions(-DPADDLE_USE_OPENBLAS)
5 如果上述库都没有找到,则进入下载编译openblas阶段, 在这里会触发一个bug,没有设置
add_definitions(-DPADDLE_USE_OPENBLAS)
目前遇到一个问题是,如果打开WITH_MKLML选项,则mklml相关动态库会被安装在third_party目录下,安装python wheel包之后,目前的在python/paddle/v2/framework的core.so会找不到相应的mklml动态库
对于blas相关的库依赖有两种解决方案:
方案一:让用户安装相应的库,然后指定相应的路径传给paddle;
方案二:使用third_party的方式来下载依赖
目前两种都支持,但是存在互相交叉,python端的动态库依赖还没有解决。
使用方案一会使得依赖问题会清爽一些,依赖问题也容易解决