読者です 読者をやめる 読者になる 読者になる

non vorrei lavorare

ブログ名の通りです。javascript three.js mruby rust OCaml golang julialang blender

ASUS T100TA-DK32GでNode.jsでOpenCL出来た!

おはようございます。先日は、奥さんが出張のため、息子達と実家で寝泊まりして、無事過ごせたkjunichiです。

要するに32ビットなWin8.1でnode-webclを動かすということ

さらに言えば、クリーンインストール後な状態からのスタートになる。

Pythonを入れておく

まえまえ、気になって仕方ながったChocolateyを使いインストール

gitも入れておく

node.js本体を入れる

これも今回はChocolateyで入れた。 以降の作業はChocolateyでなく素の状態?で行っている。

IntelのOpenCL SDKを入れる

Intel_sdk_for_opencl__applications_

この際、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。

リンク

関連記事