前へ
次へ
VIOS変数
- 種類と宣言
モジュール引数として実行フローより引き継がれる変数は、ivalue、fvalue、iImage、fImage、iCube、fCubeのいづれかの型をとります。なお、各型の扱いはC言語の通常変数の場合と同様です。
注意
これらのVIOS変数に対するアクセスは、計算機外データへのアクセスを検出するため、通常の配列へのアクセスに比べ負担が大きい。そのため、明示的な通信(vsSyncCacheなど)以外に計算機外データへのアクセスを行わない場合は、最適化VIOS変数を利用することが推奨される。
最適化VIOS変数を利用するためには、各変数の宣言時に、
vs_module snake(iImage_opt data, ...)
のように宣言を行います。また、最適化VIOS変数は、ivalue_opt、fvalue_opt、iImage_opt、fImage_opt、iCube_opt、fCube_optの6種類が存在します。
また、以下のようにモジュールの中で宣言することで、各計算機で独立のローカルVIOS変数を宣言することもできます。
value_type value_name (vios_value);
vios_valueと同じサイズ(ローカルでのサイズで)のvalue_name を宣言します。
例) iImage temp(data);
value_type value_name (サイズ1、 ...);
サイズ1、 ...に定義されるサイズの value_name を宣言します。
例) iImage temp(30, 40);
- 全ての型の実体はポインタとなっているため、参照渡しのみが可能となります。そのため、実体の複製が必要な場合は、ローカル宣言を利用した後、ImgCopy関数などを利用する必要があります。
- アクセス方式
従来のVIOSと同様に、[ ]演算子を利用することで、自ワーキングセットからの相対位置を、[[
]]演算子を利用することで、全体での絶対位置によるアクセスを行います。
例えば、data[3][ ]という指定は、自ワーキングセットからx軸方向に3、y軸方向に0移動したポイントの値を指定することになります。また、data[[3]][[0]]という指定は、変数dataにおける(3,0)の値を指定することになります。ここでの変数dataは分割される前についての値を参照します。
- 相対アクセス方式は、その性質上、並列処理構文(parallel文)内のみで使用できます。
- VIOS変数のアドレス指定の中に、VIOS変数を利用することは、相対アクセスにおいて1段まで、絶対アクセスにおいては使用できません。
前へ
次へ