パソコン・メモメモ備忘録

気の向くままパソコン関係等で気になることを書き記す。時々更新!

AWS EC2 g2.2xlarge インスタンス使ってみた

Amazonクラウド AWS は、料金が従量制なのでほぼ初期費用無しで色々試せる。ということで GPU が使える g2.2xlarge インスタンスを試してみた。まぁ、以前 NVidia の GRID を試したのだが、ハードウェアというか仮想ハードウェア的には同じものだ。テストドライブ NVidia GRID では、専用のクライアントとサーバが設定してあってお気楽だったが、AWS の EC2 の素で使おうとすると結構大変だった。

まず、OS を何にするか、だが、今回は WindowsServer 2012R2 64bit を選んだ。一番新しそうだったんで。一つインスタンスを作成して気付いたのだが、グラフィックドライバが入ってなくて全く素な状況。どのドライバを入れていいのかもわからず(この時は GPU が何かも調べてなかった)。実は MarketPlace に WindowsServer2012R2+NVidia GRID Driver 付きの AMI(仮想 PC のイメージ?)があって、それを入れるとドライバが入っている。ということで、こちらでインタンスを作りなおした。たしかにこちらだと NVIDIA GRID K520 が認識されている。

ところが、リモートデスクトップで対象のインスタンスの仮想 PC にログオンしてみたら、GPU アクセラレーションが使えない状態だった。なかなか一筋縄ではいかない。OpenGL Extension Viewer で見ても OpenGL は 1.1 だった。色々調べて、デバイスマネージャー で K520 と並んでいる Microsoft 基本ディスプレイアダプターを消してしまうのがいいらしい。ひとつの方法は BasicDisplay.sys を削除するもの。実際、削除してリブートすると、OpenGL4.4 が使えるようになっていた。素晴らしい。

そこで、とあるソフトを入れて、色々試していたのだが、あるシェーダーが動かない。シェーダーのコンパイル時にエラーが出ているようだ。手元の PC では普通に動いているものだが。エラーは

Vertex info
                    • -
0(64) : error C5025: lvalue in assignment too complex Fragment info
                        • -
(0) : error C6001: Temporary register limit of 2 exceeded; 3 registers needed to compile program

こんな感じ。結局、原因は良くわからないが、もともとシェーダーで設定していた、
#pragma optionNV(unroll all)
を all から none か * にするとこのエラーは解消するようだ。ループのアンローリングの際にレジスターが足りなくなってしまったり、だろうか。でもリミットが 2 とかえらく低いな。手元の PC も Keplar 世代なので、この辺は同じかと思ったが違う部分もあるようだ。

そういや NVidia の GRID のドライバーは GeForceQuadro に比べてえらく古い(2014.4.7 リリース)。1年間違う。その辺が原因だろうか。

ということで、時間従量制とはいえ、高性能な仮想 PC を使えるのはなかなかワクワクする。色々活用できたらいいなぁ。