Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Ice Lakeでレイ・トレーシング

More than 1 year has passed since last update.

https://qiita.com/shinjiogaki/items/607500269fe6b109dbac
のフォロー・アップです。

第7回目のレイトレ合宿でレイ・トレーシングの速度を競うイベントがありましたが、参加時はAVX2の使用で、AVX512を使うとどうなるか実際のCPUで検証が出来ていませんでした。

エミュレータは以下にありますが、実行に時間がかかるので規模の大きなソフトの開発には向かないように思います。
https://software.intel.com/en-us/articles/intel-software-development-emulator

先日、Ice Lake (i7-1065G7)を入手したので、コードを書き換え簡単なテストを行いました。結果から言うと高速になりました。

今回のテストでは、巷で噂されているように、AVX512を使うとクロックが低下して、逆に遅くなる、といった現象には見舞われませんでした。もちろん、長時間計算させると徐々にクロックが落ちてきますが、それはAVX2でも同じでしょう。

今回使用したシーンはHairballでObject SplittingのBVHが苦手とするものです。
output.png

8ary BVH 16ary BVH
1回目 6.81 7.95
2回目 6.77 7.84
3回目 6.83 7.92

単位はMrays/secで1秒当たりに計算したレイの本数(百万本)です。

はじめ、単純に8分木から16分木に変えただけでは若干遅くなりましたが、AVX512ではcompressを行う便利な命令が追加されており(https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=compress) トラバーサルのコードでこれを使うことで、速度が向上しました。また、期待されるように、メモリの消費は若干ながら減少しました。

高速化には、より多くの三角形をリーフに詰め込むこんで、ツリーを少し浅くできるという点が大きく貢献していると考えられます。リーフに入れる三角形の数を調整したりすればもう少し高速化できると思われますが、確認ができたので良しとします。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away