/* * Copyright (c) Advanced Micro Devices, Inc., or its affiliates. * * SPDX-License-Identifier: MIT */ #include #include /** * @addtogroup hipMemcpyAtoA hipMemcpyAtoA * @{ * @ingroup MemoryTest * `hipError_t hipMemcpyAtoA(hipArray_t dstArray, size_t dstOffset, * hipArray_t srcArray, size_t srcOffset, * size_t ByteCount)` - * Copies from one 1D array to another. */ /** * Test Description * ------------------------ * - This testcase initially copies data from host to 1D array and then * performs hipMemcpyAtoA api call and copies this 1D array to host variable * and verifies with initial host values. * Test source * ------------------------ * - unit/memory/hipMemcpyAtoA.cc * Test requirements * ------------------------ * - HIP_VERSION >= 6.2 */ HIP_TEST_CASE(Unit_hipMemcpyAtoA_Basic) { #if HT_NVIDIA HIP_SKIP_TEST(HipTest::SkipReason::kApiUnsupportedOnNvidia); #else HIP_CHECK(hipSetDevice(0)); CHECK_IMAGE_SUPPORT int row, col; row = 1; col = GENERATE(3, 4, 100); int* A_h = reinterpret_cast(malloc(sizeof(int) * row * col)); int* B_h = reinterpret_cast(malloc(sizeof(int) * row * col)); for (int i = 0; i < (row * col); i++) { A_h[i] = i; } hipArray_t A_a, B_a; hipChannelFormatDesc desc = hipCreateChannelDesc(); HIP_CHECK(hipMallocArray(&A_a, &desc, col, row, hipArrayDefault)); HIP_CHECK(hipMallocArray(&B_a, &desc, col, row, hipArrayDefault)); HIP_CHECK(hipMemcpy2DToArray(A_a, 0, 0, A_h, col * sizeof(int), col * sizeof(int), row, hipMemcpyHostToDevice)); hipError_t memcpy_err = hipSuccess; BEGIN_CAPTURE_SYNC(memcpy_err, false); HIP_CHECK_ERROR(hipMemcpyAtoA(B_a, 0, A_a, 0, sizeof(int) * row * col), memcpy_err); END_CAPTURE_SYNC(memcpy_err); if (memcpy_err == hipSuccess) { HIP_CHECK(hipMemcpy2DFromArray(B_h, sizeof(int) * col, B_a, 0, 0, sizeof(int) * col, row, hipMemcpyDeviceToHost)); for (int i = 0; i < (row * col); i++) { REQUIRE(A_h[i] == B_h[i]); } } HIP_CHECK(hipFreeArray(A_a)); HIP_CHECK(hipFreeArray(B_a)); free(A_h); free(B_h); #endif } /** * End doxygen group MemoryTest. * @} */