問題: 非効率なデータ並列構造

SYCL* 言語では、それぞれのコマンドグループ内でデータの並列構造が許されます。規則チェック解析はデータ並列構造の効率を確認します。データ並列構造の非効率性は次の 2 つの分類できます。

これらの組み合わせがデータ並列アルゴリズム全体の効率に影響します。このセクションで示されるデータとスクリーンショットは、インテル® ソフトウェア開発ツールで提供される Nbody サンプルのものです。

スタートアップのペナルティー

起動コストは、並列アルゴリズムに参加するワーカースレッドの起動に遅延があることに関連します。アプリケーションに起動コストと関連する非効率性が示される場合、Linux* カーネルに電力管理の問題が生じている可能性があります。次のコマンドを実行してパフォーマンスの設定を確認できます。

echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

このコマンドを実行するにはsudo権限が必要であり、この設定はシステムが再起動されるとリセットされます。

インバランスのペナルティー

通常、インバランスのペナルティーは、ループの反復ごとにコストが変化するデータ並列ワークロードの静的パーティション化や動的パーティション化が適用されている場合、ブロックサイズの粒度が大きすぎることが原因です。起動時のペナルティーに対処することでアルゴリズムの多くのインバランス量は改善されますが、それらが残っている場合、次のオプションでパフォーマンスが改善される可能性があります。