Skip to content

Instantly share code, notes, and snippets.

@smitshilu
Last active June 9, 2020 18:27
Show Gist options
  • Save smitshilu/53cf9ff0fd6cdb64cca69a7e2827ed0f to your computer and use it in GitHub Desktop.
Save smitshilu/53cf9ff0fd6cdb64cca69a7e2827ed0f to your computer and use it in GitHub Desktop.
Tensorflow 1.4 Mac OS High Sierra 10.13 GPU Support

Tensorflow

System information

  • OS - High Sierra 10.13
  • Tensorflow - 1.4
  • Xcode command line tools - 8.2 (Download from here: Xcode - Support - Apple Developer & Switch to different clang version: sudo xcode-select --switch/Library/Developer/CommandLineTools & check version: clang -v)
  • Cmake - 3.7
  • Bazel - 0.7.0
  • CUDA - 9
  • cuDNN - 7

Requirements

  • sudo pip install six numpy wheel
  • brew install coreutils

Step-by-step guide

Remove all align(sizeof(T)) from following files:

  • tensorflow/core/kernels/depthwise_conv_op_gpu.cu.cc

  • tensorflow/core/kernels/split_lib_gpu.cu.cc

  • tensorflow/core/kernels/concat_lib_gpu.impl.cu.cc

    For example, extern shared __align(sizeof(T))__ unsigned char smem[]; => extern shared unsigned char smem[];

Steps:

  • Disable SIP (in recovery mode enter command: csrutil disable)
  • ./configure (Find CUDA compute value from https://developer.nvidia.com/cuda-gpus)
    Smit-Shilu:tensorflow-build smitshilu$ ./configure
    You have bazel 0.7.0-homebrew installed.
    Please specify the location of python. [Default is /Users/smitshilu/anaconda3/bin/python]:
    
    Found possible Python library paths:
      /Users/smitshilu/anaconda3/lib/python3.6/site-packages
    Please input the desired Python library path to use.  Default is [/Users/smitshilu/anaconda3/lib/python3.6/site-packages]
    
    Do you wish to build TensorFlow with Google Cloud Platform support? [Y/n]: n
    No Google Cloud Platform support will be enabled for TensorFlow.
    
    Do you wish to build TensorFlow with Hadoop File System support? [Y/n]: n
    No Hadoop File System support will be enabled for TensorFlow.
    
    Do you wish to build TensorFlow with Amazon S3 File System support? [Y/n]: n
    No Amazon S3 File System support will be enabled for TensorFlow.
    
    Do you wish to build TensorFlow with XLA JIT support? [y/N]: n
    No XLA JIT support will be enabled for TensorFlow.
    
    Do you wish to build TensorFlow with GDR support? [y/N]: n
    No GDR support will be enabled for TensorFlow.
    
    Do you wish to build TensorFlow with VERBS support? [y/N]: n
    No VERBS support will be enabled for TensorFlow.
    
    Do you wish to build TensorFlow with OpenCL support? [y/N]: n
    No OpenCL support will be enabled for TensorFlow.
    
    Do you wish to build TensorFlow with CUDA support? [y/N]: y
    CUDA support will be enabled for TensorFlow.
    
    Please specify the CUDA SDK version you want to use, e.g. 7.0. [Leave empty to default to CUDA 8.0]: 9.0
    
    Please specify the location where CUDA 9.0 toolkit is installed. Refer to README.md for more details. [Default is /usr/local/cuda]:
    
    Please specify the cuDNN version you want to use. [Leave empty to default to cuDNN 6.0]: 7
    
    Please specify the location where cuDNN 7 library is installed. Refer to README.md for more details. [Default is /usr/local/cuda]:
    
    Please specify a list of comma-separated Cuda compute capabilities you want to build with.
    You can find the compute capability of your device at: https://developer.nvidia.com/cuda-gpus.
    Please note that each additional compute capability significantly increases your build time and binary size. [Default is: 3.5,5.2]6.1
    
    Do you want to use clang as CUDA compiler? [y/N]:
    nvcc will be used as CUDA compiler.
    
    Please specify which gcc should be used by nvcc as the host compiler. [Default is /usr/bin/gcc]:
    
    Do you wish to build TensorFlow with MPI support? [y/N]:
    No MPI support will be enabled for TensorFlow.
    
    Please specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is -march=native]:
    
    Add "--config=mkl" to your bazel command to build with MKL support.
    Please note that MKL on MacOS or windows is still not supported.
    If you would like to use a local MKL instead of downloading, please set the environment variable "TF_MKL_ROOT" every time before build.
    Configuration finished
    
  • Add following paths:
    • export CUDA_HOME=/usr/local/cuda
    • export DYLD_LIBRARY_PATH=/Users/USERNAME/lib:/usr/local/cuda/lib:/usr/local/cuda/extras/CUPTI/lib (Replace USERNAME with your machine username)
    • export LD_LIBRARY_PATH=$DYLD_LIBRARY_PATH
    • export PATH=$DYLD_LIBRARY_PATH:$PATH
  • Start build
    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
    
  • Generate a wheel for installation
    bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
    
  • Install tensorflow wheel
    sudo pip install /tmp/tensorflow_pkg/tensorflow-1.4.0rc1-cp36-cp36m-macosx_10_7_x86_64.whl (File name depends on tensorflow version and python version)
    
@ghltshubh
Copy link

I got tensorflow compiled successfully but getting error while generating a wheel for installation.

Fri Mar 2 23:18:42 CST 2018 : === Using tmpdir: /var/folders/5p/bhsb4zjs41lblf2nd_bft5cm0000gp/T/tmp.XXXXXXXXXX.U08YYfRs
~/tensorflow/bazel-bin/tensorflow/tools/pip_package/build_pip_package.runfiles ~/tensorflow
~/tensorflow
/var/folders/5p/bhsb4zjs41lblf2nd_bft5cm0000gp/T/tmp.XXXXXXXXXX.U08YYfRs ~/tensorflow
Fri Mar 2 23:18:48 CST 2018 : === Building wheel
Traceback (most recent call last):
  File "setup.py", line 26, in <module>
    from setuptools.command.install import install as InstallCommandBase
ModuleNotFoundError: No module named 'setuptools.command'

@orpcam
Copy link

orpcam commented Mar 3, 2018

I got tensorflow compiled successfully but getting no output when using it.

Python 3.6.3 (default, Jan 31 2018, 13:53:45) 
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
>>> tf.__version__
'1.5.0-rc0'
>>> session = tf.Session()

The last line won't be executed. No output, no new interpreter line... Any ideas?

Update: It was my own fault. Something went wrong with my CUDA installation.

I wrote a short blog post about my successful Tensorflow 1.6-rc1 build. https://byai.io/howto-tensorflow-1-6-on-mac-with-gpu-acceleration/

@mjuchli
Copy link

mjuchli commented Mar 8, 2018

@anubhavjaiswal03 @MichaelScript i was unable to install bazel 0.7. For me the trick was to comment out line 69 in .../external/io_bazel_rules_closure/closure/repositories.bzl: # _check_bazel_version("Closure Rules", "0.4.5")

@mjuchli
Copy link

mjuchli commented Mar 8, 2018

Running in new error:

env: python: No such file or directory
Target //tensorflow/tools/pip_package:build_pip_package failed to build

python is definitely within the PATH and can also be called with /usr/bin/env python.
Looks like this is related: tensorflow/tensorflow#15618
Any ideas?

@smitshilu
Copy link
Author

Try running ./configure again and set python environment variables properly

@vihanb
Copy link

vihanb commented Jun 7, 2018

I'm getting error:

ERROR: Inconsistent crosstool configuration; no toolchain corresponding to 'local_darwin' found for cpu 'darwin'

however I have installed brew install gcc@7 and ln -s /usr/local/bin/gcc-7 /usr/bin/gcc so not sure why still using clang instead of GCC, perhaps another issue?

@swathishesh19
Copy link

@smitshilu.. thank you!
Will this fix also work for AMD GPUs? or do I have to switch to an NVIDIA GPU

@smitshilu
Copy link
Author

@swathishesh19 it will work with NVIDIA only. For now tensorflow supports officially NVIDIA GPUs only

Copy link

ghost commented Jul 24, 2019

@coocoorhin what path are you passing while you are running ./configuration? If you check in this line
Please specify the location where CUDA 9.0 toolkit is installed. Refer to README.md for more details. [Default is /usr/local/cuda]:
Defult path is /usr/local/cuda so export the same path even default installation path is different

i did just as he did, instead of leaving default i changed it to Developers.......

@Hawk0826
Copy link

macOS:10.13.2
CUDA:9.1
cudnn:7
python:2.7.10

INFO: From Compiling tensorflow/core/kernels/scatter_nd_op_gpu.cu.cc:
external/eigen_archive/unsupported/Eigen/CXX11/../../../Eigen/src/Core/arch/CUDA/Half.h(508): error: explicit specialization of class "std::__1::numeric_limitsEigen::half" must precede its first use (
(388): here)

./tensorflow/core/lib/core/status.h(32): warning: attribute "warn_unused_result" does not apply here

1 error detected in the compilation of "/private/var/tmp/_bazel_root/f605337e84baed8e30662c78b8d6ecc6/execroot/org_tensorflow/tmp23b_3197947ae751be7b/tmpxft_00015dd2_00000000-6_scatter_nd_op_gpu.cu.cpp1.ii".
ERROR: /Users/admin/tensorflow-macOS-gpu-1.5.0-rc1/tensorflow/core/kernels/BUILD:3945:1: output 'tensorflow/core/kernels/_objs/scatter_nd_op_gpu/tensorflow/core/kernels/scatter_nd_op_gpu.cu.pic.o' was not created
ERROR: /Users/admin/tensorflow-macOS-gpu-1.5.0-rc1/tensorflow/core/kernels/BUILD:3945:1: not all outputs were created or valid
Target //tensorflow/tools/pip_package:build_pip_package failed to build
INFO: Elapsed time: 50.497s, Critical Path: 11.66s
FAILED: Build did NOT complete successfully

@1371030 same error. How to resolve it?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment