[未解決]昔のMacBook Pro (Mid 2009) にGPUで演算させるためにCUDAを導入メモ

※未解決で不完全です

3DのレンダリングやAfter Effectなどの映像編集で使われるCUDA(Compute Unified Device Architecture:クーダ)を試そうとした時のメモ。
失敗してますが誰かの何かのお役に立てれば…

きっかけはAIの機械学習のため。
機械学習はめっちゃ時間かかる。余ってる古いMacBook Proにさせようとしたら今のメインのMacBook Airの3倍近くかかってしまう。
しかしこのMacBookProにはグラボ(NVIDIA GeForce 9400Mグラフィックプロセッサ、256MB)が載ってるから、噂のGPUでChainerのCUDA処理ができるんじゃないかと試した次第。

環境

  • MacBook Pro (15-inch, Mid 2009)
  • OS X 10.11.4 (El Capitan)
  • Xcode 7.3
  • python 2.7.11

インストールしたライブラリ

  • CUDA 7.5.26 Driver
  • CUDA 7.5.20 Toolkit
  • cuDNN v5 → v4
  • pycuda
  • chainer 1.8

ほぼこちらのサイトそのままです。非常に参考になりました。
GeForce搭載の旧モデルMacBook ProでCUDAをセットアップする手順のメモ · hnakamur’s blog at github

CUDA 7.5 ドライバのインストール

MAC アーカイブ用CUDA ドライバ | NVIDIA から最新バージョンをダウンロード(この時点では7.5.26 for Mac )

sc2016-04-17 16.10.41 sc2016-04-17 16.10.12

特に問題なく完了。
システム環境設定にアイコンが追加される。

sc2016-04-17 16.12.42 sc2016-04-17 16.12.49

CUDA 7.5 Toolkitのインストール

CUDA Toolkit | NVIDIA DeveloperからMac OSXのLocal Installerをタブで選択しダウンロード。

sc2016-04-17 16.14.45

sc2016-04-17 16.15.19

1.0GBありめっちゃ時間かかった

ダウンロードしたファイルを解凍してインストールするだけ。

 

HDD直下に以下のフォルダができた。

参考サイトにはREADMEの内容を実行しろとあったけど7.5からしなくていいっぽい

CUDAのPATHを通す

フロントエンドの人間には「パスを通す」というのがいつもわからない。怖くて不安。

参考サイト:Macで.bashrcをいじるとき – Qiita
こちらの通りに2つのファイルに書き込む。

.bash_profileと.bashrcファイルがなければ新規に作成。
自分の環境では ~/.bash_profile は既にあり、 ~/.bashrc は新規作成した。

ちなみに “~/” はユーザーのHOMEフォルダを指します。
ターミナルを起動したら一番最初の位置。
FinderだとユーザーのHOMEフォルダ直下。
.から始まる不可視ファイル、フォルダを表示させるようにしていればわかりやすいです。
途中すっ飛ばしてますが、最終的に ~/.bash_profile はこう書きました。

~/.bash_profile

CUDAのサンプル生成(この作業は不要)

エラーが出た。参考サイトにあるように後ろに引数(.)指定が必要だったのでやり直し。

成功した模様!

と思ったけどこの作業は不要だったみたい。
/Developer/NVIDIA/CUDA-7.5/samples がインストールした時から既にあった。
上記のサンプル生成は不要です。

インストールテストの実行

参考サイトの /samples/0_Simple/asyncAPI を試してみます

うーん、エラー…
ググってみるとどんぴしゃのページが。ありがたや

nvcc fatal : The version (‘70300’) of the host compiler (‘Apple clang’) is not supported – Qiita

原因はXcodeのバージョン(7.3)が対応してないので以前のバージョン(7.2)を入れることに。

ちなみに参考サイトのダウンロード先はなくなってたので、ここからXcode 7.2をダウンロードしました。
https://developer.apple.com/downloads/
直接リンク(できるか不明)

参考)http://adcdownload.apple.com/Developer_Tools/Xcode_7.2/Xcode_7.2.dmg

上記参考サイトと同じようにアプリケーションの名前を変更して、2つのバージョンを共存
(ダウンロードとインストールで2時間ぐらいかかりました)

ターミナル上でXcode7.2の方を優先させる
Xcode7.2を起動→検証が動いてここでも20分ぐらい

Xcodeの環境設定で タブ[Locations]-> Command Line Tools を Xcode 7.2(7C68)に

参考)ios – Revert Apple Clang Version For NVCC – Stack Overflow

再びコマンド実行

無事成功!

Boost のインストール

なんでもC++の凄いライブラリとか(全くわかりません)

参考)
Mac OSX 10.10 (Yosemite)にpycudaをインストール: すけひろ日記
【C++】Mac に Boost を インストールした | ちょまど帳

https://sourceforge.net/projects/boost/files/boost/1.60.0/
から
boost_1_60_0.tar.gz (90.4MB)
を~/Downloads にダウンロード

error: unrecognized option: –with-pyton=python
もしこのエラーが出たら –with-python=PYTHON と大文字にすればOKだった

上記の結果が出たら、次は下のコマンドでインストール実行

ものすごくターミナルが動き出す。

1時間半ぐらいかかりました。

Bootが正常にインストールされたか動作テスト
こちらの boost_sort_vector.cpp の中身を test.cpp としてテキストエディタで保存(場所は任意)

sudo じゃないとダメみたいでやり直し

実行するとディレクトリに test.out というファイルが生成される
(なにげC++コンパイル人生初体験)

コンパイルされたファイルを実行する
./ が必ず必要!

動いた!これでBootは大丈夫。

この時点でこのコマンドを試してみる。

CUDAの文字が出てるので大丈夫っぽい

ここまででCUDAとBootはインストールできてるっぽい

CUDA動作確認

NVIDIAの中のサンプルファイルを動かしてみる

-IでCUDAのライブラリを指定する。ここは適時変更してください。
面倒なんだけどサンプル用のライブラリのパス samples/common/inc も指定しないといけない。

うーん、architecture x86_64 が見つからないとエラー
Google先生にエラーメッセージでぐぐってみたけどよくわからなかった。
フォルダの中身を見るとMakefileがあるのでMakeを試してみる。

フォルダに移動

おお、何か動いた!
最後の行に ../../bin/x86_64/darwin/release にコピーしたとあるのでFinderで確認
/Developer/NVIDIA/CUDA-7.5/samples/bin/x86_64/darwin/release/deviceQuery
sc2016-04-18 1.23.05

上記のフォルダにファイルができていたのでダブルクリックで実行
sc2016-04-18 1.22.43

これでいいっぽい。

pycudaのインストール

下記参考サイトの通りに実行

参考サイト)Mac OSX 10.10 (Yosemite)にpycudaをインストール: すけひろ日記

~/Downloads/pycuda/siteconf.py をテキストエディタで編集

参考サイトを見ながら適宜パスを変更しています。

すごいwarning出てたけどmake install実行

おお、成功した!

pycudaの動作確認

あれーエラーが出る…
参考サイトをよく見ると、インストール直後はPATHが繋がってないらしい。
ターミナルを再起動してみる。(Mac本体は再起動してない)

エラーが消えた!
Segmentation fault: 11 はメモリ関係のエラーらしいから気にしない。

NVIDIA cuDNNのインストール

NIVIDAのデベロッパーに登録して申請する必要がある。
sc2016-04-18 2.37.26

登録してログインしたらどこから探していいかわからなかったけど、cuDNNのページにアクセスすると普通に「DOWNLOAD」の項目あった。

cuDNN Download Surveyページは特に何もチェックしなくてもOK。
cuDNN v5 Library for OSX (80MB弱, cudnn-7.5-osx-x64-v5.0-rc.tgz )をダウンロード。

適当な所に保存して展開

以下のファイルが展開される

├ include
└ cudnn.h
└lib
├ libcudnn_static.a
├ libcudnn.5.dylib
└ libcudnn.dylib

上記ファイルを /Developer/NVIDIA/CUDA-7.5/ の libフォルダとinlcludeフォルダにそれぞれコピー。

一度ターミナルを再起動。

puython上で以下の2行を実行して問題なければOKらしい

ターミナル上でパスを指定して pythonを実行

うーん、パスが通ってない?
Macを一度終了し試すも同じエラー。

http://qiita.com/sigmalogneko/items/2b6921c1068bb26582da
を見ると、Chainerをインストールしなおせばいいらしい

念のためMAC再起動。

cudaを再度試すも同じエラーメッセージ。

参考サイト Chainer 1.6 GPU 対応に関するメモ|毎日の向こうに
を見ると、CuDNNのコピー後にシンボリックリンクを作らないといけなかった

コピーした時に解凍ファイルにシンボリックリンクも混ざってた。
libcudnn.dylibを削除して作成しなおした。

もう一度 chainerを再インストール

セーフモード起動

Command + R 押しながら起動して、ターミナルを起動してコマンド実行

これでGPUのグラフィックボードにアクセスできるようになる??

HDF5のインストール

でエラー。

参考  Chainerを1.5にアップグレードするのにやったこと – Qiita の通りに、ソースからインストールしたらほぼ大丈夫だった。

ダウンロードしたのはここから
HDF5 Source Code → hdf5-1.8.16.tar.gzただ参考サイトのコマンド、コピペだとエラー出た(本当にによくわかってない)

オプションを削ったらOKだった。
僕の環境では以下のコマンドでOKでした。

makeとmake checkはかなり時間かかった。

~/.bash_profile をメモ帳で開いて環境変数(パス)を1行追加

そして chainer を再インストール (何回目だよ…)

特に問題なく終わった!

それでもCUDAは動かない

ここまでやってRuby上で cudaが動くかテスト

うーん、エラー。
パスは通ってるはずだけど念のためパス指定してやってみる

同じエラー…

 

cudaとcuDNNのバージョンが合ってないかな…
組み合わせを試すことも考えましたが、もう心折れました。

ここまでで週末全部潰れた。
なれない作業にGoogle先生に聞いてばかりなのもあったけど、
ダウンロードとインストールでもかなり時間かかりました。
(古いMacBook Proだったのもある)

とりあえずここまで。
素直にAWSのGPUで試すことにしました。

このメモがいつか誰かの役に立ちますように。

[未解決]昔のMacBook Pro (Mid 2009) にGPUで演算させるためにCUDAを導入メモ” への2件のフィードバック

  1. 初めして。
    私も昔のMac mini (Late 2009)(Geforce 9400M搭載)でCUDAの設定を行っていましたが、CUDA6以降はサポートしていないみたいです。
    そのために、上手くいかなったのではないでしょうか?
    CUDA5.5なら動くかもしれません。

    ソース:https://devtalk.nvidia.com/default/topic/803949/cuda-7-gpu-requirements-geforce-9400m-/

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


*