Building Tensorflow 1.5.0 on MacOS with CUDA GPU

Tensorflow

System information

  • OS - Sierra 10.12
  • Tensorflow - 1.5.0-rc1
  • 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.10.2
  • Bazel - 0.9.0
  • CUDA - 8.0.61
  • cuDNN - 7

Requirements

  • sudo pip install six numpy wheel
  • brew install coreutils
  • brew install gcc

We install gcc for libgomp. You may need to add a link to it, i. e. ln -s /usr/local/Cellar/gcc/7.2.0_1/lib/gcc/7/libgomp.dylib /usr/local/lib/libgomp.dylib

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[];

constexpr

Change:

tensorflow/core/framework/variant.h:

class Variant {
public:
 //constexpr Variant() noexcept = default;
 Variant() noexcept = default;

Steps:

  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=/usr/local/cuda/lib
  • bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package
  • bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
  • pip3 install /tmp/tensorflow_pkg/*.whl (File name depends on tensorflow version and python version)