インテル® C++ コンパイラー 19.0 デベロッパー・ガイドおよびリファレンス
soa1d_container と aos1d_container の [] アクセサー演算子は、整数ベースのループ・インデックスを受け付けます。しかし、ループ・インデックスが変更されると、[] 演算子に渡す前の処理でコンパイラーによりループ・インデックスが損なわれることがあります。
この問題を回避するため、SDLT にはループ・インデックスをラップするクラスが用意されています。このクラスは、複数のオフセットの加算/減算をキャプチャーします (詳細は「オフセット」を参照してください)。計算されたインデックスを [] に渡し、オリジナルのループ・インデックスは保持することができます。また、データレイアウトに適用されるオフセットの演算をすべて追跡することができます。
一般に、ステンシルベースのアルゴリズムでは、データアクセス時にオフセットを適用する必要があります。
通常のリニアループでは、linear_index でループ・インデックスをラップします。