【arrayfire】処理速度のチューニングのために、環境変数にMAX_JIT_LENを追加する

六花です。

私はarrayfireを使って自前でニューラルネットワークを構築して遊んでいて、先日ついにGTX 1080 tiからRTX3080へ更新しました。
まだまだarrayfire側でもベータ対応という感じですが、簡単な処理だけなら四倍くらい速くなって歓喜してたんです。

ただ……肝心のニューラルネットワークを動かしてみたら、最初の読み込みが遅くなっただけで速くなった気がしないんです、下手したら3080の方が遅いくらい。
「ベータ版みたいなものだから仕方ないよね……」と諦めていたのですが、ふと、とある文書を思い出しました。

■arrayfireのMAX_JIT_LENを編集する

それは、Arrayfire本家のドキュメント、チュートリアルから行けるこのページです。

Configuring ArrayFire Environment
https://arrayfire.org/docs/configuring_environment.htm

このページには、Windowsの環境変数に登録することによって効果を発揮する設定が載っています。
その中に、「AF_OPENCL_MAX_JIT_LEN」「AF_CUDA_MAX_JIT_LEN」「AF_CPU_MAX_JIT_LEN」という物があります。
arrayfireはJITという動的最適化をしているのですが、それをどこまで沢山読み込んで最適化するか、という項目の様です。

試しに規定値の10倍の1000を環境変数に登録したところ、最初の読み込み時間は解消されなかったものの、速度はかなり改善されて1080 tiより明らかに早くなりました。
arrayfireが本対応するまでの一時しのぎかもしれませんが、今どうしても速度を上げたい人の参考になれば幸いです。

■環境変数の登録について

windows 10における環境変数は、以下の手順で登録できました。
・スタートボタンの隣の「ここに入力して検索」のところに「環境変数」と入力すると「システム環境変数の編集」という項目が現れるので、クリック
・右下の「環境変数」ボタンをクリック
・システム環境変数の「新規」をクリックして項目を追加(AF_PATHがシステム環境変数の方に登録されていたので、それに合わせました。)

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です