先進的計算基盤システムシンポジウム SACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」

Slides:



Advertisements
Similar presentations
1 高速フーリエ変換 (fast Fourier transform). 2 高速フーリエ変換とは? – 簡単に言うとフーリエ変換を効率よく計算 する方法 – アルゴリズムの設計技法は分割統治法に基 づいている 今回の目的は? – 多項式の積を求める問題を取り上げ、高速 フーリエ変換のアルゴリズムを用いた解法.
Advertisements

プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
Chapter11-4(前半) 加藤健.
離散システム特論 整列(sorting)アルゴリズム 2.
アルゴリズムイントロダクション第2章 主にソートに関して
第12回 ソート(3): シェルソート、クイックソート
第11回 整列 ~ シェルソート,クイックソート ~
第11回 整列 ~ バケットソート,基数ソート,ヒープソート~
計算機システムⅡ 主記憶装置とALU,レジスタの制御
問題提起その 1 一文字ずつ文字(数字)を読み込み、それぞれの文字が何回入力されたかを数えて出力するプログラム。
アルゴリズムとデータ構造 --- 理論編 --- 山本 真基
第10回 ソート(1):単純なソートアルゴリズム
C言語 配列 2016年 吉田研究室.
情報工学概論 (アルゴリズムとデータ構造)
オペレーティングシステムJ/K 2004年11月4日
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング システムプログラミング プロセス間通信(パイプ) 担当:青木義満
アルゴリズムとデータ構造 2011年6月13日
データ構造とアルゴリズム 分割統治 ~ マージソート~.
岩井 儀雄 コンピュータ基礎演習  ー探索、整列ー 岩井 儀雄
第7章 データベース管理システム 7.1 データベース管理システムの概要 7.2 データベースの格納方式 7.3 問合せ処理.
データ構造と アルゴリズム 第八回 知能情報学部 新田直也.
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
データ構造と アルゴリズム 第十一回 理工学部 情報システム工学科 新田直也.
データ構造と アルゴリズム 第四回 知能情報学部 新田直也.
第11回 整列 ~ シェルソート,クイックソート ~
第3回 配列,構造体,ポインタ ~ データ構造について学ぶための基礎~
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
定兼邦彦 今井浩 東京大学理学系研究科 情報科学専攻
情報工学概論 (アルゴリズムとデータ構造)
ソートアルゴリズムの種類 選択ソート (selection sort) バブルソート (bubble sort)
2005年度 データ構造とアルゴリズム 第3回 「C言語の復習:再帰的データ構造」
情報工学概論 (アルゴリズムとデータ構造)
講義では、Cプログラミングの基本を学び 演習では、やや実践的なプログラミングを通して学ぶ
第7回 プログラミングⅡ 第7回
アルゴリズムとデータ構造1 2005年7月1日
P n ポインタの基礎 5 q m 5 7 int* p; int 型の変数を指すポインタ int* q; int 型の変数を指すポインタ int n=5, m=7; int 型の変数 int array[3]; int* pArray[3]; p = &n; ポインタにアドレスを代入しているのでOK.
データ構造と アルゴリズム 第五回 知能情報学部 新田直也.
アルゴリズムとプログラミング (Algorithms and Programming)
復習その1+α JBuilderの使い方を思い出す。 配列とGUI
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
プログラミング 4 整列アルゴリズム.
2009/10/23 整列アルゴリズム (1) 第4講: 平成21年10月23日 (金) 4限 E252教室 コンピュータアルゴリズム.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
アルゴリズムとデータ構造1 2006年7月11日
Cell/B.E.のSPE Isolationモードを用いた監視システム
データ構造とアルゴリズム 第11回 リスト構造(1)
アルゴリズムとプログラミング (Algorithms and Programming)
文字列へのポインタの配列 static char *lines[MAXLINES]; lines[0] NULL
データ構造とアルゴリズム (第5回) 静岡大学工学部 安藤和敏
プログラミング演習I 2003年7月2日(第11回) 木村巌.
地理情報システム論(総)/ 国民経済計算論(商)
全体ミーティング (5/23) 村田雅之.
ポインタとポインタを用いた関数定義.
アルゴリズムとデータ構造 2012年6月11日
アルゴリズムとプログラミング (Algorithms and Programming)
オペレーティングシステムJ/K (管理のためのデータ構造)
情報工学概論 (アルゴリズムとデータ構造)
第11回放送授業.
アルゴリズムとデータ構造1 2009年6月15日
ソートのプログラムの流れ 配列の中身を小さい順に並び替える a[1],a[2],…a[n]の値を順に出力する
ヒープソート.
オブジェクト指向言語論 第二回 知能情報学部 新田直也.
アルゴリズムとデータ構造 2010年6月17日
2005年度 データ構造とアルゴリズム 第2回 「C言語の復習:配列」
データ構造と アルゴリズム 第四回 知能情報学部 新田直也.
プログラミング入門2 第5回 配列 変数宣言、初期化について
TList リスト構造とは? 複数のデータを扱うために、 データの内容と、次のデータへのポインタを持つ構造体を使う。
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング論 バイナリーサーチ 1.
Presentation transcript:

先進的計算基盤システムシンポジウム SACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」 ツールキット ver0.4について 先進的計算基盤システムシンポジウム SACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」 先進的計算基盤システムシンポジウムSACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」

先進的計算基盤システムシンポジウムSACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」 この資料について お試し版ツールキットver0.4の解説です SPEを4つ使って,リスト長固定の要素をソートするプログラム 並列ソーティングのアルゴリズムの概要を説明します コードの具体的な処理についてはREADME.txtをお読みください ツールキットver0.4で仮定されている問題は, 規定課題と同一ではありません 先進的計算基盤システムシンポジウムSACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」

ソーティング問題として与えられるデータ配列 float型の配列 大きさは要素の数 n個分 ( n は32の倍数) ツールキットver0.4では n=983040  要素は「キー+データのリスト(7つ)」の合計32Byte よって,配列サイズは n × ((1+7)×sizeof(float)) [Byte] (30MB) 先頭アドレスがbuf_addrで与えられる buf_addrはunsigned int型でメインメモリのアドレス ソーティング対象のデータ buf_addr … 要素 先進的計算基盤システムシンポジウムSACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」

先進的計算基盤システムシンポジウムSACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」 要素について 1要素は「キー+データのリスト」からなる ツールキットver0.4ではリスト長は7 全て単精度浮動小数点実数 1要素は32バイト spe1.cで構造体data_blockとして定義 要素 key data[0] data[1] data[2] data[3] data[4] data[5] data[6] 4byte 4byte 4byte 4byte 4byte 4byte 4byte 4byte 32byte … ソーティング対象のデータ buf_addr 要素 先進的計算基盤システムシンポジウムSACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」

先進的計算基盤システムシンポジウムSACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」 データ配列の値 n個の要素のdata[]部分にランダムな値を格納して, ソーティング対象となる配列を生成する 値の範囲は[0,1] キー部分には0が初期値として入っている 先進的計算基盤システムシンポジウムSACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」

先進的計算基盤システムシンポジウムSACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」 ソートの条件 リストのデータの2乗の和を,その要素のキーの値として定める キーが昇順になるよう,要素を並び替える 先進的計算基盤システムシンポジウムSACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」

先進的計算基盤システムシンポジウムSACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」 ソーティングで利用可能なメモリ領域 「ソーティング対象のデータ」の2倍の量のメモリが, ソーティング対象のデータの後部に追加され, SPEからアクセス可能 PPEでアクセスヒントが設定されている buf_addr ソーティング対象のデータ 空き領域 先進的計算基盤システムシンポジウムSACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」

先進的計算基盤システムシンポジウムSACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」 ソーティングのアルゴリズム(概論) ツールキットver0.4では以下のアルゴリズムを利用する 「クイックソート」 完全シャッフルによるバイトニック・ソート 以下の条件を付ける PPEではソーティングの処理を行わない SPEのみで高速化を図る SPEを4つだけ使う 可読性を保持し,並列実行の方法を示すことを目的とする 性能を犠牲にしても簡単な手順でソーティングを行う方法を例示する mutexやセマフォ,SPE間通信,SIMD演算などは使わない 先進的計算基盤システムシンポジウムSACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」

先進的計算基盤システムシンポジウムSACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」 ソーティングのアルゴリズム(手順1) 「ソーティング対象のデータ」の各要素について,キーを計算する 要素の配列を4つに分割し,4つのSPEでそれぞれキーを計算する 各SPEは,担当する要素を4つずつDMA転送でローカルストレージ(LS)に 読み出し,キーを計算する (4つのdata_blockをまとめて構造体transfer_blockを定義している) キーを各要素の先頭(構造体data_blockのメンバ変数key)に格納し, メインメモリに書き戻す 担当する要素が無くなるまで2と3を繰り返す SPE0 SPE1 SPE2 SPE3 ソーティング対象のデータ 先進的計算基盤システムシンポジウムSACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」

先進的計算基盤システムシンポジウムSACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」 ソーティングのアルゴリズム(手順2) 各要素のキーをもとに,部分ソートを行う 要素を8つの区間に分割し,4つのSPEでそれぞれ2区間のキーを部分ソートする 手順1の区画を2分割する SPEは2つの区間をそれぞれクイックソートでキーの昇順にソートする SPEはメインメモリからLSへ,4つの要素を1単位としてDMA転送してから, 目的の要素のキーを参照する 手順2の後, ソーティング対象のデータは8区間の部分ソート済み配列になる SPE0 SPE1 SPE2 SPE3 quick sort quick sort quick sort quick sort quick sort quick sort quick sort quick sort ソーティング対象のデータ :昇順にソート済みであることを示す 先進的計算基盤システムシンポジウムSACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」

先進的計算基盤システムシンポジウムSACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」 ソーティングのアルゴリズム(手順3-1) 部分配列の2区間を1組として,マージソートを繰り返す 詳細は「並列ソーティング・アルゴリズム」(S・アクル著 啓学出版)や 「並列バイトニックソート」のWeb検索結果などを参照 2つの区間をマージする方法 両区間から4つずつ要素を読み出す マージソートして,昇順に並べた結果を別領域に書き出す ツールキットver0.4では,メインメモリ上のソーティング対象のデータの終わりから, 同じサイズの領域をコピー領域として利用する 2つの区間が併せて昇順にソートされる SPE :昇順にソート済みであることを示す ソーティング対象の1区画 コピー領域 先進的計算基盤システムシンポジウムSACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」

先進的計算基盤システムシンポジウムSACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」 ソーティングのアルゴリズム(手順3-2) マージソートを,ソーティング対象データ領域,コピー領域全体から, 任意の2区画で入出力できるようにする(spe1.c merge_sort_sub関数) 例) 第2区画と第4区画をマージソートして,    結果を第12区画と第10区画に順に格納する merge_sort_sub(sc, 2, elnum, 4, elnum, 12, elnum, 10, elnum) SPE 入力区画 出力区画 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 コピー領域 ソーティング対象のデータ領域 先進的計算基盤システムシンポジウムSACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」

先進的計算基盤システムシンポジウムSACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」 ソーティングのアルゴリズム(手順3-3) 以下のようにマージソートを6ステップ繰り返すことで, 8つの区間のソート済みの部分列は,1本のソート済み配列(昇順)になる コピー領域 バイトニック列が完成 データ領域 step1 step2 step3 step4 step5 step6 区間 0 ( 8) 区間 1 ( 9) 区間 2 (10) 区間 3 (11) 区間 4 (12) 区間 5 (13) 区間 6 (14) 区間 7 (15) 矢印の始点と終点を入力としてマージソートを行う    はデータ領域からデータを読み出し、コピー領域にマージ結果を書き出す    は逆に、コピー領域からデータを読み出してデータ領域にマージ結果を書き出す    ※ stepごとにデータ領域,コピー領域が切り替わる 各ステップには4つの矢印がある(=4つのSPEでソートを並列に実行する) 矢印の始点の区画にソート済み配列の前半を,終点の区画にソート済み配列の後半を格納する 偶数回のステップなので,step6後はデータ領域(区画0-7)にソート済み配列が格納される 先進的計算基盤システムシンポジウムSACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」

先進的計算基盤システムシンポジウムSACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」 ソーティングのアルゴリズム(同期1) クイックソート(手順2),およびマージ(手順3-3)の各ステップでは,4つのSPEが同期を取らなければならない SPEの状態を書き込む領域をメインメモリ上に作り, そこを使って同期を取る 空き領域の最後尾から128バイトを1ブロックずつ, 4ブロックを各SPEの状態として利用することとする 各SPEの状態格納領域は32個のunsigned int配列を持つ構造体 である(spe1.c : struct sync_block参照) spe[3] spe[1] spe[2] spe[0] 128 byte 128 byte 128 byte 128 byte buf_addr 状態格納領域 ソーティング対象のデータ コピー領域 先進的計算基盤システムシンポジウムSACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」

先進的計算基盤システムシンポジウムSACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」 ソーティングのアルゴリズム(同期2) 同期の取り方(バリア同期) 各SPEは同期の必要がある場合,ある状態フラグを 自分の状態格納領域に書き込む 他のSPEの状態格納領域を読み出し,状態フラグをチェックし, 全てのSPEの状態が自分の与えた状態フラグと同一になるまで 2. を繰り返す(spe1.c sync : wait_spe関数) ルール 各SPEが更新してよいのは,自分の状態フラグのみ (spe1.c put_status関数) 他のSPEの状態は読むことができる writable SPE3 SPE2 SPE1 SPE0 spe[3] spe[1] buf_addr spe[2] spe[0] 状態格納領域 先進的計算基盤システムシンポジウムSACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」

先進的計算基盤システムシンポジウムSACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」 まとめ ツールキットver0.4における並列ソーティングは 大きく分けて3つの手順で実行される 各要素のキーを計算する 全体を8つの区間に分けて,それぞれをクイックソート この後同期を取る 8つの区間と同サイズのコピー領域を交互に利用しながら, 部分列をソートする(ステップ6回) ステップごとに同期を取る ステップごとに,入出力の区画がデータ領域,コピー領域で 入れ替わる 先進的計算基盤システムシンポジウムSACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」