8

私は 3D 衝突を書いていますが、sin cos tan arcsin のような + - * / sqrt pwr 三角法のような基本的な数学関数のパフォーマンスの違いを知りたい..

他の多くのことに依存していると聞いたので、問題を解決するためのさまざまな方法を見つけながら、どちらが遅く、回避する必要があるかについて大まかな考えを知りたいだけです。また、違いの順序と大きさを知りたい

ありがとう

編集:x86用のVC ++で書いています。しかし、他のアーキテクチャや全体像に関する知識も必要です。主に、リアルタイム アプリケーションの単一の浮動小数点で計算します。

問題は、一部のアルゴリズムが sqrt または三角法を必要とすることですが、他の方法でそれらをバイパスできます。それぞれに独自の利点があり、トレードオフを行うのに十分であることを知りたい. 私は自分の問題を解決するための一般的な知識が欲しいのですが、グーグルをしましたが何も見つかりませんでしたので、回答させてください

4

2 に答える 2

6

非常に広く話し、最近の一般的なハードウェアについて一般化する:

  • さらに、減算と乗算は高速です(コアごとのサイクルごとに少なくとも1つの操作が可能です)。
  • 除算と平方根は通常、約1桁遅くなります(操作ごとに数十サイクル)。特定の使用法のためにこのギャップをいくらか狭めるために使用できる多くの近似アルゴリズムがあります。
  • 数学ライブラリ関数(、、、、など)の呼び出しsinは、cos使用している数学ライブラリの実装とハードウェアによって大きく異なります。(たとえば)現在のi7では、実装の品質と呼び出される特定の関数に応じて、約20サイクルごとの操作と約200サイクルごとの操作の間の何かが一般的です。explog
于 2012-12-12T19:41:14.977 に答える
2

大まかなアイデアの場合:+, -<<<<*/sqrtsin, cos, etc

PS。最近のIntelアーキテクチャについて:

ADDSD / SUBSD-3サイクルのレイテンシ、1サイクルのスループット

MULSD-6〜7サイクルのレイテンシ、2サイクルのスループット

DIVSD-38〜39サイクルのレイテンシ、38〜39サイクルのスループット

于 2012-12-12T19:33:19.613 に答える