BLAS

PHP で行列積を高速に計算するエクステンションを作った

PHP でも数値計算したいし、行列ライブラリくらいさすがにあるだろうと思っていたのですが、軽く探した限りでは見当たらなかったので作りました。 すべてを PHP コードで実装したものならいくつかあるようですが、以下で見るように PHP コードでの実装では遅すぎてお話になりません。今回は PHP のエクステンション機能を使って C 言語による実装をしました。また、更に高速化をするために線形代数数値計算ライブラリである OpenBLAS とそ […]

高速な Convolution 処理を目指してみた。 Kn2Image方式

仕組みを学んでいると、すでに世の中に高速なConvolution処理が出回っていても、自前でもConvolution 処理を実装してみたくなりますよね(なりました)。 面白そうな論文「arXiv:1704.04428」の手法を真似て実装しました。 結果は… うん、まぁ… cudnn スゲぇなぁ を体感する事となりました……。  私の実装では、期待してたほどの処理速度には至りませんでしたが、 […]

密行列積演算高速化と科学計算ライブラリについて

これは eeic Advent Calender 2017 (https://qiita.com/advent-calendar/2017/eeic) の3日目の記事です。 はじめに この記事を読んでくださりありがとうございます。 電子情報工学科に所属しておりますhigucheeseと申します。 突然ですが皆さんは、 お手持ちのラップトップPCに積まれているCPUがどれほど利用されているか、 考えたことはありますでしょうか。 メジャーな […]

cuBLAS と cuBLAS-XT の調査(その1)。行列の積演算にて

行列の積演算をNVIDIAのGPUで行わせたく、CUDA 内の cuBLAS のドキュメントを読み進めたところ、cuBLAS-XT 推しな記述が目に留まり、自分の用途には cuBLAS と cuBLAS-XT のどちらが適しているかの観点で調査を行いました。 内容を公開します。 背景 深層学習の理解を深めようと自前で実装を行っていると、行列の積演算を高速化したくなるかと思います。(なりました) GPUを用いての行列の積演算 を行うにはど […]

行列の積演算で openBLAS cuBLAS を体感する

Basic Linear Algebra Subprograms (BLAS) の 行列の積 演算が、C の for 文で率直に書いたルーチンに比べ、どれ程のものか体感してみる。 背景 深層学習の実装を理解していくにあたり、行列の積演算を高速に行いたくなった。 BLASは 行列の積演算が速いとの話を目にするが、実際に使ってみたことはなかった。 → 今回 BLAS の性能を体感してみる。 BLAS について 下記Webサイトを参考にしてい […]

cuBLAS と cuBLAS-XT の調査(その2)。行列の積演算にて。転置の影響。

cuBLSA を用いて GPU で 行列の積演算を行わせるにあたり、行列の積演算関数の引き数には、入力行列の転置の指定があり、転置によって計算時間にどう影響あるのか調査しました。 調査結果を公開します。 背景 深層学習の理解を深めようと自前で実装を行っていると、行列の積演算 の所要時間を少しでも短くしようと感じます。  BLASでの計算時間は、いかにメモリアクセスの時間を短縮するかの工夫(キャッシュメモリに当てる、メモリを連続的にアクセ […]

NN 実装のための 行列演算・画像演算 活用 全結合Affin処理の例

cuBLAS と NPP を使用して、GPUで動くNNの自前実装を行ってます。用いた関数群を紹介します。 背景 深層学習の理解を深めようと自前で実装を行ってます。 GPU速い。15K¥位のgeforce GTX 1050tiでも、CPUに比べ10~100倍以上の実行速度があることを体感しました。 GPUで演算を行わせるため、CUDA Toolkit の行列演算(cuBLAS)と 画像演算(NPP)のライブラリを活用します。 本記事では、 […]