2014-01-24

MacでThunderbolt外付けBOXにGPGPUを認識させるには

新年あけましておめでとうございます。(1月ももう後半ですが...)
ブログのネタがなくてだいぶ放置しておりまして、いい加減見に来る人もあんまりいないんじゃないかと思いますが今日はフレッシュなネタをひとつ。

これまでThunderbolt接続のPCI-ExpressボックスではGPGPUの接続が不可能とされていました。Intelの意向らしいですがとりあえず現状ではグラフィックスボードを挿しても認識させることは出来ません。RAIDカードやNICでもThunderbolt接続に対応したドライバが無いと動作させることは出来ません。
人々は皆思いました。「えっ!?ThunderboltってPCI-Expressの信号を通すだけだって話なのに何でそんな制限かけるんだよ!」と。えぇ私も思いましたよ。ま、大人の事情ってヤツです。

ただ世の中にはそうした制限をくぐり抜けてハックする方法を考え出す人がいるわけで、色々な方法でチャレンジする人がいます。
当方も海外の方のあるブログを見て同様の方法でチャレンジしてみました。
この方はExpressCardに一旦変換してからPCI-Expressに繋いでいるようですが、せっかく手元にThunderboltの外付けPCI-Expressボックスがあるのでダイレクトに繋いでチャレンジしてみましょう。

用意するもの
  1. Mac (今回はMacBookPro Early 2013)
  2. MAXSERVE  Thunderbolt接続PCI-Express拡張ボックス NA-211TB
  3. NVIDIA製GPGPUボード (今回はGeForce GTX760 )
  4. Text Wrangler (テキストエディタ)
  5. Nvidia Mac版CUDAドライバ
NA-211TBは2.5inchハードディスクを4発搭載可能なNA-211TB-LDでも構いませんが、今回搭載したGeForce GTX760ですと2スロットを消費するモデルが多い為、RAIDカードと同時に挿すことは無理な場合があります。

またGPUボードの長さが結構ありますので、内部の奥行きが長いNA-211TBの方がベターでしょう。

GPGPUボードはGTX760クラスが限界かなという気がします。NA-211TBの内蔵電源が250Wな為、GTX770以上ですと消費電力が少し心配です。
今回のテストではGainward社製GeForce GTX760 Phantomを用意しました。
※注)参考ブログの中の人曰く、AMDのRadeonシリーズは動くけどバグが多いのでGeForceが良いらしいです。
PCI-Express用補助電源コネクタも付いていますのでGTX760でも問題ナッシング
kextファイルを書き換える

そしてGPGPUをThunderbolt経由で動作させるにはカーネルエクステンションファイルを少し書き換える必要があります。(といっても大した量では無いのでご安心を)
このカーネルエクステンションファイルを書き換える際にエディタソフトが必要になります。手軽なのはText WranglerというアプリですがこれはAppStoreから検索して出てくるバージョンではなく、必ずText Wranglerの開発元から配布されているバージョンを使ってください。(そうでないとうまくいきません)

※以下の作業は必ず自己責任で。万一の際のバックアップは必ず取ってください。
これらを用意しましたら以下のファイルを開きます。
/System/Library/Extensions/NVDAStartup.kext
/System/Library/Extensions/IONDRVSupport.kext
/System/Library/Extensions/AppleHDA.kext/Contents/PlugIns/AppleHDAController.kext

例えばNVDAStartup.kextを右クリックして「パッケージの内容を表示」、Contentsフォルダを開くと「info.plist」というファイルがありますので、それを右クリックし「このアプリケーションで開く」->「TextWrangler」を選択します。
ファイルを開きますとxmlで書かれたkeyとstringが表示されますので、その中から

<key>CFBundleIdentifier</key>

と書かれたセクションを見つけ出します。上記が記述されたセクションの最後に

<key>IOPCITunnelCompatible</key>
<true/>

とコードを追加します。

</dict>

の手前に追加です。CFBundleIdentifierというセクションが幾つかあるので、それを一つ残らず見落とさないようにして必ず上記コードを追加してください。
記入例。下から3行目と2行目を追加しています
3つのファイルをそれぞれ上書き保存します。

【追記】 OSをアップデート(例10.9から10.9.1へ等)した場合、再度この作業をおこなう必要があるそうです。

Mac版 CUDAドライバをインストール

次にNvidiaからMac用のCUDAドライバをダウンロードします。これを執筆している(2014/1/24現在)時の最新Verは5.5.28となっています。もちろんOSX10.9 Mavericks対応です。
ダウンロードしたCUDAドライバをインストールしてMacを終了させ電源を落とします。

※グラボのドライバですがMacOSX10.8からどうやらGeForce系はネイティブで動くという情報を耳にしていたので、そのまま挿せば良いようです。

最後にNA-211TBにGeForce GTX760を取り付けThunderboltケーブルをMacBookProに繋ぎます。
Thunderboltの製品は基本的に繋いだPCの電源と連動して電源が入るので、必ず接続してからMacの電源を入れます。
※注)ThunderboltケーブルをMacが動作している時に絶対に抜かないでください。多分システムが落ちます。Thunderboltを介したPCI-Expressなので、PCI-ExpressスロットからGPUボードをサクッと外した状況と同一になりますから抜いちゃダメですよ。

で準備が出来たら一先ず深呼吸をして気持ちを落ち着けましょう。
Thunderboltケーブルは接続されいるか、GPGPUボードはちゃんと装着されているか、補助電源コネクタも大丈夫か。確認しましょう。

はい、いいですか? ではMacの電源をオン!!

すると....

ちゃんと映りました!何の問題もなく。あっけないまでに。
ちゃんとしたカメラで撮ればいいのに手元にiPhoneしかなかったので...
システム情報にもちゃんとGTX760と・・
何か動かして面白いものは無いかと思い、とりあえずCall of Duty2のデモ版があったのでインストールして動かしてみました(ちょっと古いゲームですが)。当然スムーズに動きます。
ていうか今時のグラボって静かなんですね〜。まぁこのPhantomってモデルが静音なのかも知れないですがちょっと前のグラボって結構うるさかった気が・・。全然音も気になりませんし、NA-211TBには2mのThunderboltケーブルが付属しているので、少し離して置くことも出来ます。

MAXONのグラフィックスベンチマーク、CINEBENCH R15を動かしてみた結果です。
もっと良いボード挿せばスコア上がるんだけどなーと思いつつ今日はこのくらいで勘弁してやりましょう。

内容的にはあまりホビー向けでは無いかも知れません。今後の予定としては映像業界向けのテストをしてみようと思います。特にDaVinch ResolveやAdobe関係のアプリケーションがどの程度高速化出来るかというのをやってみたいと考えています。

To be continued...

【追記】次回は色々ベンチマークを動かしてみるという夢をみます。
【追記2】MacOSX 10.9.4版の新しい記事があります。
MacでThunderbolt外付けBOXにGPGPUを認識させるには (MacOSX 10.9.4版)
【追記3】この記事には最新版があります。トップページからご覧ください。


6 件のコメント:

汐崎貴士 さんのコメント...


そこでいくつか質問です。
1.このサイトのThunderbolt接続PCI-Express拡張ボックスを使用しないで、他の安いもので代用できませんか?

2.動画編集がカクカクして重いので、それの改善が目的でこれをしようと思ったのですが、動画編集にも効果はあらわれますか?

3.MacBook ProRetina13でも可能ですか?

4.ファイルを書き換えて一度設定してしまうと、これなしで起動させて使うことは不可能ですか?

以上4点です。どうか、よろしくお願いします。

maxserve さんのコメント...

コメントありがとうございます。
早速ですがご質問にお答え致します。

1. 申し訳ございませんが、他社製品で動作するかどうかは当方では分かりかねますのでご容赦願います。

2. お使いの動画編集ソフトがGPUで高速化するかどうかメーカーの方にご確認くださいませ。メーカーのWebサイトに情報がある場合がございます。Adobe等の場合はGPUで高速化する物がございます。

3. 可能です。

4. いいえ大丈夫です。書き換えに失敗さえしなければ問題ありませんので、必ずシステムのバックアップをTime Machine等で取られる事をお勧めします。

大介 さんのコメント...

すいません。
Macbookpro retina15をwindow7で使っています。
そこにNAS-211TBにgtx760を載せて使う事は出来ますか?
他に作業は必要ですか?

maxserve さんのコメント...

コメントありがとうございます。
ご返信遅くなりまして申し訳ございません。
Windowsマシンで動作をさせた事が無いので、正確にお答えすることが出来ないのですが、先日NVIDIAからGeForceの最新ドライバでベータ版ではありますがWindows上での外部GPUをサポートしたものがリリースされております。
そちらを確認されても宜しいかと思います。

匿名 さんのコメント...

http://www.amazon.co.jp/gp/product/B00GTJMUZ4/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=B00GTJMUZ4&linkCode=as2&tag=amzn2you-22
これと
http://www.gainward.com/main/vgapro.php?id=913&lang=jp
これの二つを用意しないといけないんですか?

maxserve さんのコメント...

いえ、GPUボードは消費電力がおおむね300W以下のものを1枚用意すればOKです。
但し現時点でNVIDIAの最新GPU、GTX1080はまだテストしていません。