Perlにおけるディープラーニングの基盤としてのSPVMの配列構造

現在僕は、SPVMというプロジェクトに取り組んでいるのですが、これはPerlディープラーニングをするための基盤ともなるライブラリです。

ディープラーニングをするためには、数値型の連続した領域の配列がまず必要です。

特に、ディープラーニングではGPUを使って、演算を行うことが多いので、32bitの浮動小数点型の連続した配列領域が必要です。

SPVMでは、32bit浮動小数点の配列は、以下のように生成できます。

my $nums = new float[128];

SPVMは、独立したプログラミング言語ですので、この配列を自由に操作できます。これは、Perlだけだと考えられないことです。pack/unpack操作によるコストや、Perlの動的型による操作は、必要とされるパフォーマンスを満たさないことでしょう。

for (my $i = 0; $i < @$nums; $i++) {
  $nums->[$i] = 1.5f;
}

また、SPVMは、ソースコードC言語に変換できるプリコンパイルという機能を持ちます。

この機能を利用すると、四則演算は、C言語の速度になります。