2010/04/17に第47回 CLR/H 勉強会が開催されたので参加していた。
今回は「並列」がキーワードだろうか。人間の脳はマルチタスクは2つまでが限界と研究結果が発表されたらしいが、最近のCPUはどんな状況だろうか。
今回は全体的にわからない単語が多く、ほとんどついていけなかった。ただ今後は業務アプリケーションでも並列を意識したプログラミングが必要になるケースも出てくるだろう。その時に備えて今から準備は進めて行きたい。
今回は「並列」がキーワードだろうか。人間の脳はマルチタスクは2つまでが限界と研究結果が発表されたらしいが、最近のCPUはどんな状況だろうか。
最新CPUの紹介と並列プログラミングの概要
- インテルマイクロアーキテクチャー「Nehalem」
- 目標は「電源効率に優れたプロセッサー」
- ハイパースレッディングテクノロジーが復活
- キャッシュをいかに有効に使用するか、がアプリケーションのパフォーマンスに影響する
- 3次キャッシュ:占有か共有か
- インテルコンパイラ、VisualStudio2010
- Core2Duo向けのアプリをQuadで動かすとパフォーマンスが上がらないケースがある
- 2010年、すべてのCPUが並列プロセッサになった。
- Intellが提供するツール:Parallel Studio
- ハイパースレッドとターボブーストがチューニング作業では邪魔となる
→チューニング中はOFFにするとよい
マルチコア時代の並列プログラミング - Visual Studio 2010 による並列化・最適化技法
- 並列化は
- 今から「意識」するべき
- どこに使うかを考える
- モジュール化プロファイルは現在のプロジェクトにも効果的(並列に限らず)
- 並列化で苦労は増える
- 並列と同時実行は別
- CLR4.0でスレッドプールの仕組みが変わった
- UMS(ユーザーモードスケジューラ)はC++のみ。64ビットのみ。
- 並列プログラミングの考え方(タスク・データ・順序)
- キャッシュを意識したプログラミングが必要
- .NET Framework 4.0ではタスク並列ライブラリ(TPL)を使用
- C++では並列パターンライブラリ(PPL)を使用
- Threadを自分で作成するのはやめるべき(一つのThreadは高価)
- ラムダ式を使用すると並列化しやすい
- スレッド数の調整:IOに対しては制限したほうが良いかもしれない。CPUに対してはある程度自動に最適化されるが、一概には言えない
F#入門 ~関数プログラミングとは何か~
- OCamlをベースに設計された言語
- F#の魅力としてマルチパラダイムがある(言語指向型プログラミングなど)
- 見た目の美しさ(lightweight syntaxをOnにすることで、インデントによるブロックの表現)
- デメリット
- Express Editionが存在しない
- IDEの機能が現時点で不完全
- インテリセンスの品質
- 日本語情報が不足
- 環境は3択
- Visual Studio 2010 Pro以上
- Visual Studio Shell (IronPythonなどもある)
- F# CTP
- 関数は第一級の扱い(変数などと同等)
- 値は変更できない(参照透過性)
- 関数は常に一つの引数を受け取って、一つの値を返す
- 複数の引数を扱うには、タプルを使用、または関数の中に関数を定義
- カリー化と部分適用
- Measureで単位を定義
- Active Pattern
- Quotation
- アクター
今回は全体的にわからない単語が多く、ほとんどついていけなかった。ただ今後は業務アプリケーションでも並列を意識したプログラミングが必要になるケースも出てくるだろう。その時に備えて今から準備は進めて行きたい。
コメント
コメントを投稿