From c678dde410f77de0a6d9bfd0f31e72fe3fba0a41 Mon Sep 17 00:00:00 2001 From: ROCm CI Service Account <66695075+rocm-ci@users.noreply.github.com> Date: Mon, 6 Mar 2023 19:35:29 +0530 Subject: [PATCH] SWDEV-380340 - [catch2][dtest] Context tests migrated from direct to catch2 (#187) Change-Id: I6cf69089343cfcddfa9d0ac1a8e2c73381ff70e8 --- catch/unit/CMakeLists.txt | 3 +- catch/unit/context/CMakeLists.txt | 28 ++++++++++++ catch/unit/context/hipDrvGetPCIBusId.cc | 29 ++++++++++++ catch/unit/context/hipDrvMemcpy.cc | 60 +++++++++++++++++++++++++ catch/unit/context/hipMemsetD8.cc | 42 +++++++++++++++++ 5 files changed, 161 insertions(+), 1 deletion(-) create mode 100644 catch/unit/context/CMakeLists.txt create mode 100644 catch/unit/context/hipDrvGetPCIBusId.cc create mode 100644 catch/unit/context/hipDrvMemcpy.cc create mode 100644 catch/unit/context/hipMemsetD8.cc diff --git a/catch/unit/CMakeLists.txt b/catch/unit/CMakeLists.txt index 63bbeda241..31bd37da9b 100644 --- a/catch/unit/CMakeLists.txt +++ b/catch/unit/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (c) 2021 Advanced Micro Devices, Inc. All Rights Reserved. +# Copyright (c) 2023 Advanced Micro Devices, Inc. All Rights Reserved. # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal @@ -34,6 +34,7 @@ add_subdirectory(multiThread) add_subdirectory(compiler) add_subdirectory(errorHandling) add_subdirectory(cooperativeGrps) +add_subdirectory(context) if(HIP_PLATFORM STREQUAL "amd") add_subdirectory(callback) #add_subdirectory(clock) diff --git a/catch/unit/context/CMakeLists.txt b/catch/unit/context/CMakeLists.txt new file mode 100644 index 0000000000..0d20df1bfa --- /dev/null +++ b/catch/unit/context/CMakeLists.txt @@ -0,0 +1,28 @@ +# Copyright (c) 2023 Advanced Micro Devices, Inc. All Rights Reserved. +# +# 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. +# Common Tests - Test independent of all platforms +set(TEST_SRC + hipDrvGetPCIBusId.cc + hipDrvMemcpy.cc + hipMemsetD8.cc +) +hip_add_exe_to_target(NAME Context + TEST_SRC ${TEST_SRC} + TEST_TARGET_NAME build_tests) diff --git a/catch/unit/context/hipDrvGetPCIBusId.cc b/catch/unit/context/hipDrvGetPCIBusId.cc new file mode 100644 index 0000000000..7be51441c6 --- /dev/null +++ b/catch/unit/context/hipDrvGetPCIBusId.cc @@ -0,0 +1,29 @@ +/*Copyright (c) 2023 Advanced Micro Devices, Inc. All rights reserved. +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 WARRANNTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNNESS 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 INN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR INN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ +#include + +TEST_CASE("Unit_hipDeviceGetPCIBusId_Functional") { + HIP_CHECK(hipInit(0)); + hipDevice_t device; + HIP_CHECK(hipDeviceGet(&device, 0)); + char pciBusId[13]; + memset(pciBusId, 0, 13); + HIP_CHECK(hipDeviceGetPCIBusId(pciBusId, 13, device)); + REQUIRE(pciBusId[0] != '\0'); +} + diff --git a/catch/unit/context/hipDrvMemcpy.cc b/catch/unit/context/hipDrvMemcpy.cc new file mode 100644 index 0000000000..9e0b1e8062 --- /dev/null +++ b/catch/unit/context/hipDrvMemcpy.cc @@ -0,0 +1,60 @@ +/* +Copyright (c) 2023 Advanced Micro Devices, Inc. All rights reserved. +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 WARRANNTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNNESS 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 INN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR INN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ +#include +#define LEN 1024 +#define SIZE (LEN << 2) + +TEST_CASE("Unit_hipDrvMemcpy_Functional") { + int *A, *B; + hipDeviceptr_t Ad, Bd; + A = new int[LEN]; + B = new int[LEN]; + + for (int i = 0; i < LEN; i++) { + A[i] = i; + } + + HIP_CHECK(hipMalloc(reinterpret_cast(&Ad), SIZE)); + HIP_CHECK(hipMalloc(reinterpret_cast(&Bd), SIZE)); + + HIP_CHECK(hipMemcpyHtoD(Ad, A, SIZE)); + HIP_CHECK(hipMemcpyDtoD(Bd, Ad, SIZE)); + HIP_CHECK(hipMemcpyDtoH(B, Bd, SIZE)); + + for (int i = 0; i < 16; i++) { + REQUIRE(A[i] == B[i]); + } + + int *Ah, *Bh; + HIP_CHECK(hipHostMalloc(&Ah, SIZE, 0)); + HIP_CHECK(hipHostMalloc(&Bh, SIZE, 0)); + memcpy(Ah, A, SIZE); + hipStream_t stream; + HIP_CHECK(hipStreamCreate(&stream)); + + HIP_CHECK(hipMemcpyHtoDAsync(Ad, Ah, SIZE, stream)); + HIP_CHECK(hipStreamSynchronize(stream)); + HIP_CHECK(hipMemcpyDtoDAsync(Bd, Ad, SIZE, stream)); + HIP_CHECK(hipStreamSynchronize(stream)); + HIP_CHECK(hipMemcpyDtoHAsync(Bh, Bd, SIZE, stream)); + HIP_CHECK(hipStreamSynchronize(stream)); + REQUIRE(Ah[10] == Bh[10]); + delete[] A; + delete[] B; +} diff --git a/catch/unit/context/hipMemsetD8.cc b/catch/unit/context/hipMemsetD8.cc new file mode 100644 index 0000000000..2b90099e0f --- /dev/null +++ b/catch/unit/context/hipMemsetD8.cc @@ -0,0 +1,42 @@ +/* +Copyright (c) 2023 Advanced Micro Devices, Inc. All rights reserved. +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 WARRANNTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNNESS 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 INN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR INN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ +#include +#define N 1024 +constexpr char memsetval = 'b'; + +TEST_CASE("Unit_hipMemsetD8_Functional") { + size_t Nbytes = N * sizeof(char); + char* A_h = new char[Nbytes];; + + hipDeviceptr_t A_d; + HIP_CHECK(hipMalloc(reinterpret_cast(&A_d), Nbytes)); + + HIP_CHECK(hipMemsetD8(A_d, memsetval, Nbytes)); + + HIP_CHECK(hipMemcpy(A_h, reinterpret_cast(A_d), Nbytes, + hipMemcpyDeviceToHost)); + + for (int i = 0; i < N; i++) { + REQUIRE(A_h[i] == memsetval); + } + + HIP_CHECK(hipFree(reinterpret_cast(A_d))); + delete[] A_h; +} +