More Related Content
Similar to 増加するコアを使い切れ!! (20)
増加するコアを使い切れ!!
- 2. VSUG DAY 2010.5.9
アジェンダ
• なぜメニーコアへと移行するのか?
• 複数コア化するハードウェアの動向
• 並列処理における重要な概念
• どのようにしてアプリケーションを並列化するか?
• 直感的に使用できる並列化開発ツール
• クラウドベースの並列化性能ツール
• まとめ
- 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. 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 倍のトランジスターを集積することができました
これらは予測だけで、インテルから将来出荷される製品に反映されていないかもしれません。
- 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
相対的な周波数
リーク値は
指数関数的に増加
ワットあたりのパフォーマンスを
改善するため、パイプラインの
深さと周波数を最適化する
- 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
マルチコア:マルチコア:
効率的な電力効率的な電力
すぐれた電力および熱管理すぐれた電力および熱管理
- 17. VSUG DAY 2010.5.9
THINK PARALLEL (さもなければ滅びる)
ソフトウェア開発者の挑戦:ソフトウェア開発者の挑戦:
マルチコア処理は新たな標準
並列性の活用は今後パフォーマンスを
実現するための最良の方法
マルチコア処理は新たな標準マルチコア処理は新たな標準
並列性の活用は今後パフォーマンスを並列性の活用は今後パフォーマンスを
実現するための最良の方法実現するための最良の方法
- 22. VSUG DAY 2010.5.9
スレッド化 – いつ、なぜ、どのように?
•いつスレッド化すべきか?
• 並行して実行可能な独立したタスクがある場合
•なぜスレッド化するのか?
• ターンアラウンドやスループットを改善
•どのようにスレッド化するか?
• 機能もしくはデータを分割
- 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. VSUG DAY 2010.5.9
並列化言語
HPC における研究者たちは、容易にラージスケールな並列化
を実現するためのプログラミング言語の設計を目指してる
しかしながらこれらの試みは汎用的な並列プログラミング言語
を生み出すことに失敗している
ソフトウェア業界は、新しい、ドメイン思考の並列プログラミング
言語に注目しはじめている
- 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) が実行されるときに依
存性がないこと
- 34. VSUG DAY 2010.5.9
インテル® マス・カーネル・ライブラリー
BLAS および スパース BLAS
LAPACK および ScaLAPACK
離散フーリエ変換
VML (ベクター・マス・ライブラリー)
VSL (ベクター統計ライブラリー)
PARDISO (パラレル・ダイレクト・スパースソルバー)
自動 CPU ディスパッチ
スレッド化とスレッドセーフ
- 35. VSUG DAY 2010.5.9
インテル® インテグレーテッド・パフォーマンス・
プリミティブ
信号処理およびイメージ処理
音声認識
オーディオおよびビデオ・エンコード
暗号化
コンピューター・ビジョン (OpenCV)
自動 CPU ディスパッチ
スレッドセーフ
- 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: 全て
- 40. VSUG DAY 2010.5.9
Win32 スレッドの生成
HANDLE CreateThread (
LPSECURITY_ATTRIBUTES ThreadAttributes,
DWORD StackSize,
LPTHREAD_START_ROUTINE StartAddress,
LPVOID Parameter,
DWORD CreationFlags,
LPDWORD ThreadId );
スレッドとして実行
する関数を明確に
する
スレッドハンドルは
同期オブジェクト
- 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. VSUG DAY 2010.5.9
インテル® スレッディング・ビルディング・
ブロック
次のようなケースでデータ並列処理を実装する最良の方法:
– OpenMP* をサポートしないコンパイラーを使用しなければいけない
– 極めてオブジェクト指向なもしくはテンプレート化されたコード使用している
– データ構造を同時に使用する
– ループベースの並列化の範囲を越える必要がある
– C++ のユーザー定義タイプを多用する場合
- 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++ アーキテクト、デベロッパー、ソフトウェア・イノベーター向け
- 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. VSUG DAY 2010.5.9
Parallel Studio の並列化手法
並列化プログラムを書くた
めのユニークで全く新しい
チャレンジに取り組んでい
ます
•発見と検索
•スケーラブルなコーディング
•デバッグと検証
•チューニング
http://software.intel.com/en-us/whatif/
並列化する場所を
見つける
スレッドを使って並列化
コンパイルしてデバッグ
スレッド化やメモリの
エラーを検知
性能の最適化
- 51. VSUG DAY 2010.5.9
インテル® Parallel Universe Portal
クラウドベースの、パフォーマンス・チェッカー
• マルチコアのシステムを持っていなくても、ソフトウェアのパ
フォーマンスとスケーラビリティーを検査可能
– ブラウザーを使って、実行ファイルをアップロードし、
並列化によりパフォーマンスが向上しているかを確認
• 無料でクラウドベースの分析が利用可能
– ダウンロードやインストールは不要:
素早く簡単に試すことができます
– セキュアなインターネット接続を通じてサービスを提供
• 並列化のためのガイドを提供
– ほとんどのブラウザーを利用して有用な情報を得られます
– 詳細な情報をダウンロードし、インテル® Parallel Studio を使用して結
果を分析することが可能
http://paralleluniverse.intel.com (英語)
16 スレッドを使用して並列化のパフォーマンスを分析
- 52. VSUG DAY 2010.5.9
• 簡単に使える
• 32-bit Windows* (XP* または Vista*)
アプリケーションを分析
インテル® Parallel Universe Portal
ブラウザーベースの並列化分析ツール
- 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
- 55. VSUG DAY 2010.5.9
インテル® Parallel Universe Portal
ブラウザーで結果を参照
最適な実行時間(
緑線)
CPU あたりの
実行時間 CPU 数に対する
スケーラビリティー
同時実行の平均値
(実行時に使用され
る平均スレッド数)
CPU 数ごとの
実行時間
- 56. VSUG DAY 2010.5.9
インテル® Parallel Universe Portal
分析結果をインテル® Parallel Studio上で分析
コードを変更する
場合はラインをダ
ブルクリック して
Visual Studio* ソ
ース編集画面へ
移ることができる
ソースコード行に
対応する CPU 時間
- 57. VSUG DAY 2010.5.9
まとめ
• 半導体の性能向上が様々な生活の利便性を提供しています
• 電力当たりのプロセッサの性能を向上するためにマルチコア化が不可欠
です
• マルチコアのプロセッサの性能を利用するには並列化、マルチスレッド化
が必要です
• 並列化にはいくつかの方法があり、インテルは様々なツールを提供して
います
• 特に、直感的に使用できる並列化開発ツールとして、インテル® Parallel
Studio を利用しましょう
• また、クラウドベースの並列化性能解析ツールとしては、インテル®
Parallel Universe Portal も利用可能です
• ぜひ、これらを利用してプロセッサの性能を使い切りましょう
- 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.