mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-07-28 20:11:22 +00:00
Add default C++ initialization to OrtCUDAProviderOptions (#9064)
* Add default C++ initialization to OrtCUDAProviderOptions
This commit is contained in:
parent
12515552d1
commit
26509465f0
7 changed files with 32 additions and 76 deletions
|
|
@ -336,6 +336,10 @@ typedef enum OrtCudnnConvAlgoSearch {
|
|||
* \see OrtApi::SessionOptionsAppendExecutionProvider_CUDA
|
||||
*/
|
||||
typedef struct OrtCUDAProviderOptions {
|
||||
#ifdef __cplusplus
|
||||
OrtCUDAProviderOptions() : device_id{}, cudnn_conv_algo_search{EXHAUSTIVE}, gpu_mem_limit{SIZE_MAX}, arena_extend_strategy{}, do_copy_in_default_stream{}, has_user_compute_stream{}, user_compute_stream{}, default_memory_arena_cfg{} {}
|
||||
#endif
|
||||
|
||||
int device_id; ///< CUDA device id (0 = default device)
|
||||
OrtCudnnConvAlgoSearch cudnn_conv_algo_search;
|
||||
|
||||
|
|
|
|||
|
|
@ -310,16 +310,10 @@ int real_main(int argc, char* argv[], Ort::Env& env) {
|
|||
|
||||
if (enable_tensorrt) {
|
||||
#ifdef USE_TENSORRT
|
||||
OrtCUDAProviderOptions cuda_options{
|
||||
device_id,
|
||||
OrtCudnnConvAlgoSearch::EXHAUSTIVE,
|
||||
std::numeric_limits<size_t>::max(),
|
||||
0,
|
||||
true,
|
||||
0,
|
||||
nullptr,
|
||||
nullptr}; // TODO: Support arena configuration for users of test runner
|
||||
|
||||
OrtCUDAProviderOptions cuda_options;
|
||||
cuda_options.device_id=device_id;
|
||||
cuda_options.do_copy_in_default_stream=true;
|
||||
// TODO: Support arena configuration for users of test runner
|
||||
Ort::ThrowOnError(OrtSessionOptionsAppendExecutionProvider_Tensorrt(sf, device_id));
|
||||
sf.AppendExecutionProvider_CUDA(cuda_options);
|
||||
#else
|
||||
|
|
@ -339,15 +333,9 @@ int real_main(int argc, char* argv[], Ort::Env& env) {
|
|||
}
|
||||
if (enable_cuda) {
|
||||
#ifdef USE_CUDA
|
||||
OrtCUDAProviderOptions cuda_options{
|
||||
0,
|
||||
OrtCudnnConvAlgoSearch::EXHAUSTIVE,
|
||||
std::numeric_limits<size_t>::max(),
|
||||
0,
|
||||
true,
|
||||
0,
|
||||
nullptr,
|
||||
nullptr}; // TODO: Support arena configuration for users of test runner
|
||||
OrtCUDAProviderOptions cuda_options;
|
||||
cuda_options.do_copy_in_default_stream=true;
|
||||
// TODO: Support arena configuration for users of test runner
|
||||
sf.AppendExecutionProvider_CUDA(cuda_options);
|
||||
#else
|
||||
fprintf(stderr, "CUDA is not supported in this build");
|
||||
|
|
|
|||
|
|
@ -42,15 +42,10 @@ OnnxRuntimeTestSession::OnnxRuntimeTestSession(Ort::Env& env, std::random_device
|
|||
#endif
|
||||
} else if (provider_name == onnxruntime::kCudaExecutionProvider) {
|
||||
#ifdef USE_CUDA
|
||||
OrtCUDAProviderOptions cuda_options{
|
||||
0,
|
||||
static_cast<OrtCudnnConvAlgoSearch>(performance_test_config.run_config.cudnn_conv_algo),
|
||||
std::numeric_limits<size_t>::max(),
|
||||
0,
|
||||
!performance_test_config.run_config.do_cuda_copy_in_separate_stream,
|
||||
0,
|
||||
nullptr,
|
||||
nullptr}; // TODO: Support arena configuration for users of perf test
|
||||
OrtCUDAProviderOptions cuda_options;
|
||||
cuda_options.cudnn_conv_algo_search = static_cast<OrtCudnnConvAlgoSearch>(performance_test_config.run_config.cudnn_conv_algo);
|
||||
cuda_options.do_copy_in_default_stream = !performance_test_config.run_config.do_cuda_copy_in_separate_stream;
|
||||
// TODO: Support arena configuration for users of perf test
|
||||
session_options.AppendExecutionProvider_CUDA(cuda_options);
|
||||
#else
|
||||
ORT_THROW("CUDA is not supported in this build\n");
|
||||
|
|
@ -235,15 +230,11 @@ OnnxRuntimeTestSession::OnnxRuntimeTestSession(Ort::Env& env, std::random_device
|
|||
tensorrt_options.trt_force_sequential_engine_build = trt_force_sequential_engine_build;
|
||||
session_options.AppendExecutionProvider_TensorRT(tensorrt_options);
|
||||
|
||||
OrtCUDAProviderOptions cuda_options{
|
||||
device_id,
|
||||
static_cast<OrtCudnnConvAlgoSearch>(performance_test_config.run_config.cudnn_conv_algo),
|
||||
std::numeric_limits<size_t>::max(),
|
||||
0,
|
||||
!performance_test_config.run_config.do_cuda_copy_in_separate_stream,
|
||||
0,
|
||||
nullptr,
|
||||
nullptr}; // TODO: Support arena configuration for users of perf test
|
||||
OrtCUDAProviderOptions cuda_options;
|
||||
cuda_options.device_id=device_id;
|
||||
cuda_options.cudnn_conv_algo_search=static_cast<OrtCudnnConvAlgoSearch>(performance_test_config.run_config.cudnn_conv_algo);
|
||||
cuda_options.do_copy_in_default_stream=!performance_test_config.run_config.do_cuda_copy_in_separate_stream;
|
||||
// TODO: Support arena configuration for users of perf test
|
||||
session_options.AppendExecutionProvider_CUDA(cuda_options);
|
||||
#else
|
||||
ORT_THROW("TensorRT is not supported in this build\n");
|
||||
|
|
|
|||
|
|
@ -2,17 +2,11 @@
|
|||
// Licensed under the MIT License.
|
||||
|
||||
#include "utils.h"
|
||||
#include <limits>
|
||||
|
||||
OrtCUDAProviderOptions CreateDefaultOrtCudaProviderOptionsWithCustomStream(void* cuda_compute_stream) {
|
||||
OrtCUDAProviderOptions cuda_options{
|
||||
0,
|
||||
OrtCudnnConvAlgoSearch::EXHAUSTIVE,
|
||||
std::numeric_limits<size_t>::max(),
|
||||
0,
|
||||
true,
|
||||
cuda_compute_stream != nullptr ? 1 : 0,
|
||||
cuda_compute_stream != nullptr ? cuda_compute_stream : nullptr,
|
||||
nullptr};
|
||||
OrtCUDAProviderOptions cuda_options;
|
||||
cuda_options.do_copy_in_default_stream = true;
|
||||
cuda_options.has_user_compute_stream = cuda_compute_stream != nullptr ? 1 : 0;
|
||||
cuda_options.user_compute_stream = cuda_compute_stream;
|
||||
return cuda_options;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -609,15 +609,9 @@ void setup_training_params(BertParameters& params) {
|
|||
|
||||
#ifdef USE_CUDA
|
||||
{
|
||||
OrtCUDAProviderOptions info{
|
||||
gsl::narrow<OrtDevice::DeviceId>(MPIContext::GetInstance().GetLocalRank()),
|
||||
OrtCudnnConvAlgoSearch::EXHAUSTIVE,
|
||||
std::numeric_limits<size_t>::max(),
|
||||
0,
|
||||
true,
|
||||
0,
|
||||
nullptr,
|
||||
nullptr};
|
||||
OrtCUDAProviderOptions info;
|
||||
info.device_id = gsl::narrow<OrtDevice::DeviceId>(MPIContext::GetInstance().GetLocalRank());
|
||||
info.do_copy_in_default_stream = true;
|
||||
|
||||
if (params.gpu_mem_limit_in_gb > 0) {
|
||||
info.gpu_mem_limit = gsl::narrow<size_t>(params.gpu_mem_limit_in_gb * 1024 * 1024 * 1024);
|
||||
|
|
|
|||
|
|
@ -352,16 +352,9 @@ void setup_training_params(GPT2Parameters& params) {
|
|||
|
||||
#ifdef USE_CUDA
|
||||
{
|
||||
OrtCUDAProviderOptions info{
|
||||
gsl::narrow<OrtDevice::DeviceId>(MPIContext::GetInstance().GetLocalRank()),
|
||||
OrtCudnnConvAlgoSearch::EXHAUSTIVE,
|
||||
std::numeric_limits<size_t>::max(),
|
||||
0,
|
||||
true,
|
||||
0,
|
||||
nullptr,
|
||||
nullptr};
|
||||
|
||||
OrtCUDAProviderOptions info;
|
||||
info.device_id=gsl::narrow<OrtDevice::DeviceId>(MPIContext::GetInstance().GetLocalRank());
|
||||
info.do_copy_in_default_stream=true;
|
||||
params.providers.emplace(kCudaExecutionProvider, CreateExecutionProviderFactory_Cuda(&info));
|
||||
params.input_allocator = CreateCUDAPinnedAllocator(info.device_id, CUDA_PINNED);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -169,16 +169,8 @@ Status ParseArguments(int argc, char* argv[], MnistParameters& params) {
|
|||
#ifdef USE_CUDA
|
||||
bool use_cuda = flags.count("use_cuda") > 0;
|
||||
if (use_cuda) {
|
||||
OrtCUDAProviderOptions info{
|
||||
0,
|
||||
OrtCudnnConvAlgoSearch::EXHAUSTIVE,
|
||||
std::numeric_limits<size_t>::max(),
|
||||
0,
|
||||
true,
|
||||
0,
|
||||
nullptr,
|
||||
nullptr};
|
||||
|
||||
OrtCUDAProviderOptions info;
|
||||
info.do_copy_in_default_stream = true;
|
||||
params.providers.emplace(kCudaExecutionProvider, CreateExecutionProviderFactory_Cuda(&info));
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in a new issue