#!/usr/bin/env bash
# Assuming OS X Yosemite 10.10.4
# Install XCode and command line tools
# See https://itunes.apple.com/us/app/xcode/id497799835?mt=12#
# See https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/xcode-select.1.html
xcode-select --install
# Install the Homebrew package manager if you don't already use it; see source http://brew.sh
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
# Install homebrew cask
brew install caskroom/cask/brew-cask
# Install Python 2.7 and pip
brew install python pip
# Install Cuda 7
brew cask install cuda
# Optionally install cuDNN from https://developer.nvidia.com/cudnn which requries
# 1) Registering for an NVIDIA account, accepting an end-user-license-agreement
# 2) Downloading and extracting a tar.gz archive
# 3) Copying lib* files to /usr/local/cuda/lib and cudnn.h to /usr/local/cuda/include
#
# robertsdionne:~/$ ls /usr/local/cuda/lib/*dnn*
# /usr/local/cuda/lib/libcudnn.6.5.dylib /usr/local/cuda/lib/libcudnn_static.a
# /usr/local/cuda/lib/libcudnn.dylib
# robertsdionne:~/$ ls /usr/local/cuda/include/*dnn*
# /usr/local/cuda/include/cudnn.h
# Install dependencies; see http://caffe.berkeleyvision.org/install_osx.html
brew install --fresh -vd snappy leveldb gflags glog szip lmdb
# need the homebrew science source for OpenCV and hdf5
brew tap homebrew/science
brew install hdf5 opencv
# with Python pycaffe needs dependencies built from source
brew install --build-from-source --with-python --fresh -vd protobuf
# We need boost{,-python}-1.57.0 due to a bug in 1.58.0 on Yosemite 10.10.4
brew install --build-from-source --fresh -vd \
https://raw.githubusercontent.com/Homebrew/homebrew/6fd6a9b6b2f56139a44dd689d30b7168ac13effb/Library/Formula/boost.rb \
https://raw.githubusercontent.com/Homebrew/homebrew/3141234b3473717e87f3958d4916fe0ada0baba9/Library/Formula/boost-python.rb
# Clone caffe
git clone https://github.com/BVLC/caffe.git
cd caffe
# Install python dependencies
pip install --requirement python/requirements.txt
# Adjust Makefile.config
cp Makefile.config.example Makefile.config
########## Make the following adjustments to Makefile.config:
diff --git a/Makefile.config b/../caffe/Makefile.config
index a873502..c6806c2 100644
--- a/Makefile.config
+++ b/../caffe/Makefile.config
@@ -2,7 +2,7 @@
# Contributions simplifying and improving our build system are welcome!
# cuDNN acceleration switch (uncomment to build with cuDNN).
-# USE_CUDNN := 1
+# USE_CUDNN := 1 ########### Keep it like this to disable cuDNN
+USE_CUDNN := 1 ########### Make it like this to enable cuDNN
# CPU-only switch (uncomment to build without GPU support).
# CPU_ONLY := 1
@@ -34,7 +34,7 @@ BLAS := atlas
# Custom (MKL/ATLAS/OpenBLAS) include and lib directories.
# Leave commented to accept the defaults for your choice of BLAS
# (which should work)!
-# BLAS_INCLUDE := /path/to/your/blas
+BLAS_INCLUDE := /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/Accelerate.framework/Versions/Current/Frameworks/vecLib.framework/Headers
# BLAS_LIB := /path/to/your/blas
# Homebrew puts openblas in a directory that is not on the standard search path
@@ -48,8 +48,8 @@ BLAS := atlas
# NOTE: this is required only if you will compile the python interface.
# We need to be able to find Python.h and numpy/arrayobject.h.
-PYTHON_INCLUDE := /usr/include/python2.7 \
- /usr/lib/python2.7/dist-packages/numpy/core/include
+PYTHON_INCLUDE := /usr/local/lib/python2.7/site-packages/numpy/core/include/ \
+ /usr/local/Cellar/python/2.7.10/Frameworks/Python.framework/Versions/2.7/include/python2.7/
# Anaconda Python distribution is quite popular. Include path:
# Verify anaconda location, sometimes it's in root.
# ANACONDA_HOME := $(HOME)/anaconda
@@ -58,7 +58,9 @@ PYTHON_INCLUDE := /usr/include/python2.7 \
# $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include \
# We need to be able to find libpythonX.X.so or .dylib.
-PYTHON_LIB := /usr/lib
+PYTHON_LIB := /usr/local/lib/python2.7 \
+ /usr/local/Cellar/python/2.7.10/Frameworks/Python.framework/Versions/2.7/lib/ \
+ /usr/local/lib/python2.7/site-packages/numpy/lib
# PYTHON_LIB := $(ANACONDA_HOME)/lib
# Homebrew installs numpy in a non standard path (keg only)
########## Make the following adjustments to Makefile:
diff --git a/Makefile b/../caffe/Makefile
index e4e66df..8babaf8 100644
--- a/Makefile
+++ b/../caffe/Makefile
@@ -335,7 +335,7 @@ else
LDFLAGS += -framework Accelerate
else
BLAS_INCLUDE ?= /System/Library/Frameworks/vecLib.framework/Versions/Current/Headers/
- LDFLAGS += -framework vecLib
+ LDFLAGS += -framework Accelerate
endif
endif
endif
# Build caffe
make all -j8; make pycaffe -j8
# Package caffe
make distribute
# Set your environment variables for success
export PYTHONPATH="$HOME/caffe/distribute/python:$PYTHONPATH"
export DYLD_FALLBACK_LIBRARY_PATH=/usr/local/cuda/lib:/usr/local/lib:$HOME/caffe/distribute/lib:$DYLD_FALLBACK_LIBRARY_PATH
# Clone deepdream
cd ..
git clone https://github.com/google/deepdream.git
cd deepdream
# Install python requirements
pip install numpy scipy scikit-image pillow ipython[notebook]
# Start IPython Notebook and select dream.ipynb
ipython notebook dream.ipynb
@robertsdionne thanks a bunch for the help on my previous question. Having another issue unfortunately.
linking warning saying that xcode can't find the Python library leading to the build failing because it cant find Python.h
make all -j8; make pycaffe -j8
...
CXX examples/siamese/convert_mnist_siamese_data.cpp
CXX .build_release/src/caffe/proto/caffe.pb.cc
AR -o .build_release/lib/libcaffe.a
LD -o .build_release/lib/libcaffe.so
clang: warning: argument unused during compilation: '-pthread'
ld: warning: directory not found for option '-L/usr/local/Cellar/python/2.7.10/Frameworks/Python.framework/Versions/2.7/lib/'
CXX/LD -o .build_release/tools/caffe.bin
.... plus lots more ld warnings
PROTOC (python) src/caffe/proto/caffe.proto
python/caffe/_caffe.cpp:1:10: fatal error: 'Python.h' file not found
include <Python.h> // NOLINT(build/include_alpha)
The directory is there: $ ls /usr/local/Cellar/python/2.7.10_1/Frameworks/Python.framework/Versions/2.7/lib/
libpython2.7.dylib pkgconfig/ python2.7/
Makefile:
...
PYTHON_INCLUDE := /usr/local/lib/python2.7/site-packages/numpy/core/include/
/usr/local/Cellar/python/2.7.10/Frameworks/Python.framework/Versions/2.7/include/python2.7/
...
PYTHON_LIB := /usr/local/lib/python2.7
/usr/local/Cellar/python/2.7.10/Frameworks/Python.framework/Versions/2.7/lib/
/usr/local/lib/python2.7/site-packages/numpy/lib
...