/* ************************************************************************ * Copyright (C) 2023-2024 Advanced Micro Devices, Inc. * ************************************************************************ */ #include "testing_csrlsvchol.hpp" using ::testing::Combine; using ::testing::TestWithParam; using ::testing::Values; using ::testing::ValuesIn; using namespace std; typedef std::tuple> csrlsvchol_tuple; // each n_range vector is {n} // each nnz_range vector is {nnzA, reorder, base1} // case when n = 20 and nnz = 60 also execute the bad arguments test // (null handle, null pointers and invalid values) // for checkin_lapack tests const vector n_range = { 20, 50, }; const vector> nnz_range = { {60, 0, 1}, {60, 1, 0}, {100, 2, 0}, {140, 3, 1}, }; // for daily_lapack tests const vector large_n_range = { // normal (valid) samples 100, 250, }; const vector> large_nnz_range = { // normal (valid) samples {300, 0, 0}, {300, 1, 1}, {500, 2, 1}, {700, 3, 0}, }; Arguments csrlsvchol_setup_arguments(csrlsvchol_tuple tup) { int n_v = std::get<0>(tup); vector nnz_v = std::get<1>(tup); Arguments arg; arg.set("n", n_v); arg.set("nnzA", nnz_v[0]); arg.set("reorder", nnz_v[1]); arg.set("base1", nnz_v[2]); arg.timing = 0; return arg; } template class CSRLSVCHOL_BASE : public ::TestWithParam { protected: void SetUp() override { if(hipsolverSpCreate(nullptr) == HIPSOLVER_STATUS_NOT_SUPPORTED) GTEST_SKIP() << "Sparse dependencies could not be loaded"; } void TearDown() override { ASSERT_EQ(hipGetLastError(), hipSuccess); } template void run_tests() { Arguments arg = csrlsvchol_setup_arguments(GetParam()); if(arg.peek("n") == 20 && arg.peek("nnzA") == 60) testing_csrlsvchol_bad_arg(); arg.batch_count = 1; testing_csrlsvchol(arg); } }; class CSRLSVCHOL : public CSRLSVCHOL_BASE { }; class CSRLSVCHOLHOST : public CSRLSVCHOL_BASE { }; // non-batch tests TEST_P(CSRLSVCHOL, __float) { run_tests(); } TEST_P(CSRLSVCHOL, __double) { run_tests(); } // TEST_P(CSRLSVCHOL, __float_complex) // { // run_tests(); // } // TEST_P(CSRLSVCHOL, __double_complex) // { // run_tests(); // } TEST_P(CSRLSVCHOLHOST, __float) { run_tests(); } TEST_P(CSRLSVCHOLHOST, __double) { run_tests(); } // TEST_P(CSRLSVCHOLHOST, __float_complex) // { // run_tests(); // } // TEST_P(CSRLSVCHOLHOST, __double_complex) // { // run_tests(); // } INSTANTIATE_TEST_SUITE_P(daily_lapack, CSRLSVCHOL, Combine(ValuesIn(large_n_range), ValuesIn(large_nnz_range))); INSTANTIATE_TEST_SUITE_P(checkin_lapack, CSRLSVCHOL, Combine(ValuesIn(n_range), ValuesIn(nnz_range))); INSTANTIATE_TEST_SUITE_P(daily_lapack, CSRLSVCHOLHOST, Combine(ValuesIn(large_n_range), ValuesIn(large_nnz_range))); INSTANTIATE_TEST_SUITE_P(checkin_lapack, CSRLSVCHOLHOST, Combine(ValuesIn(n_range), ValuesIn(nnz_range)));