Microsoft PowerPoint ppt [互換モード]

Size: px
Start display at page:

Download "Microsoft PowerPoint ppt [互換モード]"

Transcription

1 計算機アーキテクチャ特論 前半 ( 並列アーキテクチャの基本 枝廣 ) 10/1, 10/15, 10/22, 10/29, 11/5, 11/12( 程は予定 ) 内容 ( 変更の可能性あり ) 序論 ( マルチコア= 並列アーキテクチャ概論 ) キャッシュ コヒーレンシ メモリ コンシステンシ 並列アーキテクチャモデル OSモデル スケーラビリティに関する法則 2012 年 10 月 22 日枝廣 並列プログラミングモデル 語 講義のWWWサイト から計算機アーキテクチャ特論のページに る資料配布をしないので 事前にダウンロードして必要ならば印刷してくるように 資料は前 にはアップロードする予定 Page 1

2 次 並列アーキテクチャモデルと OS モデル プログラムモデル スレッドプログラミング Page 2

3 マルチコアプロセッサの分類 ヘテロジニアス vs. ホモジニアス ( ハードウェア アーキテクチャの AMP vs. SMP) ヘテロジニアス : 異種コアによるマルチプロセッサ ホモジニアス : 同種コアによるマルチプロセッサ ( 注 : 同種コアでも性能が異なればヘテロジニアスとよばれる場合がある ) AMP vs. SMP ( システムの AMP vs. SMP) AMP (Asymmetric Multi-Processor 対称型 ) 各コアが別々のソフトを実 ( 機能分散 ) SMP (Symmetric Multi-Processor 対称型 ) OS が複数ソフトウェアを複数コアに負荷分散しながら実 (SMP はホモジニアス型のみ ) ただし 最近の組込みシステム向け SoC では様々な専 エンジンを搭載しつつ複数 CPU を持つため 上記が混在している場合がある CPU DSP CPU HW ヘテロジニアス CPU CPU CPU CPU ホモジニアス 3

4 SMP 型システムの定義 様々な定義がある ここでは以下のように考える SMP 型一つのOSで管理され, 全ての処理 ( タスク, プロセス, スレッドなど ) が全ての CPUにおいて対称的に実行可能であるようなマルチプロセッサによる並列処理方式 SW1 SW2 SW3 SW4 SMP OS CPU1 CPU2 CPU3 CPU4 AMP 型 SMP 型以外のもの 同じバイナリが全てのCPUで動作する必要がある ( 少なくとも命令セットは ) 同じCPUである必要がある=ホモジニアス ホモジニアス AMP 型とSMP 型の違い システムモデル ( 次頁 ) キャッシュ一貫性に対するハードウェアサポート ( 後述 ) 4 ポイント 1: 一つの OS ポイント 2: 対称的に実行可能 = 別の CPU に移すことが可能 (CPU1 で動作させ中断していたものを CPU2 で再開することが可能 問題はキャッシュに一時保存しているデータの扱い )

5 マルチコアプロセッサの分類 ヘテロジニアス AMP ホモジニアス AMP ホモジニアス SMP SW1 OS CPU SW2 OS DSP SW3 HW1 SW4 HW2 SW1 SW2 SW3 SW4 OS OS OS OS CPU CPU CPU CPU SW1 SW2 SW3 SW4 SMP OS CPU CPU CPU CPU HW&SW 一体でサブシステム最適化 OSがSWモジュール ( スレッド ) を サブシステム内変更が他に影響しにくい リアルタイム性確保や テストで有利動的にHWへマッピング ヘテロジニアスでは電力 性能 コスト面で最適なHWを選択 ホモジニアスではHWを同一化 SW 環境を同じにしつつサブシステム分離性確保 SW-HWの割り当ては固定的 HW 能力に分割損が発生しがち 5 SW モジュール変更が全体性能に影響 リアルタイム性確保やテストで不利 SW 機能のマッピング自由度が大 HW 能力の分割損は発生しにくい

6 AMP と SMP の違い ( まとめ ) SMP 型 = つの OS で管理され, すべての処理 ( タスク, プロセス, スレッドなど ) がすべての CPU において対称的に実 可能であるようなマルチプロセッサによる並列処理 式 SMP 型にはホモジニアスしかなく つのOSがすべてのソフトウェアを動的に負荷分散しながら実 する AMP 型は 各プロセッサにOS * を持ち 各プロセッサが実 するソフトウェアが静的に決められている * プロセッサ管理のみの簡易的な基本ソフトウェアも含む AMP 型はそれぞれのプロセッサがサブシステムとなる リアルタイム性保証やテストなどにメリットがあり 現状組込みシステムでは AMP 型の が多いと われている AMP 型と SMP 型ではキャッシュの 貫性に関するハードウェア機構に違いがある 混合型もあり 組込みプロセッサには対応したハードウェア機構を持つものもある 6

7 コヒーレント キャッシュとシステムモデル ノンコヒーレント キャッシュ :CPU 間の分離性が良くなる AMP 型システムに向く コヒーレント キャッシュ :CPU 間でのデータ共有オーバーヘッド SMP 型システムに向く 組込みシステムでは両 の性質を使いたい要求 ( 例えば 部のタスクのみリアルタイム性を確保したい ) があり 組込みプロセッサではスヌープ機構を部分的に切れるようになっているものもある SW1 SW2 SW3 SW4 SW1 SW2 SW3 SW4 SW1 SW2 SW3 SW4 スケジューラ OS1 スケジューラ OS2 スケジューラ SMP OS スケジューラ SMP OS スケジューラ OS2 CPU1 CPU2 CPU1 CPU2 CPU1 CPU2 CPU3 キャッシュ キャッシュ コヒーレント キャッシュ コヒーレント キャッシュ キャッシュ AMP 型システム SMP 型システム AMP/SMP 混合型システム 7

8 AMP 型マルチコアシステムのリアルタイム性 Delay from Scheduled Time (= Points above 40ms) Discontinuity of Audio & Video Execute Time for Periodical Processes Time a) 1CPU b) 3CPU Many Delays 8 NO DELAY 出展

9 SMP 型マルチコアシステムのスケーラビリティ ぶれ補正処理 シャッタースピードを遅くすると ぶれ発 速くすると暗くなる (I, II) シャッタースピードを速くしつつ 複数枚撮影し 画像補正 (III) 画質を くすればするほど い CPU 性能が必要 並列性能向上率 (1CPU 対 4CPU) --- VGA: 2.94 倍, QVGA: 3.15 倍 Speedup QVGA VGA Number of Processors (I) slow shutter: bright but blurry (II) fast shutter: dark but not blurry Image Stabilizer Page 9 NEC Corporation 2010 (III) bright and not blurry 出展

10 AMP 型と SMP 型のプログラムモデル AMP 型はプロセッサごとの ( 別々の OS 上の ) プログラムとなり プログラム間の同期 通信を記載する CPU へのタスク ( スレッド ) 割り当てはプログラム時に静的に われる SMP 型は SMP OS 上の つのプログラムとなり 同期 通信も含め 並列化 援 語 API として記載する SMP OS が負荷分散を考慮しながら動的にタスク ( スレッド ) をプロセッサに割り当てる CPU1 向けプログラム CPU2 向けプログラム CPU3 向けプログラム 並列化プログラム タスク 1 タスク 4 タスク 6 タスク 2 タスク 7 タスク 3 タスク 5 タスク1 タスク2 タスク4 タスク 3 タスク 5 タスク 7 タスク 6 OS OS OS SMP OS CPU1 CPU2 CPU3 CPU1 CPU2 CPU3 AMP 型 SMP 型 10

11 プログラムが並列 並 実 可能に記述 AMP 型のプログラム 同期 通信以外は通常のソフトウェア SMP 型のプログラム スレッド プログラミング 11

12 SMP 型マルチコア向けスレッド化プログラミング OS が提供するスレッドライブラリ pthread IEEE の POSIX Section c 規格 Linux などで標準的にサポート POSIX: Portable Operating System Interface Windows API Windows でサポート 語仕様内 語拡張のスレッドライブラリ Java Thread Java 語の中に標準で定義 OpenMP C/C++/FORTRAN を並列プログラム可能にするために 国コンパイラベンダグループによって作られた指 パソコン向けの開発環境などで標準的にサポート TBB Intel 社が開発した 語 C/C++ で使える 動的な負荷分散などをランタイムで う TPL Microsoft 社の 語.NET に含まれており C#, VB で使える Cilk MIT で開発された 語 ANSI C で使える Intel などがサポートしはじめている 12

13 OS スレッドライブラリ pthread IEEE POSIX Section c POSIX: Portable Operating System Interface Nichols, Buttlar, and Farrell: Pthreads Programming, OʼREILLY, Linux などで標準 pthread_create, pthread_join Windows Thread API CreateThread, WaitForMultipleObjects 13

14 Example2: Calculate Primes #include <stdio.h> #include <math.h> #define DATA_NUM 100 int main() { BOOL primes[data_num]; int i; /* Check */ for (i = 0; i < DATA_NUM; i++) { primes[i] = TRUE; limit = (int)sqrt((double)i); for (j = 2; j <= limit; j++) if (primes[j] && i % j == 0) { primes[i] = FALSE; break; If primes[i] is TRUE (j is a prime), and (i % j == 0) ( i is multiple number of j), i is an prime. If j is not a prime, we don t have to check if I is multiple number of j. Why? /* Output */ for (i = 2; i < DATA_NUM; i++) { if (primes[i] == 1) printf("%d ", i); printf(" n"); return 0; 14

15 Pthread (1/2) #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <math.h> #include <pthread.h> #define THREAD_NUM 3 #define DATA_NUM 100 void thread_func(void *arg) { thread_arg_t* targ = (thread_arg_t *)arg; int c_start, c_end, range, limit; int i, j; /* Determine Range of Values to be Checked */ range = (DATA_NUM - 2) / THREAD_NUM + 1; c_start = 2 + targ->id *range; c_end = 2 + (targ->id+1) *range; if (c_end > DATA_NUM) c_end = DATA_NUM; typedef struct _thread_arg { int id; bool *primes; thread_arg_t; Calc Primes マルチコアCPUのための並列プログラミング ( 秀和システムズ ) より /* Check */ for (i = c_start; i < c_end; i++) { limit = (int)sqrt((double) i); for (j = 2; j <= limit; j++) if (targ->primes[j] && i % j == 0) { targ->primes[i] = false; break; return; 15

16 int main() { pthread_t handle[thread_num]; thread_arg_t targ[thread_num]; bool primes[data_num]; int i; /* Initialize */ for (i = 0; i < DATA_NUM; i++) primes[i] = true; /* Wait for All Threads */ for (i = 0; i < THREAD_NUM; i++) pthread_join(handle[i], NULL); /* Output */ for (i = 2; i < DATA_NUM; i++) if (primes[i]) printf("%d ", i); printf(" n"); return 0; /* Start */ for (i = 0; i < THREAD_NUM; i++) { targ[i].id = i; targ[i].primes = primes; pthread_create(&handle[i], NULL, (void*)thread_func, (void*)&targ[i]); Pthread (2/2) 16

17 Windows thread (1/2) #include <stdio.h> #include <windows.h> #include <math.h> #define THREAD_NUM 3 #define DATA_NUM 100 typedef struct _thread_arg { int id; BOOL *primes; thread_arg_t; Calc Primes マルチコアCPUのための並列プログラミング ( 秀和システムズ ) より void thread_func(void *arg) { thread_arg_t* targ = (thread_arg_t *)arg; int c_start, c_end, range, limit; int i, j; /* Determine Range of Values to be Checked */ range = (DATA_NUM - 2) / THREAD_NUM + 1; c_start = 2 + targ->id * range; c_end = 2 + (targ->id + 1) * range; if (c_end > DATA_NUM) c_end = DATA_NUM; /* Check */ for (i = c_start; i < c_end; i++) { limit = (int)sqrt((double)i); for (j = 2; j <= limit; j++) if (targ->primes[j] && i % j == 0) { targ->primes[i] = FALSE; break; return; 17

18 int main() { HANDLE handle[thread_num]; thread_arg_t targ[thread_num]; BOOL primes[data_num]; int i; for (i = 0; i < DATA_NUM; i++) { primes[i] = TRUE; for (i = 0; i < THREAD_NUM; i++) { targ[i].id = i; targ[i].primes = primes; handle[i] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)thread _func, (void *)&targ[i], 0, NULL); WaitForMultipleObjects(THREAD_NUM, handle, TRUE, INFINITE); /* Output */ for (i = 2; i < DATA_NUM; i++) { if (primes[i] == 1) printf("%d ", i); printf(" n"); return 0; Windows thread (2/2) 18

19 OpenMP OS スレッドライブラリは低レベル プログラマはアーキテクチャを考慮し 粒度や負荷分散を考えながら 分でプログラムを切って記載する必要がある OpenMP C/C++/FORTRAN の指 として並列を記載 US のコンパイラベンダが集まって開発 PC 向けの開発環境などでサポートされている Fork-Join Model 粒度はランタイムによって決められる 19

20 OpenMP #include <stdio.h> #include <math.h> #include <omp.h> #define DATA_NUM 100 int main() { BOOL primes[data_num]; int i; /* Initialize */ #pragma omp parallel for for (i = 0; i < DATA_NUM; i++) primes[i] = TRUE; Calc Primes /* Check */ #pragma omp parallel for for (i = 0; i < DATA_NUM; i++) { primes[i] = TRUE; limit = (int)sqrt((double)i); for (j = 2; j <= limit; j++) if (primes[j] && i % j == 0) { primes[i] = FALSE; break; /* Output */ for (i = 2; i < DATA_NUM; i++) { if (primes[i] == 1) printf("%d ", i); printf(" n"); return 0; 20

21 Software for SMP (OpenMP) Example of OpenMP (Banking) Execute section s in Parallel within sections block #pragma omp parallel sections { #pragma omp section main(); #pragma omp section withdraw(); #pragma omp section deposit(); #pragma omp section balance(); sections ブロックのʻ で同期 ( すべてのsectionはʼʼで同期 ) Customer Requests Banking main() Main thread withdraw() thread deposit() thread balance() thread 21

22 Software for SMP (OpenMP) Example of OpenMP (Video Decode) for-loop with for Directive is executed in Parallel #pragma omp parallel for for(i=1; i<=n; i++) Decode#i; その他の指 総和 バリア アトミック Decod e#1 Video Decode Decod e#2 Decod e#5 Decod e#8 Decod e#3 Decod e#7 Decod e#4 Decod e#5 22

23 排他制御に関する 語 クリティカルセクション 度に つのプロセスまたはスレッドのみが実 可能なプログラムの部分 例 : グローバル変数の書換 ( 素数の数のカウント ) 共有リソース メモリ 周辺デバイスなど 23

24 排他制御 その他の処理 時間 クリティカルセクション 一度に一つのプロセス ( スレッド ) のみが実行可能例 : グローバル変数の書換共有リソースの利用 その他の処理 24

25 Lock - Unlock 時間 その他の処理 クリティカルセクション ロック変数 v を宣言 Thread A Lock v Thread A は実行可能 Thread B STOP vがunlock されるまでWait その他の処理 Unlock v 25

26 排他制御の例 Mutex (= Mutual Exclusion) ある変数のLock/Unlock セマフォ リソースが複数ある場合に利 利 可能なリソース数を保持し リソースが残っている限りプログラムはクリティカルセクションに れる Mutexはリソース数が つの特殊ケースと考えられる 26

27 pthread, POSIX セマフォ pthread mutex pthread_mutex_init ロック変数の初期化 pthread_mutex_lock, pthread_mutex_unlock pthread_destroy POSIX セマフォ sem_init sem_wait, sem_post sem_destroy 27

28 Windows Thread API クリティカルセクション InitializeCriticalSection EnterCriticalSection, LeaveCriticalSection DeleteCriticalSection セマフォ CreateSemaphore WaitForSingleObject, ReleaseSemaphore CloseHandle 28

29 Example2 : Calculate Primes and count # of Primes #include <stdio.h> #include <math.h> #define DATA_NUM 100 int main() { BOOL primes[data_num]; int I, count; /* Check */ for (i = 0; i < DATA_NUM; i++) { primes[i] = TRUE; limit = (int)sqrt((double)i); for (j = 2; j <= limit; j++) if (primes[j] && i % j == 0) { primes[i] = FALSE; break; if (j > limit) count++; /* Output */ for (i = 2; i < DATA_NUM; i++) { if (primes[i] == 1) printf("%d ", i); printf(" n"); return 0; 29

30 Pthread (1/2) #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <math.h> #include <pthread.h> #define THREAD_NUM 3 #define DATA_NUM 100 typedef struct _thread_arg { int id; bool *primes; pthread_mutex_t *mutex; thread_arg_t; int count; Calc Primes void thread_func(void *arg) { thread_arg_t* targ = (thread_arg_t *)arg; int c_start, c_end, range, limit; int i, j; /* Determine Range of Values to be Checked */ range = (DATA_NUM - 2) / THREAD_NUM + 1; c_start = 2 + targ->id *range; c_end = 2 + (targ->id+1) *range; if (c_end > DATA_NUM) c_end = DATA_NUM; /* Check */ for (i = c_start; i < c_end; i++) { limit = (int)sqrt((double) i); for (j = 2; j <= limit; j++) if (targ->primes[j] && i % j == 0) { targ->primes[i] = false; break; if(j > limit) { pthread_mutex_lock(targ->mutex); count++; pthread_mutex_unlock(targ->mutex); return; 30

31 int main() { pthread_t handle[thread_num]; thread_arg_t targ[thread_num]; bool primes[data_num]; int i; pthread_mutex_t mutex; /* Initialize */ for (i = 0; i < DATA_NUM; i++) primes[i] = true; /* Initialize mutex variable */ pthread_mutex_init(&mutex, NULL); /* Start */ for (i = 0; i < THREAD_NUM; i++) { targ[i].id = i; targ[i].primes = primes; targ[i].mutex = &mutex; pthread_create(&handle[i], NULL, (void*)thread_func, (void*)&targ[i]); /* Wait for All Threads */ for (i = 0; i < THREAD_NUM; i++) pthread_join(handle[i], NULL); /* Destroy Mutex Variable */ pthread_mutex_destroy(&mutex); /* Output */ for (i = 2; i < DATA_NUM; i++) if (primes[i]) printf("%d ", i); printf(" n"); return 0; Pthread (2/2) 31

32 Windows thread (1/2) #include <stdio.h> #include <windows.h> #include <math.h> #define THREAD_NUM 3 #define DATA_NUM 100 typedef struct _thread_arg { int id; BOOL *primes; CRITICAL_SECTION *cs; thread_arg_t; int count; Calc Primes void thread_func(void *arg) { thread_arg_t* targ = (thread_arg_t *)arg; int c_start, c_end, range, limit; int i, j; /* Determine Range of Values to be Checked */ range = (DATA_NUM - 2) / THREAD_NUM + 1; c_start = 2 + targ->id * range; c_end = 2 + (targ->id + 1) * range; if (c_end > DATA_NUM) c_end = DATA_NUM; /* Check */ for (i = c_start; i < c_end; i++) { limit = (int)sqrt((double)i); for (j = 2; j <= limit; j++) if (targ->primes[j] && i % j == 0) { targ->primes[i] = FALSE; break; if(j > limit) { EnterCriticalSection(targ->cs); count++; LeaveCriticalSection(targ->cs); return; 32

33 int main() { HANDLE handle[thread_num]; thread_arg_t targ[thread_num]; BOOL primes[data_num]; int i; CRITICAL_SECTION cs; for (i = 0; i < DATA_NUM; i++) { primes[i] = TRUE; /* Initialize critical section variable */ InitializeCriticalSection(&cs); for (i = 0; i < THREAD_NUM; i++) { targ[i].id = i; targ[i].primes = primes; targ[i].mutex = &cs; handle[i] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)thread_ func, (void *)&targ[i], 0, NULL); WaitForMultipleObjects(THREAD_NUM, handle, TRUE, INFINITE); /* Destroy critical section Variable */ DeleteCriticalSection(&cs); /* Output */ for (i = 2; i < DATA_NUM; i++) { if (primes[i] == 1) printf("%d ", i); printf(" n"); return 0; Windows thread (2/2) 33

34 OpenMP Clause 付加情報 private, shared ( 変数 ) reduction ( 演算 ) #pragma omp critical #pragma omp atomic ある に対するクリティカルセクション 34

35 Reduction Thread 1 Thread 2 Thread 3 Thread 4 counting counting counting counting Count Final Result 35

36 OpenMP #include <stdio.h> #include <math.h> #include <omp.h> #define DATA_NUM 100 int main() { BOOL primes[data_num]; int I, count; /* Check */ #pragma omp parallel for reduction(+;count) private(limit, j) for (i = 0; i < DATA_NUM; i++) { limit = (int)sqrt((double)i); for (j = 2; j <= limit; j++) if (primes[j] && i % j == 0) { primes[i] = FALSE; break; if (j > limit) count++; /* Initialize */ #pragma omp parallel for for (i = 0; i < DATA_NUM; i++) primes[i] = TRUE; Calc Primes /* Output */ for (i = 2; i < DATA_NUM; i++) { if (primes[i] == 1) printf("%d ", i); printf(" n"); return 0; 36

Microsoft PowerPoint ppt [互換モード]

Microsoft PowerPoint ppt [互換モード] 計算機アーキテクチャ特論 2013 年 10 28 枝廣 前半 ( 並列アーキテクチャの基本 枝廣 ) 10/7, 10/21, 10/28, 11/11, 11/18, (12/2)( 程は予定 ) 内容 ( 変更の可能性あり ) 序論 ( マルチコア= 並列アーキテクチャ概論 ) キャッシュ コヒーレンシ メモリ コンシステンシ 並列アーキテクチャモデル OSモデル 並列プログラミングモデル 語

More information

Microsoft PowerPoint ppt [互換モード]

Microsoft PowerPoint ppt [互換モード] 計算機アーキテクチャ特論 A 2017 年 11 6 枝廣 計算機アーキテクチャ特論 A 並列アーキテクチャの基本 ( 枝廣 ) 10/2, 10/16, 10/23, 10/30, 11/6, 11/13, (11/20( 予備 )) 内容 ( 変更の可能性あり ) 序論 ( マルチコア= 並列アーキテクチャ概論 ) キャッシュ コヒーレンシ メモリ コンシステンシ 並列プログラミングモデル 語

More information

Microsoft PowerPoint ppt [互換モード]

Microsoft PowerPoint ppt [互換モード] 計算機アーキテクチャ特論 2016 年 10 24 枝廣 前半 ( 並列アーキテクチャの基本 枝廣 ) 10/3, 10/17, 10/24, 10/31, 11/7, 11/14( 程は予定 ) 内容 ( 変更の可能性あり ) 序論 ( マルチコア= 並列アーキテクチャ概論 ) キャッシュ コヒーレンシ メモリ コンシステンシ 並列プログラミングモデル 語 スケーラビリティに関する法則 同期 並列アルゴリズム

More information

Microsoft PowerPoint ppt [互換モード]

Microsoft PowerPoint ppt [互換モード] 計算機アーキテクチャ特論 前半 ( 並列アーキテクチャの基本 枝廣 ) 10/1, 10/15, 10/22, 10/29, 11/5, 11/12( 程は予定 ) 内容 ( 変更の可能性あり ) 序論 ( マルチコア= 並列アーキテクチャ概論 ) キャッシュ コヒーレンシ メモリ コンシステンシ 並列アーキテクチャモデル OSモデル スケーラビリティに関する法則 並列プログラミングモデル 語 後半

More information

POSIXプログラミング Pthreads編

POSIXプログラミング Pthreads編 POSIXプログラミング Pthreads 編 デジタルビジョンソリューション 中山一弘佐藤史明 参考図書 Pthreads プログラミング, Bradford Nichols, Dick Buttlar, Jacqeline Proulx Farrell, ISBN4-900900-66-4 Pthreads POSIX スレッド標準を実装したライブラリを Pthreads と呼ぶ C 言語のデータ型

More information

IntelR Compilers Professional Editions

IntelR Compilers Professional Editions June 2007 インテル コンパイラー プロフェッショナル エディション Phil De La Zerda 公開が禁止された情報が含まれています 本資料に含まれるインテル コンパイラー 10.0 についての情報は 6 月 5 日まで公開が禁止されています グローバル ビジネス デベロップメント ディレクター Intel Corporation マルチコア プロセッサーがもたらす変革 これまでは

More information

Microsoft PowerPoint - OpenMP入門.pptx

Microsoft PowerPoint - OpenMP入門.pptx OpenMP 入門 須田礼仁 2009/10/30 初版 OpenMP 共有メモリ並列処理の標準化 API http://openmp.org/ 最新版は 30 3.0 バージョンによる違いはあまり大きくない サポートしているバージョンはともかく csp で動きます gcc も対応しています やっぱり SPMD Single Program Multiple Data プログラム #pragma omp

More information

NUMAの構成

NUMAの構成 共有メモリを使ったデータ交換と同期 慶應義塾大学理工学部 天野英晴 hunga@am.ics.keio.ac.jp 同期の必要性 あるプロセッサが共有メモリに書いても 別のプロセッサにはそのことが分からない 同時に同じ共有変数に書き込みすると 結果がどうなるか分からない そもそも共有メモリって結構危険な代物 多くのプロセッサが並列に動くには何かの制御機構が要る 不可分命令 同期用メモリ バリア同期機構

More information

Microsoft Word - openmp-txt.doc

Microsoft Word - openmp-txt.doc ( 付録 A) OpenMP チュートリアル OepnMP は 共有メモリマルチプロセッサ上のマルチスレッドプログラミングのための API です 本稿では OpenMP の簡単な解説とともにプログラム例をつかって説明します 詳しくは OpenMP の規約を決めている OpenMP ARB の http://www.openmp.org/ にある仕様書を参照してください 日本語訳は http://www.hpcc.jp/omni/spec.ja/

More information

(Microsoft PowerPoint \215u\213`4\201i\221\272\210\344\201j.pptx)

(Microsoft PowerPoint \215u\213`4\201i\221\272\210\344\201j.pptx) AICS 村井均 RIKEN AICS HPC Summer School 2012 8/7/2012 1 背景 OpenMP とは OpenMP の基本 OpenMP プログラミングにおける注意点 やや高度な話題 2 共有メモリマルチプロセッサシステムの普及 共有メモリマルチプロセッサシステムのための並列化指示文を共通化する必要性 各社で仕様が異なり 移植性がない そして いまやマルチコア プロセッサが主流となり

More information

Microsoft PowerPoint - 03_What is OpenMP 4.0 other_Jan18

Microsoft PowerPoint - 03_What is OpenMP 4.0 other_Jan18 OpenMP* 4.x における拡張 OpenMP 4.0 と 4.5 の機能拡張 内容 OpenMP* 3.1 から 4.0 への拡張 OpenMP* 4.0 から 4.5 への拡張 2 追加された機能 (3.1 -> 4.0) C/C++ 配列シンタックスの拡張 SIMD と SIMD 対応関数 デバイスオフロード task 構 の依存性 taskgroup 構 cancel 句と cancellation

More information

本文ALL.indd

本文ALL.indd Intel Xeon プロセッサにおける Cache Coherency 時間の性能測定方法河辺峻田口成美古谷英祐 Intel Xeon プロセッサにおける Cache Coherency 時間の性能測定方法 Performance Measurement Method of Cache Coherency Effects on an Intel Xeon Processor System 河辺峻田口成美古谷英祐

More information

スレッド

スレッド POSIX スレッド システムプログラミング 2007 年 10 月 22 日 建部修見 スレッドとは? プロセス内の独立したプログラム実行 メモリは共有 ファイルディスクリプタなどプロセス資源は共有 一般にスレッド生成はプロセス生成より軽い プロセス vs スレッド 生成 実行オーバヘッド スレッド小 プロセス大 メモリ 共有 別々 プロセス資源 共有 別々 データ共有 メモリのポインタ渡し (

More information

スレッド

スレッド POSIX スレッド (1) システムプログラミング 2009 年 10 月 19 日 建部修見 組込機器における並行処理 GUI における反応性向上 ダイナミックな Wait カーソル 各イベントを別制御で実行 Auto save 機能 サーバの反応性向上 各リクエストを別制御で実行 マルチコア マルチプロセッサでの並列実行 スレッドとは? プロセス内の * 独立した * プログラム実行 同一プロセス

More information

01_OpenMP_osx.indd

01_OpenMP_osx.indd OpenMP* / 1 1... 2 2... 3 3... 5 4... 7 5... 9 5.1... 9 5.2 OpenMP* API... 13 6... 17 7... 19 / 4 1 2 C/C++ OpenMP* 3 Fortran OpenMP* 4 PC 1 1 9.0 Linux* Windows* Xeon Itanium OS 1 2 2 WEB OS OS OS 1 OS

More information

POSIXスレッド

POSIXスレッド POSIX スレッド (3) システムプログラミング 2011 年 11 月 7 日 建部修見 同期の戦略 単一大域ロック スレッドセーフ関数 構造的コードロッキング 構造的データロッキング ロックとモジュラリティ デッドロック 単一大域ロック (single global lock) 単一のアプリケーションワイドの mutex スレッドが実行するときに獲得, ブロックする前にリリース どのタイミングでも一つのスレッドが共有データをアクセスする

More information

AICS 村井均 RIKEN AICS HPC Summer School /6/2013 1

AICS 村井均 RIKEN AICS HPC Summer School /6/2013 1 AICS 村井均 RIKEN AICS HPC Summer School 2013 8/6/2013 1 背景 OpenMP とは OpenMP の基本 OpenMP プログラミングにおける注意点 やや高度な話題 2 共有メモリマルチプロセッサシステムの普及 共有メモリマルチプロセッサシステムのための並列化指示文を共通化する必要性 各社で仕様が異なり 移植性がない そして いまやマルチコア プロセッサが主流となり

More information

XMPによる並列化実装2

XMPによる並列化実装2 2 3 C Fortran Exercise 1 Exercise 2 Serial init.c init.f90 XMP xmp_init.c xmp_init.f90 Serial laplace.c laplace.f90 XMP xmp_laplace.c xmp_laplace.f90 #include int a[10]; program init integer

More information

02_C-C++_osx.indd

02_C-C++_osx.indd C/C++ OpenMP* / 2 C/C++ OpenMP* OpenMP* 9.0 1... 2 2... 3 3OpenMP*... 5 3.1... 5 3.2 OpenMP*... 6 3.3 OpenMP*... 8 4OpenMP*... 9 4.1... 9 4.2 OpenMP*... 9 4.3 OpenMP*... 10 4.4... 10 5OpenMP*... 11 5.1

More information

メモリ管理

メモリ管理 並行プログラムと同期 スレッドとプロセス CPU の数だけ同時に実行 CPU 数を越えるスレッド プロセスは OS によって交互に実行 2CPU の場合の図 : t スレッド プロセスの利用目的 性能と記述性の向上 並列処理 : マルチプロセッサ ( 複数 CPU を持つ計算機 ), マルチコアプロセッサでの性能向上 I/O 遅延隠蔽 : I/O によってブロックするスレッドを複数実行して CPU

More information

Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking Environments

Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking Environments 計算機アーキテクチャ第 11 回 マルチプロセッサ 本資料は授業用です 無断で転載することを禁じます 名古屋大学 大学院情報科学研究科 准教授加藤真平 デスクトップ ジョブレベル並列性 スーパーコンピュータ 並列処理プログラム プログラムの並列化 for (i = 0; i < N; i++) { x[i] = a[i] + b[i]; } プログラムの並列化 x[0] = a[0] + b[0];

More information

DPD Software Development Products Overview

DPD Software Development Products Overview 2 2007 Intel Corporation. Core 2 Core 2 Duo 2006/07/27 Core 2 precise VTune Core 2 Quad 2006/11/14 VTune Core 2 ( ) 1 David Levinthal 3 2007 Intel Corporation. PC Core 2 Extreme QX6800 2.93GHz, 1066MHz

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 高性能計算基盤 第 7 回 CA1003: 主記憶共有型システム http://arch.naist.jp/htdocs-arch3/ppt/ca1003/ca1003j.pdf Copyright 2019 奈良先端大中島康彦 1 2 3 4 マルチスレッディングとマルチコア 5 6 7 主記憶空間の数が 複数 か 1 つ か 8 ただしプログラムは容易 9 1 つの主記憶空間を共有する場合 10

More information

2. OpenMP OpenMP OpenMP OpenMP #pragma#pragma omp #pragma omp parallel #pragma omp single #pragma omp master #pragma omp for #pragma omp critica

2. OpenMP OpenMP OpenMP OpenMP #pragma#pragma omp #pragma omp parallel #pragma omp single #pragma omp master #pragma omp for #pragma omp critica C OpenMP 1. OpenMP OpenMP Architecture Review BoardARB OpenMP OpenMP OpenMP OpenMP OpenMP Version 2.0 Version 2.0 OpenMP Fortran C/C++ C C++ 1997 10 OpenMP Fortran API 1.0 1998 10 OpenMP C/C++ API 1.0

More information

cmpsys15w07_os.ppt

cmpsys15w07_os.ppt 情報システム論 第 7 週ソフトウェアシステム Operating System (part I) 根來 均 ソフトウェア (Software) とは プログラムと同義もしくは各種プログラムの総称 ソフトウェアは 記憶装置上などに 電子的にのみ (0/1 で記録された情報として ) 存在する ソフトウェアに対して 物理的に存在する CPU 等の各種装置をハードウェア Hardware と呼ぶ 例えば

More information

pthreads #pthreads

pthreads #pthreads pthreads #pthreads 1 1: pthreads 2 2 Examples 2 2 pthreads "Hello World" 2 2 3 2: pthreads 5 5 Examples 5 2T1T2 5 3: 8 8 8 Examples 9 / 9 11 You can share this PDF with anyone you feel could benefit from

More information

untitled

untitled OS 2007/4/27 1 Uni-processor system revisited Memory disk controller frame buffer network interface various devices bus 2 1 Uni-processor system today Intel i850 chipset block diagram Source: intel web

More information

Insert your Title here

Insert your Title here マルチコア マルチスレッド環境での静的解析ツールの応用 米 GrammaTech 社 CodeSonar によるスレッド間のデータ競合の検出 2013 GrammaTech, Inc. All rights reserved Agenda 並列実行に起因する不具合の摘出 なぜ 並列実行されるプログラミングは難しいのか データの競合 デッドロック どのようにして静的解析ツールで並列実行の問題を見つけるのか?

More information

演習1: 演習準備

演習1: 演習準備 演習 1: 演習準備 2013 年 8 月 6 日神戸大学大学院システム情報学研究科森下浩二 1 演習 1 の内容 神戸大 X10(π-omputer) について システム概要 ログイン方法 コンパイルとジョブ実行方法 OpenMP の演習 ( 入門編 ) 1. parallel 構文 実行時ライブラリ関数 2. ループ構文 3. shared 節 private 節 4. reduction 節

More information

tuat1.dvi

tuat1.dvi ( 1 ) http://ist.ksc.kwansei.ac.jp/ tutimura/ 2012 6 23 ( 1 ) 1 / 58 C ( 1 ) 2 / 58 2008 9 2002 2005 T E X ptetex3, ptexlive pt E X UTF-8 xdvi-jp 3 ( 1 ) 3 / 58 ( 1 ) 4 / 58 C,... ( 1 ) 5 / 58 6/23( )

More information

OpenMP (1) 1, 12 1 UNIX (FUJITSU GP7000F model 900), 13 1 (COMPAQ GS320) FUJITSU VPP5000/64 1 (a) (b) 1: ( 1(a))

OpenMP (1) 1, 12 1 UNIX (FUJITSU GP7000F model 900), 13 1 (COMPAQ GS320) FUJITSU VPP5000/64 1 (a) (b) 1: ( 1(a)) OpenMP (1) 1, 12 1 UNIX (FUJITSU GP7000F model 900), 13 1 (COMPAQ GS320) FUJITSU VPP5000/64 1 (a) (b) 1: ( 1(a)) E-mail: {nanri,amano}@cc.kyushu-u.ac.jp 1 ( ) 1. VPP Fortran[6] HPF[3] VPP Fortran 2. MPI[5]

More information

プログラミングI第10回

プログラミングI第10回 プログラミング 1 第 10 回 構造体 (3) 応用 リスト操作 この資料にあるサンプルプログラムは /home/course/prog1/public_html/2007/hw/lec/sources/ 下に置いてありますから 各自自分のディレクトリにコピーして コンパイル 実行してみてください Prog1 2007 Lec 101 Programming1 Group 19992007 データ構造

More information

Taro-リストⅢ(公開版).jtd

Taro-リストⅢ(公開版).jtd リスト Ⅲ 0. 目次 2. 基本的な操作 2. 1 リストから要素の削除 2. 2 リストの複写 2. 3 リストの連結 2. 4 問題 問題 1 問題 2-1 - 2. 基本的な操作 2. 1 リストから要素の削除 まず 一般的な処理を書き つぎに 特別な処理を書く 一般的な処理は 処理 1 : リスト中に 削除するデータを見つけ 削除する場合への対応 特別な処理は 処理 2 : 先頭のデータを削除する場合への対応

More information

連載講座 : 高生産並列言語を使いこなす (4) ゲーム木探索の並列化 田浦健次朗 東京大学大学院情報理工学系研究科, 情報基盤センター 目次 1 準備 問題の定義 αβ 法 16 2 αβ 法の並列化 概要 Young Brothers Wa

連載講座 : 高生産並列言語を使いこなす (4) ゲーム木探索の並列化 田浦健次朗 東京大学大学院情報理工学系研究科, 情報基盤センター 目次 1 準備 問題の定義 αβ 法 16 2 αβ 法の並列化 概要 Young Brothers Wa 連載講座 : 高生産並列言語を使いこなす (4) ゲーム木探索の並列化 田浦健次朗 東京大学大学院情報理工学系研究科, 情報基盤センター 目次 1 準備 16 1.1 問題の定義 16 1.2 αβ 法 16 2 αβ 法の並列化 17 2.1 概要 17 2.2 Young Brothers Wait Concept 17 2.3 段数による逐次化 18 2.4 適応的な待機 18 2. 強制終了

More information

I I / 47

I I / 47 1 2013.07.18 1 I 2013 3 I 2013.07.18 1 / 47 A Flat MPI B 1 2 C: 2 I 2013.07.18 2 / 47 I 2013.07.18 3 / 47 #PJM -L "rscgrp=small" π-computer small: 12 large: 84 school: 24 84 16 = 1344 small school small

More information

Taro-リストⅠ(公開版).jtd

Taro-リストⅠ(公開版).jtd 0. 目次 1. 再帰的なデータ構造によるリストの表現 1. 1 リストの作成と表示 1. 1. 1 リストの先頭に追加する方法 1. 1. 2 リストの末尾に追加する方法 1. 1. 3 昇順を保存してリストに追加する方法 1. 2 問題 問題 1 問題 2-1 - 1. 再帰的なデータ構造によるリストの表現 リストは データの一部に次のデータの記憶場所を示す情報 ( ポインタという ) を持つ構造をいう

More information

2015 TRON Symposium セッション 組込み機器のための機能安全対応 TRON Safe Kernel TRON Safe Kernel の紹介 2015/12/10 株式会社日立超 LSIシステムズ製品ソリューション設計部トロンフォーラム TRON Safe Kernel WG 幹事

2015 TRON Symposium セッション 組込み機器のための機能安全対応 TRON Safe Kernel TRON Safe Kernel の紹介 2015/12/10 株式会社日立超 LSIシステムズ製品ソリューション設計部トロンフォーラム TRON Safe Kernel WG 幹事 2015 TRON Symposium セッション 組込み機器のための機能安全対応 TRON Safe Kernel TRON Safe Kernel の紹介 2015/12/10 株式会社日立超 LSIシステムズ製品ソリューション設計部トロンフォーラム TRON Safe Kernel WG 幹事 豊山 祐一 Hitachi ULSI Systems Co., Ltd. 2015. All rights

More information

04-process_thread_2.ppt

04-process_thread_2.ppt オペレーティングシステム ~ 保護とシステムコール ~ 山田浩史 hiroshiy @ cc.tuat.ac.jp 2015/05/08 復習 : OS の目的 ( 今回の話題 ) 裸のコンピュータを抽象化 (abstraction) し より使いやすく安全なコンピュータとして見せること OS はハードウェアを制御し アプリケーションの効率的な動作や容易な開発を支援する OS がないと 1 つしかプログラムが動作しない

More information

Microsoft PowerPoint - 14Chap17.ppt

Microsoft PowerPoint - 14Chap17.ppt 17.1 do-while 文 p.161 例 17.1.1 p.22 例 5.1.1 第 17 章その他の制御文 17.1 do-while 文 17.2 goto 文とラベル 17.3 break 文による繰返し制御 17.4 continue 文による繰返し制御 /* ex17_1_1.c */ do while (i < 10); 条件を満たさなくても 1 回は実行 i = 10; とすると違いがわかる

More information

並行システムの検証と実装

並行システムの検証と実装 並行システムの検証と実装 第 12 章並行システムの実装 1 同期機構による実装 PRINCIPIA Limited 初谷久史 2015 PRINCIPIA Limited システムの設計 ( 振る舞い側面 ) 上流へ 要求 振る舞い仕様化 振る舞い仕様 比較 比較結果 コンポーネントモデル 0 コンポーネント分割と振る舞いモデル化 コンポーネントモデル 1 合成 システムモデル コンポーネントモデル

More information

C

C C 1 2 1.1........................... 2 1.2........................ 2 1.3 make................................................ 3 1.4....................................... 5 1.4.1 strip................................................

More information

生物情報実験法 (オンライン, 4/20)

生物情報実験法 (オンライン, 4/20) 生物情報実験法 (7/23) 笠原雅弘 (mkasa@cb.k.u-tokyo.ac.jp) Table of Contents スレッドの使い方 OpenMP プログラミング Deadline The deadline is Aug 5 23:59 Your e-mail must have reached my e-mail box at the deadline time. It may take

More information

Microsoft PowerPoint - OS04.pptx

Microsoft PowerPoint - OS04.pptx この資料は 情報工学レクチャーシリーズオペレーティングシステム松尾啓志著 ( 森北出版株式会社 ) を用いて授業を行うために 名古屋工業大学松尾啓志 津邑公暁が作成しました オペレーティングシステム #4 並行プロセス : 排他制御基礎 パワーポイント 2007 で最終版として保存しているため 変更はできませんが 授業でお使いなる場合は松尾 (matsuo@nitech.ac.jp) まで連絡いただければ

More information

マルチスレッドアーキテクチャにおける スレッドライブラリの実装と評価

マルチスレッドアーキテクチャにおける スレッドライブラリの実装と評価 修士学位論文発表 マルチスレッドアーキテクチャにおける システムソフトウェアの研究 A study on Systems Software for Multithreaded Architecture 2004 2/12 東京農工大学大学院工学研究科情報コミュニケーション工学専攻並木研究室 03646109 笹田耕一 1 背景 マルチスレッドアーキテクチャプロセッサ 1 チップ上で複数の命令流 (

More information

コードのチューニング

コードのチューニング OpenMP による並列化実装 八木学 ( 理化学研究所計算科学研究センター ) KOBE HPC Spring School 2019 2019 年 3 月 14 日 スレッド並列とプロセス並列 スレッド並列 OpenMP 自動並列化 プロセス並列 MPI プロセス プロセス プロセス スレッドスレッドスレッドスレッド メモリ メモリ プロセス間通信 Private Private Private

More information

01-introduction.ppt

01-introduction.ppt オペレーティングシステム ~ イントロダクション ~ 山田浩史 hiroshiy @ cc.tuat.ac.jp 2015/04/10 オペレーティングシステム 担当 : 山田浩史 ( やまだひろし ) mail: hiroshiy @ cc.tuat.ac.jp 質問等ありましたら気軽にメールをしてください 専門分野 オペレーティングシステムや仮想マシンモニタといった システムソフトウェア と呼ばれる分野

More information

,…I…y…„†[…e…B…fi…O…V…X…e…•‡Ì…J†[…l…‰fi®“ì‡Ì›Â”‰›»pdfauthor

,…I…y…„†[…e…B…fi…O…V…X…e…•‡Ì…J†[…l…‰fi®“ì‡Ì›Â”‰›»pdfauthor OS 1 1 4 1.1........................................... 4 1.2........................................... 4 2 5 2.1..................................... 5 2.2 OS................................... 5 3 7

More information

Intel® Compilers Professional Editions

Intel® Compilers Professional Editions 2007 6 10.0 * 10.0 6 5 Software &Solutions group 10.0 (SV) C++ Fortran OpenMP* OpenMP API / : 200 C/C++ Fortran : OpenMP : : : $ cat -n main.cpp 1 #include 2 int foo(const char *); 3 int main()

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション プログラミング応用演習 第 4 回再帰的構造体 プログラミングを 余談 : 教えることの難しさ 丁寧に説明しないと分かってもらえない 説明すると 小難しくなる学生が目指すべきところプログラム例を説明されて理解できる違うやり方でも良いので自力で解決できる おっけー 動けば良い という意識でプログラミング 正しく動くことのチェックは必要 解答例と自分のやり方との比較が勉強になる 今日のお題 再帰的構造体

More information

SpeC記述のC記述への変換 (SpecCによるソフトウェア記述の実装記述への変換)

SpeC記述のC記述への変換 (SpecCによるソフトウェア記述の実装記述への変換) TOPPERS プロジェクトプレス発表 2009 年 4 月 23 日 TOPPERS/FMP カーネル TraceLogVisualizer(TLV) 本田晋也 名古屋大学大学院情報科学研究科附属組込みシステム研究センター (NCES) 助教 honda@ertl.jp 1 TOPPERS/FMP カーネル 2 組込みシステムにおけるマルチプロセッサの利用 大きく二つの理由により利用が進んでいる

More information

連載講座 : 高生産並列言語を使いこなす (5) 分子動力学シミュレーション 田浦健次朗 東京大学大学院情報理工学系研究科, 情報基盤センター 目次 1 問題の定義 17 2 逐次プログラム 分子 ( 粒子 ) セル 系の状態 ステップ 18

連載講座 : 高生産並列言語を使いこなす (5) 分子動力学シミュレーション 田浦健次朗 東京大学大学院情報理工学系研究科, 情報基盤センター 目次 1 問題の定義 17 2 逐次プログラム 分子 ( 粒子 ) セル 系の状態 ステップ 18 連載講座 : 高生産並列言語を使いこなす (5) 分子動力学シミュレーション 田浦健次朗 東京大学大学院情報理工学系研究科, 情報基盤センター 目次 1 問題の定義 17 2 逐次プログラム 17 2.1 分子 ( 粒子 ) 17 2.2 セル 17 2.3 系の状態 18 2.4 1ステップ 18 2.5 力の計算 19 2.6 速度と位置の更新 20 2.7 セル間の分子の移動 21 3 OpenMP

More information

一般的なスレッド : POSIX スレッドの説明 : 第 2 回 mutex というちょっとしたもの Daniel Robbins President/CEO Gentoo Technologies, Inc 年 8 月 01 日 POSIX スレッドは コードの応答性とパフォーマンスを

一般的なスレッド : POSIX スレッドの説明 : 第 2 回 mutex というちょっとしたもの Daniel Robbins President/CEO Gentoo Technologies, Inc 年 8 月 01 日 POSIX スレッドは コードの応答性とパフォーマンスを 一般的なスレッド : POSIX スレッドの説明 : 第 2 回 mutex というちょっとしたもの Daniel Robbins President/CEO Gentoo Technologies, Inc. 2000 年 8 月 01 日 POSIX スレッドは コードの応答性とパフォーマンスを向上させる優れた方法です 3 回シリーズの第 2 回である今回の記事では mutex というちょっとした優れた手段により

More information

N08

N08 CPU のキモチ C.John 自己紹介 英語きらい 絵かけない 人の話を素直に信じない CPUにキモチなんてない お詫び 予告ではCとC# とありましたがやる気と時間の都合上 C++のみを対象とします 今日のネタ元 MSDN マガジン 2010 年 10 月号 http://msdn.microsoft.com/ja-jp/magazine/cc850829.aspx Windows と C++

More information

( CUDA CUDA CUDA CUDA ( NVIDIA CUDA I

(    CUDA CUDA CUDA CUDA (  NVIDIA CUDA I GPGPU (II) GPGPU CUDA 1 GPGPU CUDA(CUDA Unified Device Architecture) CUDA NVIDIA GPU *1 C/C++ (nvcc) CUDA NVIDIA GPU GPU CUDA CUDA 1 CUDA CUDA 2 CUDA NVIDIA GPU PC Windows Linux MaxOSX CUDA GPU CUDA NVIDIA

More information

はじめに Web アプリケーションの発展と普及の勢いは弱まる兆しがありません 弱まるどころか 加速し続けています これは これまでの ERP CRM Web 2.0 などの Web ベースアプリケーションが提供してきたメリットを考えると 不思議なことではありません Web アプリケーションの爆発的拡

はじめに Web アプリケーションの発展と普及の勢いは弱まる兆しがありません 弱まるどころか 加速し続けています これは これまでの ERP CRM Web 2.0 などの Web ベースアプリケーションが提供してきたメリットを考えると 不思議なことではありません Web アプリケーションの爆発的拡 ncore テクノロジー Web アプリケーションデリバリー性能の飛躍的向上 www.citrix.com はじめに Web アプリケーションの発展と普及の勢いは弱まる兆しがありません 弱まるどころか 加速し続けています これは これまでの ERP CRM Web 2.0 などの Web ベースアプリケーションが提供してきたメリットを考えると 不思議なことではありません Web アプリケーションの爆発的拡大の一方で

More information

インテル® スレッドチェッカー 3.1 Linux* 版

インテル® スレッドチェッカー 3.1 Linux* 版 ... 2 1.... 3 2.... 5 3.... 7 4.... 10 Intel's Terms and Conditions of Sale IntelIntel Intel Corporation * 2007 Intel Corporation. 313445JA 001 2006 5 313445 JA 002 2006 9 2 : 313445-002JA 1. primes 1

More information

( ) 3 1 ( ), ( ).. 1

( ) 3 1 ( ), ( ).. 1 30 2019 1 22 ( ) 3 1 ( ), 2-9 5 ( ).. 1 1. ( T):,? ( O):, T:,? O:!?,!?,... T:,,,? O:!?,,, OS? T:,, SSD, OS, CPU, OS SSD,? O:,,...? T: : OS,,, ( ) (1),. Linux, Unix OS. (2), (permission), (owner)., ( :

More information

joho09.ppt

joho09.ppt s M B e E s: (+ or -) M: B: (=2) e: E: ax 2 + bx + c = 0 y = ax 2 + bx + c x a, b y +/- [a, b] a, b y (a+b) / 2 1-2 1-3 x 1 A a, b y 1. 2. a, b 3. for Loop (b-a)/ 4. y=a*x*x + b*x + c 5. y==0.0 y (y2)

More information

OpenMP 3.0 C/C++ 構文の概要

OpenMP 3.0 C/C++ 構文の概要 OpenMP 3.0 C/C++ 構文の概要 OpenMP API 仕様については www.openmp.org でダウンロードしてください OpenMP 実行宣言子は 後続の構造化ブロックや OpenMP 構文に適用されます 構造化ブロック () とは 単文または先頭に入口が 1 つ 末尾に出口が 1 つの複合文です parallel 構文はスレッドのチームを形成し 並列実行を開始します #pragma

More information

file:///D|/C言語の擬似クラス.txt

file:///D|/C言語の擬似クラス.txt 愛知障害者職業能力開発校 システム設計科 修了研究発表会報告書 題名 : C 言語の擬似クラス あらまし : C 言語でクラスを作れるという噂の真偽を確かめるために思考錯誤した まえがき : VC++ や Java その他オブジェクト指向の言語にはクラスが存在して クラスはオブジェクトの設計図である 手法 : C++ のクラスを解析して C++ のクラスを作成して C 言語に翻訳する class struct

More information

NUMAの構成

NUMAの構成 メッセージパッシング プログラミング 天野 共有メモリ対メッセージパッシング 共有メモリモデル 共有変数を用いた単純な記述自動並列化コンパイラ簡単なディレクティブによる並列化 :OpenMP メッセージパッシング 形式検証が可能 ( ブロッキング ) 副作用がない ( 共有変数は副作用そのもの ) コストが小さい メッセージパッシングモデル 共有変数は使わない 共有メモリがないマシンでも実装可能 クラスタ

More information

Presentation title (on one or two lines)

Presentation title (on one or two lines) 社会インフラシステムへの Linux の適用 Applying Linux to Social Infrastructure Systems ( 株 ) 東芝宮川雅紀 2016 年 3 月 11 日 2016 Toshiba Corporation 自己紹介 2016 Toshiba Corporation 2 目次 システム概要 Linux 適用で発生した問題の事例 事例 1 : pthread_mutex_lockによるデッドロック

More information

Thread

Thread 14 2013 7 16 14.1....................................... 14 1 14.2 Thread................................... 14 1 14.3............................. 14 5 14.4....................................... 14 10

More information

PC Windows 95, Windows 98, Windows NT, Windows 2000, MS-DOS, UNIX CPU

PC Windows 95, Windows 98, Windows NT, Windows 2000, MS-DOS, UNIX CPU 1. 1.1. 1.2. 1 PC Windows 95, Windows 98, Windows NT, Windows 2000, MS-DOS, UNIX CPU 2. 2.1. 2 1 2 C a b N: PC BC c 3C ac b 3 4 a F7 b Y c 6 5 a ctrl+f5) 4 2.2. main 2.3. main 2.4. 3 4 5 6 7 printf printf

More information

Microsoft PowerPoint - GPGPU実践基礎工学(web).pptx

Microsoft PowerPoint - GPGPU実践基礎工学(web).pptx 並列計算の概念 ( プロセスとスレッド ) 長岡技術科学大学電気電子情報工学専攻出川智啓 今回の内容 並列計算の分類 並列アーキテクチャ 並列計算機システム 並列処理 プロセスとスレッド スレッド並列化 OpenMP プロセス並列化 MPI 249 CPU の性能の変化 動作クロックを向上させることで性能を向上 http://pc.watch.impress.co.jp/docs/2003/0227/kaigai01.htm

More information

2015_collabo_04

2015_collabo_04 Cortex-M にも広がってきたマルチコアプログラミング ~ARM コア搭載東芝汎用マイコン無料コラボセミナー 2015~ 株式会社エーアイコーポレーション TOPPERS グループ はじめに ~ARM コア搭載東芝汎用マイコン無料コラボセミナー 2015~ 2015/2/9 A. I. Corporation 2 講演内容 Cortex-A だけでなく Cortex-M においてもマルチコアを搭載した汎用マイコンが登場してきています

More information

r07.dvi

r07.dvi 19 7 ( ) 2019.4.20 1 1.1 (data structure ( (dynamic data structure 1 malloc C free C (garbage collection GC C GC(conservative GC 2 1.2 data next p 3 5 7 9 p 3 5 7 9 p 3 5 7 9 1 1: (single linked list 1

More information

Pervasive PSQL v11 のベンチマーク パフォーマンスの結果

Pervasive PSQL v11 のベンチマーク パフォーマンスの結果 Pervasive PSQL v11 のベンチマークパフォーマンスの結果 Pervasive PSQL ホワイトペーパー 2010 年 9 月 目次 実施の概要... 3 新しいハードウェアアーキテクチャがアプリケーションに及ぼす影響... 3 Pervasive PSQL v11 の設計... 4 構成... 5 メモリキャッシュ... 6 ベンチマークテスト... 6 アトミックテスト... 7

More information

ohp07.dvi

ohp07.dvi 19 7 ( ) 2019.4.20 1 (data structure) ( ) (dynamic data structure) 1 malloc C free 1 (static data structure) 2 (2) C (garbage collection GC) C GC(conservative GC) 2 2 conservative GC 3 data next p 3 5

More information

スパコンに通じる並列プログラミングの基礎

スパコンに通じる並列プログラミングの基礎 2018.09.10 furihata@cmc.osaka-u.ac.jp ( ) 2018.09.10 1 / 59 furihata@cmc.osaka-u.ac.jp ( ) 2018.09.10 2 / 59 Windows, Mac Unix 0444-J furihata@cmc.osaka-u.ac.jp ( ) 2018.09.10 3 / 59 Part I Unix GUI CUI:

More information

スレッドとプロセス

スレッドとプロセス スレッドとプロセス 本題 : スケジューリング 田浦健次朗 スレッド プロセスの目的 CPU を仮想化 物理的な CPU 数は固定, 少数 ラップトップ, スマホ : 1, 2, 4, 8 くらい サーバ : 数十 ポイント : にもかかわらず数十, 数百のプログラムを立ち上げることができる 個々のプログラムを書く人が明示的な 譲り合い をする必要はない スレッドとは? 制御の流れ (thread

More information

Presentation Title

Presentation Title コード生成製品の普及と最新の技術動向 MathWorks Japan パイロットエンジニアリング部 東達也 2014 The MathWorks, Inc. 1 MBD 概要 MATLABおよびSimulinkを使用したモデルベース デザイン ( モデルベース開発 ) 紹介ビデオ 2 MBD による制御開発フローとコード生成製品の活用 制御設計の最適化で性能改善 設計図ですぐに挙動確認 MILS:

More information

スパコンに通じる並列プログラミングの基礎

スパコンに通じる並列プログラミングの基礎 2018.06.04 2018.06.04 1 / 62 2018.06.04 2 / 62 Windows, Mac Unix 0444-J 2018.06.04 3 / 62 Part I Unix GUI CUI: Unix, Windows, Mac OS Part II 2018.06.04 4 / 62 0444-J ( : ) 6 4 ( ) 6 5 * 6 19 SX-ACE * 6

More information

8 / 0 1 i++ i 1 i-- i C !!! C 2

8 / 0 1 i++ i 1 i-- i C !!! C 2 C 2006 5 2 printf() 1 [1] 5 8 C 5 ( ) 6 (auto) (static) 7 (=) 1 8 / 0 1 i++ i 1 i-- i 1 2 2.1 C 4 5 3 13!!! C 2 2.2 C ( ) 4 1 HTML はじめ mkdir work 作業用ディレクトリーの作成 emacs hoge.c& エディターによりソースプログラム作成 gcc -o fuga

More information

I 2 tutimura/ I 2 p.1/??

I 2   tutimura/ I 2 p.1/?? I 2 tutimura@mist.i.u-tokyo.ac.jp http://www.misojiro.t.u-tokyo.ac.jp/ tutimura/ 2002 4 25 I 2 p.1/?? / / Makefile I 2 p.2/?? Makefile make GNU make I 2 p.3/?? Makefile L A T E X I 2 p.4/?? core (1) gcc,

More information

enshu5_4.key

enshu5_4.key http://www.mmsonline.com/articles/parallel-processing-speeds-toolpath-calculations TA : 菅 新 菅沼智史 水曜 新行紗弓 馬淵隼 木曜 情報知能工学演習V (前半第4週) 政田洋平 システム情報学研究科計算科学専攻 演習 V( 前半 ) の内容 第 1 週 : 高性能計算 (High Performance Computing

More information

Microsoft PowerPoint - 5_2-3IPC.pptx

Microsoft PowerPoint - 5_2-3IPC.pptx 2.3.1 競合状態 (race condition) オペレーティングシステム 5 2.3 プロセス間通信 Example Process A Process B i=0 i=0 while(i-10){ i++ i-- print A finished print B finished プロセス A スプーラディレクトリ ( ファイル印刷の待ち配列 ) ここまで印刷した

More information

スパコンに通じる並列プログラミングの基礎

スパコンに通じる並列プログラミングの基礎 2016.06.06 2016.06.06 1 / 60 2016.06.06 2 / 60 Windows, Mac Unix 0444-J 2016.06.06 3 / 60 Part I Unix GUI CUI: Unix, Windows, Mac OS Part II 0444-J 2016.06.06 4 / 60 ( : ) 6 6 ( ) 6 10 6 16 SX-ACE 6 17

More information

Cell/B.E. BlockLib

Cell/B.E. BlockLib Cell/B.E. BlockLib 17 17115080 21 2 10 i Cell/B.E. BlockLib SIMD CELL SIMD Cell Cell BlockLib BlockLib NestStep libspe1 Cell SDK 3.1 libspe2 BlockLib Cell SDK 3.1 NestStep libspe2 BlockLib BlockLib libspe1

More information

Microsoft PowerPoint - ARCEMB08HayashiSlides.ppt [互換モード]

Microsoft PowerPoint - ARCEMB08HayashiSlides.ppt [互換モード] 演算 / メモリ性能バランスを考慮した CMP 向けオンチップ メモリ貸与法の提案 九州大学 林徹生今里賢一井上弘士村上和彰 1 発表手順 背景 目的 演算 / メモリ性能バランシング 概要 アクセスレイテンシの削減とオーバーヘッド 提案手法の実現方法 着目する命令 (Cell プロセッサへの ) 実装 性能評価 姫野ベンチマーク Susan@MiBench おわりに 2 チップマルチプロセッサ (CMP)

More information

ただし 無作為にスレッドを複数実行すると 結果不正やデッドロックが起きる可能性がある 複数のスレッド ( マルチスレッド ) を安全に実行する ( スレッドセーフにする ) ためには 同期処理を用いるこ とが必要になる 同期処理は 予約語 synchronized で行うことができる ここでは sy

ただし 無作為にスレッドを複数実行すると 結果不正やデッドロックが起きる可能性がある 複数のスレッド ( マルチスレッド ) を安全に実行する ( スレッドセーフにする ) ためには 同期処理を用いるこ とが必要になる 同期処理は 予約語 synchronized で行うことができる ここでは sy オブジェクト指向プログラミング演習 2010/10/27 演習課題 スレッド ( その 2) 同期処理 結果不正 デッドロック 前回のスレッドの演習では 複数のスレッドを実行し 一つのプログラムの中の違う処理を同時に実行し た ただし 無作為にスレッドを複数実行すると 結果不正やデッドロックが起きる可能性がある 複数のスレッド ( マルチスレッド ) を安全に実行する ( スレッドセーフにする )

More information

B

B B 27 1153021 28 2 10 1 1 5 1.1 CPU................. 5 1.2.... 5 1.3.... 6 1.4.. 7 1.5................................ 8 2 9 2.1.................................. 9 2.2............................ 10 2.3............................

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション プログラミング応用演習 第 4 回再帰的構造体 前回の出席確認演習 #include int main() { FILE *fp; int c, linecount, length, maxlength; fp=fopen("/usr/share/dict/words","r"); if (fp == NULL) return 1; linecount=0; length=0;

More information

情報処理学会研究報告 IPSJ SIG Technical Report メニーコア混在型並列計算機におけるスレッド管理方式 1 長嶺精彦吉永一美 3 1 坂本龍一辻田祐一 3 並木美太郎 1 佐藤未来子 4 堀敦史 2 下沢拓 石川裕 本稿では, エクサコンピュータの実現に向けて今後主流となるメニ

情報処理学会研究報告 IPSJ SIG Technical Report メニーコア混在型並列計算機におけるスレッド管理方式 1 長嶺精彦吉永一美 3 1 坂本龍一辻田祐一 3 並木美太郎 1 佐藤未来子 4 堀敦史 2 下沢拓 石川裕 本稿では, エクサコンピュータの実現に向けて今後主流となるメニ メニーコア混在型並列計算機におけるスレッド管理方式 1 長嶺精彦吉永一美 3 1 坂本龍一辻田祐一 3 並木美太郎 1 佐藤未来子 4 堀敦史 2 下沢拓 石川裕 本稿では, エクサコンピュータの実現に向けて今後主流となるメニーコアアーキテクチャを備えるシステムを対象とした基盤ソフトウェアについて報告する. 本研究では, メニーコア向け OS の軽量なスレッド管理方式と, メニーコア側の OS 内部処理の軽減のために

More information

Quartus II ハンドブック Volume 5、セクションIV. マルチプロセッサの調整

Quartus II ハンドブック  Volume 5、セクションIV. マルチプロセッサの調整 IV. SOPC Builder Nios II 9 Avalon Mutex 10 Avalon Mailbox 9 10 / 9 v5.1.0 2005 5 v5.0.0 Nios II 2004 12 v1.0 10 v5.1.0 2005 5 v5.0.0 Altera Corporation IV 1 Quartus II Volume 5 IV 2 Altera Corporation

More information

kiso2-09.key

kiso2-09.key 座席指定はありません 計算機基礎実習II 2018 のウェブページか 第9回 ら 以下の課題に自力で取り組んで下さい 計算機基礎実習II 第7回の復習課題(rev07) 第9回の基本課題(base09) 第8回試験の結果 中間試験に関するコメント コンパイルできない不完全なプログラムなど プログラミングに慣れていない あるいは複雑な問題は 要件 をバラして段階的にプログラムを作成する exam08-2.c

More information

概要 プログラミング論 変数のスコープ, 記憶クラス. メモリ動的確保. 変数のスコープ 重要. おそらく簡単. 記憶クラス 自動変数 (auto) と静的変数 (static). スコープほどではないが重要.

概要 プログラミング論 変数のスコープ, 記憶クラス. メモリ動的確保. 変数のスコープ 重要. おそらく簡単. 記憶クラス 自動変数 (auto) と静的変数 (static). スコープほどではないが重要. 概要 プログラミング論 変数のスコープ, 記憶クラス. メモリ動的確保. 変数のスコープ 重要. おそらく簡単. 記憶クラス 自動変数 (auto) と静的変数 (static). スコープほどではないが重要. http://www.ns.kogakuin.ac.jp/~ct13140/progc/ C-2 ブロック 変数のスコープ C 言語では, から をブロックという. for( ) if( )

More information

I. Backus-Naur BNF : N N 0 N N N N N N 0, 1 BNF N N 0 11 (parse tree) 11 (1) (2) (3) (4) II. 0(0 101)* (

I. Backus-Naur BNF : N N 0 N N N N N N 0, 1 BNF N N 0 11 (parse tree) 11 (1) (2) (3) (4) II. 0(0 101)* ( 2016 2016 07 28 10:30 12:00 I. I VI II. III. IV. a d V. VI. 80 100 60 1 I. Backus-Naur BNF : 11011 N N 0 N N 11 1001 N N N N 0, 1 BNF N N 0 11 (parse tree) 11 (1) 1100100 (2) 1111011 (3) 1110010 (4) 1001011

More information

Informatics 2014

Informatics 2014 C 計算機の歴史 手回し計算機 新旧のソロバン バベッジの階差機関 スパコン ENIAC (1946) パソコン 大型汎用計算機 電卓 現在のコンピュータ Input Output Device Central Processing Unit I/O CPU Memory OS (Operating System) OS Windows 78, Vista, XP Windows Mac OS X

More information

ohp03.dvi

ohp03.dvi 19 3 ( ) 2019.4.20 CS 1 (comand line arguments) Unix./a.out aa bbb ccc ( ) C main void int main(int argc, char *argv[]) {... 2 (2) argc argv argc ( ) argv (C char ) ( 1) argc 4 argv NULL. / a. o u t \0

More information

プログラミング基礎

プログラミング基礎 C プログラミング Ⅰ 授業ガイダンス C 言語の概要プログラム作成 実行方法 授業内容について 授業目的 C 言語によるプログラミングの基礎を学ぶこと 学習内容 C 言語の基礎的な文法 入出力, 変数, 演算, 条件分岐, 繰り返し, 配列,( 関数 ) C 言語による簡単な計算処理プログラムの開発 到達目標 C 言語の基礎的な文法を理解する 簡単な計算処理プログラムを作成できるようにする 授業ガイダンス

More information

memo

memo 数理情報工学演習第一 C プログラミング演習 ( 第 5 回 ) 2015/05/11 DEPARTMENT OF MATHEMATICAL INFORMATICS 1 今日の内容 : プロトタイプ宣言 ヘッダーファイル, プログラムの分割 課題 : 疎行列 2 プロトタイプ宣言 3 C 言語では, 関数や変数は使用する前 ( ソースの上のほう ) に定義されている必要がある. double sub(int

More information

GPGPU

GPGPU GPGPU 2013 1008 2015 1 23 Abstract In recent years, with the advance of microscope technology, the alive cells have been able to observe. On the other hand, from the standpoint of image processing, the

More information

Microsoft Word - Training10_プリプロセッサ.docx

Microsoft Word - Training10_プリプロセッサ.docx Training 10 プリプロセッサ 株式会社イーシーエス出版事業推進委員会 1 Lesson1 マクロ置換 Point マクロ置換を理解しよう!! マクロ置換の機能により 文字列の置き換えをすることが出来ます プログラムの可読性と保守性 ( メンテナンス性 ) を高めることができるため よく用いられます マクロ置換で値を定義しておけば マクロの値を変更するだけで 同じマクロを使用したすべての箇所が変更ができるので便利です

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション システムプログラミング演習 田浦 演習を通して学んでほしいこと ネットワークプログラミング インターネットの基本 ソケット HTTP (webのプロトコル) HTML ( ほんの少し ) スレッドプログラミング Webサーバの基本的な構成 ( ミニチュア ) 情報源 UNIX : man ページ man recv man 2 recv man 3 recv Windows : MSDN ライブラリ

More information

(ch2 + i)->next = ch1 + r; doit(ch1, ch2); 図 1 ランダムアクセスする C ソース 時間 (elapsed) 32 ビットプログラム (gcc -O2 -m32 でコンパイル ) 6.23 秒 秒 64 ビットプログラム (gcc -O2 -m

(ch2 + i)->next = ch1 + r; doit(ch1, ch2); 図 1 ランダムアクセスする C ソース 時間 (elapsed) 32 ビットプログラム (gcc -O2 -m32 でコンパイル ) 6.23 秒 秒 64 ビットプログラム (gcc -O2 -m Java VM の 32 ビット 64 ビット選択 2013 年 9 月 21 日 数村憲治 現在 サーバー向け OS の主流は 64ビット OS となりつつあります 32ビット OS では 搭載できるメモリ量に制約があるため 大規模システムには向かなくなってきています OS の64ビット化に伴い OS の上で動作するミドルウェアやアプリケーションも64ビット化に向かいつつあります 一方 ほとんどの64ビット

More information

C C UNIX C ( ) 4 1 HTML 1

C C UNIX C ( ) 4 1 HTML 1 C 2007 4 18 C UNIX 1 2 1 1.1 C ( ) 4 1 HTML 1 はじめ mkdir work 作業用ディレクトリーの作成 emacs hoge.c& エディターによりソースプログラム作成 gcc -o fuga hoge.c コンパイルにより機械語に変換 コンパイルエラー./fuga 実行 実行時エラー 完成 1: work hooge.c fuga 1 4 4 1 1.

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション vsmp Foundation スケーラブル SMP システム スケーラブル SMP システム 製品コンセプト 2U サイズの 8 ソケット SMP サーバ コンパクトな筐体に多くのコアとメモリを実装し SMP システムとして利用可能 スイッチなし構成でのシステム構築によりラックスペースを無駄にしない構成 将来的な拡張性を保証 8 ソケット以上への拡張も可能 2 システム構成例 ベースシステム 2U

More information

TopSE並行システム はじめに

TopSE並行システム はじめに はじめに 平成 23 年 9 月 1 日 トップエスイープロジェクト 磯部祥尚 ( 産業技術総合研究所 ) 2 本講座の背景と目標 背景 : マルチコア CPU やクラウドコンピューティング等 並列 / 分散処理環境が身近なものになっている 複数のプロセス ( プログラム ) を同時に実行可能 通信等により複数のプロセスが協調可能 並行システムの構築 並行システム 通信 Proc2 プロセス ( プログラム

More information