コンピュータアーキテクチャ特論 cell プログラミング課題

19
コココココココココココココココ CELL コココココココココ 2011/06/24 連連連[email protected]

Upload: clover

Post on 23-Jan-2016

99 views

Category:

Documents


0 download

DESCRIPTION

2011/06/24 連絡先: cell-contest @am.ics.keio.ac.jp.  コンピュータアーキテクチャ特論 Cell プログラミング課題. 目次. はじめに Cell Broadband Engine Cell API を用いたプログラミング方法 課題: kmeans 法のアルゴリズム 課題 の進め方 注意 事項. はじめに. マルチコアプロセッサ上でのプログラミング プログラマはマルチコアであることを意識してプログラミングする 例) pthread 関数 , OpenMP Cell Broadband Engine - PowerPoint PPT Presentation

TRANSCRIPT

Page 1:  コンピュータアーキテクチャ特論 Cell  プログラミング課題

 コンピュータアーキテクチャ特論CELL プログラミング課題

2011/06/24

連絡先: [email protected]

Page 2:  コンピュータアーキテクチャ特論 Cell  プログラミング課題

目次 はじめに Cell Broadband Engine Cell APIを用いたプログラミング方法 課題: kmeans法のアルゴリズム 課題の進め方 注意事項

Page 3:  コンピュータアーキテクチャ特論 Cell  プログラミング課題

はじめに マルチコアプロセッサ上でのプログラミング

プログラマはマルチコアであることを意識してプログラミングする○ 例) pthread関数 , OpenMP

Cell Broadband EnginePlayStation3にも搭載されているヘテロジニアスマルチコアプロセッサ

ヘテロジニアス型ゆえに独自のプログラミングテクニック○ Pthread + Cellプログラミング独自のAPI

課題:シングルコア用ソースコードを Cell/B.E.用に改造して高速化してくださいコンテスト形式で行う

Page 4:  コンピュータアーキテクチャ特論 Cell  プログラミング課題

コンテスト環境天野研究室  YGM72の写真

Page 5:  コンピュータアーキテクチャ特論 Cell  プログラミング課題

天野研究室  YGM72の構成

BCU-100 BCU-100 BCU-100 BCU-100x86

server

16 PS3s

16 PS3s

16 PS3s

16 PS3s

8PS3

global network

local network

GbE

Cell搭載サーバコンテストで使用

Page 6:  コンピュータアーキテクチャ特論 Cell  プログラミング課題

Cell Broadband Engineの構成 非対称型マルチコアプロセッサ

PlayStation3等に搭載

制御用コアの PPE×1 MainMemory  1GB (BCU-100)

演算用コアの SPE×8 LocalStore(LS) 256 KB PPEが持つメインメモリに直接アクセス不可

コア間は Element Interconnect Bus(EIB: 約400 Gbps)にて接続

SPE

Cell/B.E.

EIB

PPE

SPE

SPE

SPE

SPE

SPE

SPE

SPE

Page 7:  コンピュータアーキテクチャ特論 Cell  プログラミング課題

PPE ・ SPE間通信 APIには主に2種類あるSPE制御 API ( PPEが発行)データ転送 API (主に SPEが発行)

SPEはメインメモリに直接アクセス不可

PPE ・ SPE間の通信 API

Page 8:  コンピュータアーキテクチャ特論 Cell  プログラミング課題

Cellプログラミングの流れ

PPEメインメモリ

SPE

SPE

SPE

SPE

①spe_image_open関数②spe_context_create関数③spe_program_load関数④spe_context_run関数

⑤spe_context_destroy関数⑥spe_image_close関数ディス

SPE

SPE

以上のようにしてPPEが SPEを制御する

■  spu_mfcdma64関数

SPE

SPE

Page 9:  コンピュータアーキテクチャ特論 Cell  プログラミング課題

課題: Kmeans法 クラスタリングの手法

今回の課題では、シングルコアのみで動作する関数として実装されているkmeans法を Cell用に改変してもらいます

Page 10:  コンピュータアーキテクチャ特論 Cell  プログラミング課題

Kmeans法のアルゴリズム (1/5)

初期状態:何色かの点 (ノード )がランダムに散らばっている(この例では 100ノード、 5色 )

STEP1:各色のノードの集合に関して重心を計算(図の Xがそれぞれの重心 )

とってもわかりやすい参考 URL: http://d.hatena.ne.jp/nitoyon/20090409/kmeans_visualise

Page 11:  コンピュータアーキテクチャ特論 Cell  プログラミング課題

Kmeans法のアルゴリズム (2/5)

STEP2各ノードの色を、もっとも近い重心と同じ色に塗り変える

STEP1:再度、重心をそれぞれの色ごとに計算する

Page 12:  コンピュータアーキテクチャ特論 Cell  プログラミング課題

Kmeans法のアルゴリズム (3/5)

STEP2:再度、各ノードの色を、もっとも近い重心と同じ色に塗り変える

STEP1:再度、重心をそれぞれの色ごとに計算する

Page 13:  コンピュータアーキテクチャ特論 Cell  プログラミング課題

Kmeans法のアルゴリズム (4/5)

STEP2:またまた、各ノードの色を、もっとも近い重心と同じ色に塗り変える

STEP1:またまた、重心をそれぞれの色ごとに計算する

Page 14:  コンピュータアーキテクチャ特論 Cell  プログラミング課題

Kmeans法のアルゴリズム (5/5)

STEP2:またまたまた、各ノードの色を、もっとも近い重心と同じ色に塗り変える

終了条件:すべてのノードが、一番近い重心の色に属していて、もう色を塗り替える必要がない→終了

Page 15:  コンピュータアーキテクチャ特論 Cell  プログラミング課題

課題の進め方 ssh で jikoku.cell.st.keio.ac.jpにログイン kmeans.tar.gzをダウンロード、展開 kmeans内のサンプルコードを参考にしながら 課題1: PPEのみで実行しているプログラムを改変して、 SPEを用いて演算できるようにする主に cellkmeans.hを改変するSPE用のプログラム spe.cを新たに作成する

課題2:さらに、 SPEでの実行を高速化するspe.cを改変する

Page 16:  コンピュータアーキテクチャ特論 Cell  プログラミング課題

kmeansディレクトリについて kmeansディレクトリの中身

cellkmeans.h : Kmeans法を記述しているファイル・主にこれを改変する

define.h : 必要に応じて改変可main.c : 改変不可spe.c : spe上で実行されるコード・新たに作成するcheck.c : OpenCVによる出力結果の描画gen.c : inputファイル生成Makefile

ただし、公平性のためコンパイルオプション等はこちらで指定したものを用いて最終的に評価します

Page 17:  コンピュータアーキテクチャ特論 Cell  プログラミング課題

サンプルコードについて hello world

multiple_spe_ver: 複数 SPEを pthreadで制御○ テンプレートとしてよければどうぞ○ 比較用として

multiple_pthread_ver (PPEのみ )single_pthread_ver (PPEのみ )single_spe_ver

mfcPPE-SPE間のデータ転送記述例

Page 18:  コンピュータアーキテクチャ特論 Cell  プログラミング課題

高速なプログラムを目指して 並列化①: SPE を複数用いて演算 <- 必須

特に、STEP2は演算量が多いのでうまく並列化できないか○ ノード数 × 色数の分だけユークリッド距離を計算して比較

並列化②:SPEにてSIMD(Single Instruction Multiple Data)演算を用いる

その他:ループアンローリング、ダブルバッファリングなどCellプログラミングに関してさらに詳しい内容は Fixstarsのwebチュートリアルを参照○ http://cell.fixstars.com/ps3linux/index.php/Cell

%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB

Page 19:  コンピュータアーキテクチャ特論 Cell  プログラミング課題

注意事項 まず、初めにやること

[email protected]にメール○ 氏名を明記○ 折り返し、アカウントと初期パスワードを送ります

自動返信ではないので、返信まで少々時間を頂きます (遅くとも 24時間以内には返信します )

課題締切: 2011 年 7 月 15 日 ( 金 ) 24:00 厳守!! 提出方法: ~/comparch以下に置く

提出物:ソースコード、簡単なレポート 連絡等があればウェブページにて行います。 トラブル・リクエスト等、何かあれば、  

[email protected] まで。