hira5件のコメントESP32やArduino系で走る「レイ・トレーシング」プログラムがある。これを、RX65Nで、どのくらいのパフォーマンスなのか知りたくて、ポートしてみた。元プログラムはC++で書かれたもので、良くできている。※ソースコードは、ココから拝借したが、多少修正してある。※ポーティングは極めて簡単だった。RXマイコンは、浮動小数点の演算には定評があるので、少し期待していた。結果は7.7秒と、まずまずの値ではある。※元ソースを大きく修正するとベンチマークにならないものの、いくつかの修正を行った。・RX65Nのキャッシュを有効にした(約10%の改善)以上の改修で、「3.1秒」まで改善した。※ピクセルを描画しない場合、「2.1秒」となる。(これはあまり意味が無い)※速度比較の為、解像度320×240でレンダリングしている。追記(2018年11月18日):・比較していたサイトのベンチマークと、条件が異なっているとの指摘から、やり直した。1」で行っており、1/4のレンダリング時間になるようだ。・その結果、「837ms」(0.8秒)と、かなり高速にレンダリングする事が判った。この値は、200MHz動作のARM(STM32F7)の0.62秒より遅いものの、動作周波数が120MHzのRX65Nなので、十分良い値のように思う。」さんに感謝したい、ありがとうございます。ESP32上記リンクには、各マイコンのレンダリングにかかる時間が載っている。ESP32(160MHz)は、13秒みたいなので、それより低速(120MHz)のRXマイコンはそれなりに優秀なのだと思う。最適化によってどのくらい違うのかを確認しておいた。・ベンチマークは「目安だ」プログラムの性質により大きく異なる場合が多いし、ほんの少し条件が変わるだけで、結果が逆転する場合もある。ほとんど差が出ないが、バイナリーサイズは多少異なっている。追記:(2018年、11月3日)RX65のハードウェアーマニュアルを眺めていたら、RX65にはROMキャッシュ制御ビットがあり、通常「Disable」になっている事が判った。)」このビットを有効にして、レンダリングをしてみた、そうすると「6.8秒」と10%くらい速度改善している。※「volatile」キーワードが適切にあれば問題無いと思う。※他のプロジェクト(ファミコンエミュレーター、音楽再生など)も確認したが問題ない。回ほど実行されている?)、レンダリング時間に大きな差が生まれるんでしょうね。AM私も、元ソースは、あまり詳しく読んでいません、単純な速度比較が目的なので。「sqrt」が、ハードロジックで実行されたとしても、感覚的に全体の10%も使われないと思います、それより圧倒的に「掛け算」が多いものと思います。ある程度最適化されていて、バウンティングボックスにレイが入らないとsqrtは使われないと思います。こんなに大きな差が出るとは思えませんので、単純にfloat演算速度の違いなのだと思っています。v2コアに最適化が不十分であり,ルネサスの純正のCコンパイラーを利用すればもっと高速な処理が可能と思います。ARM系のCortex-M7コアではgccの最適化がよくされておりベンチマークで良い結果となります。Cortex-M7コアはFPUがCortex-M4コアよりも強化されており,Cortex-M4コアでRayTracing処理を実行するとかなり遅いです。使うしか選択枠はありません。※同じプログラムをルネサス純正コンパイラで走らせて、結果を教えて下さい。※自分の感覚では、最適化に関して、ルネサスコンパイラの方が有利なのは当然と思えますが、そんなに大きな差が出るとも思えません。PM補足:https://japan.renesasrulz.com/gr_user_forum_japanese/f/gr-sakura/1803/gnu-iar-rxこの記事はかなり古いですが、参考にはなります。系より優秀な事は判っています。最適化だと、バイナリーサイズが小さくならない事ですが、2MバイトまでOKなので全く問題ありません。最適化に関する方針や考え方に変化が生まれています。最近では、中間コード(仮想CPU)での最適化に効果があると、それは、全てのCPUで恩恵を受けるようになっています。この流れは、加速しており、個別のCPUで最適化を行う理由が少なくなっています。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。