slide1
Download
Skip this Video
Download Presentation
分散画像処理環境 VIOS

Loading in 2 Seconds...

play fullscreen
1 / 27

VIOS - PowerPoint PPT Presentation


  • 123 Views
  • Uploaded on

分散画像処理環境 VIOS. 名古屋工業大学電気情報工学科 松尾啓志. 画像処理の並列性. 多くの画像処理は、並列、分散処理に適した処理が多い。 比較的大規模な計算を必要とする場合が多い 独立性の高い処理が多い 画像を入出力とした処理単位(モジュール)を複数組み合わせた処理は、モジュール間の並列性も考慮することができる。. 心臓 収縮期 (造影剤 注入前). 画像処理モジュール. 差分. FFT. LOW PASS. IFFT. 心臓 収縮期 (造影剤 注入後). 差分. 心臓 拡張期 (造影剤 注入前). 心臓 機能像. 差分.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'VIOS' - lowell


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

分散画像処理環境VIOS

名古屋工業大学電気情報工学科

松尾啓志

slide2
画像処理の並列性
  • 多くの画像処理は、並列、分散処理に適した処理が多い。
    • 比較的大規模な計算を必要とする場合が多い
    • 独立性の高い処理が多い
    • 画像を入出力とした処理単位(モジュール)を複数組み合わせた処理は、モジュール間の並列性も考慮することができる。
slide3

心臓

収縮期

(造影剤

注入前)

画像処理モジュール

差分

FFT

LOW

PASS

IFFT

心臓

収縮期

(造影剤

注入後)

差分

心臓

拡張期

(造影剤

注入前)

心臓

機能像

差分

FFT

LOW

PASS

IFFT

心臓

拡張期

(造影剤

注入後)

vios i
VIOSI (1992年)
  • 画像処理モジュール(入力:画像、出力:画像)をRPC(RemoteProcedureCall)で結合したシステム。
  • 3種類のプロセスが協調して、分散画像処理を実行
    • ユーザインタフェースプロセス:VPE
    • 画像処理エンジン:IPU
    • データベース、スケジューラなど:OM
  • 各ワークステーションの負荷予測を元にした分散スケジューリング
vios ii
VIOSII(1994年)
  • 画像処理の局所的な独立性を考慮し、並列画像処理ワーキングセットという考え方を用い、並列画像処理記述言語VPE-Pを開発
  • 画像処理エンジンIPUをIPU-P(インタプリタ言語)が実行する仮想計算機として実装
    • モジュールの動的拡張
    • より精度よい、スケジューリング情報の獲得
vios ii7
VIOSIIの問題点
  • 並列実行の単位が、画像分割のみ
    • 画像の加算、FFT、テンプレートマッチング
  • メインフロー文において、各モジュールは逐次実行しかできない。
  • IPUをインタプリタ言語により駆動される仮想計算機として実装したため処理が遅い。

画像分割によらない並列性の記述の必要性

vios iii
VIOSIIIの拡張方針
  • 並列画像処理記述能力の向上
    • 明らかに並列性があるような処理は、多少記述の容易性を損なっても記述できなければいけない。
  • ネットワークレイテンシの隠蔽
    • ネットワークを介したアクセスは遅い。しかし、明示的なプログラムを書くことにより、ある程度の隠蔽は可能。
  • 絶対的な処理速度の向上
    • インタプリタによる実行を処理の流れを記述するメインフロー記述部だけに限定し、画像処理モジュールはネイティブコード、ダイナミックリンクによる実行。
slide10
リモートデータへの透過的アクセスと、レイテンシの隠蔽リモートデータへの透過的アクセスと、レイテンシの隠蔽
  • VIOSIIIでは画像データへの透過的なアクセスを実現するために、すべての画像処理モジュール内で画像全体の画素をアクセス可能とした。
    • ワーキングセット内には、注目画素以外にも、読み込み専用の周辺画素があり、その範囲に限っては、ネットワークを介したアクセスは必要としない。
    • 周辺画素を超えたアクセスが問題となる。
  • 各ワーキングセットが、読み書きできる共有変数の枠組みを用意した。

実際にアクセスする際のコストが膨大となる。

アクセスコスト(排他制御を含む)が非常に大きい

slide11
言語仕様(その1)

Module モジュール名(入力変数名1:input,……,出力変数名:output)

int 変数名1 on working-set [cashe n] //画像

int 変数名2                 //パラメータ

Working set

例)

cache 2

on pixel cache 2

処理

出力

入力

slide12

module X

{

int global_val;

parallel

{

int local_val;

…..

}

{

……

}

parallel

{

…..

}

}

言語仕様(その2)

並列実行部

逐次実行部

並列実行部

実行フロー

slide13
言語仕様(その3)

parallel

{

int val;

c[ ][ ] = a[ ][ ] -

(a[-1][] +a[ ][-1]

+ a[1][ ] + a[ ][1]);

val=a[[0]][[0]];

slide14
言語仕様(その4) 

main()

{

image A,B,C;

int a,b,c;

A = load(“foo.obj”);

B = load(“bar.obj”);

C = load(“hoo.obj);

Syori(A,a);

Syori(B,b);

if (a > b)

Tugi(A,C);

else

Tugi(B,C);

}

画像データの流れを解析

し、モジュール間の並列

実行を行う(VIOSでは、

画像データは単一代入)

slide15
ネットワークレイテンシ隠蔽のために(1)
  • アクセスポリシの導入
    • プログラマは、周辺画素以外へのアクセスのポリシを明示的に指定可能
      • 周辺画素以外へのアクセスかどうかチェックしない
      • ネットワークを介したアクセス
      • ワーキングセット内の画素値で補間
      • 定数値の代入 

中心画素

ワーキングセット

外へのアクセス

(ネットワーク経由)

周辺画素

slide16
ネットワークレイテンシ隠蔽のために(2)
  • プログラマブル大域変数バッファ
    • 大域変数へのアクセスのコストは膨大であり、処理速度の低下を招く。
    • 画像処理アルゴリズムの中には、大域変数を局所変数とみなし、適当な処理単位ごとにそれぞれの値を統合し、処理を進めることができるものがある。
    • プログラマーは、個々のIPUが有するローカルキャッシュの統合方法を明示的に指定することを可能とした。
      • 最大値統合
      • 最小値統合
      • 加算統合
      • など、、、
slide17

#vios hist off add

module Histgram(in:input, hist:output)

int in on box[32][32];

int hist[ ];

{

parallel

{

for(int x = 0; x <32; x++)

for(int y = 0; y<32; y++)

hist[in[x][y]]++;

}

}

ヒストグラム計算

大域変数

ボックス

ワーキングセット

slide18
ネットワークレイテンシ隠蔽のために(3)
  • 画像処理エンジンIP1の複数実行
    • IP1(プログラマから見た場合無限個存在する画像処理エンジン)を、多数走らせると同時に、通信モジュール、IP0(コントロールエンジン)など、全モジュールをスレッド化することにより、ネットワークレイテンシを隠蔽
slide19
性能評価
  • 並列画像認識アルゴリズムを実装
    • ソーベル、エッジ検出、大津の2値化、ハフ変換
  • 実行プラットフォーム
    • マルチプロセッサ(SIMD):SparcCenter1000 ( 8 CPU)
    • ワークステーションクラスタ:Pentium II, 100Base Tネットワーク,スイッチングハブ
    • OS:Solaris 2.5.1
  • C言語、C言語+PVM3.3による記述と比較
slide20

Main()

{ image InImage, OutImge;

image Magnitude, Angle, Edge, Bin;

InImage = load(“star.obj”);

//ソーベルフィルタ

Magnitude = new(“Magnitude”); Angle = new(“Angle”);

SobelFilter(InImage, Magnitude, Angle);

//細線化

Edge = new(“Edge”); ThinLine(Magnitude, Angle, Edge);

//Histgram

int Histo[256];

MakeDensHisto(Edge, Histo);

//大津の2値化

int threshold;

CalculateThreshold(Histo, Threshold);

Binary(Edge, Bin, threshold);

//ハフ変換.

int Out1Param[THETA_MAX][RHO_MAX]

HoughLine(Bin, Out1param);

image Out1 = (image)Out1param;

slide21

Module MakeDensHisto(in: input, histo: parameter)

int in on pixel;

int histo[256];

#vios mutex histo off add

{

parallel

{

int dens = in[][];

if (dens > 255) dens = 255;

else if (den <0) dens = 0;

histo[dens]++;

}

}

slide22

#define THETA_MAX 180

#define RHO_MAX 1446

module HoughLine(in1:input,out1:parameter)

int in1 on pixel;

int out1[THETA_MAX][RHO_MAX];

{

#vios mutex out1 off add

parallel

{

int theta,rho;

float frho;

if(in1[][]) {

for(theta = 0; theta <THETA_MAX;theta++) {

float th;

….

Out1[theta][rho]++;

…..

slide24

(秒)

並列画像認識プログラムの実行性能

(SPARCCENTER 1000 8CPU)

slide25

(秒)

並列画像認識プログラムの実行性能

(Pentium II x4, 100 base T,スイッチングハブ)

slide27
まとめと今後の予定
  • 分散画像処理環境VIOSIIIの概略について説明した。
  • 今後の予定
    • バグとり
    • 配布