ClPyが製品候補版になり、ほぼ全ての主要機能が動作するようになりました

2019年4月2日

本日、フィックスターズは、CuPyをOpenCLでも使えるようにしたClPyの最新版として初の製品候補版v2.1.0rc1を公開しました!

12月にβ1版をリリースしてから丸3ヶ月、この四半期はClPyが割と活発で、結果、一部の例外を除きほぼ全ての機能が動くようになりました!

  • β版では未実装だったndarray等の各種機能がほぼ全て実装されました(OpenCLにないCUDAライブラリの機能を除く)
  • CuPy由来のテストのうち主要な機能のためのテストが全て通りました(CUDAライブラリを使う機能を除く)
  • Chainerのサンプルもほぼ全て動くようになりました(cuRANDを使うものを除く)
  • 複数デバイスで動作するようになりました。これにより、ChainerMNを用いた複数ノードでの分散学習が可能となりました(NCCLを使わないコミュニケータによる)
  • カーネル実行時に、実行をその場で待たず、メモリの同期読み書きで待つようにしました。この結果、Pythonオーバーヘッドが隠蔽され、性能が向上しました(最大で1.5倍)。
  • pip install .でもインストールができるようになりました。一部のサードパーティ製のライブラリ等が動くようになります。

その他より詳細な変更点についてはGitHubのIssue一覧をご覧ください。

今回のバージョンで、ClPyが基礎としてサポートすべきCuPyの主要機能がほぼ全て出揃いました。これにより、みなさんが実装したCuPyを使ったコード(Chainerを含む)の大多数がClPyでも動作するようになったはずで、実際のアプリケーションでClPyを実行できるようになることが期待されます。

しかし、これでまだCuPyすべてではありません。実際、テスト結果を見ても、主要機能以外のいくつかでまだまだ通っていないテストがあります。

これは、CUDAがOpenCLより広く使われている現状の大きな理由のひとつである「ライブラリの不足」によるものです。

前回のβ1リリース記事でもお伝えしたとおり、β1ではcuBLAS(密行列積)の代わりにCLBlastを導入しました。一方で、それ以外のCUDAを用いたライブラリ、すなわち、

  • cuSPARSE
  • cuSOLVER
  • cuRAND
  • cuDNN
  • thrust
  • NCCL

あたりの機能は、現在のところ有効な代替がありません。これらをサポートするには、これらと同等の機能を自分たちで開発する(あるいは開発が中断されているものをフォークして継続する)しかなく、かなりの実装コストを要します。

また、性能については若干向上したものの、依然としてCuPyと同等には至っていません。引き続き性能測定および改善を続けていく必要があります。

と言った感じで、ClPyの完成には、今後も根気よく開発を継続する必要がありそうです。次回リリース(rc2)では、これらの、ライブラリの(代替)実装あるいは性能改善を含めたいと考えています。

今後の開発項目についてはGitHubで随時更新されます。開発中の機能もPull Requestに上がっていきますので、先行して試してみたい方は、ぜひGitHubのレポジトリをwatchしてみてください。

また、みなさんが使ってみた結果のフィードバックも引き続き歓迎しています。うまく動かなかったりで支援が必要でしたり、こうした方が良いと思うなどの提案があれば、GitHubにIssueを遠慮なく作ってください(何語でも歓迎ですが、日本語か英語が推奨です)。

ClPyの開発に興味がある方、ClPyだけのフルタイム従業員は残念ながら募集していませんが、インターン・アルバイトとして、給料をもらいながら&学びながらClPyの開発に参加することができます。もし興味のある方は、採用サイト/応募フォームから是非ご応募ください!(いきなり応募はちょっと・・・と気になる方は、Twitterで私(@LWisteria)宛にmentionなりDMを投げてくれれば可能な限りお答えします)

もちろん、インターンやアルバイトでなくても、チーム外からのIssue, Pull Request大歓迎です!

最後に、今回これまでの開発の多くに、元インターン→アルバイトでこの4月から新卒社員の、今泉さん・北脇さん・坂部さん(五十音順)らの多大な貢献がありました。ここに感謝の意を表すると共に、みなさんの今後のフィックスターズでの活躍を期待しています(本業に慣れたらまたClPy手伝ってくると嬉しいです)

Tags

About Author

YOSHIFUJI Naoki

yoshifujiです。計算力学的なプログラムを高速化することが得意です。プログラミング自体はチョットダケワカリマス。 Twitter: https://twitter.com/LWisteria

Leave a Comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Recent Comments

Social Media