新しいプロバイダーの追加
ONNX Runtimeに新しい実行プロバイダーを追加する
Section titled “ONNX Runtimeに新しい実行プロバイダーを追加する”実行プロバイダーの作成
Section titled “実行プロバイダーの作成”- onnxruntime/core/providers の下にフォルダを作成する
- include/onnxruntime/core/providers の下にフォルダを作成する。最初のステップと同じ名前にする必要があります。
- IExecutionProviderを継承する新しいクラスを作成する。ソースコードは ‘onnxruntime/core/providers/[your_provider_name]’ に配置する必要があります
- include/onnxruntime/core/providers/[your_provider_name] の下に新しいヘッダーファイルを作成する。このファイルはOrtProviderFactoryInterfaceを作成するための関数を1つ提供する必要があります。テンプレートとして ‘include/onnxruntime/core/providers/cpu/cpu_provider_factory.h’ を使用できます。MemoryInfoを作成するための関数を提供する必要はありません。
- ‘onnxruntime/core/providers/[your_provider_name]’ の下にsymbols.txtを配置する。このファイルには、プロバイダーからエクスポートされるすべての関数名を含める必要があります。通常、プロバイダーファクトリを作成するための単一の関数で十分です。
- onnxruntime_providers.cmakeにプロバイダーを追加する。静的ライブラリとしてビルドします。
- cmake/onnxruntime.cmakeに1行追加し、‘target_link_libraries’関数呼び出しにプロバイダーを配置する。
例:
実行プロバイダーの使用
Section titled “実行プロバイダーの使用”- ‘symbols.txt’でエクスポートしたc関数を使用して、そのプロバイダーのファクトリを作成する
- プロバイダーファクトリをセッションオプションに配置する
- そのセッションオプションからセッションを作成する
例:
OrtEnv* env; OrtInitialize(ORT_LOGGING_LEVEL_WARNING, "test", &env) OrtSessionOptions* session_option = OrtCreateSessionOptions(); OrtProviderFactoryInterface** factory; OrtCreateCUDAExecutionProviderFactory(0, &factory); OrtSessionOptionsAppendExecutionProvider(session_option, factory); OrtReleaseObject(factory); OrtCreateSession(env, model_path, session_option, &session);実行プロバイダーのテスト
Section titled “実行プロバイダーのテスト”実行プロバイダーのテストを容易にするために、onnx_test_runnerコマンドに新しいケースを追加できます。
これを行うには、他の既存プロバイダーのパターンに従って、onnxruntime/test/onnx/main.ccファイルに追加します。
これが配置されたら、次のようにonnx_test_runnerを実行できます:
$ cd build/PLATFORM/CONFIGURATION$ ./onnx_test_runner -e YOUR_BACKEND ./testdata/ort_minimal_e2e_test_data/$ ./onnx_test_runner -e YOUR_BACKEND ./testdata/gemm_activation_fusion/