• Stars
    star
    101
  • Rank 338,166 (Top 7 %)
  • Language
    C++
  • License
    Apache License 2.0
  • Created over 6 years ago
  • Updated about 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Unoffcial NVIDIA CUDA GPU support version of Google Tensorflow for MAC OSX

tensorflow-gpu-macosx

Unoffcial NVIDIA CUDA GPU support version of Google Tensorflow 1.8 for MAC OSX 10.13

Description:

Since Google Tensorflow claimed that tensorflow-gpu no longer supports 
MAC OSX since 1.2.0 due to the OpenMP issue of clang of Apple,
I built this unoffcial tensorflow-gpu for MAC OSX so that
Hackintosh users or Mac users with eGPU can run tensorflow-gpu with CUDA.

Requirement:

1. Must use python3 instead of python2

2. Must be installed on MAC OSX 10.6+

3. Must install Nvidia GPU drivers

4. Must install Nvidia CUDA toolkit 9.1 (if not, you need to re-compile by yourself)

5. Must install Nvidia CUDA cudnn 7.0 (if not, you need to re-compile by yourself)

6. Must set up cuda environment (make sure 'nvcc -V' shows the cuda version '9.1')

7.CUDA compute capability is in [3.0,5.0] (if not, you need to re-compile to get a better performance)

HOW TO BUILD TENSORFLOW-GPU FOR MAC OSX?

NOTICE

1.INSTALL NVIDIA DRIVER

2.INSTALL NVIDIA CUDA TOOLKIT (9.1 OR LATER)

3.INSTALL NVIDIA CUDA CUDNN (7.0 OR LATER)

4.SET UP CUDA ENVIRONMENT (MAKE SURE

nvcc -V

WORKS AND PRINTS CUDA VERSION)

5.INSTALL XCODE/COMMAND LINE TOOL 9.3+

6.INSTALL HOMEBREW

7.INSTALL COREUTILS USING

brew install coreutils

8.INSTALL LLVM USING

brew install llvm

9.INSTALL OPENMP USING

brew install cliutils/apple/libomp

10.INSTALL BAZEL 0.16.1 FROM GITHUB (https://github.com/bazelbuild/bazel/releases, newer/older version may cause failure)

12.GIT CLONE TENSORFLOW

git clone https://github.com/zylo117/tensorflow-gpu-macosx

13.CD TENSORFLOW SOURCE DIR

14.CONFIG(skip this step if your CUDA version is same as mine)

./configure
  #Please specify the location of python.: Accept the default option
    #Please input the desired Python library path to use.:  Accept the default option
    #Do you wish to build TensorFlow with Google Cloud Platform support? [Y/n]: n
    #Do you wish to build TensorFlow with Hadoop File System support? [Y/n]: n
    #Do you wish to build TensorFlow with Amazon S3 File System support? [Y/n]: n
    #Do you wish to build TensorFlow with XLA JIT support? [y/N]: n
    #Do you wish to build TensorFlow with GDR support? [y/N]: n
    #Do you wish to build TensorFlow with VERBS support? [y/N]: n
    #Do you wish to build TensorFlow with OpenCL SYCL support? [y/N]: n
    #Do you wish to build TensorFlow with CUDA support? [y/N]: y
    #Please specify the CUDA SDK version you want to use, e.g. 7.0.: 9.1
    #Please specify the location where CUDA 9.1 toolkit is installed.: Accept the default option
    #Please specify the cuDNN version you want to use.: 7
    #Please specify the location where cuDNN 7 library is installed.: Accept the default option
    ##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. (GTX10X0: 6.1, GTX9X0: 5.2)
    #Please note that each additional compute capability significantly increases your build time and binary size.: 6.1,5.2,5.0,3.0
    #Do you want to use clang as CUDA compiler? [y/N]: n
    #Please specify which gcc should be used by nvcc as the host compiler.: Accept the default option
    #Do you wish to build TensorFlow with MPI support? [y/N]: n
    #Please specify optimization flags to use during compilation when bazel option "--config=opt" is specified:  Accept the default option
    #Would you like to interactively configure ./WORKSPACE for Android builds? [y/N]: n

export CUDA_HOME=/usr/local/cuda
export DYLD_LIBRARY_PATH=/usr/local/cuda/lib:/usr/local/cuda/extras/CUPTI/lib
export LD_LIBRARY_PATH=$DYLD_LIBRARY_PATH
export PATH=$DYLD_LIBRARY_PATH:$PATH

# bazel clean --expunge # Use this if you failed to compile before.

15.BUILD

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

16.NCCL PATCH

You can compile NCCL_OPS by yourself (not necessary):

gcc -c -fPIC ./nccl_patched/nccl_ops.cc -o ./nccl_patched/_nccl_ops.o

gcc ./nccl_patched/_nccl_ops.o -shared -o ./nccl_patched/_nccl_ops.so

Then replace the original nccl lib:

mv ./bazel-bin/tensorflow/contrib/nccl/python/ops/_nccl_ops.so ./bazel-bin/tensorflow/contrib/nccl/python/ops/_nccl_ops.so.bk

cp ./nccl_patched/_nccl_ops.so ./bazel-bin/tensorflow/contrib/nccl/python/ops/

16.BUILD PYTHON BINDING USING

./bazel-bin/tensorflow/tools/pip_package/build_pip_package/ ./tmp/tensorflow_pkg

17.INSTALL PYTHON WHEEL USING 'pip3 install /tmp/tensorflow_pkg/*.whl'

18.REINSTALL XCODE/COMMAND LINE TOOL 9

NOTICE

This version will not supports multi-cpu/machine training.

It's not like you are gonna need it anyway.

INSTALL:

**Either compile from src through pypi (not recommended)**
    pip3 install tensorflow-gpu-macosx
**or install from relese (the easiest way)**
    pip3 install *.whl