- Q : VIOSとは何ですか?
A : ワークステーションクラスタ及び共有バスで結合されたSMP用に設計された分散画像処理環境です。VIOSの名前は3種類の
プロセス(Visual ProgrammingEditor(VPE), Image Processing Unit(IPU), Object Manager(OM))の頭文字からつけました。
- Q : どのような環境で動作しますか?
現在動作を確認している環境(OSおよびコンパイラ)は次の通りです。
- Solaris 2.6(Intel), Sun WorkShop Compiler C++ 4.2
- Solaris 2.6(Intel), gcc 2.8.1
- Solaris 2.6(Intel), egcs 1.1.1
- Solaris 2.5(SPARC), Sun WorkShop Compiler C++ 4.1
- Solaris 2.5(SPARC), gcc 2.7.2
なお、VPEはX11上で動作します。一般的なX11R6環境では動作すると思われます。
また、他のC++, pthreadなどに対応したunix環境でも動作するかもしれません。
LINUXはスレッドの動作が不安定(特にSMP環境では)なので、
現時点では安定した実行はできません。
(注意)SolarisではSunのld,arを使用して下さい。
- Q : VIOSは1台で動作しますか?
A : 動作します。またSolarisのようにカーネルスレッドをサポートしたOS+マルチCPUの場合は、
同時に複数のCPUを使用できます。
- Q : 扱える画像ファイル形式は何ですか?
A : VIOSでは標準的な画像ファイル形式の1つである、
pgm(Portable GrayMap)
を使用します。
また、
VIOS独自の画像ファイル形式である
vif(Vios Image Format)
があります。
- Q : .vifファイルとは何ですか?
A : vifとは、VIOSで処理を行う、
あるいは行った画像を保存する形式です。VIOSでは、一般的な画像情報以外に、
浮動小数点の行列などを扱うことができます。
このような、一般的な画像として保存しておくことが不可能なデータを持つ画像を
ファイルとして保存するときなどに用います。
- Q : VIOSのメインフロー部で用いられる
image型とは
どのような型ですか?
A : image型は、VIOSのプログラム中で用いられる画像データ型です。
画素値としてint(整数)、float(浮動小数点)
のどちらかを用いることができます。ワード長はプラットフォーム依存です。
- Q : image型の画素の型や大きさはいつ決まるのですか?
A : 新規に作成されるimage型の画素の型は、最初に渡されたモジュールにより決定します。
例えば、NewImageが新規に作成されたimage型データ、hogeが
module hoge(in:input, out:output)
int in on pixel;
int out on pixel;
と宣言されているモジュールの場合、
hoge(Input_Image, NewImage);
という形でモジュール呼び出しを行うと、NewImageはモジュール呼び出しの2つ目の引数、つまりモジュールhogeの宣言に
おけるoutとなるため、画素値はint型となります。また、この時にモジュールの1つ目の引数として渡された画像情報、
この場合はIn_Imageの大きさで、引数として渡された新規画像の大きさを初期化します。ゆえに、NewImageの画像領域の
大きさはIn_Imageと同一になります。また、モジュールに新規画像を渡す際には、最低1つの大きさを持った画像を第一の
引数として渡さなければなりません。
- Q : image型から他の型への変換はできますか?
A : image型を他の型へ変換することはできません。ただし、2次元配列からimage型への変換を行うことはできます。その
操作は、2次元配列のデータに対してC言語のキャストと同様の操作を行い、image型へ代入することにより行われます。
- Q : 画像からはみ出した領域の情報にアクセスした場合どうなりますか?
A : 画像情報の領域外へのアクセスに対するアクセスポリシ
(ワーキングセット外へのアクセス方法)
により異なります。
領域外のチェックを行わない場合は、領域外へのアクセスの結果は未定義です。
不正な動作の可能性があるため、
このような領域外アクセスは行わないでください。
- Q : 大きな画像(5000x5000等)も扱えますか?
A : 資源が確保できれば扱うことは可能です。
- Q : VPE, OM, IPU それぞれを動かすマシンの OSや CPU が違っても動きますか?
A : VPEは動きます。OM,IPUはCPUのバイトオーダーやint型の大きさなどが同一であれば、ほかのOSであっても動作します。
- Q : 並列画像処理ワーキングセットとは何ですか?
A : 並列画像処理ワーキングセットとは、VIOSにおける並列実行の単位で、並列実行に
必要なすべての情報(分割単位、画像データキャッシュ情報)を持ちます。
- Q : 画像データキャッシュとは何をさすのですか?また、画像データキャッシュを使うと何がいいのですか?
A : 画像データキャッシュとは、並列画像処理ワーキングセットごとに分割したときに、そのワーキングセットの注目画素
(領域)の周辺に存在し、読み込み専用の周辺画素(領域)のことを示します。
- Q : ワーキングセットの外の画素にアクセスした場合どうなるのですか?
A : 基本的に、ワーキングセット外へのアクセスが生じた場合、ネットワークを介し画素情報を取得します。ただし、処理速度が著しく
低下するため、VIOSではワーキングセット外へのアクセス方法に数種類の方法を持ちます。
- Q : 複数のモジュールの平行(concurrent)に実行できますか?またできる場合はどのようにフロー制御しているのですか?
A : VIOSではメインフロー記述部において呼び出されるモジュールのうち、依存関係が無いものは平行に実行を行います。
引数としてimage型の画像情報を持つモジュールは、
入力画像のデータがなければ実行を開始しません。
また、ifなどの条件文でユーザが制御を行うことも可能です。
- Q : 複数のIPUからアクセス可能な大域変数はありますか?また排他制御は行うのですか?
A : 大域変数はあります。また、大域変数へのアクセスは排他制御されます。ただし、ネットワーク上の複数のホストからネットワークを
介したアクセスを行うと、処理速度が著しく落ちるため、VIOSではプログラマブル大域変数バッファを導入しています。