Skip to content

Commit

Permalink
[NVIDIA] Fix FP16 behavior in tests on GTX1080
Browse files Browse the repository at this point in the history
  • Loading branch information
Andrii Pavliuk committed Jul 4, 2023
1 parent 968c44d commit 1199319
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ void GraphTransformer::transform(const CUDA::Device& device,
const Configuration& config) const {
auto inference_precision = config.get_inference_precision();
if (inference_precision == ov::element::f16 && !isHalfSupported(device)) {
throw_ov_exception("Inference precision f16 is not supported by device!");
inference_precision = ov::element::f32;
}
auto upscale_precision = [&]() -> bool {
return !isHalfSupported(device) || inference_precision == ov::element::f32;
Expand Down
11 changes: 10 additions & 1 deletion modules/nvidia_plugin/tests/functional/skip_tests_config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

#include "functional_test_utils/skip_tests_config.hpp"

#include <cuda/runtime.hpp>
#include <string>
#include <vector>

Expand Down Expand Up @@ -138,5 +139,13 @@ std::vector<std::string> disabledTestPatterns() {
retVector.emplace_back(R"(.*ReferenceTopKTest.*topk_max_sort_none)");
retVector.emplace_back(R"(.*ReferenceTopKTest.*topk_min_sort_none)");
#endif

if (!CUDA::isHalfSupported(CUDA::Device{})) {
retVector.emplace_back(
R"(.*OVExecGraphImportExportTest.*importExportedFunctionParameterResultOnly.*targetDevice=NVIDIA_elementType=f16.*)");
retVector.emplace_back(
R"(.*OVExecGraphImportExportTest.*importExportedIENetworkParameterResultOnly.*targetDevice=NVIDIA_elementType=f16.*)");
}

return retVector;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,12 @@

#include <gtest/gtest.h>

#include <cuda/runtime.hpp>
#include <memory>
#include "openvino/opsets/opset10.hpp"
#include "transformer/cuda_graph_transformer.hpp"

#include "common_test_utils/ngraph_test_utils.hpp"
#include "openvino/opsets/opset10.hpp"
#include "transformer/cuda_graph_transformer.hpp"

using namespace testing;

Expand All @@ -23,12 +24,16 @@ TEST(TransformationTests, cuda_transformations_f16) {
model = std::make_shared<ov::Model>(ov::NodeVector{divide}, ov::ParameterVector{data});

// Run transformation
const CUDA::Device device{0};
const CUDA::Device device{};
const auto config = ov::nvidia_gpu::Configuration(ov::AnyMap{ov::hint::inference_precision(ov::element::f16)});
ov::nvidia_gpu::GraphTransformer().transform(device, model, config);

// Check that after applying transformation all runtime info attributes was correctly propagated
ASSERT_NO_THROW(check_rt_info(model));

if (!CUDA::isHalfSupported(device)) {
GTEST_SKIP() << "f16 precision isn't fully supported on the device";
}
}

{
Expand Down

0 comments on commit 1199319

Please sign in to comment.