0

HPCアプリケーションのパフォーマンスを向上させる方法/方法はいくつかあります。方法の1つは、ハードウェアアーキテクチャに基づいてアプリケーションを微調整することです。この種の微調整は、主にマルチコアアーキテクチャで行われます。この方法を使用するには、メモリ、ソケット数、ソケットあたりのコア数、L1 / L2キャッシュ、GFlopsなどの基盤となるハードウェアアーキテクチャを実際に理解する必要があります。

これらの専門用語はおなじみのように見えますが、アプリケーションのパフォーマンスの観点から正確に何を意味するのか、まだ明確に理解していません。

パフォーマンスの観点からハードウェアアーキテクチャを理解できる良い場所/本を誰かが提案できますか?

4

1 に答える 1

3

コードをターゲットハードウェアアーキテクチャに合わせて調整することは非常に重要です。ただし、多くの時間とリソースがない限り、利用可能なさまざまなシステムでこれを行うことは不可能です。

最適化は80-20の法則に従います。20%の努力で80%の利益を得ることができます。それを超えると、収益は減少し始めます。

私が従うプロセスは次のとおりです。1)ターゲットアーキテクチャに最適なコンパイラを入手します。時々GNUは特定のプラットフォームに最適なコンパイラかもしれませんが、驚かないでください。2)コンパイラの「コード最適化」セクションを読み通します。3)ターゲットプラットフォームに最適なコードを生成するための適切なフラグを特定します。ただし、試行するすべてのレベルの最適化でコードの結果を検証するようにしてください。より高い最適化レベルは、コードの正確さに影響します。4)必要なライブラリがそのシステム用に最適化されていることを確認してください。たとえば、数学ライブラリ、BLASライブラリなど。5)SSE(SIMD)、コアの数、アクセラレータなど、プラットフォーム固有のハードウェア機能に特に注意してください。これらの機能のためにコードをより適切に最適化するために、コードを変更したり、コンパイラーにヒントを提供したりする必要がある場合があります。

すべてのターゲットプラットフォームに対してこれを行う必要があります。この時点で、最小限の労力で最大のメリットが得られるはずです。

より多くのパフォーマンスを引き出す必要がある場合は、ほとんどの場合、ハードウェア機能が十分に活用されていることを確認するためにコードを書き直す必要があります。

いいえ、このための本はありません。最も近いのは、ベンダー(IBMレッドブック、Intel、AMD、Cray)によって一般的に無料で提供される「最適化マニュアル」です。

例:support.amd.com/us/Processor_TechDocs/25112.PDF http://www.intel.com/products/processor/manuals/ http://www.ibm.com/developerworks/wikis/download/attachments/137167333 /Power6_optimization.pdf?version=1

これらは、これらのプラットフォームにとって最も有効なリソースです。ターゲットプラットフォーム用のそのようなリソースを見つけることを目指す必要があります。

于 2011-05-06T15:47:04.013 に答える