mirror of
https://github.com/ROCm/composable_kernel.git
synced 2026-04-20 06:49:15 +00:00
[CK_BUILDER] convolution testing (#3267)
* 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>
This commit is contained in:
@@ -11,6 +11,16 @@
|
||||
#include <vector>
|
||||
#include <array>
|
||||
|
||||
/// @brief ostream-overload for hipError
|
||||
///
|
||||
/// Google Test likes to print errors to ostream, and this provides integration
|
||||
/// with that. Since we only expect to use this with CK-Builder's own tests,
|
||||
/// providing this implementation seems not problematic, but if it starts to
|
||||
/// clash with another implementation then we will need to provide this
|
||||
/// implementation another way. Unfortunately Google Test does not have a
|
||||
/// dedicated function to override to provide printing support.
|
||||
std::ostream& operator<<(std::ostream& os, hipError_t status);
|
||||
|
||||
namespace ck_tile::test {
|
||||
|
||||
static bool isTerminalOutput() { return isatty(fileno(stdout)) || isatty(fileno(stderr)); }
|
||||
@@ -109,4 +119,35 @@ struct InstanceMatcher : public ::testing::MatcherInterface<InstanceSet>
|
||||
|
||||
::testing::Matcher<InstanceSet> InstancesMatch(const InstanceSet& expected);
|
||||
|
||||
/// @brief Google Test hipError_t matcher.
|
||||
///
|
||||
/// This is a custom Google Test matcher implementation which can be used to
|
||||
/// compare HIP status codes. Use `HipSuccess()` or `HipError()` to obtain
|
||||
/// an instance.
|
||||
///
|
||||
/// @see HipSuccess
|
||||
/// @see HipError
|
||||
/// @see ::testing::MatcherInterface
|
||||
struct HipStatusMatcher : public ::testing::MatcherInterface<hipError_t>
|
||||
{
|
||||
HipStatusMatcher(hipError_t expected) : expected_(expected) {}
|
||||
|
||||
bool MatchAndExplain(hipError_t actual,
|
||||
::testing::MatchResultListener* listener) const override;
|
||||
void DescribeTo(std::ostream* os) const override;
|
||||
void DescribeNegationTo(std::ostream* os) const override;
|
||||
|
||||
hipError_t expected_;
|
||||
};
|
||||
|
||||
/// @brief Construct a Google Test matcher that checks that a HIP operation
|
||||
/// was successful.
|
||||
::testing::Matcher<hipError_t> HipSuccess();
|
||||
|
||||
/// @brief Construct a Google Test matcher that checks that a HIP operation
|
||||
/// returned a particular error code.
|
||||
///
|
||||
/// @param error The error to expect.
|
||||
::testing::Matcher<hipError_t> HipError(hipError_t error);
|
||||
|
||||
} // namespace ck_tile::test
|
||||
|
||||
Reference in New Issue
Block a user