LISPでGPGPU(2) 組み込み関数の拡張
はじめに
自作LISPにGPGPU機能を追加しています。
フロート専用配列
Deep-Learningで必要とされるのはfloat型の配列です。それをもとに行列積の計算、畳み込み演算などを行います。ISLispスタンダードで規定されている配列はその要素としてあらゆる型をとります。これをそのまま使うとDeep-Learningではメモリ効率が悪いです。そこでフロート専用の配列を用意しました。
#2f((1.0 2.0)(3.0 4.0))
create-array組込み関数の拡張
ISLispスタンダードにあるcreate-arrayは次のようになっています。
(create-array dimension initial-value)
(create-array '(3 3) 2)
これに次ぎの拡張を加えました。
(create-array dimension initial-value 'float)
(create-array '(3 3) 0.1 'float)
(create-array '(3 3) 'rand 'float)
第3引数にシンボルfloatを与えるとfloat型の配列を生成します。
初期値にシンボルrandを与えると初期値を0~1の乱数とします。
ベンチマーク
GTX1650 でのベンチマークです。
$ ./eisl
Easy-ISLisp Ver1.70
> (defglobal a (create-array '(3000 3000) 'rand 'float))
A
> (gpu-mult a a)
#2f(float-element)
> (time (gpu-mult a a))
Elapsed Time(second)=0.087010
<undef>
> (time (gpu-mult a a))
Elapsed Time(second)=0.064966
<undef>
>
Author And Source
この問題について(LISPでGPGPU(2) 組み込み関数の拡張), 我々は、より多くの情報をここで見つけました https://qiita.com/sym_num/items/081bd56cf643328700e0著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .