brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.9 KiB · ba29fb1 Raw
259 lines · cpp
1//===------- Offload API tests - olGetDeviceInfo --------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "../common/Fixtures.hpp"10#include <OffloadAPI.h>11#include <gtest/gtest.h>12 13using olGetDeviceInfoTest = OffloadDeviceTest;14OFFLOAD_TESTS_INSTANTIATE_DEVICE_FIXTURE(olGetDeviceInfoTest);15 16#define OL_DEVICE_INFO_TEST_SUCCESS_CHECK(TestName, PropType, PropName, Dev,   \17                                          Expr)                                \18  TEST_P(olGetDeviceInfoTest, Test##Dev##TestName) {                           \19    PropType Value;                                                            \20    ASSERT_SUCCESS(olGetDeviceInfo(Dev, PropName, sizeof(Value), &Value));     \21    Expr;                                                                      \22  }23 24#define OL_DEVICE_INFO_TEST_DEVICE_SUCCESS(TestName, PropType, PropName)       \25  OL_DEVICE_INFO_TEST_SUCCESS_CHECK(TestName, PropType, PropName, Device, {})26 27#define OL_DEVICE_INFO_TEST_HOST_SUCCESS(TestName, PropType, PropName)         \28  OL_DEVICE_INFO_TEST_SUCCESS_CHECK(TestName, PropType, PropName, Host, {})29 30#define OL_DEVICE_INFO_TEST_SUCCESS(TestName, PropType, PropName)              \31  OL_DEVICE_INFO_TEST_DEVICE_SUCCESS(TestName, PropType, PropName)             \32  OL_DEVICE_INFO_TEST_HOST_SUCCESS(TestName, PropType, PropName)33 34#define OL_DEVICE_INFO_TEST_DEVICE_VALUE_GT(TestName, PropType, PropName,      \35                                            LowBound)                          \36  OL_DEVICE_INFO_TEST_SUCCESS_CHECK(TestName, PropType, PropName, Device,      \37                                    ASSERT_GT(Value, LowBound))38 39#define OL_DEVICE_INFO_TEST_HOST_VALUE_GT(TestName, PropType, PropName,        \40                                          LowBound)                            \41  OL_DEVICE_INFO_TEST_SUCCESS_CHECK(TestName, PropType, PropName, Host,        \42                                    ASSERT_GT(Value, LowBound))43 44#define OL_DEVICE_INFO_TEST_VALUE_GT(TestName, PropType, PropName, LowBound)   \45  OL_DEVICE_INFO_TEST_DEVICE_VALUE_GT(TestName, PropType, PropName, LowBound)  \46  OL_DEVICE_INFO_TEST_HOST_VALUE_GT(TestName, PropType, PropName, LowBound)47 48TEST_P(olGetDeviceInfoTest, SuccessType) {49  ol_device_type_t DeviceType;50  ASSERT_SUCCESS(olGetDeviceInfo(Device, OL_DEVICE_INFO_TYPE,51                                 sizeof(ol_device_type_t), &DeviceType));52}53 54TEST_P(olGetDeviceInfoTest, HostSuccessType) {55  ol_device_type_t DeviceType;56  ASSERT_SUCCESS(olGetDeviceInfo(Host, OL_DEVICE_INFO_TYPE,57                                 sizeof(ol_device_type_t), &DeviceType));58  ASSERT_EQ(DeviceType, OL_DEVICE_TYPE_HOST);59}60 61TEST_P(olGetDeviceInfoTest, SuccessPlatform) {62  ol_platform_handle_t Platform = nullptr;63  ASSERT_SUCCESS(olGetDeviceInfo(Device, OL_DEVICE_INFO_PLATFORM,64                                 sizeof(ol_platform_handle_t), &Platform));65  ASSERT_NE(Platform, nullptr);66}67 68TEST_P(olGetDeviceInfoTest, SuccessName) {69  size_t Size = 0;70  ASSERT_SUCCESS(olGetDeviceInfoSize(Device, OL_DEVICE_INFO_NAME, &Size));71  ASSERT_GT(Size, 0ul);72  std::vector<char> Name;73  Name.resize(Size);74  ASSERT_SUCCESS(75      olGetDeviceInfo(Device, OL_DEVICE_INFO_NAME, Size, Name.data()));76  ASSERT_EQ(std::strlen(Name.data()), Size - 1);77}78 79TEST_P(olGetDeviceInfoTest, HostName) {80  size_t Size = 0;81  ASSERT_SUCCESS(olGetDeviceInfoSize(Host, OL_DEVICE_INFO_NAME, &Size));82  ASSERT_GT(Size, 0ul);83  std::vector<char> Name;84  Name.resize(Size);85  ASSERT_SUCCESS(olGetDeviceInfo(Host, OL_DEVICE_INFO_NAME, Size, Name.data()));86  ASSERT_EQ(std::strlen(Name.data()), Size - 1);87}88 89TEST_P(olGetDeviceInfoTest, SuccessProductName) {90  size_t Size = 0;91  ASSERT_SUCCESS(92      olGetDeviceInfoSize(Device, OL_DEVICE_INFO_PRODUCT_NAME, &Size));93  ASSERT_GT(Size, 0ul);94  std::vector<char> Name;95  Name.resize(Size);96  ASSERT_SUCCESS(97      olGetDeviceInfo(Device, OL_DEVICE_INFO_PRODUCT_NAME, Size, Name.data()));98  ASSERT_EQ(std::strlen(Name.data()), Size - 1);99}100 101TEST_P(olGetDeviceInfoTest, SuccessUID) {102  size_t Size = 0;103  ASSERT_SUCCESS(olGetDeviceInfoSize(Device, OL_DEVICE_INFO_UID, &Size));104  ASSERT_GT(Size, 0ul);105  std::vector<char> UID;106  UID.resize(Size);107  ASSERT_SUCCESS(olGetDeviceInfo(Device, OL_DEVICE_INFO_UID, Size, UID.data()));108  ASSERT_EQ(std::strlen(UID.data()), Size - 1);109}110 111TEST_P(olGetDeviceInfoTest, HostProductName) {112  size_t Size = 0;113  ASSERT_SUCCESS(olGetDeviceInfoSize(Host, OL_DEVICE_INFO_PRODUCT_NAME, &Size));114  ASSERT_GT(Size, 0ul);115  std::vector<char> Name;116  Name.resize(Size);117  ASSERT_SUCCESS(118      olGetDeviceInfo(Host, OL_DEVICE_INFO_PRODUCT_NAME, Size, Name.data()));119  ASSERT_EQ(std::strlen(Name.data()), Size - 1);120}121 122TEST_P(olGetDeviceInfoTest, HostUID) {123  size_t Size = 0;124  ASSERT_SUCCESS(olGetDeviceInfoSize(Host, OL_DEVICE_INFO_UID, &Size));125  ASSERT_GT(Size, 0ul);126  std::vector<char> UID;127  UID.resize(Size);128  ASSERT_SUCCESS(olGetDeviceInfo(Host, OL_DEVICE_INFO_UID, Size, UID.data()));129  ASSERT_EQ(std::strlen(UID.data()), Size - 1);130}131 132TEST_P(olGetDeviceInfoTest, SuccessVendor) {133  size_t Size = 0;134  ASSERT_SUCCESS(olGetDeviceInfoSize(Device, OL_DEVICE_INFO_VENDOR, &Size));135  ASSERT_GT(Size, 0ul);136  std::vector<char> Vendor;137  Vendor.resize(Size);138  ASSERT_SUCCESS(139      olGetDeviceInfo(Device, OL_DEVICE_INFO_VENDOR, Size, Vendor.data()));140  ASSERT_EQ(std::strlen(Vendor.data()), Size - 1);141}142 143TEST_P(olGetDeviceInfoTest, SuccessDriverVersion) {144  size_t Size = 0;145  ASSERT_SUCCESS(146      olGetDeviceInfoSize(Device, OL_DEVICE_INFO_DRIVER_VERSION, &Size));147  ASSERT_GT(Size, 0ul);148  std::vector<char> DriverVersion;149  DriverVersion.resize(Size);150  ASSERT_SUCCESS(olGetDeviceInfo(Device, OL_DEVICE_INFO_DRIVER_VERSION, Size,151                                 DriverVersion.data()));152  ASSERT_EQ(std::strlen(DriverVersion.data()), Size - 1);153}154 155OL_DEVICE_INFO_TEST_VALUE_GT(MaxWorkGroupSize, uint32_t,156                             OL_DEVICE_INFO_MAX_WORK_GROUP_SIZE, 0);157 158TEST_P(olGetDeviceInfoTest, SuccessMaxWorkGroupSizePerDimension) {159  ol_dimensions_t Value{0, 0, 0};160  ASSERT_SUCCESS(161      olGetDeviceInfo(Device, OL_DEVICE_INFO_MAX_WORK_GROUP_SIZE_PER_DIMENSION,162                      sizeof(Value), &Value));163  ASSERT_GT(Value.x, 0u);164  ASSERT_GT(Value.y, 0u);165  ASSERT_GT(Value.z, 0u);166}167 168OL_DEVICE_INFO_TEST_VALUE_GT(MaxWorkSize, uint32_t,169                             OL_DEVICE_INFO_MAX_WORK_SIZE, 0);170 171TEST_P(olGetDeviceInfoTest, SuccessMaxWorkSizePerDimension) {172  ol_dimensions_t Value{0, 0, 0};173  ASSERT_SUCCESS(olGetDeviceInfo(Device,174                                 OL_DEVICE_INFO_MAX_WORK_SIZE_PER_DIMENSION,175                                 sizeof(Value), &Value));176  ASSERT_GT(Value.x, 0u);177  ASSERT_GT(Value.y, 0u);178  ASSERT_GT(Value.z, 0u);179}180 181OL_DEVICE_INFO_TEST_DEVICE_VALUE_GT(VendorId, uint32_t,182                                    OL_DEVICE_INFO_VENDOR_ID, 0);183OL_DEVICE_INFO_TEST_HOST_SUCCESS(VendorId, uint32_t, OL_DEVICE_INFO_VENDOR_ID);184OL_DEVICE_INFO_TEST_VALUE_GT(NumComputeUnits, uint32_t,185                             OL_DEVICE_INFO_NUM_COMPUTE_UNITS, 0);186OL_DEVICE_INFO_TEST_VALUE_GT(SingleFPConfig, ol_device_fp_capability_flags_t,187                             OL_DEVICE_INFO_SINGLE_FP_CONFIG, 0);188OL_DEVICE_INFO_TEST_SUCCESS(HalfFPConfig, ol_device_fp_capability_flags_t,189                            OL_DEVICE_INFO_HALF_FP_CONFIG);190OL_DEVICE_INFO_TEST_VALUE_GT(DoubleFPConfig, ol_device_fp_capability_flags_t,191                             OL_DEVICE_INFO_DOUBLE_FP_CONFIG, 0);192OL_DEVICE_INFO_TEST_VALUE_GT(NativeVectorWidthChar, uint32_t,193                             OL_DEVICE_INFO_NATIVE_VECTOR_WIDTH_CHAR, 0);194OL_DEVICE_INFO_TEST_VALUE_GT(NativeVectorWidthShort, uint32_t,195                             OL_DEVICE_INFO_NATIVE_VECTOR_WIDTH_SHORT, 0);196OL_DEVICE_INFO_TEST_VALUE_GT(NativeVectorWidthInt, uint32_t,197                             OL_DEVICE_INFO_NATIVE_VECTOR_WIDTH_INT, 0);198OL_DEVICE_INFO_TEST_VALUE_GT(NativeVectorWidthLong, uint32_t,199                             OL_DEVICE_INFO_NATIVE_VECTOR_WIDTH_LONG, 0);200OL_DEVICE_INFO_TEST_VALUE_GT(NativeVectorWidthFloat, uint32_t,201                             OL_DEVICE_INFO_NATIVE_VECTOR_WIDTH_FLOAT, 0);202OL_DEVICE_INFO_TEST_VALUE_GT(NativeVectorWidthDouble, uint32_t,203                             OL_DEVICE_INFO_NATIVE_VECTOR_WIDTH_DOUBLE, 0);204OL_DEVICE_INFO_TEST_SUCCESS(NativeVectorWidthHalf, uint32_t,205                            OL_DEVICE_INFO_NATIVE_VECTOR_WIDTH_HALF);206OL_DEVICE_INFO_TEST_VALUE_GT(MaxClockFrequency, uint32_t,207                             OL_DEVICE_INFO_MAX_CLOCK_FREQUENCY, 0);208OL_DEVICE_INFO_TEST_VALUE_GT(MemoryClockRate, uint32_t,209                             OL_DEVICE_INFO_MEMORY_CLOCK_RATE, 0);210OL_DEVICE_INFO_TEST_VALUE_GT(AddressBits, uint32_t, OL_DEVICE_INFO_ADDRESS_BITS,211                             0);212OL_DEVICE_INFO_TEST_DEVICE_VALUE_GT(MaxMemAllocSize, uint64_t,213                                    OL_DEVICE_INFO_MAX_MEM_ALLOC_SIZE, 0);214OL_DEVICE_INFO_TEST_HOST_SUCCESS(MaxMemAllocSize, uint64_t,215                                 OL_DEVICE_INFO_MAX_MEM_ALLOC_SIZE);216OL_DEVICE_INFO_TEST_DEVICE_VALUE_GT(GlobalMemSize, uint64_t,217                                    OL_DEVICE_INFO_GLOBAL_MEM_SIZE, 0);218OL_DEVICE_INFO_TEST_HOST_SUCCESS(GlobalMemSize, uint64_t,219                                 OL_DEVICE_INFO_GLOBAL_MEM_SIZE);220OL_DEVICE_INFO_TEST_DEVICE_VALUE_GT(SharedMemSize, uint64_t,221                                    OL_DEVICE_INFO_WORK_GROUP_LOCAL_MEM_SIZE,222                                    0);223OL_DEVICE_INFO_TEST_HOST_SUCCESS(SharedMemSize, uint64_t,224                                 OL_DEVICE_INFO_WORK_GROUP_LOCAL_MEM_SIZE);225 226TEST_P(olGetDeviceInfoTest, InvalidNullHandleDevice) {227  ol_device_type_t DeviceType;228  ASSERT_ERROR(OL_ERRC_INVALID_NULL_HANDLE,229               olGetDeviceInfo(nullptr, OL_DEVICE_INFO_TYPE,230                               sizeof(ol_device_type_t), &DeviceType));231}232 233TEST_P(olGetDeviceInfoTest, InvalidEnumerationInfoType) {234  ol_device_type_t DeviceType;235  ASSERT_ERROR(OL_ERRC_INVALID_ENUMERATION,236               olGetDeviceInfo(Device, OL_DEVICE_INFO_FORCE_UINT32,237                               sizeof(ol_device_type_t), &DeviceType));238}239 240TEST_P(olGetDeviceInfoTest, InvalidSizePropSize) {241  ol_device_type_t DeviceType;242  ASSERT_ERROR(OL_ERRC_INVALID_SIZE,243               olGetDeviceInfo(Device, OL_DEVICE_INFO_TYPE, 0, &DeviceType));244}245 246TEST_P(olGetDeviceInfoTest, InvalidSizePropSizeSmall) {247  ol_device_type_t DeviceType;248  ASSERT_ERROR(OL_ERRC_INVALID_SIZE,249               olGetDeviceInfo(Device, OL_DEVICE_INFO_TYPE,250                               sizeof(DeviceType) - 1, &DeviceType));251}252 253TEST_P(olGetDeviceInfoTest, InvalidNullPointerPropValue) {254  ol_device_type_t DeviceType;255  ASSERT_ERROR(OL_ERRC_INVALID_NULL_POINTER,256               olGetDeviceInfo(Device, OL_DEVICE_INFO_TYPE, sizeof(DeviceType),257                               nullptr));258}259