Overview
IMSL Libraries
PV-WAVE Family
TotalView
SourcePro
Stingray
ThreadSpotter
Consulting Services
purchase
license
request
シングル/マルチスレッドアプリケーション向けパフォーマンス最適化ツール

ThreadSpotter

ThreadSpotterは、メモリのバンド幅やメモリレイテンシ、データの局所性やスレッド間の競合や干渉を分析し、パフォーマンス上の問題点を突き止め、問題を解決するための方法を提示します。従来のプロファイラーではデータを集めることはできましたが、ほとんど分析を加えることはありませんでした。

ThreadSpotterを使用すれば、パフォーマンスの問題について具体的なアドバイスを得ることができます。まずパフォーマンスの問題自体を特定し、それぞれの問題の重要度と階層を判断し、開発者がソースコード内の問題のある場所に辿り着くためのアドバイスを提供します。これにより、パフォーマンス問題のエキスパートであるか否かを問わず、プログラムのパフォーマンスを最適化することができるので、並列環境におけるアプリケーション開発の複雑な問題を効率よく解決することができます。

事前準備不要の使いやすさ

ThreadSpotterの直感的なGUIを立ち上げると、4つの主要なパフォーマンスエリア(メモリバンド幅、メモリレイテンシ、データ局所性、スレッド間の競合や干渉)に併せて、アプリケーションのハイレベルな概観と 診断法が即座に提示されます。この最初の分析によって、ユーザはパフォーマンスを向上するために取り組むべきエリアについての概観をすばやく得ることができます。

生産性の向上

ThreadSpotterは、ソースコードの中のSlowSpotsを突き止め、何がパフォーマンスの問題であり、それをどのように解決するのかを明らかにします。 操作状況に合わせて変化するマニュアルは、問題の遠因と解決方法についてのアドバイスを提供し、ユーザは熟練者であるか否かを問わず、素早くどの部分に集中すれば良いかを決断することができます。また、フラッグが立てられている個々の問題もそれに対応するソースコードやデータ構造にそれぞれ戻れるように設計されています。

マルチコアの性能を最大限に生かし、
消費電力を最小限に

マルチコアのアーキテクチャには潜在的な障害がいくつも隠れている場合があり、それらの問題を解決せずにアプリケーションを実行すると、処理速度は遅くなることもあります。ThreadSpotterを使用することで、 正しい技術を用いてそれらの障害を簡単に修正することができます。ThreadSpotterは、次のような問題の解決に役立ちます。

・ 限られたメモリのバンド幅やキャッシュ容量
・ スレッド間の干渉、データ通信、フォルスシェアリングや同期
・ 複数アプリケーションを同時実行する際のリソースの取り合い
・ コア数に最も適したスレッドの配置

ThreadSpotterは、ユーザのアプリケーションを自動的に分析し、パフォーマンスの問題をリストアップして、それらの問題を解決するための修正方法や詳細情報・統計結果を提供します。

ワークフロー

ThreadSpotterは、ほとんどのコンパイラ型言語や並列化パラダイムで動作します。コードを並列化する前に、シリアルなコードでメモリ性能を最適化し、その後でスレッド間の干渉を最適化することを助けます。そして最後に最適なスレッドの配置を見つけ、すべてのキャッシュの汚染を取り除くことを助けます。

メモリ性能について

アプリケーションプログラムの実行性能は、配列計算時のメモリアクセスに関連したキャッシュの有効利用に大きく依存します。ThreadSpotterはキャッシュを有効に使っているかどうかをレポートし、改善の方法を示唆します。適切なデータが適切なキャッシュに適切な時にあるのが最も有効なキャッシュの使い方です。性能を劣化させるものとして、キャッシュのスペースを無駄にしている、あるいはキャッシュにあるデータの再使用ができていないという問題があります。メモリアクセス方法が良くないとキャッシュにフェッチしたデータのごく一部しか使用しない場合もあります。

マルチコアシステムではこれらの問題を解決しないと良い性能は得られません。ThreadSpotterはこれらを解決するための情報を提供します。

動作環境

  • OS : Linux 2.6, Windows
  • CPU: Intel および AMDの全てのX86/X86-64 CPU
  • 言語: C, C++, Fortran, Ada などのコンパイル言語。ソースコードで問題個所を示すにはデバッグモードでコンパイルする必要があります。

ThreadSpotterドキュメンテーション:


評価版リクエスト >>>