Skip to content

Commit cb9ef90

Browse files
committed
ze_remote_tensor_tests development
1 parent 6f57382 commit cb9ef90

File tree

1 file changed

+135
-1
lines changed

1 file changed

+135
-1
lines changed

src/plugins/intel_gpu/tests/functional/remote_tensor_tests/ze_remote_tensor_tests.cpp

Lines changed: 135 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,149 @@
44

55
#ifdef OV_GPU_WITH_ZE_RT
66

7+
#include "common_test_utils/ov_tensor_utils.hpp"
78
#include "openvino/runtime/intel_gpu/remote_properties.hpp"
89
#include "openvino/runtime/remote_tensor.hpp"
910

1011
#include "shared_test_classes/base/ov_behavior_test_utils.hpp"
1112

12-
TEST(ZeRemoteContext, smoke_CorrectContextType) {
13+
namespace {
14+
15+
ov::RemoteTensor create_usm_remote_tensor(ov::RemoteContext& ctx,
16+
ov::intel_gpu::SharedMemType type,
17+
const ov::element::Type& et,
18+
const ov::Shape& shape) {
19+
return ctx.create_tensor(et, shape, {ov::intel_gpu::shared_mem_type(type)});
20+
}
21+
22+
void validate_remote_tensor_type(const ov::RemoteTensor& tensor,
23+
ov::intel_gpu::SharedMemType expected_type,
24+
const ov::Shape& expected_shape,
25+
const ov::element::Type& expected_et) {
26+
auto params = tensor.get_params();
27+
ASSERT_TRUE(params.count(ov::intel_gpu::shared_mem_type.name()) > 0);
28+
ASSERT_TRUE(params.count(ov::intel_gpu::mem_handle.name()) > 0);
29+
30+
ASSERT_EQ(params.at(ov::intel_gpu::shared_mem_type.name()).as<ov::intel_gpu::SharedMemType>(), expected_type);
31+
ASSERT_NE(params.at(ov::intel_gpu::mem_handle.name()).as<ov::intel_gpu::gpu_handle_param>(), nullptr);
32+
ASSERT_EQ(tensor.get_shape(), expected_shape);
33+
ASSERT_EQ(tensor.get_element_type(), expected_et);
34+
}
35+
36+
} // namespace
37+
38+
TEST(zeRemoteContext, smoke_CorrectContextType) {
39+
auto core = ov::Core();
40+
auto remote_context = core.get_default_context(ov::test::utils::DEVICE_GPU);
41+
ASSERT_EQ(remote_context.get_params().at(ov::intel_gpu::context_type.name()), ov::intel_gpu::ContextType::ZE);
42+
}
43+
44+
TEST(zeRemoteTensor, smoke_CreateUsmHostTensor) {
1345
auto core = ov::Core();
1446
auto remote_context = core.get_default_context(ov::test::utils::DEVICE_GPU);
1547
ASSERT_EQ(remote_context.get_params().at(ov::intel_gpu::context_type.name()), ov::intel_gpu::ContextType::ZE);
48+
49+
const ov::Shape shape{1, 2, 16, 16};
50+
const ov::element::Type et = ov::element::f32;
51+
52+
auto remote_tensor = create_usm_remote_tensor(remote_context, ov::intel_gpu::SharedMemType::USM_HOST_BUFFER, et, shape);
53+
validate_remote_tensor_type(remote_tensor, ov::intel_gpu::SharedMemType::USM_HOST_BUFFER, shape, et);
54+
}
55+
56+
TEST(zeRemoteTensor, smoke_CreateUsmDeviceTensor) {
57+
auto core = ov::Core();
58+
auto remote_context = core.get_default_context(ov::test::utils::DEVICE_GPU);
59+
ASSERT_EQ(remote_context.get_params().at(ov::intel_gpu::context_type.name()), ov::intel_gpu::ContextType::ZE);
60+
61+
const ov::Shape shape{1, 2, 16, 16};
62+
const ov::element::Type et = ov::element::f32;
63+
64+
auto remote_tensor = create_usm_remote_tensor(remote_context, ov::intel_gpu::SharedMemType::USM_DEVICE_BUFFER, et, shape);
65+
validate_remote_tensor_type(remote_tensor, ov::intel_gpu::SharedMemType::USM_DEVICE_BUFFER, shape, et);
66+
}
67+
68+
TEST(zeRemoteTensor, smoke_CanInferWithUsmHostInputOutput) {
69+
auto core = ov::Core();
70+
auto model = ov::test::behavior::getDefaultNGraphFunctionForTheDevice();
71+
72+
auto compiled_model = core.compile_model(model, ov::test::utils::DEVICE_GPU);
73+
auto remote_context = compiled_model.get_context();
74+
ASSERT_EQ(remote_context.get_params().at(ov::intel_gpu::context_type.name()), ov::intel_gpu::ContextType::ZE);
75+
76+
auto input = model->inputs().at(0);
77+
auto output = model->outputs().at(0);
78+
auto input_shape = input.get_shape();
79+
auto output_shape = output.get_shape();
80+
81+
auto host_input = ov::test::utils::create_and_fill_tensor(input.get_element_type(), input_shape);
82+
83+
auto remote_input = create_usm_remote_tensor(remote_context,
84+
ov::intel_gpu::SharedMemType::USM_HOST_BUFFER,
85+
input.get_element_type(),
86+
input_shape);
87+
auto remote_output = create_usm_remote_tensor(remote_context,
88+
ov::intel_gpu::SharedMemType::USM_HOST_BUFFER,
89+
output.get_element_type(),
90+
output_shape);
91+
92+
remote_input.copy_from(host_input);
93+
94+
auto infer_request = compiled_model.create_infer_request();
95+
infer_request.set_tensor(input, remote_input);
96+
infer_request.set_tensor(output, remote_output);
97+
infer_request.infer();
98+
99+
ov::Tensor remote_result(output.get_element_type(), output_shape);
100+
remote_output.copy_to(remote_result);
101+
102+
auto ref_request = compiled_model.create_infer_request();
103+
ref_request.set_tensor(input, host_input);
104+
ref_request.infer();
105+
auto ref_result = ref_request.get_tensor(output);
106+
107+
ov::test::utils::compare(remote_result, ref_result);
108+
}
109+
110+
TEST(zeRemoteTensor, smoke_CanInferWithUsmDeviceInputOutput) {
111+
auto core = ov::Core();
112+
auto model = ov::test::behavior::getDefaultNGraphFunctionForTheDevice();
113+
114+
auto compiled_model = core.compile_model(model, ov::test::utils::DEVICE_GPU);
115+
auto remote_context = compiled_model.get_context();
116+
ASSERT_EQ(remote_context.get_params().at(ov::intel_gpu::context_type.name()), ov::intel_gpu::ContextType::ZE);
117+
118+
auto input = model->inputs().at(0);
119+
auto output = model->outputs().at(0);
120+
auto input_shape = input.get_shape();
121+
auto output_shape = output.get_shape();
122+
123+
auto host_input = ov::test::utils::create_and_fill_tensor(input.get_element_type(), input_shape);
124+
125+
auto remote_input = create_usm_remote_tensor(remote_context,
126+
ov::intel_gpu::SharedMemType::USM_DEVICE_BUFFER,
127+
input.get_element_type(),
128+
input_shape);
129+
auto remote_output = create_usm_remote_tensor(remote_context,
130+
ov::intel_gpu::SharedMemType::USM_DEVICE_BUFFER,
131+
output.get_element_type(),
132+
output_shape);
133+
134+
remote_input.copy_from(host_input);
135+
136+
auto infer_request = compiled_model.create_infer_request();
137+
infer_request.set_tensor(input, remote_input);
138+
infer_request.set_tensor(output, remote_output);
139+
infer_request.infer();
140+
141+
ov::Tensor remote_result(output.get_element_type(), output_shape);
142+
remote_output.copy_to(remote_result);
143+
144+
auto ref_request = compiled_model.create_infer_request();
145+
ref_request.set_tensor(input, host_input);
146+
ref_request.infer();
147+
auto ref_result = ref_request.get_tensor(output);
148+
149+
ov::test::utils::compare(remote_result, ref_result);
16150
}
17151

18152
#endif // OV_GPU_WITH_ZE_RT

0 commit comments

Comments
 (0)