はじめに
APLとはソースコードがこういう見た目の言語です。(ライフゲーム、Dyalog版)
life←{
↑1 ⍵∨.∧3 4=+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂⍵ ⍝ Expression for next generation.
}
詳しくは、
- Wikipedia日本語版
- Wikipedia英語版
GPU上で動くコンパイラ
コンパイラをCPUではなくGPU上で動して何らかのメリットが生まれるためには、少なくとも以下の2つの条件を満たす必要があります。
・基本的に全て並列処理(GPUの高速性は処理の並列化によってもたらされます)
・基本的に条件分岐はしない(GPUはCPUよりも条件分岐がかなり苦手です)
APLはその仕様からこの条件を満たす事が可能なため、GPU (現在はCUDAとOpenCLに対応)上で動作可能な異常に高速なコンパイラCo-dfnsが、Dyalog社のAaron Hsuによって開発されています。
Co-dfns
Co-dfnsコンパイラはAaron Hsuがインディアナ大学の大学院在学時代に開発が始まりました。
まだ開発中ですが、実際に試す事ができます。
実際にコードをコンパイルして試すためにはDyalogとArrayFireが必要ですがRelease版はWindows、Linux、 macOSに対応しています。
応用例
- U-Net CNN in APL
APLによって実装されたフレームワーク、ライブラリ不要の機械学習です。
論文を読むにはPDFをクリックしてください。(論文の最後の方にソースコードもついています)
おわりに
古くて新しいAPLという言語の魅力を知ってもらえれば嬉しいです。