Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
増加するコアを使い切れ!!
VSUG DAY 2010 Summer
-インテルソフトウェア開発ツールの最新情報の紹介 -
インテル株式会社
ソフトウェア&サービス技術統括部 部長
池井 満
VSUG DAY 2010.5.9
アジェンダ
• なぜメニーコアへと移行するのか?
• 複数コア化するハードウェアの動向
• 並列処理における重要な概念
• どのようにしてアプリケーションを並列化するか?
• 直感的に使用できる並列化開発ツー...
VSUG DAY 2010.5.9
• なぜメニーコアへと移行するのか?
VSUG DAY 2010.5.9
CPU の “性能の向上” は業界を牽引する
0.01
0.1
1
10
100
1000
10000
100000
1000000
10000000
1970 1980 1990 2000 2010 202...
VSUG DAY 2010.5.9
良いニュース:
ムーアの法則は依然として健在
65nm65nm プロセスプロセス
20062006
30nm30nm 20nm20nm
45nm45nm プロセスプロセス
20082008
32nm32nm ...
VSUG DAY 2010.5.9
悪いニュース:
シングルスレッドのパフォーマンスは減少
伝統的な SPECint 2000 のパフォーマンス
Year Source: 公開されている SPECInt のデータ
VSUG DAY 2010.5.9
より悪いニュース:
電力のトレンド(i486を基準とする)
消費電力は
うなぎのぼり
消費電力は
うなぎのぼり
0
5
10
15
20
25
30
0 2 4 6 8
スカラー演算性能
電力
電力 = パフ...
VSUG DAY 2010.5.9
電力の問題に注目
パイプラインの深さ
0
2
4
6
8
10
1 2 3 4 5 6 7 8 9 10
相対的なパイプラインの段数
電力効率
最適な条件
パイプラインとパフォーマンス
0
2
4
6
8
1...
VSUG DAY 2010.5.9
電力を最適化したアーキテクチャー:
正しい方向への大きな一歩
消費電力は
うなぎのぼり
消費電力は
うなぎのぼり
0
5
10
15
20
25
30
0 2 4 6 8
スカラー演算性能
電力
電力 = パ...
VSUG DAY 2010.5.9
VSUG DAY 2010.5.9
長期的な解決策:マルチコア
C1 C2
C3 C4
キャッシュ
大きなコア
キャッシュ
1
2
3
4
1
2
小さなコア
1 1
1
2
3
4
1
2
3
4
電力
性能
電力 = 1/4
性能 = 1/...
VSUG DAY 2010.5.9
• 複数コア化するハードウェアの動向
VSUG DAY 2010.5.9
全てのプロセッサーが並列プロセッサーに…
VSUG DAY 2010.5.9
マルチコアからメニーコアへ
3つの課題
電力
メモリー
命令レベル並列
マルチコアは3つの課
題に注目課題
このアプローチはチャ
レンジなしでは達成で
きない
14
“Moore’s Law scaling ...
VSUG DAY 2010.5.9
超低コスト、低消費電力
アーキテクチャー
インテル® Core™ マイクロアーキテクチャー、
インテル® Core™ i7 アーキテクチャー
ノートブック、デスクトップ、サーバー
電力
パフォーマンス
ビジュ...
VSUG DAY 2010.5.9
将来:マルチコアとメニーコア
すべてが大きなコア
大きなコアと
小さなコアの混在
すべてが小さなコア
メモリーバンクを接続、プロセッサーを接続、メモリーの一貫性モデル – すべてが現実となる、多様性の時代。
...
VSUG DAY 2010.5.9
THINK PARALLEL (さもなければ滅びる)
ソフトウェア開発者の挑戦:ソフトウェア開発者の挑戦:
マルチコア処理は新たな標準
並列性の活用は今後パフォーマンスを
実現するための最良の方法
マルチコア...
VSUG DAY 2010.5.9
• 並列処理における重要な概念
VSUG DAY 2010.5.9
なぜ並列処理を使用するのか?
計算をより短い時間で処理 一定の時間でより多いデータを処理
VSUG DAY 2010.5.9
スレッドとプロセス
•現在のオペレーティング・システムではプ
ログラムをプロセスとしてロードする
•プロセスはエントリーポイントでスレッドと
して実行を開始する
•スレッドはプロセス内で他のスレッドを
作成で...
VSUG DAY 2010.5.9
なぜスレッドを利用するのか?
•利点
– パフォーマンスの向上
– リソースの利用率を改善
•欠点
– アプリケーションがより複雑になる
– デバッグが困難(データ競合、デッドロック、その
他)
VSUG DAY 2010.5.9
スレッド化 – いつ、なぜ、どのように?
•いつスレッド化すべきか?
• 並行して実行可能な独立したタスクがある場合
•なぜスレッド化するのか?
• ターンアラウンドやスループットを改善
•どのようにスレッド...
VSUG DAY 2010.5.9
ターンアラウンド
•もっとも短い時間で1つのタスクを完了する
•例:夕食のテーブルを用意する
– 皿を置く
– ナプキンを折りたたんで置く
– 用具を置く
– グラスを置く
VSUG DAY 2010.5.9
スループット
•決められた時間内でより多くのタスクを完了する
•例:宴会場のテーブルを用意する
– 複数のウェイターがそれぞれのテーブルを受け持
つ
– 皿、グラス、用具、等に専任のウェイターを割り当
てる
VSUG DAY 2010.5.9
機能の分割
•機能別に作業を分割する
•作業量が独立したタスクの数に比例してスケール
する際に効果的
例: 多くの異なる作業員で家を建てる(レンガ職人、大工、とび
職、配管工、電気工、内装職人、その他)
VSUG DAY 2010.5.9
データの分割
•独立したデータに作業を分割する
•作業量がデータの量に比例してスケールする
際に効果的
•例:アンケートの集計
VSUG DAY 2010.5.9
• どのようにしてアプリケーションを並列化するか?
VSUG DAY 2010.5.9
主要な 5 つの並列化手法
いずれの手法を導入するか?
•メッセージ・パッシング
• MPI、PVM
•明示的なスレディング
• Windows スレッド API、Pthreads、Solaris スレッド、...
VSUG DAY 2010.5.9
並列化言語
HPC における研究者たちは、容易にラージスケールな並列化
を実現するためのプログラミング言語の設計を目指してる
しかしながらこれらの試みは汎用的な並列プログラミング言語
を生み出すことに失敗して...
VSUG DAY 2010.5.9
コンパイラーの指示による並列化
インテル® コンパイラーは自動並列化と
OpenMP をサポートする
自動並列化を行うにはループは特定の条件を満たしていなけ
ればならない
VSUG DAY 2010.5.9
自動並列化の要請項目
ループカウントはループ開始時に明確でなければいけない
– コンパイル時に明確である必要は無い
– ループ内への、ループ内からのジャンプがあってはならない
ループの反復は独立していること
...
VSUG DAY 2010.5.9
定義 – ループの依存性
int A[MAX], B[MAX];
for (i = 0; i < MAX; i++)
{
A[i] = B[i];
}
記: Fortran 90/95 の配列表記によるループ...
VSUG DAY 2010.5.9
自動並列化
一般的にコンパイラーによる自動並列化では完全な
コードの並列化できない
開発者が並列化を指示する OpenMP はより有効な並列化
の手段
VSUG DAY 2010.5.9
インテル® マス・カーネル・ライブラリー
BLAS および スパース BLAS
LAPACK および ScaLAPACK
離散フーリエ変換
VML (ベクター・マス・ライブラリー)
VSL (ベクター統計ライ...
VSUG DAY 2010.5.9
インテル® インテグレーテッド・パフォーマンス・
プリミティブ
信号処理およびイメージ処理
音声認識
オーディオおよびビデオ・エンコード
暗号化
コンピューター・ビジョン (OpenCV)
自動 CPU ディ...
VSUG DAY 2010.5.9
共通の数学処理を探す
Profile は 80% の実行時間は複数時限 FFT の計算で費やされていることを示している
呼び出し順の仮定 fft2d fft1d fftcc
スケーリングを向上するには
どこを...
VSUG DAY 2010.5.9
SciMark 2.0 LU カーネル
MKL をリンクしてスレッドを有効にすることで
並列化を効率的に実装可能
VSUG DAY 2010.5.9
例えばスレッドに注目
どの方法でスレッドを実装するべきか?
3 つの主要なスレッド化方法:
1. Windows API による明示的なスレッド化
2. OpenMP を使用したスレッド化
3. インテル® ...
VSUG DAY 2010.5.9
機能分割
DBDB を開くを開く アドレスブックアドレスブック
InBoxInBox カレンダーカレンダー
ファイルを開くファイルを開く 編集編集 スペルチェックスペルチェック
同時タスク
逐次タスク
VSUG DAY 2010.5.9
Win32 スレッドの生成
HANDLE CreateThread (
LPSECURITY_ATTRIBUTES ThreadAttributes,
DWORD StackSize,
LPTHREAD_ST...
VSUG DAY 2010.5.9
データ並列
•同じ操作を異なるデータ要素に対して行う
function SpellCheck {
loop (word = 1, words_in_file)
compare_to_dictionary (w...
VSUG DAY 2010.5.9
OpenMP によるスレッドの制御
#pragma omp parallel for private(pixelX,pixelY)
for (pixelX = 0; pixelX < imageWidth; ...
VSUG DAY 2010.5.9
インテル® スレッディング・ビルディング・
ブロック
次のようなケースでデータ並列処理を実装する最良の方法:
– OpenMP* をサポートしないコンパイラーを使用しなければいけない
– 極めてオブジェクト指...
VSUG DAY 2010.5.9
キーメッセージ
独立したタスクの数がスケールするアルゴリズムは明示的な
スレッド化やOpenMP3.0のTask並列化に最適
データ量がスケールするアルゴリズムは OpenMP やスレッ
ド・ビルディング・ブ...
VSUG DAY 2010.5.9
• 直感的に使用できる並列化開発ツール
VSUG DAY 2010.5.9
Microsoft* Visual Studio* プラグイン
並列化向けエンドツーエンド製品スイート
将来のメニーコア向けにスケーリング
インテル® Parallel Studio は次の 3 製品で構成さ...
VSUG DAY 2010.5.9
開発ライフサイクルを通して幅広い利用
アーキテクト、CTO
管理職レベル
付加価値の創造に集中し、
スレッド管理には時間を
費やさない
システム・アナリスト
実際のシステムへの
実装デザイン
検証/テスト
不...
VSUG DAY 2010.5.9
インテル® Parallel Studio
マルチコア並列化のために、直感的に使用できる開発ツール
C++開発者のためのMicrosoft Visual Studio* プラグイン
• インテル® Paral...
VSUG DAY 2010.5.9
Parallel Studio の並列化手法
並列化プログラムを書くた
めのユニークで全く新しい
チャレンジに取り組んでい
ます
•発見と検索
•スケーラブルなコーディング
•デバッグと検証
•チューニング
...
VSUG DAY 2010.5.9
• クラウドベースの並列化性能解析ツール
VSUG DAY 2010.5.9
インテル® Parallel Universe Portal
クラウドベースの、パフォーマンス・チェッカー
• マルチコアのシステムを持っていなくても、ソフトウェアのパ
フォーマンスとスケーラビリティーを検査...
VSUG DAY 2010.5.9
• 簡単に使える
• 32-bit Windows* (XP* または Vista*)
アプリケーションを分析
インテル® Parallel Universe Portal
ブラウザーベースの並列化分析ツール
VSUG DAY 2010.5.9
• お好みのブラウザーを使用可能
– Internet Explorer*, Firefox*, Safari*, または Chrome*
– インテル® Software Developer Network...
VSUG DAY 2010.5.9
インテル® Parallel Universe Portal
アプリケーション送信と結果待ちの画面
以前に行った分
析結果が
保存され、
比較可能
VSUG DAY 2010.5.9
インテル® Parallel Universe Portal
ブラウザーで結果を参照
最適な実行時間(
緑線)
CPU あたりの
実行時間 CPU 数に対する
スケーラビリティー
同時実行の平均値
(実行時に...
VSUG DAY 2010.5.9
インテル® Parallel Universe Portal
分析結果をインテル® Parallel Studio上で分析
コードを変更する
場合はラインをダ
ブルクリック して
Visual Studio*...
VSUG DAY 2010.5.9
まとめ
• 半導体の性能向上が様々な生活の利便性を提供しています
• 電力当たりのプロセッサの性能を向上するためにマルチコア化が不可欠
です
• マルチコアのプロセッサの性能を利用するには並列化、マルチスレッ...
VSUG DAY 2010.5.958
Legal Disclaimer
• INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL® PRODUCTS. NO
LIC...
Upcoming SlideShare
Loading in …5
×

増加するコアを使い切れ!!

3,485 views

Published on

増加するコアを使い切れ!!

  1. 1. 増加するコアを使い切れ!! VSUG DAY 2010 Summer -インテルソフトウェア開発ツールの最新情報の紹介 - インテル株式会社 ソフトウェア&サービス技術統括部 部長 池井 満
  2. 2. VSUG DAY 2010.5.9 アジェンダ • なぜメニーコアへと移行するのか? • 複数コア化するハードウェアの動向 • 並列処理における重要な概念 • どのようにしてアプリケーションを並列化するか? • 直感的に使用できる並列化開発ツール • クラウドベースの並列化性能ツール • まとめ
  3. 3. VSUG DAY 2010.5.9 • なぜメニーコアへと移行するのか?
  4. 4. VSUG DAY 2010.5.9 CPU の “性能の向上” は業界を牽引する 0.01 0.1 1 10 100 1000 10000 100000 1000000 10000000 1970 1980 1990 2000 2010 2020 MIPS Pentium® 4 アーキテクチャー Pentium® アーキテクチャー 486 386 286 8086 これらは予測だけで、インテルから将来出荷される製品に反映されていないかもしれません。 ムーアの法則は業界を牽引する “価値の向上”を定義している。 Pentium® Pro アーキテクチャー
  5. 5. VSUG DAY 2010.5.9 良いニュース: ムーアの法則は依然として健在 65nm65nm プロセスプロセス 20062006 30nm30nm 20nm20nm 45nm45nm プロセスプロセス 20082008 32nm32nm プロセスプロセス 20102010 15nm15nm 22nm22nm プロセスプロセス 20122012 10nm10nm 出典:出典: IntelIntel テクノロジー・ノード (nm) 90 65 45 32 22 集積度 (億TR) 2 4 8 16 32 … 高度なパッケージ技術との併用によって、私たちは各世代ごとに 2 倍のトランジスターを集積することができました これらは予測だけで、インテルから将来出荷される製品に反映されていないかもしれません。
  6. 6. VSUG DAY 2010.5.9 悪いニュース: シングルスレッドのパフォーマンスは減少 伝統的な SPECint 2000 のパフォーマンス Year Source: 公開されている SPECInt のデータ
  7. 7. VSUG DAY 2010.5.9 より悪いニュース: 電力のトレンド(i486を基準とする) 消費電力は うなぎのぼり 消費電力は うなぎのぼり 0 5 10 15 20 25 30 0 2 4 6 8 スカラー演算性能 電力 電力 = パフォーマンス ^ 1.74 i486 Pentium Pentium Pro Pentium 4 (Wmt) Pentium 4 (Psc)
  8. 8. VSUG DAY 2010.5.9 電力の問題に注目 パイプラインの深さ 0 2 4 6 8 10 1 2 3 4 5 6 7 8 9 10 相対的なパイプラインの段数 電力効率 最適な条件 パイプラインとパフォーマンス 0 2 4 6 8 10 1 2 3 4 5 6 7 8 9 10 相対的な周波数 (パイプライン化) パフォーマンス 収益逓減 製造プロセス技術 0 2 4 6 8 10 1 2 3 4 5 6 7 8 9 10 相対的な周波数 リーク値は 指数関数的に増加 ワットあたりのパフォーマンスを 改善するため、パイプラインの 深さと周波数を最適化する
  9. 9. VSUG DAY 2010.5.9 電力を最適化したアーキテクチャー: 正しい方向への大きな一歩 消費電力は うなぎのぼり 消費電力は うなぎのぼり 0 5 10 15 20 25 30 0 2 4 6 8 スカラー演算性能 電力 電力 = パフォーマンス ^ 1.74 Pentium M i486 Pentium Pentium Pro Pentium 4 (Wmt) Pentium 4 (Psc) 浅いパイプラインを 備えたモバイル CPU はより少ない電力
  10. 10. VSUG DAY 2010.5.9
  11. 11. VSUG DAY 2010.5.9 長期的な解決策:マルチコア C1 C2 C3 C4 キャッシュ 大きなコア キャッシュ 1 2 3 4 1 2 小さなコア 1 1 1 2 3 4 1 2 3 4 電力 性能 電力 = 1/4 性能 = 1/2 マルチコア:マルチコア: 効率的な電力効率的な電力 すぐれた電力および熱管理すぐれた電力および熱管理
  12. 12. VSUG DAY 2010.5.9 • 複数コア化するハードウェアの動向
  13. 13. VSUG DAY 2010.5.9 全てのプロセッサーが並列プロセッサーに…
  14. 14. VSUG DAY 2010.5.9 マルチコアからメニーコアへ 3つの課題 電力 メモリー 命令レベル並列 マルチコアは3つの課 題に注目課題 このアプローチはチャ レンジなしでは達成で きない 14 “Moore’s Law scaling should easily let us hit the 80-core mark in mainstream processors within the next ten years and quite possibly even less.” -- Justin Rattner, CTO Intel Corporation, Feb. 2007 GHz 世代 マルチコア 世代 アプリケーション・パフォーマンス 時間 プラットフォームの潜在能力 パフォーマンス シリアル パラレル
  15. 15. VSUG DAY 2010.5.9 超低コスト、低消費電力 アーキテクチャー インテル® Core™ マイクロアーキテクチャー、 インテル® Core™ i7 アーキテクチャー ノートブック、デスクトップ、サーバー 電力 パフォーマンス ビジュアル・コンピューティング HPC最適化 アーキテクチャー 出典: インテル ** 開発コード名 インテル 45nm: アーキテクチャーの注目領域
  16. 16. VSUG DAY 2010.5.9 将来:マルチコアとメニーコア すべてが大きなコア 大きなコアと 小さなコアの混在 すべてが小さなコア メモリーバンクを接続、プロセッサーを接続、メモリーの一貫性モデル – すべてが現実となる、多様性の時代。 注意:これらは予測だけで、インテルから将来出荷される製品に反映されてい ないかもしれません。
  17. 17. VSUG DAY 2010.5.9 THINK PARALLEL (さもなければ滅びる) ソフトウェア開発者の挑戦:ソフトウェア開発者の挑戦: マルチコア処理は新たな標準 並列性の活用は今後パフォーマンスを 実現するための最良の方法 マルチコア処理は新たな標準マルチコア処理は新たな標準 並列性の活用は今後パフォーマンスを並列性の活用は今後パフォーマンスを 実現するための最良の方法実現するための最良の方法
  18. 18. VSUG DAY 2010.5.9 • 並列処理における重要な概念
  19. 19. VSUG DAY 2010.5.9 なぜ並列処理を使用するのか? 計算をより短い時間で処理 一定の時間でより多いデータを処理
  20. 20. VSUG DAY 2010.5.9 スレッドとプロセス •現在のオペレーティング・システムではプ ログラムをプロセスとしてロードする •プロセスはエントリーポイントでスレッドと して実行を開始する •スレッドはプロセス内で他のスレッドを 作成できる •プロセス内のすべてのスレッドはコードと データ領域を共有する •スレッドは 2 つのスケジュール状態 (アクティブ、インアクティブ)を持つ コード データ スレッド main() …スレッド スレッド
  21. 21. VSUG DAY 2010.5.9 なぜスレッドを利用するのか? •利点 – パフォーマンスの向上 – リソースの利用率を改善 •欠点 – アプリケーションがより複雑になる – デバッグが困難(データ競合、デッドロック、その 他)
  22. 22. VSUG DAY 2010.5.9 スレッド化 – いつ、なぜ、どのように? •いつスレッド化すべきか? • 並行して実行可能な独立したタスクがある場合 •なぜスレッド化するのか? • ターンアラウンドやスループットを改善 •どのようにスレッド化するか? • 機能もしくはデータを分割
  23. 23. VSUG DAY 2010.5.9 ターンアラウンド •もっとも短い時間で1つのタスクを完了する •例:夕食のテーブルを用意する – 皿を置く – ナプキンを折りたたんで置く – 用具を置く – グラスを置く
  24. 24. VSUG DAY 2010.5.9 スループット •決められた時間内でより多くのタスクを完了する •例:宴会場のテーブルを用意する – 複数のウェイターがそれぞれのテーブルを受け持 つ – 皿、グラス、用具、等に専任のウェイターを割り当 てる
  25. 25. VSUG DAY 2010.5.9 機能の分割 •機能別に作業を分割する •作業量が独立したタスクの数に比例してスケール する際に効果的 例: 多くの異なる作業員で家を建てる(レンガ職人、大工、とび 職、配管工、電気工、内装職人、その他)
  26. 26. VSUG DAY 2010.5.9 データの分割 •独立したデータに作業を分割する •作業量がデータの量に比例してスケールする 際に効果的 •例:アンケートの集計
  27. 27. VSUG DAY 2010.5.9 • どのようにしてアプリケーションを並列化するか?
  28. 28. VSUG DAY 2010.5.9 主要な 5 つの並列化手法 いずれの手法を導入するか? •メッセージ・パッシング • MPI、PVM •明示的なスレディング • Windows スレッド API、Pthreads、Solaris スレッド、 Java スレッド・クラス •コンパイラーのサポート • 自動並列化、OpenMP、インテル・スレッディング・ビルディング・ブロック •並列プログラミング言語 • HPF、CAF、UPC、CxC、Cilk •並列マス・ライブラリー • ScaLAPACK、PARDISO、PLAPACK、PETsc
  29. 29. VSUG DAY 2010.5.9 並列化言語 HPC における研究者たちは、容易にラージスケールな並列化 を実現するためのプログラミング言語の設計を目指してる しかしながらこれらの試みは汎用的な並列プログラミング言語 を生み出すことに失敗している ソフトウェア業界は、新しい、ドメイン思考の並列プログラミング 言語に注目しはじめている
  30. 30. VSUG DAY 2010.5.9 コンパイラーの指示による並列化 インテル® コンパイラーは自動並列化と OpenMP をサポートする 自動並列化を行うにはループは特定の条件を満たしていなけ ればならない
  31. 31. VSUG DAY 2010.5.9 自動並列化の要請項目 ループカウントはループ開始時に明確でなければいけない – コンパイル時に明確である必要は無い – ループ内への、ループ内からのジャンプがあってはならない ループの反復は独立していること – 関数呼び出しを含まない – ポインターのエリアシングがない – 依存性がない – リダクションは許される 並列化のオーバーヘッドを打ち消す十分な処理量(粒度)
  32. 32. VSUG DAY 2010.5.9 定義 – ループの依存性 int A[MAX], B[MAX]; for (i = 0; i < MAX; i++) { A[i] = B[i]; } 記: Fortran 90/95 の配列表記によるループでは独立した記述が可能 ループ反復 n は反復 n – 1 (n + 1) が実行されるときに依 存性がないこと
  33. 33. VSUG DAY 2010.5.9 自動並列化 一般的にコンパイラーによる自動並列化では完全な コードの並列化できない 開発者が並列化を指示する OpenMP はより有効な並列化 の手段
  34. 34. VSUG DAY 2010.5.9 インテル® マス・カーネル・ライブラリー BLAS および スパース BLAS LAPACK および ScaLAPACK 離散フーリエ変換 VML (ベクター・マス・ライブラリー) VSL (ベクター統計ライブラリー) PARDISO (パラレル・ダイレクト・スパースソルバー) 自動 CPU ディスパッチ スレッド化とスレッドセーフ
  35. 35. VSUG DAY 2010.5.9 インテル® インテグレーテッド・パフォーマンス・ プリミティブ 信号処理およびイメージ処理 音声認識 オーディオおよびビデオ・エンコード 暗号化 コンピューター・ビジョン (OpenCV) 自動 CPU ディスパッチ スレッドセーフ
  36. 36. VSUG DAY 2010.5.9 共通の数学処理を探す Profile は 80% の実行時間は複数時限 FFT の計算で費やされていることを示している 呼び出し順の仮定 fft2d fft1d fftcc スケーリングを向上するには どこをスレッド化すればよいか? gprof profile: Each sample counts as 0.01 seconds. % cumulative self self total time seconds seconds calls ms/call ms/call name 64.71 93.43 93.43 23952910 0.00 0.00 fftcc_ 11.47 110.00 16.57 23952910 0.00 0.00 fft1d_ 11.41 126.47 16.47 100 164.70 1402.89 ssf_3dcs_ 4.94 133.59 7.13 151600 0.05 0.77 fft2d_ 2.94 137.84 4.25 37900 0.11 0.11 phaseshift3d_ 2.24 141.07 3.23 100 32.30 32.30 imaging_ A: fftcc B: fft1d C: fft2d D: 全て
  37. 37. VSUG DAY 2010.5.9 SciMark 2.0 LU カーネル MKL をリンクしてスレッドを有効にすることで 並列化を効率的に実装可能
  38. 38. VSUG DAY 2010.5.9 例えばスレッドに注目 どの方法でスレッドを実装するべきか? 3 つの主要なスレッド化方法: 1. Windows API による明示的なスレッド化 2. OpenMP を使用したスレッド化 3. インテル® スレッド・ビルディング・ブロック アプリケーションの特性に合わせて最も有効な スレッド化の方法を選択する
  39. 39. VSUG DAY 2010.5.9 機能分割 DBDB を開くを開く アドレスブックアドレスブック InBoxInBox カレンダーカレンダー ファイルを開くファイルを開く 編集編集 スペルチェックスペルチェック 同時タスク 逐次タスク
  40. 40. VSUG DAY 2010.5.9 Win32 スレッドの生成 HANDLE CreateThread ( LPSECURITY_ATTRIBUTES ThreadAttributes, DWORD StackSize, LPTHREAD_START_ROUTINE StartAddress, LPVOID Parameter, DWORD CreationFlags, LPDWORD ThreadId ); スレッドとして実行 する関数を明確に する スレッドハンドルは 同期オブジェクト
  41. 41. VSUG DAY 2010.5.9 データ並列 •同じ操作を異なるデータ要素に対して行う function SpellCheck { loop (word = 1, words_in_file) compare_to_dictionary (word); } ファイルを開くファイルを開く 編集編集 スペルチェックスペルチェック
  42. 42. VSUG DAY 2010.5.9 OpenMP によるスレッドの制御 #pragma omp parallel for private(pixelX,pixelY) for (pixelX = 0; pixelX < imageWidth; pixelX++) { for (pixelY = 0; pixelY < imageHeight; pixelY++) { newImage[pixelX,pixelY] = ProcessPixel (pixelX, pixelY, image); } } スレッドを生成 ループの反復を各 スレッドに分割 各スレッドが持つ ローカルな変数
  43. 43. VSUG DAY 2010.5.9 インテル® スレッディング・ビルディング・ ブロック 次のようなケースでデータ並列処理を実装する最良の方法: – OpenMP* をサポートしないコンパイラーを使用しなければいけない – 極めてオブジェクト指向なもしくはテンプレート化されたコード使用している – データ構造を同時に使用する – ループベースの並列化の範囲を越える必要がある – C++ のユーザー定義タイプを多用する場合
  44. 44. VSUG DAY 2010.5.9 キーメッセージ 独立したタスクの数がスケールするアルゴリズムは明示的な スレッド化やOpenMP3.0のTask並列化に最適 データ量がスケールするアルゴリズムは OpenMP やスレッ ド・ビルディング・ブロックに最適
  45. 45. VSUG DAY 2010.5.9 • 直感的に使用できる並列化開発ツール
  46. 46. VSUG DAY 2010.5.9 Microsoft* Visual Studio* プラグイン 並列化向けエンドツーエンド製品スイート 将来のメニーコア向けにスケーリング インテル® Parallel Studio は次の 3 製品で構成されています。 • インテル® Parallel Composer • インテル® Parallel Inspector • インテル® Parallel Amplifier インテル® Parallel Studio マルチコア並列化の直感的な開発ツール Microsoft* Visual Studio* を使用して、Windows* 用の並列アプリケーションを作成する C++ アーキテクト、デベロッパー、ソフトウェア・イノベーター向け
  47. 47. VSUG DAY 2010.5.9 開発ライフサイクルを通して幅広い利用 アーキテクト、CTO 管理職レベル 付加価値の創造に集中し、 スレッド管理には時間を 費やさない システム・アナリスト 実際のシステムへの 実装デザイン 検証/テスト 不具合を減らし、 リスクを減らす C/C++ 開発者 コードを書く、ライブラリーを 使う、デバッグする パフォーマンス・チューニング パフォーマンスに有利な条件 や方法を理解し、 マルチコアのために実装する
  48. 48. VSUG DAY 2010.5.9 インテル® Parallel Studio マルチコア並列化のために、直感的に使用できる開発ツール C++開発者のためのMicrosoft Visual Studio* プラグイン • インテル® Parallel Composer – コンパイラー、ライブラリー、デバッガー・プラグイン – インテル® C++ コンパイラー: インテル® C++ コンパイラーによりアプリケーションのパフォーマンスを向上 – 並列化実装方法に選択肢を提供: インテル® TBB、インテル® IPP、OpenMP* – インテル® Parallel Debugger Extension: 並列化コードのデバッグを簡単に • インテル® Parallel Inspector – メモリー & スレッドエラーのチェック – デッドロックやデータレースなど、発見が困難な並列化プログラミングのエラーを検出 – 並列化プログラムでもシリアル・プログラムでも、メモリーのエラーを検出 – 特別なコンパイラーやビルドは必要ありません • インテル® Parallel Amplifier – 並列化パフォーマンスのアナライザー – シリアル・プログラムでも並列化プログラムでもパフォーマンスのボトルネックを検出 – プロセッサー・コアの増加に合わせてアプリケーションのパフォーマンスをスケール – 特別なコンパイラーやビルドは必要ありません
  49. 49. VSUG DAY 2010.5.9 Parallel Studio の並列化手法 並列化プログラムを書くた めのユニークで全く新しい チャレンジに取り組んでい ます •発見と検索 •スケーラブルなコーディング •デバッグと検証 •チューニング http://software.intel.com/en-us/whatif/ 並列化する場所を 見つける スレッドを使って並列化 コンパイルしてデバッグ スレッド化やメモリの エラーを検知 性能の最適化
  50. 50. VSUG DAY 2010.5.9 • クラウドベースの並列化性能解析ツール
  51. 51. VSUG DAY 2010.5.9 インテル® Parallel Universe Portal クラウドベースの、パフォーマンス・チェッカー • マルチコアのシステムを持っていなくても、ソフトウェアのパ フォーマンスとスケーラビリティーを検査可能 – ブラウザーを使って、実行ファイルをアップロードし、 並列化によりパフォーマンスが向上しているかを確認 • 無料でクラウドベースの分析が利用可能 – ダウンロードやインストールは不要: 素早く簡単に試すことができます – セキュアなインターネット接続を通じてサービスを提供 • 並列化のためのガイドを提供 – ほとんどのブラウザーを利用して有用な情報を得られます – 詳細な情報をダウンロードし、インテル® Parallel Studio を使用して結 果を分析することが可能 http://paralleluniverse.intel.com (英語) 16 スレッドを使用して並列化のパフォーマンスを分析
  52. 52. VSUG DAY 2010.5.9 • 簡単に使える • 32-bit Windows* (XP* または Vista*) アプリケーションを分析 インテル® Parallel Universe Portal ブラウザーベースの並列化分析ツール
  53. 53. VSUG DAY 2010.5.9 • お好みのブラウザーを使用可能 – Internet Explorer*, Firefox*, Safari*, または Chrome* – インテル® Software Developer Network によりセキュアなインターネット接続が提供さ れます • パスワード保護されたアカウント登録が無料で利用可能 • Intel Parallel Universe フォーラムによる コミュニティー・サポート インテル® Parallel Universe Portal ブラウザーベースの並列化分析ツール Windows*アプケーション向けの インターネット・ベースの スケーラビリティー分析 Powered by インテル® Parallel Studio
  54. 54. VSUG DAY 2010.5.9 インテル® Parallel Universe Portal アプリケーション送信と結果待ちの画面 以前に行った分 析結果が 保存され、 比較可能
  55. 55. VSUG DAY 2010.5.9 インテル® Parallel Universe Portal ブラウザーで結果を参照 最適な実行時間( 緑線) CPU あたりの 実行時間 CPU 数に対する スケーラビリティー 同時実行の平均値 (実行時に使用され る平均スレッド数) CPU 数ごとの 実行時間
  56. 56. VSUG DAY 2010.5.9 インテル® Parallel Universe Portal 分析結果をインテル® Parallel Studio上で分析 コードを変更する 場合はラインをダ ブルクリック して Visual Studio* ソ ース編集画面へ 移ることができる ソースコード行に 対応する CPU 時間
  57. 57. VSUG DAY 2010.5.9 まとめ • 半導体の性能向上が様々な生活の利便性を提供しています • 電力当たりのプロセッサの性能を向上するためにマルチコア化が不可欠 です • マルチコアのプロセッサの性能を利用するには並列化、マルチスレッド化 が必要です • 並列化にはいくつかの方法があり、インテルは様々なツールを提供して います • 特に、直感的に使用できる並列化開発ツールとして、インテル® Parallel Studio を利用しましょう • また、クラウドベースの並列化性能解析ツールとしては、インテル® Parallel Universe Portal も利用可能です • ぜひ、これらを利用してプロセッサの性能を使い切りましょう
  58. 58. VSUG DAY 2010.5.958 Legal Disclaimer • INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL® PRODUCTS. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT AS PROVIDED IN INTEL’S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL ASSUMES NO LIABILITY WHATSOEVER, AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR USE OF INTEL® PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT. INTEL PRODUCTS ARE NOT INTENDED FOR USE IN MEDICAL, LIFE SAVING, OR LIFE SUSTAINING APPLICATIONS. • Intel may make changes to specifications and product descriptions at any time, without notice. • All products, dates, and figures specified are preliminary based on current expectations, and are subject to change without notice. • Intel, processors, chipsets, and desktop boards may contain design defects or errors known as errata, which may cause the product to deviate from published specifications. Current characterized errata are available on request. • Pinetrail and other code names featured are used internally within Intel to identify products that are in development and not yet publicly announced for release. Customers, licensees and other third parties are not authorized by Intel to use code names in advertising, promotion or marketing of any product or services and any such use of Intel's internal code names is at the sole risk of the user • Performance tests and ratings are measured using specific computer systems and/or components and reflect the approximate performance of Intel products as measured by those tests. Any difference in system hardware or software design or configuration may affect actual performance. • Intel, Atom, VTune and the Intel logo are trademarks of Intel Corporation in the United States and other countries. • Bluetooth is a trademark owned by its proprietor and used by Intel Corporation under license • *Other names and brands may be claimed as the property of others. • Copyright © 2010 Intel Corporation.

×