しかし、今回の「Windows 10上に囲碁勉強環境を構築する」プロジェクトでは「GLOBIS-AQZ」を使えるようにすることが最優先課題であったため、当時使っていた「CUDA 9.0」ベースの環境から「CUDA 10.0」+「TensorRT 7.0.0」という「GLOBIS-AQZ」動作要件を満たす環境へとシフトすることになりました。
たいていの囲碁プログラムのGPUバージョンは動作要件として特定バージョンの「CUDA」ライブラリを例示していますが、それはあくまでも動作検証をおこなった環境について言及しているだけで、じっさいにはほかのバージョンの「CUDA」ライブラリとも互換性をもって動作します。
しかしながら、「PhoenixGo」だけは明示的に以下のように「CUDA 9.0」+「cuDNN 7.1」環境に特定されており、今回プロジェクトで構築した「CUDA 10.0」をベースとする環境では動作させることができません。
・CUDA 9.0 only
・cudnn 7.1.x (x is any number) or lower for CUDA 9.0
・no AVX, AVX2, AVX512 instructions supported in this release (so it is currently much slower than the linux version)
・there is no TensorRT support on Windows
じっさいにあらたな「CUDA 10.0」環境でこれまでとおなじように「PhoenixGo」を起動しようとすると、いくつかの「CUDA 9.0」ライブラリが見つからないため起動できないむね、エラーが出てそのまま終了してしまいます。
ということは逆にいえば、このエラーメッセージで要求されているライブラリファイルだけ「CUDA 9.0」からもってきて、それをパスがとおっている場所(いちばんわかりやすいのは「PhoenixGo」の実行ファイルそのものがあるフォルダ)に置いて見つかるようにしてやれば、動かせるのではないかという考えにたどりつきます。
バックアップしてあった「CUDA 9.0」環境からさっそく「cublas64_90.dll」「cudart64_90.dll」「cudnn64_7.dll」「cufft64_90.dll」「curand64_90.dll」「cusolver64_90.dll」をとりだしてきて、「PhoenixGo」の実行ファイルが置かれている「C:\Users\username\PhoenixGo\bin」フォルダに設置してから起動してみると、はたして問題なく動作することが確認できました。
そこまでやってみてから気づいたというのがなんとも間のぬけた話なのですが、じつは「PhoenixGo」GPUバージョンには二種類のバイナリ配布があり、そのうちのひとつがまさに上記したように「CUDA 9.0」ライブラリを同梱したものになっていました。
「PhoenixGo」Windowsバイナリのダウンロードページへいくと、「PhoenixGo-win-x64-gpu-v1」と「PhoenixGo-win-x64-gpu-with-cuda-v1.zip」の二種類が公開されています。
「CUDA 9.0」+「cuDNN 7.1」環境が構築されている場合は前者をダウンロードしてインストールすればいいのですが、NVIDIA製「CUDA」対応GPUを搭載したコンピュータであれば、じつはCUDA環境が構築されていなくても(あるいは今回のhatakazuのケースのように、べつのバージョンの「CUDA」環境が構築されていても)後者をダウンロードしてインストールすることで「PhoenixGo」をよりかんたんに動かすことができるのです。
「コンピュータ囲碁プログラム「PhoenixGo」のインストールと使いかた - Windows編」で記述したうち、「1. 前提となる環境」でまとめてある「CUDA 9.0」+「cuDNN 7.1」をインストールする準備作業は、スキップしてしまってかまいません。
それから「2. 「PhoenixGo」インストールファイルのダウンロード」の部分では、GPUバージョンのWindows用インストールファイルとして、「PhoenixGo-win-x64-gpu-v1」ではなくて「PhoenixGo-win-x64-gpu-with-cuda-v1.zip」のほうをダウンロードしてきます。
そのあとのインストール方法、設定方法、囲碁GUIとの連携方法は「コンピュータ囲碁プログラム「PhoenixGo」のインストールと使いかた - Windows編」に書いてあるのとまったくおなじです。
コミ六目半日本ルールで学習したネットワークをもつ「GLOBIS-AQZ」や日本ルール対応を打ち出した「KataGo」に対して、「Leela Zero」や「ELF OpenGo」は(七目半でしか学習してないので)棋譜ごとのコミ設定にかかわらず七目半でしか思考できないようにみえますが、「PhoenixGo」はそもそもの話として七目半以外のコミ設定を受けつけないので、どんな条件の棋譜であってもとにかくコミを七目半に設定しないと動かないという部分は注意が必要です。