/**************************************************
average.cc
平均値フィルター処理
***************************************************/
vs_module
average(iImage data)
{
// テンポラリ変数
iImage shadow(data);
// 径1の外周(全領域中での)は処理からはずす
vsSetBoundary2D(1);
// 並列処理開始(弱一貫性モデル)
parallel(x,y) {
shadow[][] = (data[-1][] + data[][-1] + \
data[+1][] + data[][+1]) / 4;
}
// 大域変数にコピー
ImgCopy(data,shadow);
}
/****************************************
filter.vpe
フィルター処理起動用スクリプト
****************************************/
// 通信処理初期化 -------------
#pragma host_name host1
#pragma host_name host2
#pragma host_name host3
#pragma host_name host4
// データの初期化 -------------
imgLoad("./toy.pgm", data);
set(data, CACHE, 1);
module("average", data);
// 保存するためにデータを回収
gather(data);
imgSave("result.pgm", data);


parallel(x,y) {
shadow[][] = (data[-1][] + data[][-1] + data[+1][] + data[][+1]) / 4;
}
基本プログラム(反転フィルタ)でも述べたように、shadow[][]の引数なしの大括弧"[ ]"は現在の注目画素をしめす。