インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

利便性と正当性

サポートされるパブリック機能をすべてインクルードする 1 つのヘッダーファイル sdlt.h をインクルードするか、使用する機能のヘッダーファイルを個別にインクルードできます (後者のほうがビルド時間が短くなる可能性があります。) つまり、次のように指定するか、

#include <sdlt/sdlt.h>

あるいは、次のように指定できます。

#include <sdlt/primitive.h>
#include <sdlt/soa1d_container.h>

便宜上、SDLT は #pragma forceinline recursive をカプセル化するマクロを提供しています。

SDLT_INLINE_BLOCK

SDLT は、プログラマーがテンプレート引数と関数引数に有効な値を渡すと仮定して、オーバーヘッドを軽減します。SIMD ループ内に条件チェックを追加すると、不要なコードが生成されるだけでなく、ループの終了ポイントが複数作成されるためベクトル化の妨げとなります。SDLT に有効な値が渡されることを確認するため、ビルド時にコンパイルフラグを指定して、SDLT_DEBUG=1 を定義することができます。

-DSDLT_DEBUG=1

_DEBUG が定義されると、SDLT_DEBUG は 0 または 1 でない場合、自動的に 1 に設定されます。1 に設定されると、各 operator[] の境界がチェックされ、すべてのアドレスが正しくアライメントされているか検証されます。これは、不適切な使用を見つけるのに非常に役立ちます。

__SDLT_VERSION マクロは、2001 に事前定義されています。将来のアップデートで互換性の問題が生じた場合、プログラムの条件付きコンパイルにこのマクロを使用できます。

std::minstd::max の C++ 実装は、パフォーマンスを低下させることがあります。そのようなパフォーマンスの低下を回避するため、SDLT では、min_valmax_val を用意しています。