Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
道化師 堂華
PPTX, PDF
10,520 views
並列プログラミング入門!&おさらい!
並列プログラミングの概念、理屈、各種問題について。 並カン( http://atnd.org/events/2092 )にて発表
Technology
◦
Read more
10
Save
Share
Embed
Embed presentation
Download
Downloaded 40 times
1
/ 46
2
/ 46
3
/ 46
4
/ 46
5
/ 46
6
/ 46
7
/ 46
8
/ 46
9
/ 46
10
/ 46
11
/ 46
12
/ 46
13
/ 46
14
/ 46
15
/ 46
16
/ 46
17
/ 46
18
/ 46
19
/ 46
20
/ 46
21
/ 46
22
/ 46
23
/ 46
24
/ 46
25
/ 46
26
/ 46
27
/ 46
28
/ 46
29
/ 46
30
/ 46
31
/ 46
32
/ 46
33
/ 46
34
/ 46
35
/ 46
36
/ 46
37
/ 46
38
/ 46
39
/ 46
40
/ 46
41
/ 46
42
/ 46
43
/ 46
44
/ 46
45
/ 46
46
/ 46
More Related Content
PDF
基礎からのベイズ統計学第5章
by
hiro5585
PDF
フーリエ変換と画像圧縮の仕組み
by
yuichi takeda
PDF
Fisher線形判別分析とFisher Weight Maps
by
Takao Yamanaka
PDF
音声感情認識の分野動向と実用化に向けたNTTの取り組み
by
Atsushi_Ando
PDF
やさしく音声分析法を学ぶ: ケプストラム分析とLPC分析
by
Shinnosuke Takamichi
PDF
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
by
narumikanno0918
PDF
平面グラフと交通ネットワークのアルゴリズム
by
Takuya Akiba
PDF
ノンパラベイズ入門の入門
by
Shuyo Nakatani
基礎からのベイズ統計学第5章
by
hiro5585
フーリエ変換と画像圧縮の仕組み
by
yuichi takeda
Fisher線形判別分析とFisher Weight Maps
by
Takao Yamanaka
音声感情認識の分野動向と実用化に向けたNTTの取り組み
by
Atsushi_Ando
やさしく音声分析法を学ぶ: ケプストラム分析とLPC分析
by
Shinnosuke Takamichi
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
by
narumikanno0918
平面グラフと交通ネットワークのアルゴリズム
by
Takuya Akiba
ノンパラベイズ入門の入門
by
Shuyo Nakatani
What's hot
PDF
線形計画法入門
by
Shunji Umetani
PDF
スパースモデリング
by
harapon
PPTX
マハラノビス距離を用いた異常値検知
by
Yuto Mori
PDF
数式を(ちょっとしか)使わずに隠れマルコフモデル
by
Yuya Takashina
PDF
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
by
Preferred Networks
PDF
研究分野をサーベイする
by
Takayuki Itoh
PDF
クラシックな機械学習の入門 7. オンライン学習
by
Hiroshi Nakagawa
PDF
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
by
Hiro H.
PDF
幾何を使った統計のはなし
by
Toru Imai
PDF
Generative Adversarial Networks (GAN) の学習方法進展・画像生成・教師なし画像変換
by
Koichi Hamada
PDF
Union find(素集合データ構造)
by
AtCoder Inc.
PDF
Optimizer入門&最新動向
by
Motokawa Tetsuya
PDF
BERT入門
by
Ken'ichi Matsui
PDF
ウェーブレット木の世界
by
Preferred Networks
PDF
競技プログラミング頻出アルゴリズム攻略
by
K Moneto
PDF
高速な倍精度指数関数expの実装
by
MITSUNARI Shigeo
PDF
Statistical Semantic入門 ~分布仮説からword2vecまで~
by
Yuya Unno
PDF
初めてのグラフカット
by
Tsubasa Hirakawa
PDF
色々なダイクストラ高速化
by
yosupo
PDF
統計的係り受け解析入門
by
Yuya Unno
線形計画法入門
by
Shunji Umetani
スパースモデリング
by
harapon
マハラノビス距離を用いた異常値検知
by
Yuto Mori
数式を(ちょっとしか)使わずに隠れマルコフモデル
by
Yuya Takashina
Kaggle Happywhaleコンペ優勝解法でのOptuna使用事例 - 2022/12/10 Optuna Meetup #2
by
Preferred Networks
研究分野をサーベイする
by
Takayuki Itoh
クラシックな機械学習の入門 7. オンライン学習
by
Hiroshi Nakagawa
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
by
Hiro H.
幾何を使った統計のはなし
by
Toru Imai
Generative Adversarial Networks (GAN) の学習方法進展・画像生成・教師なし画像変換
by
Koichi Hamada
Union find(素集合データ構造)
by
AtCoder Inc.
Optimizer入門&最新動向
by
Motokawa Tetsuya
BERT入門
by
Ken'ichi Matsui
ウェーブレット木の世界
by
Preferred Networks
競技プログラミング頻出アルゴリズム攻略
by
K Moneto
高速な倍精度指数関数expの実装
by
MITSUNARI Shigeo
Statistical Semantic入門 ~分布仮説からword2vecまで~
by
Yuya Unno
初めてのグラフカット
by
Tsubasa Hirakawa
色々なダイクストラ高速化
by
yosupo
統計的係り受け解析入門
by
Yuya Unno
Similar to 並列プログラミング入門!&おさらい!
PDF
できる!並列・並行プログラミング
by
Preferred Networks
PPTX
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
by
gree_tech
PDF
async/await不要論
by
bleis tift
PDF
C++ マルチスレッド 入門
by
京大 マイコンクラブ
PDF
PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会
by
Shigeru Hanada
PPTX
非同期処理の基礎
by
信之 岩永
PDF
MPIによる並列計算
by
HPCシステムズ株式会社
PDF
マルチコア時代の並列プログラミング
by
Akihiko Matuura
PPTX
並行計算の実践と理論
by
gotoloop
PPTX
非同期系統の基礎
by
segayuu
PPTX
Fork/Join Framework
by
Appresso Engineering Team
PDF
[アルゴリズムイントロダクション勉強会] マルチスレッドアルゴリズム
by
Rei Takami
PPTX
Java並行処理プログラミング 第16章ver2
by
Takinami Kei
PPT
並カン (CM カット版)
by
Motohiro Takayama
PDF
Start Concurrent
by
Akira Takahashi
PDF
Bjarne dont speaking
by
Akira Takahashi
PPTX
プログラマ人生論
by
ymmt
PDF
マルチスレッド学習のミッシングリンク
by
Satoshi KOBAYASHI
PPTX
システムパフォーマンス勉強会#4
by
shingo suzuki
PPTX
システムパフォーマンス勉強会#4
by
shingo suzuki
できる!並列・並行プログラミング
by
Preferred Networks
サーバサイドの並行プログラミング〜かんたんマルチスレッドプログラミング〜
by
gree_tech
async/await不要論
by
bleis tift
C++ マルチスレッド 入門
by
京大 マイコンクラブ
PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会
by
Shigeru Hanada
非同期処理の基礎
by
信之 岩永
MPIによる並列計算
by
HPCシステムズ株式会社
マルチコア時代の並列プログラミング
by
Akihiko Matuura
並行計算の実践と理論
by
gotoloop
非同期系統の基礎
by
segayuu
Fork/Join Framework
by
Appresso Engineering Team
[アルゴリズムイントロダクション勉強会] マルチスレッドアルゴリズム
by
Rei Takami
Java並行処理プログラミング 第16章ver2
by
Takinami Kei
並カン (CM カット版)
by
Motohiro Takayama
Start Concurrent
by
Akira Takahashi
Bjarne dont speaking
by
Akira Takahashi
プログラマ人生論
by
ymmt
マルチスレッド学習のミッシングリンク
by
Satoshi KOBAYASHI
システムパフォーマンス勉強会#4
by
shingo suzuki
システムパフォーマンス勉強会#4
by
shingo suzuki
More from 道化師 堂華
PPTX
エラーハンドリング
by
道化師 堂華
PPTX
C++プログラマの為のセキュリティ入門
by
道化師 堂華
PPTX
C++ tips 3 カンマ演算子編
by
道化師 堂華
PPTX
C++ tips4 cv修飾編
by
道化師 堂華
PPTX
バグベアード入門
by
道化師 堂華
PPTX
C++ tips1 #include編
by
道化師 堂華
PPTX
C++0x総復習
by
道化師 堂華
PPTX
エラーハンドリングモデル考察
by
道化師 堂華
PPTX
マスタリング バベル
by
道化師 堂華
PPTX
独りガラパゴス開発
by
道化師 堂華
PDF
C++ tips2 インクリメント編
by
道化師 堂華
PPTX
LUCIFERの設計コンセプトと 導入予定の機能紹介
by
道化師 堂華
PPTX
Reflection with xamarin.forms
by
道化師 堂華
エラーハンドリング
by
道化師 堂華
C++プログラマの為のセキュリティ入門
by
道化師 堂華
C++ tips 3 カンマ演算子編
by
道化師 堂華
C++ tips4 cv修飾編
by
道化師 堂華
バグベアード入門
by
道化師 堂華
C++ tips1 #include編
by
道化師 堂華
C++0x総復習
by
道化師 堂華
エラーハンドリングモデル考察
by
道化師 堂華
マスタリング バベル
by
道化師 堂華
独りガラパゴス開発
by
道化師 堂華
C++ tips2 インクリメント編
by
道化師 堂華
LUCIFERの設計コンセプトと 導入予定の機能紹介
by
道化師 堂華
Reflection with xamarin.forms
by
道化師 堂華
Recently uploaded
PDF
エンジニアが選ぶべきAIエディタ & Antigravity 活用例@ウェビナー「触ってみてどうだった?Google Antigravity 既存IDEと...
by
NorihiroSunada
PDF
流行りに乗っかるClaris FileMaker 〜AI関連機能の紹介〜 by 合同会社イボルブ
by
Evolve LLC.
PPTX
楽々ナレッジベース「楽ナレ」3種比較 - Dify / AWS S3 Vector / Google File Search Tool
by
Kiyohide Yamaguchi
PDF
20251210_MultiDevinForEnterprise on Devin 1st Anniv Meetup
by
Masaki Yamakawa
PDF
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #2
by
Tasuku Takahashi
PDF
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #1
by
Tasuku Takahashi
エンジニアが選ぶべきAIエディタ & Antigravity 活用例@ウェビナー「触ってみてどうだった?Google Antigravity 既存IDEと...
by
NorihiroSunada
流行りに乗っかるClaris FileMaker 〜AI関連機能の紹介〜 by 合同会社イボルブ
by
Evolve LLC.
楽々ナレッジベース「楽ナレ」3種比較 - Dify / AWS S3 Vector / Google File Search Tool
by
Kiyohide Yamaguchi
20251210_MultiDevinForEnterprise on Devin 1st Anniv Meetup
by
Masaki Yamakawa
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #2
by
Tasuku Takahashi
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #1
by
Tasuku Takahashi
並列プログラミング入門!&おさらい!
1.
並列プログラミング入門!&おさらい!並列プログラミングカンファレンス2010-01-31
2.
お断りとお願い!この発表では並列プログラミング≒マルチスレッドプログラミングです!並列プログラムの眠い話や嫌な話です!発表者がWindowsメインなプログラマなのでそれに根ざす情報の偏り等がありますが、そこは勘弁してね!間違った情報・記述に気付いたら指摘してね!連絡先twitter: wraith13 (推奨)Mail:
wraith@trickpalace.net
3.
発表概要!並列プログラミングのススメ!並列プログラミングの仕組み!並列プログラミングの問題!並列プログラミングのミソ!並列プログラミングのいろいろ!
4.
並列プログラミングのススメ!並列プログラミング 入門!&おさらい!
5.
並列プログラミングのススメ!待ち時間の多い複数のタスクは並列で処理するとうんと効率的になるよ!昨今のCPUは並列向けだよ!GUIとそれ以外は別スレッドにしようね!数秒以上かかる可能性のある処理はその進捗状況も出すようにしようね!キャンセルもできるようにしようね!キャンセルできなとユーザーは暴挙に出るよ!グリッドコンピューティングも広義での並列だよ!冗長構成の意味もあるよ!
6.
並列プログラムの仕組み!並列プログラミング 入門!&おさらい!
7.
並列プログラミングの仕組み!シングルなコア・プロセッサの場合一度に複数の処理を並列に実行するなんてことは物理的に無理!各処理を時分割(タイムスライス)し順番に実行する。時間CPUスレッドAスレッドBスレッドC
8.
並列プログラミングの仕組み!シングルなコア・プロセッサの場合タイマ割り込み+コンテキストスイッチ割り込み:なんらかのイベントが発生した時に実行中の処理をほったらかして、割り込みハンドラとして設定されている処理を実行するCPUの機能。コンテキストスイッチ:CPUの各種レジスタの状態(どの処理をどのように実行中であったか->コンテキスト)の切り替え(スイッチ)。タイマ割り込み以外でもI/O待ちなどのタイミングでコンテキストスイッチが行われる。
9.
並列プログラミングの仕組み!マルチなコア・プロセッサの場合シングルなコア・プロセッサの場合と違い、一度に複数の処理を並列に実行可能!
10.
並列プログラミングの仕組み!マルチなコア・プロセッサの場合シングルなコア・プロセッサの場合と違い、一度に複数の処理を並列に実行可能!でも、実際には大量のプロセス・スレッドをまわさないといけないので、シングルなコア・プロセッサでやっていたことをそれぞれのコア・プロセッサで分担するだけで、本質は変わらない。
11.
並列プログラミングの問題!並列プログラミング 入門!&おさらい!
12.
並列プログラミングの問題!並列プログラミングには問題が特盛り!残念ながら並列プログラミンには非常に多くの問題があります!嵌って泣かないようにどのような問題があるのか一通りおさえて起きましょう!
13.
並列プログラミングの問題!正しくコーディングすることが難しいロックやメモリバリアの類の漏れがあったり、デッドロックを起こすようなコードになっていてもそれをソースコード上で追跡・確認することが困難。ブラックリスト的手法で、問題となる共有リソース(グローバル変数やAPI呼び出しを含む)へのアクセスをカプセル化することである程度対処可能。あるべき姿としては、共有リソースへのアクセスはホワイトリスト方式が望ましいと思われる。ブラックリスト方式では漏れが出やすく、漏れたものは再現性が悪くデバッグも困難な悪質なバグとなる。
14.
並列プログラミングの問題!テスタビリティの劣悪さプログラム動作状態のパターンがスレッドの数だけ次元単位で増加し、全ての内部状態を網羅したテストケースなど現実的に不可能。パターンが膨大になる場合は、間引いて要所を押さえてテストするものですが、この場合、現実的に可能な範囲でテストをやっても間引き率が極端に高くなり実質テストをやってないに等しくなる。そもそも各スレッドの各種状態をテスト上意図した形で実行させるのも困難。ブルートフォース的な手法に頼らざるを得ない。
15.
並列プログラミングの問題!1->2が0になったり3になったり?並列プログラミングに関係なく昔からある問題なのですが、ある値が1から2に変化する際にそのときどきで0に見えたり1に見えたり2に見えたり3に見えたりするという非常に嫌な問題が存在します。1と2は変化前と変化後の値なので問題ないとしても0に見えたり3に見えたりするのは問題です!2->1でも全く同じ問題が起きます。
16.
並列プログラミングの問題!1->2が0になったり3になったり?CPU/マザーボードの動作クロックとは非同期に変化する入力信号などでこの問題は再現します。逆もしかりでCPU/マザーボード側からの出力信号も非同期で動作するデバイスから見ると同じようなことが起こりえます。そもそも動作クロックとはこのような問題を起こさない為のものでもあります。
17.
並列プログラミングの問題!1->2が0になったり3になったり?2桁の2進数で1と2を表記すると01と10になりますが、非同期なビットの変化により値が1から2に変化する際に00,01,10,11の全てのビットパターンが現れる可能性があります。127(0111111)から128(10000000)へ変化する場合は0(00000000)~255(1111111)の範囲の値に見えてしまう可能性があります。
18.
並列プログラミングの問題!1->2が0になったり3になったり?ハミング距離が1の場合には問題が再現しません。例えば2⇔3の場合は10⇔11で、変化するビットの数が1なので問題が起きようがない。cf. グレイコード
19.
並列プログラミングの問題!1->2が0になったり3になったり?昨今の一般的な並列プログラミングの範囲内ではCPUネイティブな整数値がレジスタやメモリ上でそのような問題を起こすようなことはないかもしれませんが、並列プログラミングの非同期性が複数の値でひとつの意味を成すデータ上で同種の問題を招きます。「ビットの集合」が「複数の値」に姿を変えただけ。
20.
並列プログラミングの問題!シングルトンオブジェクトの初期化問題C/C++などの低レベル寄りの言語ではシングルスレッドでは問題の無いシングルトンオブジェクトの初期化がマルチスレッドの状況下においては複数のスレッドが同時に初期化を試行し競合を起こす問題があります。関数ローカルなstatic変数などもシングルトンオブジェクトである為、同じ問題を起こす。
21.
並列プログラミングの問題!シングルトンオブジェクトの初期化問題簡単な回避方法としてはメインスレッドで最初に初期化してしまう。後述のアウトオブオーダーの問題やCPUのコアローカルなキャッシュの問題など、嫌らしい問題があるので上記以外の方法の実装が必要な場合は信頼のおけるライブラリの利用を推奨!
22.
並列プログラミングの問題!アウトオブオーダー実行アウトオブオーダー実行は、よく「プログラムは思った通りではなく書いた通りに動く」と言われますが、それを覆し「プログラムは書いた通りにすら動かない」ようにする為のCPUの機能!
23.
並列プログラミングの問題!アウトオブオーダー実行アウトオブオーダー実行は、よく「プログラムは思った通りではなく書いた通りに動く」と言われますが、それを覆し「プログラムは書いた通りにすら動かない」ようにする為のCPUの機能!などと言うのは半分冗談です。<ぼそっ>でも残念ながら半分事実です。</ぼそっ>
24.
並列プログラミングの問題!アウトオブオーダー実行アウトオブオーダー実行は、プログラムを順序どおりに実行しなくても問題ない場合にプログラムを本来の実行順序とは異なる順序で実行することでCPUがより高速に動作する為の機能です。・・・でも、「プログラムを順序どおりに実行しなくても問題ない場合」であることの判断がシングルスレッドを前提としており、マルチスレッド的な観点からはある意味、指示を無視して勝手な順序でプログラムを実行するという困った事に。
25.
並列プログラミングの問題!アウトオブオーダー実行マルチスレッド的な観点から実行順序が重要である場合には、メモリバリアを使うことでこの問題を回避できます。同期オブジェクト関連を始めとする、マルチスレッド関連のAPI等にはメモリバリアの機能を含むものが多数あります。POSIXでは一部の関数群でメモリバリアの機能を含むものと含まないものが用意されているので注意が必要です。
26.
並列プログラミングの問題!CPUコアローカルなキャッシュマルチコア・マルチプロセッサな環境ではそれぞれのコア・プロセッサごとにキャッシュを持っています。これは同じデータのコピーを複数持つことを意味し、あるタイミングで同じハズのデータを参照してもコアによって異なる値になります。この問題もメモリバリアにより回避することができます。
27.
並列プログラミングの問題!スレッドローカルストレージスレッドローカルストレージ:スレッド別データの保存先。スレッド別のグローバル変数として使える。マルチスレッドなプログラミングで重宝する機能なのですが、スレッドを跨いで使うスマートポインタの類と組み合わさると、スマートポインタの参照先を解放するコードにスレッドローカルストレージへのアクセスが含まれると意図した本来アクセスするべきデータとは異なるデータにアクセスしてしまうという自体が発生し得ます。外部のAPIなどにこのような地雷があると怖い。
28.
並列プログラミングの問題!各スレッドは均等な速度では動作しないそもそもマルチプロセス、マルチスレッド等をコントロールするOSの判断により、均等なタイムスライスとはならない。同じ系列のOSであってもタイムスライスのロジックはOSのバージョンによっても異なります。実行優先度等が同一で全く同じような処理を実行していても参照するメモリがCPUのキャッシュにたまたま存在するかどうかと言ったような条件が実行速度には著しく影響を及ぼす。
29.
並列プログラミングの問題!並行処理のオーバーヘッドコンテキストスイッチを実行するのにも当然時間的コストが存在し、コンテキストスイッチが頻繁に行われていれば効率が悪くなります。ひとつのスレッドから見れば、潤沢に使えるCPUのキャッシュも各スレッドで使い回すことになればキャッシュのヒット率も悪くなり実行速度に影響します。ロックやメモリバリアの類のオーバーヘッド適切な範囲を超える並行処理は著しいパフォーマンス低下を招くことがあります。
30.
並列プログラミングの問題!曖昧な「スレッドセーフ」という言葉まず「スレッドセーフな言語/ライブラリだからマルチスレッドで使っても安心」は間違いの始まり。例えば先述の「1->2が0になったり3になったり」する問題を特別な指示も必要とせず勝手に解決してくれるスレッドセーフな言語/ライブラリなど存在しません。スレッドセーフを謳う言語/ライブラリ等を使うのは有意義な事ですが、なにをもってしてスレッドセーフを謳っているのか? どういう使い方をした時にどういう問題が起きないことを保証しているのか? そのあたりが明記されていない「スレッドセーフ」は要注意です。
31.
並列プログラミングの問題!いくつかの問題はプログラミング言語やその環境がしっかりしてれば解消/軽減できる話でもあり、よりよい言語/環境の出現が望まれる。
32.
並列プログラミングのミソ!並列プログラミング 入門!&おさらい!
33.
並列プログラミングのミソ!並列プログラミングの多様な問題に嵌らない為にコードに持たせるべき性質についてもおさえておきましょう!
34.
並列プログラミングのミソ!アトミックアトミック:中間状態が存在しないこと。例えば「1->2が0になったり3になったり」も中間状態が存在することに起因する問題で、中間状態が存在しなければこの問題は発生しない。複数の値を持つオブジェクトもそのアクセスを全てメソッドで隠蔽し、ロック等の排他制御を行うことで外部からはアトミックであるように振る舞える。
35.
並列プログラミングのミソ!ステートレスステートレス:状態を持たないこと。並列プログラミングにおける各種問題は並列動作するコンテキストから状態を共有することに起因する為、そもそも状態を持たなければ(あるいは共有しなければ)問題も発生しない。
36.
並列プログラミングのミソ!ロックフリーロックフリー:ロックを行わないこと。並列プログラミングではロックの使用を迫られる場面が多いが、ロックは速度的なコストが高く、またデッドロックを起こす危険も孕む為、安易なロックの多用は慎むべき。しかし、下手にロックフリーを狙って余計なバグを埋め込んでしまうというリスクもあり、難しいところ。並列処理を正しくコーディングすることは難しい。
37.
並列プログラミングのいろいろ!並列プログラミング 入門!&おさらい!
38.
並列プログラミングのいろいろ!CPUの並列対応ハイパースレッディング:擬似的にひとつのコアが複数のコアであるように振る舞う仕組み。マルチコア:ひとつのプロセッサに複数のコアを搭載。Kernelレベルを除けば通常、ソフトウェアから見ればマルチプロセッサとの違いはない。マルチプロセッサ同じ基盤に複数のCPUを搭載。通常、同一のCPUを使用する必要がある。
39.
並列プログラミングのいろいろ!いろいろな並列動作プロセス(process):一般的にはOS上で動作するプログラムの基本単位スレッド(thread):同一プロセス上で並列動作する仕組み/機能ファイバー(fiber):コンテキストスイッチを明示的に行う軽量なスレッドコルーチン(co-routine):プログラミング言語的にサポートされているファイバー
40.
並列プログラミングのいろいろ!同期オブジェクト並列プログラムが非同期で動作するが故に発生する問題を回避するための仕組みのひとつ。同期オブジェクトを使うことで非同期に動作している並列プログラム間で同期を取ることができます!
41.
並列プログラミングのいろいろ!ミューテックスもっとも基本的な排他制御用同期オブジェクト。ロックに成功したスレッドのみが処理を継続。同じミューテックスに対して一度にロックできるのはひとつのスレッドのみ。ロックに失敗したスレッドはロックに成功するまで待機、あるいは処理を放棄。Windowsではロックに成功した処理が再帰的な構造になっている場合、ロック後の再入であっても同一スレッドであればロックに成功した扱いになる。POSIXの場合はデッドロックとなる。
42.
並列プログラミングのいろいろ!ミューテックスWindowsでもPOSXIでもメモリバリアを含む。マルチスレッド関連のAPIの中でも非常に重い部類なので注意。Windowsでは同一プロセス内のマルチスレッド状況下で、ミューテックスの代りにクリティカルセクション系のAPIを使用することもできる。
43.
並列プログラミングのいろいろ!その他の同期オブジェクトシグナル主に待機用に使われる同期オブジェクト。セマフォ共有リソースに同時にアクセスするスレッド・プロセスの「数」を調整するのに使われる同期オブジェクト。ReaderWriterLock共有リソースへのリード目的のロックであれば同時に複数のロックを許し、ライト目的のロックであれば(リード目的を含め)ひとつのロックしか許さないような同期オブジェクト。
44.
並列プログラミングのいろいろ!インターロック系APIインクリメント、デクリメント、値の比較、値の交換などといった操作をアトミックに行う為に提供されているAPI。速度的コストは良好。
45.
質疑応答?並列プログラミング 入門&おさらい
46.
ご静聴ありがとうございました!
Download