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

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

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

次の表は、現在のインテル® 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

--compilation-database=<dir>

コンパイル・データベース (compile_commands.json) のディレクトリー・パスを指定します。パスを指定しない場合、最初の入力ソースファイルのすべての親ディレクトリーから compile_commands.json の検索を試みます。-p と同等です。

--cuda-include-path=<dir>

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

--custom-helper-name=<name>

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

--enable-ctad

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

--enable-profiling

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

--extra-arg=<string>

移行コマンドラインに追加する引数を指定します。このオプションは追加の引数をカンマで区切ったリストで受け入れ、コマンド内で複数回指定できます。以下に例を示します。

dpct xx.cu --extra-arg="-I /path, -I /path2" --extra-arg="-I /path/to/header"

dpct -- -help コマンドを使用して、移行コマンドの追加引数として渡すことができるオプションを確認できます。

--format-range=<value>

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

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

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

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

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

--format-style=<value>

書式形式を設定します。

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

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

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

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

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

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

--gen-build-script

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

--gen-helper-function

--out-root ディレクトリーにヘルパー関数ファイルを生成します。デフォルト: off

--help

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

--helper-function-dir

ヘルパー関数ヘッダーファイルのインストール・ディレクトリーを表示します。

--helper-function-preference=<value>

移行時にヘルパー関数を使用する優先順位を指定します。
値:

  • =no-queue-device: ヘルパー関数を呼び出す代わりに、SYCL* API を呼び出してキューとデバイスを取得します。

--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>

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

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

  • =bfloat16: bfloat16 の SYCL* 拡張を使用します。

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

  • =enqueued_barriers: エンキューされたバリアの拡張を使用します。

--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 → 拡張子は同じままで維持されます

ファイル拡張子の変更を .cu.cuh にみに限定するには、--change-cuda-files-extension-only オプションを使用します。

--output-file=<file>

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

--output-verbosity=<value>

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

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

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

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

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

-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 は無視されます。

-query-api-mapping=<api>

機能的に互換性のある SYCL* API を照会して CUDA* API を移行します。

--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>

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

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

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

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

--rule-file=<file>

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

--stop-on-parse-err

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

--suppress-warnings=<value>

抑制する移行警告のカンマ区切りのリスト。有効な警告 ID は 1000 から 1118 の範囲です。ハイフンで区切られた範囲も許されます。以下に例を示します。-suppress-warnings=1000-1010,1011

--suppress-warnings-all

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

--sycl-named-lambda

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

--use-custom-helper=<value>

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

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

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

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

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

--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>

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

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

  • =bfloat16_math_functions: 実験的な bfloat16 数学関数の使用を許可します。

  • =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 を操作するために使用される実験的なヘルパー関数。

  • =matrix: 実験的な joint_matrix クラスなどの行列拡張の使用を許可します。

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

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

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

--use-explicit-namespace=<value>

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

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

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

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

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

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

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

--usm-level=<value>

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

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

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

--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 オプションで指定されたビルド・ログ・ファイルのディレクトリーです。