質問

まず、インテルショップ。すべての者は、インテル機おすすめプエンドユーザーはインテルがエンドユーザー走らせたいという上AMDでその展望.(粉を山にして真ん中を試験部門では、AMD機械のどこかを確認しなかった船舶のものを完全に壊れたが、たします。

まで数年前まではMSVCのコンパイラとって本当に多く提供するプロセッサチューニングのオプションを超えSSEレーズ心配もいかどうかについてのコードが持つx86ベンダー間です。しかし、最近はまってインテルのコンパイラ。当社のもののもつ性能が大幅からす(当社のインテルハードウェア、そのベクトル化機能をもたらしを受ける必要はなasm/intrinsics.しかしニーズは変わってきていません緊張しいかどうかについては、Intelコンパイラはいけど仕事AMDます。確かに階段を降りた場所にある、インテルCRTはIPP図書館はいつもたくさんのcpuidクエリかのような設定ジャーに最適化されます。ものとは考えられないインテルに行くシーンのような良いAMDsチップのものです。

できれば誰でも経験がここにコメントかできない実践?(私はまだ実際のパフォーマンステストAMD自社).

更新2010-01-04:ものをサポートする必要があるAMDいたコンクリートくず試験です。が読み込みの問題 こちらの, こちらのこちらの ものです。

更新2010-08-09:そうで、インテル-FTC決済は何かを考えることでこの問題"のコンパイラや汚れなョン この記事.

役に立ちましたか?

解決

AMDボックスを購入し、その上で実行します。インターネット上の見知らぬ人を信頼するのではなく、それが唯一の責任があるように思えます;)

それとは別に、AMDのIntelに対する訴訟の一部は、IntelのコンパイラがAMDプロセッサ上で非効率的に実行されるコードを特に生成するという主張に基づいていると思います。それが本当かどうかはわかりませんが、AMDはそう信じているようです。

しかし、彼らが意図的にそうしなくても、IntelのコンパイラがIntelプロセッサ専用に最適化されていることは間違いありません。

それが言われたとき、私はそれが大きな違いを生むとは思わない。 AMD CPUは、コンパイラーのすべての自動ベクトル化およびその他の巧妙な機能の恩恵を受けます。

他のヒント

これまでに見てきたことは、Intelコンパイラが利用可能な命令セットについてランタイムを選択しなければならない場合、Intel CPUを認識しない場合は、「標準」になります。コード(ご想像のとおり、最適ではない場合があります)。

「コンパイラ」という単語を使用した場合でも、上記では、これは主に、命令セットをチェックして最適なコードを呼び出す、提供された(プリコンパイルされた)ライブラリと組み込み関数で発生します。

アプリケーションのパフォーマンスが重要な場合は、ハードウェア/コンパイラのすべての組み合わせでテストを行うことをお勧めします。保証はありません。部外者として、推測/バイアスのみを提供できます。ソフトウェアには、これまで見たものとは異なる独自の特性がある場合があります。

私の経験:

以前はIntelで働いていましたが、パフォーマンスが重要な社内(C ++)アプリケーションを開発しました。 IntelのC ++コンパイラを使用しようとしましたが、実行されたgccの下で常に-プロファイル実行を実行した後でも、プロファイルされた情報(おそらくiccが最適化に使用する)を使用して再コンパイルし、まったく同じデータセットで再実行しました(これは2005-2007年でしたが、現在は状況が異なる場合があります)。したがって、私の経験に基づいて、(iccとMSVCに加えて)gccを試してみることをお勧めします。その方法でパフォーマンスが向上し、質問を回避できます。コンパイラを切り替えるのはそれほど難しくないはずです(ビルドプロセスが妥当な場合)。

今、私は別の会社で働いており、ITスタッフは広範なハードウェアテストを行っています。しばらくの間、IntelとAMDのハードウェアは比較的同等でしたが、Intelの最新世代のハードウェアはAMDを大幅に上回りました。その結果、かなりの量のIntel CPUを購入し、ソフトウェアを実行しているお客様にも同じものを推奨していると思います。

しかし、IntelコンパイラーがAMDハードウェアを特に低速で実行することをターゲットにしているかどうかについての質問に戻ります。 Intelはそれを気にすることを疑います。 Intel CPUアーキテクチャまたはチップセットの内部に関する知識を使用する特定の最適化は、AMDハードウェアで実行が遅くなる可能性がありますが、AMDハードウェアを特にターゲットにしているとは思えません。

まま自分のボタンを押します。

この低レベルの最適化でみる事項のためのコード1)プログラムカウンターで過時間、2)コンパイラの実びます。例えば、PCの中で最も費やす時間その時に図書館のルーチンのままでいることをコンパイルでない物質です。

るか否かの条件1&2ので、ここでの私の経験の最適化が:

複数回のサンプリングおよび固定をします。これらの問題を明らかにし、最も多いラウンジはイベント時以外のカウンタープログラムです。なのである機能通話中レベルの呼び出しスタックをよく見ながら性能がもっとも優先すると、置き換えられます。 見なければならないとは思います。

意がある場合は関数呼び出し指示するには、スタックのためのかなりの部分の実行時間をかくメソッドの呼び出し、多くの短いものは、通話者の負担と数時間で取り除いていただいても、実行すると低く巨大なモールがあるのです。と、その貯蓄をはるかに超えず低レベルを最適化する

のプログラムできる 多くの 以上でした。見たことがありませんせいいサイズのプログラム、どんなに丁寧に書くことができるからです。 場合の処理が行われていないすべきではないものと低いレベルの最適化を加速します。

後にこのプロセスを行なっていますので、できないのであればサンプルをパソコンコードのコンパイラは、低レベルの最適化に大きな違いを生み出すのです。

このスレッドが開始された時点で、Microsoft C ++はコード生成にデフォルト設定されていましたが、AMDの場合は良いが、Intelの場合は悪いことがありました。最近のコンパイラは、特に両方のブランドのCPUが特有のパフォーマンスバグを解決した後、特に両方に適したブレンドオプションにデフォルト設定されています。 私が最初にIntelで働いたとき、彼らのコンパイラはIntel固有のアーキテクチャ設定のためにいくつかの最適化を予約していました。私の10時間の証言では出てこなかったが、それはいくつかのFTCのデポジットのトピックであったかもしれないと推測し、最新のCPUモデルとコンパイラーの開発時間をより生産的に使用する必要がある。 これらの廃止されたコンパイラーのいずれかを最新のIntel CPUで使用した場合、同じパフォーマンスの欠陥が発生する可能性があります。

行動できない場合、心配するのは無意味です。考えられるアクションは次のとおりです。AMDを購入しないか、別のコンパイラーを使用します。明らかなことは次のとおりです。

(1)AMDボックスを1つ購入し、Intelコンパイラでコンパイルされたコードの速度を測定します。十分に速いですか?はい、完了したら、AMDを購入できます。心配しないでください。

(2)いいえの場合:別のコンパイラーでコードをコンパイルし、AMDボックスで実行します。十分に速いですか?いいえ、完了です。AMDを購入することはできません。心配しないでください。

(3)yesの場合:Intelボックスで同じコードを実行します。十分に速いですか?はいの場合、AMDを購入できますが、コンパイラを切り替える必要があります。心配しないでください。

(4)いいえの場合:可能性は次のとおりです。AMDを買わないで、すべてのIntelコンピューターを捨てるか、2つの異なるコンパイラーでコンパイルします。一つを選ぶ。

Lotus製品が提供される前に市場に到達するのをベンダーが阻止しようとしたときに、目的のある技術の障害を直接経験しました。実用的な技術は利用可能でしたが、ロータスはそれを使用することを禁じられていました。ああ...

数年前、Intelコンパイラの1バイトにパッチを当てると、「最適」なコードが出力されることをユーザーに示すブログがありました。 AMDで使用したときに障害が発生しなかったコード。私はこれらのブログのエントリを何年も探していません。

私はそのような競争行動が続くと信じています。他に提供する証拠はありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top