移植作業
以前、Elixir用に書いたCUDAコードをISLisp用に移植しています。
とりあえず
(gpu-smult f farray)
(gpu-pooling farray (stride-h stride-w))
(gpu-unpooling farray1 farray2 (stride-h stride-w))
を追加しました。
Elixir用に書いたDeepPipe2では正確な動作に至るまでに試行錯誤、デバッグに多くの時間を割きました。今回はそうした部分はなく、ひたすらLispで動くようにする移植作業です。地味にやってます。
効率
Elixirの場合だとNIFSにより他言語を呼び出すためにタイムロスがありました。今回はCUDAそのものでlisp処理系をコンパイルしますので、そうしたロスはありません。問題は大量のデータを扱ったときにGCがうまく機能してくれるかどうかです。
まずはDNN,CNNに必要な関数を実装してからです。その後に誤差逆伝播のコードもlispに移植の予定です。