WeGO PyTorch での ZenDNN - 3.5 日本語

Vitis AI ユーザー ガイド (UG1414)

Document ID
UG1414
Release Date
2023-09-28
Version
3.5 日本語

WeGO PyTorch で ZenDNN を有効にする方法

ZenDNN は初期状態では無効になっていますが、WeGO-Torch のコンパイル API を通じて有効にできます。
wego_mod = wego_torch.compile(mod, wego_torch.CompileOptions( 
...
optimize_options = wego_torch.OptimizeOptions(zendnn_enable = True)) 
) 

ZenDNN を有効にすると、コンパイル後の WeGO グラフでは CPU 演算子 (DPU でサポートされない演算子) が ZenDNN 演算子で置き換えられ、実行に ZenDNN カーネルを使用することで高速化されます。

環境変数

ZenDNN には、性能を調整するための環境変数がいくつかあります。
表 1. 環境変数
名前 説明
OMP_DYNAMIC ZenDNN を有効にする場合は、明示的に FALSE に設定してください。
ZENDNN_GEMM_ALGO デフォルト値は 3 です。[0、1、2、3、4] に設定すると、それぞれ異なる GEMM ALGO パスを調整できます。
OMP_NUM_THREADS

デフォルト値は、ユーザー システムの物理コアの数です。性能を改善するには、推論スレッドの数に合わせて調整する必要があります。詳細は、「調整のガイドライン」を参照してください。

調整のガイドライン

ZenDNN は、下層のライブラリとして OpenMP を使用します。環境変数 OMP_NUM_THREADS は、OP 内の並列度 (ZenDNN カーネルのマルチコア並列度) を制御します。OpenMP の場合、異なるアプリケーション スレッドまたは OP 間スレッドは、OP 内のタスクに異なる OpenMP スレッド プールを使用できます。そのため、マルチスレッド アプリケーションでは多くの OpenMP スレッドが使用され、CPU コア リソースを消費が増えるため、全体的な性能が低下する可能性があります。したがって、過剰なサブスクリプションを避けるには、ターゲット CPU プラットフォームのコア数、およびアプリケーションで使用するスレッド数に合わせて OMP_NUM_THREADS の値を調整することを推奨します。たとえば、プラットフォームに 64 個の CPU コアがあり、アプリケーションで 16 スレッドを実行する場合、OMP_NUM_THREADS <= 4 に設定すると、CPU コアの競合を避けることができます。