コマンドライン・オプションのリファレンス#

このトピックでは、コマンドライン・オプションの簡単な説明、現在非推奨のオプション、ソースファイルの操作に関する情報を紹介します。

コマンドライン・オプション#

次の表は、現在のインテル® DPC++ 互換性ツールのコマンドライン・オプションをアルファベット順にリストしたものです。

オプション

説明

--always-use-async-handler

デフォルトの dpct::get_default_queue に加えて、dpct::create_queue を使用して新しい sycl::queue を生成する場合、非同期例外ハンドラーを使用します。
デフォルト: off

--analysis-scope-path=<dir>

移行するソースツリーの解析スコープのディレクトリー・パス。
デフォルト: --in-root の値。

--assume-nd-range-dim=<value>

生成されるコードで使用する nd_range の次元に関するヒントをツールに提供します。設定可能な値は以下のとおりです。

  • =1: 可能であれば 1D nd_range を、それ以外の場合は 3D を想定してカーネルコードを生成します。

  • =3: 3D nd_range を想定してカーネルコードを生成します (デフォルト)。

--build-script-file=<file>

移行されたファイル向けに生成される makefile 名を指定します。
デフォルト名: Makefile.dpct

--change-cuda-files-extension-only

拡張子の変更を .cu および .cuh ファイルのみに限定します。
デフォルト: off

--check-unicode-security

双方向書式コードと類似する文字を使用することで、悪用される可能性がある unicode の構造を検出して警告を有効にします。
デフォルト: off

--comments

生成されたコードを説明するコメントを挿入します。
デフォルト: off

--cuda-include-path=<dir>

CUDA* ヘッダーファイルのディレクトリー・パス。

--custom-helper-name=<name>

非推奨。ヘルパー・ヘッダー・フォルダー名とメインのヘルパー・ヘッダー・ファイル名を指定します。
デフォルト: dpct

--enable-ctad

生成されるコードで C++17 のクラス・テンプレート引数推論 (CTAD) を使用します。

--enable-profiling

ヘルパー関数で SYCL* キューのプロファイルを有効にします。
デフォルト: off

--extra-arg=<string>

移行コマンドラインに追加する引数。
例: --extra-arg="-I /path/to/header"
この方法で追加できるオプションは、dpct -- -help コマンドで確認できます。

--format-range=<value>

書式設定の範囲を設定します。

設定可能な値は以下のとおりです。

  • =migrated: 移行したコードのみ書式設定します (デフォルト)。

  • =all: すべてのコードを書式設定します。

  • =none: コードを書式設定しません。

--format-style=<value>

書式形式を設定します。

設定可能な値は以下のとおりです。

  • =llvm: LLVM コード形式を使用します。

  • =google: Google* コード形式を使用します。

  • =custom: .clang-format ファイルで定義されているコード形式を使用します (デフォルト)。

.clang-format ファイルの内容の例:

BasedOnStyle: LLVM IndentWidth: 4 TabWidth: 4 UseTab: ForIndentation

--gen-build-script

-out-root ディレクトリーに移行されたファイルの makefile を生成します。
デフォルト: off

--help

dpct 固有のオプションを表示します。

--in-root=<dir>

移行するソースツリーのルート・ディレクトリー・パス。このルート以下のファイルのみが移行されます。
デフォルト:

  • 現在のディレクトリー (入力ソースファイルが提供されない場合)

  • 最初の入力ソースファイルのディレクトリー (入力ソースファイルが提供される場合)

詳細:

--in-root で指定したディレクトリー内のすべてのソース (任意の入れ子レベル) は移行されます。--in-root で指定したディレクトリー内のヘッダーファイル (任意の入れ子レベル) のうち、移行するソースやヘッダーファイルでインクルードされているものは移行されます。--in-root ディレクトリーの外部にあるファイルは、プログラムやソースファイルでインクルードされていても移行されません。

--in-root-exclude=<dir|file>

指定するディレクトリーやファイルを処理から除外します。

--keep-original-code

生成される SYCL* ファイルにオリジナルコードをコメントとして残します。
デフォルト: off

--no-cl-namespace-inline

非推奨。cl:: 名前空間をインラインで使用しません。
デフォルト: off
このオプションは、代替オプション --use-explicit-namespace が使用されると無視されます。

--no-dpcpp-extensions=<value>

移行したコードで使用されない拡張子のカンマ区切りのリスト。デフォルトでは、これらの拡張子は移行したコードで使用されます。

  • =enqueued_barriers: エンキューされたバリアの拡張。

  • =device_info: コンパイラーとバックエンドがサポートする場合、デバイス情報にインテル拡張機能を使用します。

--no-dry-pattern

dpct 名前空間の関数が挿入される場合、DRY (Don't Repeat Yourself) パターンを使用しません。
デフォルト: off

--no-incremental-migration

段階的な移行を行わないことをツールに指示します。
デフォルト: off (段階的な移行を行います)。

--optimize-migration

プログラムのセマンティクスを変える可能性がある、積極的な過程を適用して SYCL* コードを生成します。
デフォルト: off

--out-root=<dir>

生成されるファイルのルート・ディレクトリー・パス。存在しない場合は作成されます。
デフォルト: dpct_output

生成されたファイルの相対パスは維持され、拡張子は次のように変更されます。

  • *.cu *.dp.cpp

  • *.cpp *.cpp.dp.cpp

  • *.cc *.cc.dp.cpp

  • *.cxx *.cxx.dp.cpp

  • *.C *.C.dp.cpp

  • *.cuh *.dp.hpp

  • *.h *.hpp *.hxx → 拡張子は同じままで維持されます

--output-file=<file>

stdout/stderr の出力を、--out-root オプションで指定されたディレクトリー内の <file> にリダイレクトします。

--output-verbosity=<value>

出力の詳細レベルを設定します。

  • =silent: clang からのメッセージのみ。

  • =normal: 'silent' と、インテル® DPC++ 互換性ツールから警告、エラー、およびメモ。

  • =detailed: 'normal' と、処理されたファイルに関するメッセージ。

  • =diagnostics: 'detailed' と、検出された競合とクラッシュに関する情報 (デフォルト)。

-p

--compilation-database のエリアス。

--process-all

隠しファイルを除くすべてのファイルを、--in-root ディレクトリーから --out-root ディレクトリーに移行またはコピーします。--in-root オプションは、明示的に指定する必要があります。
デフォルト: off

詳細:

--process-all オプションと --in-root オプションを指定して、入力ファイルを指定しないと、隠しファイルを除くすべてのファイルが --in-root ディレクトリーから出力ディレクトリーに移行またはコピーされます。

  • コンパイル・データベースがある場合:

    • コンパイル・データベースからのファイルは、コンパイル・データベースで指定されたオプションで移行されます。

    • コンパイル・データベースにリストされていない .cu 拡張子のファイルは、スタンドアロンとして移行されます。

    • 残りのファイルは、-out-root ディレクトリーにコピーされます。

  • コンパイル・データベースがない場合:

    • .cu 拡張子のファイルは、スタンドアロンとして移行されます。

    • 残りのファイルは、-out-root ディレクトリーにコピーされます。

コマンドラインで入力ファイルが提供されると、--process-all は無視されます。

--report-file-prefix=<prefix>

レポートファイル名のプリフィクス。完全なファイル名には report-type に由来するサフィックスと、report-format に由来する拡張子が含まれます。
例: <prefix>.apis.csv または <prefix>.stats.log
このオプションを指定しないと、レポートは stdout に出力されます。レポートファイルは、-out-root で指定されたディレクトリーに作成されます。

--report-format=<value>

レポート形式:

  • =csv: 出力は、カンマで区切られた値の行です。レポート名の拡張子は .csv になります (デフォルト)。

  • =formatted: 出力は、人間が読みやすいようにフォーマットされています。レポートファイル名の拡張子は log になります。

--report-only

レポートのみが生成されます。SYCL* コードは生成されません。
デフォルト: off

--report-type=<value>

レポートタイプを指定します。設定可能な値は以下のとおりです。

  • =apis: 移行する必要がある API シグネチャーに関する情報と、その発生回数。レポートファイル名には、.apis サフィックスが追加されます。

  • =stats: 高レベルの移行統計: SYCL* に移行された LOC (Lines Of Code)、ヘルパー関数を使用して SYCL* に移行された LOC、移行が必要でない LOC、移行が必要だが移行されていない LOC。レポートファイル名には、.stats サフィックスが追加されます(デフォルト)。

  • =all: すべてのレポート。

--rule-file=<file>

移行に使用するルールを含むファイルのパスを指定します。

--stop-on-parse-err

解析エラーが発生した場合、移行とレポートの生成を停止します。
デフォルト: off

--suppress-warnings=<value>

抑制する移行警告のカンマ区切りのリスト。有効な警告 ID は 1000 から 1100 の範囲です。ハイフンで範囲を指定することも可能です。
例: -suppress-warnings=1000-1010,1011

--suppress-warnings-all

すべての移行警告を抑制します。
デフォルト: off

--sycl-named-lambda

カーネル名でカーネルを生成します。
デフォルト: off

--use-custom-helper=<value>

非推奨。移行されたコードのヘルパー・ヘッダー・ファイルをカスタマイズします。設定可能な値は以下のとおりです。

  • =none: カスタマイズしません (デフォルト)。

  • =file: ヘルパー・ヘッダー・ファイルを移行したコードに必要なファイルのみに限定して、--out-root ディレクトリーに配置します。

  • =api: ヘルパー・ヘッダー・ファイルを移行したコードに必要な API のみに限定して、--out-root ディレクトリーに配置します。

  • =all: ヘルパー・ヘッダー・ファイル一式を生成して、--out-root ディレクトリーに配置します。

--use-dpcpp-extensions=<value>

移行したコードで使用されない拡張子のカンマ区切りのリスト。デフォルトでは、これらの拡張子は移行したコードで使用されます。

  • =c_cxx_standard_library: libdevice ライブラリー (インテル® oneAPI DPC++/C++ コンパイラー (英語) が提供) および C/C++ 標準ライブラリーを使用して、SYCL* 標準に対応する機能がない関数を移行します。これを intel_device_math と同時に使用すると、intel_device_math 関数が優先されます。

  • =intel_device_math: libdevice ライブラリー (インテル® oneAPI DPC++/C++ コンパイラーが提供) の sycl::ext::intel::math 用して、SYCL* 標準に対応する機能がない関数を移行します。

--use-experimental-features=<value>

移行したコードで使用されない拡張子のカンマ区切りのリスト。デフォルトでは、実験的な機能は移行したコードでは使用されません。

設定可能な値は以下のとおりです。

  • =dpl-experimental-api: 実験的な oneDPL API の使用を可能にする拡張機能。

  • =free-function-queries: iditemnd_itemgroup、および sub_group インスタンスをグローバルに取得できるようにする実験的な拡張機能。

  • =local-memory-kernel-scope-allocation: カーネルファンクターのスコープで、ローカル・メモリー・オブジェクトの割り当てを可能にする実験的な拡張機能。

  • =logical-group: wark-item を論理的にグループ化するために使用される実験的なヘルパー関数。

  • =masked-sub-group-operation: マスクを使用して sub-group を操作するために使用される実験的なヘルパー関数。

  • =nd_range_barrier: 移行時にグループ間の同期を支援する実験的なヘルパー関数。

  • =occupancy-calculation: 占有率の計算に使用される実験的なヘルパー関数。

  • =user-defined-reductions: ユーザー定義のリダクションを可能にする実験的な拡張機能。

--use-explicit-namespace=<value>

生成されるコードで明示的に使用される名前空間を定義します。値は、カンマ区切りのリストです。
デフォルト: dpct, sycl

設定可能な値は以下のとおりです。

  • =none: 名前空間を使用しないコードを生成します。ほかの値を一緒に使用することはできません。

  • =cl: 非推奨。cl::sycl:: 名前空間を使用してコードを生成します。sycl または sycl-math の値を同時に使用することはできません。

  • =dpct: dpct:: 名前空間を使用してコードを生成します。

  • =sycl: sycl:: 名前空間を使用してコードを生成します。cl または sycl-math の値を同時に使用することはできません。

  • =sycl-math: 名前空間を sycl:: 数学関数にのみ適用してコードを生成します。cl または sycl の値を同時に使用することはできません。

--usm-level=<value>

ソースコードの生成に使用する統合共有メモリー (USM) のレベルを設定します。

  • =restricted: メモリー管理の移行に USM API を使用します (デフォルト)。

  • =none: メモリー管理の移行にインテル® DPC++ 互換性ツールのヘッダーファイルのヘルパー関数を使用します。

--vcxprojfile=<file>

vcxproj のファイルパス。

--version

ツールのバージョンを表示します。

以下のオプションのいずれかを指定すると、レポートが生成されます。

  • --report-file-prefix

  • --report-type

  • --report-format

  • --report-only

非推奨のコマンドライン・オプション#

次の表は、現在非推奨のインテル® DPC++ 互換性ツールのコマンドライン・オプションをリストしたものです。

非推奨のオプション

推奨する代替オプション

--custom-helper-name=<name>

代替オプションはありません

--no-cl-namespace-inline

--use-explicit-namespace=<value>

--use-custom-helper=<value>

代替オプションはありません

インターセプト・ビルドのオプション #

次の表は、現在の intercept-build ツールのコマンドライン・オプションをアルファベット順にリストしたものです。

オプション

説明

-append

既存のコンパイル・データベースを新しいエントリーで拡張します。重複したエントリーは検出されますが、最終的な出力からは削除されます。出力は継続的に更新されるわけではありません。ビルドコマンドが終了すると完了します。デフォルトは無効です。

-cdb <file>

JSON コンパイル・データベースを指定します。デフォルト名は compile_commands.json です。

-linker-entry

-linker-entry オプションが指定されると、コンパイル・データベースにリンカーエントリーが生成されます。デフォルトは有効です。

-no-linker-entry

-no-linker-entry オプションが指定されると、コンパイル・データベースにリンカーエントリーは生成されません。デフォルトは無効です。

-parse-build-log <file>

ビルドログのファイルパスを指定します。

-verbose-v

intercept-build からの詳細出力を有効にします。2 番目、3 番目、4 番目のフラグは冗長性を高めます。

-work-directory <path>

-parse-build-log オプションで指定されたビルドログを生成するコマンドの作業ディレクトリーを指定します。デフォルトは、-parse-build-log オプションで指定されたビルド・ログ・ファイルのディレクトリーです。