From babecfe0be5c4f9b030723c263ec4d0a8d98ff88 Mon Sep 17 00:00:00 2001 From: Ioannis Assiouras Date: Fri, 17 Nov 2023 02:18:11 +0000 Subject: [PATCH] SWDEV-432951 - Added C unit test Change-Id: I65a1e5be1782fd325cf1cfb74fbd80b4564df9dc [ROCm/hip-tests commit: 25af4dd1f48086ee8fd87b8b0556e32ae783f7a7] --- projects/hip-tests/catch/unit/CMakeLists.txt | 1 + .../catch/unit/c_compilation/CMakeLists.txt | 48 +++++++++++++++++++ .../unit/c_compilation/hipGetDeviceProp.c | 35 ++++++++++++++ .../unit/c_compilation/hipGetDeviceProp.cc | 39 +++++++++++++++ 4 files changed, 123 insertions(+) create mode 100644 projects/hip-tests/catch/unit/c_compilation/CMakeLists.txt create mode 100644 projects/hip-tests/catch/unit/c_compilation/hipGetDeviceProp.c create mode 100644 projects/hip-tests/catch/unit/c_compilation/hipGetDeviceProp.cc diff --git a/projects/hip-tests/catch/unit/CMakeLists.txt b/projects/hip-tests/catch/unit/CMakeLists.txt index 7f4884d9ac..278d012e7c 100644 --- a/projects/hip-tests/catch/unit/CMakeLists.txt +++ b/projects/hip-tests/catch/unit/CMakeLists.txt @@ -52,6 +52,7 @@ add_subdirectory(gcc) add_subdirectory(syncthreads) add_subdirectory(threadfence) add_subdirectory(virtualMemoryManagement) +add_subdirectory(c_compilation) if(HIP_PLATFORM STREQUAL "amd") add_subdirectory(callback) diff --git a/projects/hip-tests/catch/unit/c_compilation/CMakeLists.txt b/projects/hip-tests/catch/unit/c_compilation/CMakeLists.txt new file mode 100644 index 0000000000..1efc63ca0d --- /dev/null +++ b/projects/hip-tests/catch/unit/c_compilation/CMakeLists.txt @@ -0,0 +1,48 @@ +# Copyright (c) 2024 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. + +set(TEST_SRC + hipGetDeviceProp.cc +) + +set (PLATFORM_DEFINE __HIP_PLATFORM_AMD__) +if(HIP_PLATFORM MATCHES "nvidia") + set (PLATFORM_DEFINE __HIP_PLATFORM_NVIDIA__) +endif() + +# Creating Custom object file +add_custom_target(devprop_c_custom + COMMAND ${HIP_PATH}/bin/hipcc + -c ${CMAKE_CURRENT_SOURCE_DIR}/hipGetDeviceProp.c + -I${HIP_PATH}/include + -D${PLATFORM_DEFINE} + -o hipGetDeviceProp.o + BYPRODUCTS hipGetDeviceProp.o +) + +add_library(devprop_c OBJECT IMPORTED) +set_property(TARGET devprop_c PROPERTY IMPORTED_OBJECTS "${CMAKE_CURRENT_BINARY_DIR}/hipGetDeviceProp.o") + +hip_add_exe_to_target(NAME CTests + TEST_SRC ${TEST_SRC} + TEST_TARGET_NAME build_tests + LINKER_LIBS devprop_c) + +add_dependencies(CTests devprop_c_custom) diff --git a/projects/hip-tests/catch/unit/c_compilation/hipGetDeviceProp.c b/projects/hip-tests/catch/unit/c_compilation/hipGetDeviceProp.c new file mode 100644 index 0000000000..c49d700532 --- /dev/null +++ b/projects/hip-tests/catch/unit/c_compilation/hipGetDeviceProp.c @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2024 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, INNCLUDING 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 ANNY 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 +#include + +int hipGetDeviceProp() { + + hipDeviceProp_t prop; + hipError_t err = hipGetDeviceProperties(&prop, 0); + + if (err == hipSuccess) { + printf("PASSED!\n"); + return 1; + } else { + printf("FAILED!\n"); + return 0; + } +} diff --git a/projects/hip-tests/catch/unit/c_compilation/hipGetDeviceProp.cc b/projects/hip-tests/catch/unit/c_compilation/hipGetDeviceProp.cc new file mode 100644 index 0000000000..8dde84d3c4 --- /dev/null +++ b/projects/hip-tests/catch/unit/c_compilation/hipGetDeviceProp.cc @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2024 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, INNCLUDING 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 ANNY 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 Description + * ------------------------ + * - Call a hip function (hipGetDeviceProperties) from a c compilation unit + + * Test source + * ------------------------ + * - catch/unit/c_compilation/hipGetDeviceProp.cc + * Test requirements + * ------------------------ + * - HIP_VERSION >= 5.6 + */ + +extern "C" int hipGetDeviceProp(); + +TEST_CASE("Unit_hipGetDeviceProp_ctest") { + int result = hipGetDeviceProp(); + REQUIRE(result == 1); +}