ASUS T100TA-DK32GでNode.jsでOpenCL出来た!
おはようございます。先日は、奥さんが出張のため、息子達と実家で寝泊まりして、無事過ごせた@kjunichiです。
要するに32ビットなWin8.1でnode-webclを動かすということ
さらに言えば、クリーンインストール後な状態からのスタートになる。
Pythonを入れておく
まえまえ、気になって仕方ながったChocolateyを使いインストール
gitも入れておく
node.js本体を入れる
これも今回はChocolateyで入れた。 以降の作業はChocolateyでなく素の状態?で行っている。
IntelのOpenCL SDKを入れる
この際、VisualStudioと統合するのチェックを外してインストールする必要がある模様。
関連リンク
Express版のVisual Studio 2013のデスクトップを入れる
node-gypの本家のissueを見る限りWin8.1のSDKは不要らしいが、 node-webcl内でOpenGLを使うので、入れておいたほうが良さそう。
最新のnode-gypを入れる
npm install -g node-gyp
これ、入れてないと、VCBuild.exeが見つからないと怒られる。
必要となるヘッダファイルやlibファイル、DLLを所定の場所に
- AntTweakBar_116.zip
- FreeImage3154Win32.zip
- glew-1.10.0-win32.zip
- glfw-2.7.9.bin.WIN32.zip
glfwがVS2013版のDLLが 用意されていない為、この他にVC++2010のランタイムが必要だった。
GLFWは3.0系ではなく、2.7.9をディレクトリあさって取ってこないとダメそう。
これ、DLLのインストールを最後までつまづいて、Dependency Walkerのお世話になって、解決した。 T100TAの場合、32ビット用のものを入れる必要がある。
node-glfw,node-webglもcloneしてビルド
binding.gypの編集
xxx64.libは32なり、32ビットのそれに書き換える。
ビルドするコマンド
node-gyp rebuild
node-webclをcloneしてビルド
binding.gypの編集
xxx64.libは32なり、32ビットのそれに書き換える。
ビルドするコマンド
node-gyp rebuild
更に以下のようにソースコードの書き換えが必要。
VC++はC99で可能となった動的な配列の宣言が出来ない模様
そんな訳で、device.ccをコンパイルすると定数式が必要ですと怒られる。 1024で決め打ちで対応して黙らせておく。
32ビットでは呼び出し規約がうるさい
以下ように関数ポインタのキャストでこれまた封じ込める必要がある。
(void (__stdcall *)(const char *,const void *,size_t,void *))
node-webcl配下に、他のモジュールを配置
node-webcl\node_modules\node-webgl node-webcl\node_modules\node-webgl\node_modules\node-glfw みたいな感じで。
完成
残念ながら、サンプルの一部しか動かない模様。
ちなみにこれ、大半の作業を総武線の中でT100TAで行った。
まとめ
T100TAを使えば、通勤電車内で、ヘテロジニアスな開発環境をJavaScriptで行える環境を いとも簡単に実現でき、今後はJavaScriptでヘテロジニアスな開発を行えるw。
リンク
関連記事