mirror of
https://github.com/ROCm/composable_kernel.git
synced 2026-03-23 08:37:39 +00:00
* Add README.md for testing * Add tensor_memory_manager. * ck-builder: tensor memory manager rebase fixes This fixes some issues caused by the API being changed recently. Also, this streamlines the ckt namespace to always be ck_tile::builder::test, as this is already being used by other tests Really, this commit should be squashed into the previous, but I'm keeping it separate for brevity. * ck-builder: test arguments initial prototype * ck-builder: test system initial prototype * ck-builder: fix non-standardized copyright comments * ck-builder: new prototype * ck-builder: group testing inputs/outputs into a separate structure This is basically the return of the tensor memory manager after all, except that the design is more closely tied to the actual operation. Using a struct allows us to add additional input/output tensors without breaking code (by defaulting those new parameters). Note that the tensors are split into a separate inputs/outputs because we usually want to allocate the output _twice_: once for the real computation and once for the reference computation. * ck-builder: simplify prototype naming; start docs * ck-builder: update testing readme * ck-builder: testing documentation * ck-builder: HipStatusMatcher This matcher can be used to check HIP status codes and provide nice and readable error messages. * ck-builder: tensor_buffer.hpp tests * ck-builder: conv_fwd.hpp tests * ck-builder: add example end-to-end test in conv fwd 2d fp16 * ck-builder: simplify extent usage * ck-builder: update testing doc * ck-builder: skip end to end test on non-gfx9 * fix check_copyright_year interpreter /bin/bash is not guaranteed to exist on Linux. Signed, a NixOS user * ck-builder: fix copyrights * ck-builder: reduce conv fwd testing size This test allocated 24GB of memory, too much for 16GB cards. --------- Co-authored-by: John Shumway <jshumway@amd.com>
48 lines
1.5 KiB
C++
48 lines
1.5 KiB
C++
// Copyright (c) Advanced Micro Devices, Inc., or its affiliates.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
#include "ck_tile/builder/testing/tensor_buffer.hpp"
|
|
#include "testing_utils.hpp"
|
|
#include <gtest/gtest.h>
|
|
#include <gmock/gmock.h>
|
|
#include <vector>
|
|
|
|
namespace ckb = ck_tile::builder;
|
|
namespace ckt = ck_tile::builder::test;
|
|
|
|
using ::testing::ElementsAreArray;
|
|
using ::testing::Ge;
|
|
|
|
TEST(TensorDescriptor, Basic)
|
|
{
|
|
constexpr auto dt = ckb::DataType::FP16;
|
|
std::vector<size_t> lengths = {123, 456, 789};
|
|
std::vector<size_t> strides = {456 * 789, 789, 1};
|
|
|
|
ckt::TensorDescriptor<dt> descriptor(lengths, strides);
|
|
|
|
EXPECT_THAT(descriptor.get_lengths(), ElementsAreArray(lengths));
|
|
EXPECT_THAT(descriptor.get_strides(), ElementsAreArray(strides));
|
|
}
|
|
|
|
TEST(TensorDescriptor, ComputeSize)
|
|
{
|
|
constexpr auto dt = ckb::DataType::FP32;
|
|
std::vector<size_t> lengths = {305, 130, 924};
|
|
std::vector<size_t> strides = {1000 * 1000, 1, 1000};
|
|
|
|
ckt::TensorDescriptor<dt> descriptor(lengths, strides);
|
|
|
|
// Compute the location of the last item in memory, then add one
|
|
// to get the minimum size.
|
|
size_t expected_size = 1;
|
|
for(size_t i = 0; i < lengths.size(); ++i)
|
|
{
|
|
expected_size += (lengths[i] - 1) * strides[i];
|
|
}
|
|
|
|
EXPECT_THAT(descriptor.get_element_space_size(), Ge(expected_size));
|
|
EXPECT_THAT(descriptor.get_element_space_size_in_bytes(),
|
|
Ge(expected_size * ckt::data_type_sizeof(dt)));
|
|
}
|