読者です 読者をやめる 読者になる 読者になる

未踏作業日誌――余計なもの作るよ!

未踏の作業日誌的なものを書きましょうということで書くことにしました.余計なことばっかりしています.

TinyCLをバージョンアップしました

今までは,そこそこソースコードを書かないと実行できなかったのですが,ちょっとだけバージョンアップをしまして,より短いソースコードOpenCLを使えるようになりました.もし,使ってみたいという方がいましたら,是非ともダウンロードして下さい.

GRGSIBERIA/TinyCL · GitHub

導入等はこちらを参照してください.


C++ - TinyCLというものを作りました - Qiita

 

ということで,今回はTinyASIOと同じように,Controllerと呼ばれる部分に細かい処理を委譲させることによって,最低限の必要な処理だけを提供するようなモデルとなっています.

以前までは,OpenCLの抽象化だけを行っていたので,OpenCLをそれなりに知っていないと,どれそれがどのような役割を持っているのか非常にわかりづらかったです.そこで,Controllerのようなもので,抽象化した部分を全部まとめてしまい,必要最低限のやりたい処理だけを提供することで,APIを劇的に減らし,覚えることの少ないライブラリとなりました.たったの4行ぐらいで実行できます.

そのおかげで,以前と比べてOpenCLを使うのが,非常に楽になったんじゃないかなと思います.OpenCLを知っている人は,Qiitaで紹介しているコードと同じ実装をOpenCLでやってみると面白いんじゃないかなと思います.明らかに必要な行数,覚えなければいけない要素数が違います.

TinyCLは将来的に論文にしなきゃなーとか思っているので,ライブラリの評価をしないとなーとか思っています.Halstead Volumeの他にもライブラリの評価方法あるみたいなので,いろいろ勉強することあるなーと.

今のところこれを使ってやることあったんですけど,GPUにデータを転送してその結果を取り出すだけで200マイクロ秒ほどかかってて,どうしたものかなぁと頭を悩ませているところです.FFT(8096サンプル)だとCPUで処理させたほうが,早く結果が返るんですよね…….データ伝送がボトルネック過ぎてリアルタイムで使うところが限られているオチ…….