【问题标题】:OSX Sierra Tensorflow build error: ld: file not found: @rpath/CUDA.framework/Versions/A/CUDAOSX Sierra Tensorflow 构建错误:ld:找不到文件:@rpath/CUDA.framework/Versions/A/CUDA
【发布时间】:2018-05-10 00:12:11
【问题描述】:

我已按照以下说明进行操作: https://gist.github.com/notilas/a30e29ce514970e821a34153c1e78b3f

但无法完成。

  • OSX:塞拉利昂
  • Tensorflow 版本 1.1.0(Google 表示 v1.2 不支持 OSX CUDA)
  • CUDA 工具包:8.0
  • CUDNN : 6.0
  • Xcode:7.2.1
  • Anaconda:4.2(Python 3.5 版)

错误日志:

错误:/Users/so041e/ml/tensorflow/tensorflow/python/BUILD:2534:1: 规则'//tensorflow/python:_pywrap_tensorflow_internal.so'的链接 失败:link_dynamic_library.sh 失败:执行命令出错 外部/bazel_tools/tools/cpp/link_dynamic_library.sh 没有忽略 忽略 忽略 外部/local_config_cuda/crosstool/clang/bin/crosstool_wrapper_driver_is_not_gcc -shared -o ...(剩余的 455 个参数被跳过):com.google.devtools.build.lib.shell.BadExitStatusException: Process 以状态 1 退出。 叮当声:警告:编译期间未使用的参数:'-pthread' ld:找不到文件:@rpath/CUDA.framework/Versions/A/CUDA 用于架构 x86_64 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) 目标 //tensorflow/tools/pip_package:build_pip_package 构建失败 使用 --verbose_failures 查看失败的构建步骤的命令行。

[.bash_profile]

export PATH="/Users/so041e/anaconda/bin:$PATH"
export CUDA_HOME=/usr/local/cuda
export HOME=/Users/so041e
export PATH="$CUDA_HOME/bin:$PATH"
export DYLD_LIBRARY_PATH="/usr/local/cuda/lib:/Developer/NVIDIA/CUDA8.0/lib":$DYLD_LIBRARY_PATH
export LD_LIBRARY_PATH=$DYLD_LIBRARY_PATH
export PATH=$DYLD_LIBRARY_PATH:$PATH
export PATH="//anaconda/bin:$PATH"                                                                                       

将 CUDNN 库和包含移动到 /user/local/cuda

sudo mv -v cuda/lib/libcudnn* /usr/local/cuda/lib
sudo mv -v cuda/include/cudnn.h /usr/local/cuda/include

没有使用“vent”,此时只使用了单个 python 3.5。 两种都试了,没区别。

bazel build --config=cuda --config=opt --action_env PATH --action_env LD_LIBRARY_PATH --action_env DYLD_LIBRARY_PATH //tensorflow/tools/pip_package:build_pip_package
bazel build --config=cuda //tensorflow/tools/pip_package:build_pip_package

【问题讨论】:

  • 仅供参考,Tensorflow 当前并未在 OSX 上正式提供 GPU 支持
  • 我相信 v1,1 支持 OSX。
  • 我们支持 OSX,但不支持 OSX 上的 GPU。

标签: macos build tensorflow nvidia


【解决方案1】:

这可能有点晚了,但我遇到了完全相同的问题并且我设法解决了它。

首先,@rpath/CUDA.framework/Versions/A/CUDA 是 libcuda.dylib 的动态库安装名称,可在 /usr/local/cuda/lib 中找到。也一样

otool -l /usr/local/cuda/lib/libcuda.dylib

检查您在哪里看到@rpath/CUDA.framework/Versions/A/CUDA;在我的系统上,它位于命令 LC_REEXPORT_DYLIB 中。从here 来看,dyld 似乎没有解析 LC_REEXPORT_DYLIB 命令的@rpath,只有 LC_LOAD*_DYLIB 命令。意思是,它寻找文字路径“@rpath/CUDA.framework/Versions/A/CUDA”。所以你将不得不通过这样做来改变它

sudo install_name_tool -change @rpath/CUDA.framework/Versions/A/CUDA \ 
    /Library/Frameworks/CUDA.framework/Versions/A/CUDA \
    /usr/local/cuda/lib/libcuda.dylib

这应该可以解决您的问题。

现在为什么你的系统(和我的系统)有这个 libcuda.dylib 的安装名称?我完全不知道。

【讨论】:

    猜你喜欢
    • 2017-05-27
    • 2021-08-01
    • 2018-09-21
    • 2018-09-16
    • 1970-01-01
    • 2021-06-07
    • 1970-01-01
    相关资源
    最近更新 更多