From c3c352e60050f3deacad767e429a88dc24b31af0 Mon Sep 17 00:00:00 2001 From: Georgios Pinitas Date: Thu, 18 Mar 2021 10:59:40 +0000 Subject: Add Queue support Queues are responsible for scheduling operators and performing other runtime related activities like for example tuning. Signed-off-by: Georgios Pinitas Change-Id: I0366d9048470d277b8cbf59fa42f95c0ae57c5c9 Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/5487 Tested-by: Arm Jenkins Reviewed-by: Michele Di Giorgio Reviewed-by: Michalis Spyrou Comments-Addressed: Arm Jenkins --- tests/validation/gpu/unit/Context.cpp | 14 ++---- tests/validation/gpu/unit/Queue.cpp | 81 ++++++++++++++++++++++++++++++++ tests/validation/gpu/unit/Tensor.cpp | 31 +++++------- tests/validation/gpu/unit/TensorPack.cpp | 22 +++------ 4 files changed, 103 insertions(+), 45 deletions(-) create mode 100644 tests/validation/gpu/unit/Queue.cpp (limited to 'tests/validation/gpu/unit') diff --git a/tests/validation/gpu/unit/Context.cpp b/tests/validation/gpu/unit/Context.cpp index 523a0283a7..598e219fd9 100644 --- a/tests/validation/gpu/unit/Context.cpp +++ b/tests/validation/gpu/unit/Context.cpp @@ -21,7 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#include "tests/validation/fixtures/UNIT/Context.h" +#include "tests/validation/fixtures/UNIT/ContextFixture.h" #include "src/gpu/cl/ClContext.h" @@ -37,15 +37,9 @@ TEST_SUITE(CL) TEST_SUITE(UNIT) TEST_SUITE(Context) -FIXTURE_TEST_CASE(SimpleContextCApi, SimpleContextCApiFixture, framework::DatasetMode::ALL) -{ -} -FIXTURE_TEST_CASE(SimpleContextCppApi, SimpleContextCppApiFixture, framework::DatasetMode::ALL) -{ -} -FIXTURE_TEST_CASE(MultipleContexts, MultipleContextsFixture, framework::DatasetMode::ALL) -{ -} +EMPTY_BODY_FIXTURE_TEST_CASE(SimpleContextCApi, SimpleContextCApiFixture, framework::DatasetMode::ALL) +EMPTY_BODY_FIXTURE_TEST_CASE(SimpleContextCppApi, SimpleContextCppApiFixture, framework::DatasetMode::ALL) +EMPTY_BODY_FIXTURE_TEST_CASE(MultipleContexts, MultipleContextsFixture, framework::DatasetMode::ALL) /** Test-case for MLGO kernel configuration file * diff --git a/tests/validation/gpu/unit/Queue.cpp b/tests/validation/gpu/unit/Queue.cpp new file mode 100644 index 0000000000..8154a7954f --- /dev/null +++ b/tests/validation/gpu/unit/Queue.cpp @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2021 Arm Limited. + * + * SPDX-License-Identifier: MIT + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#include "tests/validation/fixtures/UNIT/QueueFixture.h" + +#include "arm_compute/AclOpenClExt.h" +#include "src/gpu/cl/ClQueue.h" + +namespace arm_compute +{ +namespace test +{ +namespace validation +{ +TEST_SUITE(CL) +TEST_SUITE(UNIT) +TEST_SUITE(Queue) + +EMPTY_BODY_FIXTURE_TEST_CASE(CreateQueueWithInvalidContext, CreateQueueWithInvalidContextFixture, framework::DatasetMode::ALL) +EMPTY_BODY_FIXTURE_TEST_CASE(CreateQueuerWithInvalidOptions, CreateQueuerWithInvalidOptionsFixture, framework::DatasetMode::ALL) +EMPTY_BODY_FIXTURE_TEST_CASE(DestroyInvalidQueue, DestroyInvalidQueueFixture, framework::DatasetMode::ALL) +EMPTY_BODY_FIXTURE_TEST_CASE(SimpleQueue, SimpleQueueFixture, framework::DatasetMode::ALL) + +TEST_CASE(KhrQueuePriorities, framework::DatasetMode::ALL) +{ + acl::StatusCode err = acl::StatusCode::Success; + + acl::Context ctx(acl::Target::GpuOcl, &err); + ARM_COMPUTE_ASSERT(err == acl::StatusCode::Success); + + acl::Queue queue(ctx, &err); + ARM_COMPUTE_ASSERT(err == acl::StatusCode::Success); + + cl_device_id cl_dev; + auto status = AclGetClDevice(ctx.get(), &cl_dev); + ARM_COMPUTE_ASSERT(status == AclSuccess); + + std::string extensions = cl::Device(cl_dev).getInfo(); + if(extensions.find("cl_khr_priority_hints") != std::string::npos) + { + cl_int error = CL_SUCCESS; + + cl_context cl_ctx; + auto status = AclGetClContext(ctx.get(), &cl_ctx); + ARM_COMPUTE_ASSERT(status == AclSuccess); + + /* Check a queue with high priority */ + cl_queue_properties queue_properties[] = { CL_QUEUE_PRIORITY_KHR, CL_QUEUE_PRIORITY_HIGH_KHR, 0 }; + cl_command_queue priority_queue = clCreateCommandQueueWithProperties(cl_ctx, cl_dev, queue_properties, &error); + ARM_COMPUTE_ASSERT(error == CL_SUCCESS); + + clReleaseCommandQueue(priority_queue); + } +} + +TEST_SUITE_END() // Queue +TEST_SUITE_END() // UNIT +TEST_SUITE_END() // CL +} // namespace validation +} // namespace test +} // namespace arm_compute diff --git a/tests/validation/gpu/unit/Tensor.cpp b/tests/validation/gpu/unit/Tensor.cpp index b40d6264f5..18102733ce 100644 --- a/tests/validation/gpu/unit/Tensor.cpp +++ b/tests/validation/gpu/unit/Tensor.cpp @@ -21,7 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#include "tests/validation/fixtures/UNIT/Tensor.h" +#include "tests/validation/fixtures/UNIT/TensorFixture.h" namespace arm_compute { @@ -33,24 +33,17 @@ TEST_SUITE(CL) TEST_SUITE(UNIT) TEST_SUITE(Tensor) -#define TENSOR_TESE_CASE(name, fixture) \ - FIXTURE_TEST_CASE(name, fixture, framework::DatasetMode::ALL) \ - { \ - } - -TENSOR_TESE_CASE(CreateTensorWithInvalidContext, CreateTensorWithInvalidContextFixture) -TENSOR_TESE_CASE(CreateTensorWithInvalidDescriptor, CreateTensorWithInvalidDescriptorFixture) -TENSOR_TESE_CASE(DestroyInvalidTensor, DestroyInvalidTensorFixture) -TENSOR_TESE_CASE(SimpleTensor, SimpleTensorFixture) -TENSOR_TESE_CASE(TensorStress, TensorStressFixture) -TENSOR_TESE_CASE(MapInvalidTensor, MapInvalidTensorFixture) -TENSOR_TESE_CASE(MapAllocatedTensor, MapAllocatedTensorFixture) -TENSOR_TESE_CASE(GetSize, TensorSizeFixture) -TENSOR_TESE_CASE(GetInvalidSize, InvalidTensorSizeFixture) -TENSOR_TESE_CASE(GetDescriptor, DescriptorConversionFixture) -TENSOR_TESE_CASE(GetInvalidDescriptor, InvalidDescriptorConversionFixture) - -#undef TENSOR_TEST_CASE +EMPTY_BODY_FIXTURE_TEST_CASE(CreateTensorWithInvalidContext, CreateTensorWithInvalidContextFixture, framework::DatasetMode::ALL) +EMPTY_BODY_FIXTURE_TEST_CASE(CreateTensorWithInvalidDescriptor, CreateTensorWithInvalidDescriptorFixture, framework::DatasetMode::ALL) +EMPTY_BODY_FIXTURE_TEST_CASE(DestroyInvalidTensor, DestroyInvalidTensorFixture, framework::DatasetMode::ALL) +EMPTY_BODY_FIXTURE_TEST_CASE(SimpleTensor, SimpleTensorFixture, framework::DatasetMode::ALL) +EMPTY_BODY_FIXTURE_TEST_CASE(TensorStress, TensorStressFixture, framework::DatasetMode::ALL) +EMPTY_BODY_FIXTURE_TEST_CASE(MapInvalidTensor, MapInvalidTensorFixture, framework::DatasetMode::ALL) +EMPTY_BODY_FIXTURE_TEST_CASE(MapAllocatedTensor, MapAllocatedTensorFixture, framework::DatasetMode::ALL) +EMPTY_BODY_FIXTURE_TEST_CASE(GetSize, TensorSizeFixture, framework::DatasetMode::ALL) +EMPTY_BODY_FIXTURE_TEST_CASE(GetInvalidSize, InvalidTensorSizeFixture, framework::DatasetMode::ALL) +EMPTY_BODY_FIXTURE_TEST_CASE(GetDescriptor, DescriptorConversionFixture, framework::DatasetMode::ALL) +EMPTY_BODY_FIXTURE_TEST_CASE(GetInvalidDescriptor, InvalidDescriptorConversionFixture, framework::DatasetMode::ALL) TEST_SUITE_END() // Tensor TEST_SUITE_END() // UNIT diff --git a/tests/validation/gpu/unit/TensorPack.cpp b/tests/validation/gpu/unit/TensorPack.cpp index b057db44ae..b62426d056 100644 --- a/tests/validation/gpu/unit/TensorPack.cpp +++ b/tests/validation/gpu/unit/TensorPack.cpp @@ -21,7 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -#include "tests/validation/fixtures/UNIT/TensorPack.h" +#include "tests/validation/fixtures/UNIT/TensorPackFixture.h" namespace arm_compute { @@ -33,21 +33,11 @@ TEST_SUITE(CL) TEST_SUITE(UNIT) TEST_SUITE(TensorPack) -FIXTURE_TEST_CASE(CreateTensorPackWithInvalidContext, CreateTensorPackWithInvalidContextFixture, framework::DatasetMode::ALL) -{ -} -FIXTURE_TEST_CASE(DestroyInvalidTensorPack, DestroyInvalidTensorPackFixture, framework::DatasetMode::ALL) -{ -} -FIXTURE_TEST_CASE(AddInvalidObjectToTensorPack, AddInvalidObjectToTensorPackFixture, framework::DatasetMode::ALL) -{ -} -FIXTURE_TEST_CASE(SimpleTensorPack, SimpleTensorPackFixture, framework::DatasetMode::ALL) -{ -} -FIXTURE_TEST_CASE(MultipleTensorsInPack, MultipleTensorsInPackFixture, framework::DatasetMode::ALL) -{ -} +EMPTY_BODY_FIXTURE_TEST_CASE(CreateTensorPackWithInvalidContext, CreateTensorPackWithInvalidContextFixture, framework::DatasetMode::ALL) +EMPTY_BODY_FIXTURE_TEST_CASE(DestroyInvalidTensorPack, DestroyInvalidTensorPackFixture, framework::DatasetMode::ALL) +EMPTY_BODY_FIXTURE_TEST_CASE(AddInvalidObjectToTensorPack, AddInvalidObjectToTensorPackFixture, framework::DatasetMode::ALL) +EMPTY_BODY_FIXTURE_TEST_CASE(SimpleTensorPack, SimpleTensorPackFixture, framework::DatasetMode::ALL) +EMPTY_BODY_FIXTURE_TEST_CASE(MultipleTensorsInPack, MultipleTensorsInPackFixture, framework::DatasetMode::ALL) TEST_SUITE_END() // Tensor TEST_SUITE_END() // UNIT -- cgit v1.2.1