クーの自由研究

マスターの かえるのクーは8年の任期を終え消失しました。クーⅡ世の中の人絶賛募集中です。(特にオリオン座&プレイアデス方向の方は優遇します)助手がメイド喫茶から生還し、リハビリを兼ねて復帰しています。

GPUを買ってしまった件

GPUに入門してみます

トゥットゥルゥー。かえるのクーです。

最近実験もしていなのに、お金もないのに、しかもこの時期に「GPU」を買ってしまいました。

自己符号化器レベルの実験ばかりなので、GPUはそれほど必要ではなかったのです。(負け惜しみ)

買ったもの

GTX 1060 6GB(MSI ARMOR OC)をかいました 。

f:id:np2LKoo:20181124010039j:plain

 いまどきの機械学習に使うには中途半端かもしれませんが、ボクには精一杯の出費です。(29,800円な~り~)

CUDA 9.2*1 + CuDNN7.4.1(for CUDA 9.2) *2+ cupy-5.0.0*3 + chainer 5.0.0*4 を入れました。CUDA 10がでているようですが、CuPyは現在9.2までの対応のようです。

インストールは説明いただいている方が結構いるので、見せてもらいました。ありがとうございます。

ちなみにボクはfastrlockでははまりませんでした。

OSはWindows 10です。(chainerは 5.から Windows10もサポート対象の噂がありましたが、どうなのでしょう。。。)

コンパイル用にVisualStudio 2017(オプション追加 VC++ 2015.3 V14.00)*5も入れました。

VisualStudio はCUDAインストールより先に入れます。

f:id:np2LKoo:20181124015802p:plain

VisualStudio で CUDAのデバッグができるようになるみたいです。

CuDNNはログインしてのダウンロードでした。nVIDIAの会員?になりました。

CuDNNのライブラリをVisualStudioの依存ファイルとして登録することも必要みたいです。(インストール説明に記載がありました)

f:id:np2LKoo:20181124021527p:plain

 

ベンチマークしてみます

chainerのMNISTチュートリアルをGitHubからcloneしてそのまま実行してみます。

f:id:np2LKoo:20181124011909p:plain

実行でmkl*6のバージョン違いによるエラーが出たのでWindows\System32の中から mkl_*を削除(他へ退避)しました。anacondaのビルド/内包版と違っているとエラーになるようです。(mklのエラーはOSやanacondaのインストールの度に出している気がします)今回はOS版のほうが新しくてエラーになったみたいでした。

f:id:np2LKoo:20181124015638p:plain

Windows\System32側のmkl_*の退避移動(削除)でエラーはなくなりました。必要であればまた戻します。(または最新版をインストールします)

まずはCPUで

f:id:np2LKoo:20181124012022p:plain

CPU 計算で918秒でした。まぁ、遅いマシンなので。。。

GPU計算では

f:id:np2LKoo:20181124012854p:plain

197秒でした。約4.66倍です。実験がはかどりそうです。

フーリエ変換してみます

 cupyの fft はボクのPCでは

f:id:np2LKoo:20181124014739p:plain

 で、約89倍です。どんどんフーリエ変換できそうです。

参考URL

 備忘

Overview — CuPy 5.0.0 documentation

 

 

*1:くーだ:GPUを使ったシンプルな並列処理を実現できるしくみ:nVIDIA社のグラフィックカードを使って汎用的な演算が可能になります。CUDAを使ったGPUプログラミング超入門 - Qiita

*2:nVIDIA社が公開しているDeep Learning用のライブラリです。

*3:くーぱい:pythonのNumpy互換のライブラリで、CUDAを使用して高速に処理できます。今をときめくPreferred Networks社製です。

*4:ちぇいなぁ:同じくPreferred Networks社製の深層学習向けPythonライブラリリです。

*5:これ(C++V14)を最初に選択し忘れる人がかなりいる模様です。オプションの下のほうにあり、スクロールしないとでてこないので、ボクも最初選択漏れして、cupyのpip(というかビルド)に失敗しました。

*6:いんてる・まぁす・かーねる・らいぶらり:科学・工学系の各種計算を行うためのライブラリです。さいきんはanaconda環境関連でmklのバージョン不整合がおきるケースが結構あるようです。ボクも何回も遭遇しているので、世の中でもあたりまえのように起きる現象でしょう。最新版を入れれば解決するケースもありますが、anacondaのmklと合っていないのが問題です。パスを最初にanaconda側に通しておいてもsystem32の方をみにくことがありますので、system側を潔く消すか、それが不都合ならなんとか(依存関係をふくめて)mklのバージョンを合わせる必要があります。