Install brew
February 24, 2018 ยท View on GitHub
#!/bin/sh
Install brew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Apple hides old versions of stuff at https://developer.apple.com/download/more/
Install the latest XCode (8.0).
We used to install the XCode Command Line Tools 7.3 here, but that would just upset the most recent versions of brew.
So we're going to install all our brew dependencies first, and then downgrade the tools. You can switch back after
you have installed caffe.
Install CUDA toolkit 8.0 release candidate
Register and download from https://developer.nvidia.com/cuda-release-candidate-download
or this path from https://developer.nvidia.com/compute/cuda/8.0/rc/local_installers/cuda_8.0.29_mac-dmg
Select both the driver and the toolkit, no documentation necessary
Install the experimental NVIDIA Mac drivers
Download from http://www.nvidia.com/download/driverResults.aspx/103826/en-us
Install cuDNN v5 for 8.0 RC or use the latest when it's available
Register and download from https://developer.nvidia.com/rdp/cudnn-download
or this path: https://developer.nvidia.com/rdp/assets/cudnn-8.0-osx-x64-v5.0-ga-tgz
extract to the NVIDIA CUDA folder and perform necessary linking
into your /usr/local/cuda/lib and /usr/local/cuda/include folders
You will need to use sudo because the CUDA folder is owned by root
sudo tar -xvf ~/Downloads/cudnn-8.0-osx-x64-v5.0-ga.tar /Developer/NVIDIA/CUDA-8.0/ sudo ln -s /Developer/NVIDIA/CUDA-8.0/lib/libcudnn.dylib /usr/local/cuda/lib/libcudnn.dylib sudo ln -s /Developer/NVIDIA/CUDA-8.0/lib/libcudnn.5.dylib /usr/local/cuda/lib/libcudnn.5.dylib sudo ln -s /Developer/NVIDIA/CUDA-8.0/lib/libcudnn_static.a /usr/local/cuda/lib/libcudnn_static.a sudo ln -s /Developer/NVIDIA/CUDA-8.0/include/cudnn.h /usr/local/cuda/include/cudnn.h
Install the brew dependencies
Do not install python through brew. Only misery lies there
We'll use the versions repository to get the right version of boost and boost-python
We'll also explicitly upgrade libpng because it's out of date
Do not install numpy via brew. Your system python already has it.
brew install -vd snappy leveldb gflags glog szip lmdb brew install hdf5 opencv brew upgrade libpng brew tap homebrew/science brew tap homebrew/versions
brew install --build-from-source --with-python -vd protobuf brew install --build-from-source -vd boost159 boost-python159
Clone the caffe repo
cd ~/Documents git clone https://github.com/BVLC/caffe.git
Setup Makefile.config
You can download mine directly from here, but I'll explain all the selections
For XCode 7.3:
https://www.dropbox.com/s/vuy6ha0p7cc5px3/Makefile.config?dl=1
For XCode 8.0 and later (Sierra):
https://dl.dropboxusercontent.com/u/2891540/caffe_10.12/Makefile.config
First, we'll enable cuDNN
USE_CUDNN := 1
In order to use the built-in Accelerate.framework, you have to reference it.
Astonishingly, nobody has written this anywhere on the internet.
BLAS := atlas
If you use El Capitan (10.11), we'll use the 10.11 sdk path for vecLib:
BLAS_INCLUDE := /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/Headers
Otherwise (10.12), let's use the 10.12 sdk path:
BLAS_INCLUDE := /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/Headers
BLAS_LIB := /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A
Configure to use system python and system numpy
PYTHON_INCLUDE := /System/Library/Frameworks/Python.framework/Headers \
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/core/include
PYTHON_LIB := /System/Library/Frameworks/Python.framework/Versions/2.7/lib
Configure to enable Python layers. Some projects online need this
WITH_PYTHON_LAYER := 1
curl https://dl.dropboxusercontent.com/u/2891540/Makefile.config -o Makefile.config
Download the XCode Command Line Tools for 7.3, since NVIDIA does not yet support Xcode 8.0's tools
http://adcdownload.apple.com/Developer_Tools/Command_Line_Tools_OS_X_10.11_for_Xcode_7.3/Command_Line_Tools_OS_X_10.11_for_Xcode_7.3.dmg
Now, choose those tools instead
sudo xcode-select --switch /Library/Developer/CommandLineTools
Go ahead and build.
cd caffe make -j8 all
To get python going, first we need the dependencies
On a super-clean Mac install, you'll need to easy_install pip.
sudo -H easy_install pip
Now, we'll install the requirements system-wide. You may also muck about with a virtualenv.
Astonishingly, --user is not better known.
pip install --user -r python/requirements.txt
Go ahead and run pytest now. Horrible @rpath warnings which can be ignored.
make -j8 pytest
Now, install the package
Make the distribution folder
make distribute
Install the caffe package into your local site-packages
cp -r distribute/python/caffe ~/Library/Python/2.7/lib/python/site-packages/
Finally, we have to update references to where the libcaffe libraries are located.
You can see how the paths to libraries are referenced relatively
otool -L ~/Library/Python/2.7/lib/python/site-packages/caffe/_caffe.so
Generally, on a System Integrity Protection -enabled (SIP-enabled) Mac this is no good.
So we're just going to change the paths to be direct
cp distribute/lib/libcaffe.so.1.0.0-rc3 ~/Library/Python/2.7/lib/python/site-packages/caffe/libcaffe.so.1.0.0-rc3 install_name_tool -change @rpath/libcaffe.so.1.0.0-rc3 ~/Library/Python/2.7/lib/python/site-packages/caffe/libcaffe.so.1.0.0-rc3 ~/Library/Python/2.7/lib/python/site-packages/caffe/_caffe.so
Verify that everything works
start python and try to import caffe
python -c 'import caffe'