24 #ifndef SKA_CHEETAH_TEST_UTILS_ALGORITHMTESTER_H 25 #define SKA_CHEETAH_TEST_UTILS_ALGORITHMTESTER_H 27 #include "panda/System.h" 28 #include "panda/arch/nvidia/Nvidia.h" 29 #include "panda/test/TestResourcePool.h" 31 #include <gtest/gtest.h> 47 #define ALGORITHM_TYPED_TEST_P(CaseName ,TestName) \ 48 template<typename TestTraits> void _algorithm_test_case_##CaseName##TestName(typename TestTraits::DeviceType&); \ 49 TYPED_TEST_P(CaseName , TestName) \ 51 ASSERT_NE(0U, this->devices().size()) << "no suitable devices"; \ 53 for( auto & device : this->devices()) { \ 54 std::cout << "running on device " << count++ << std::endl; \ 55 device->run([](typename std::decay<decltype(device)>::type::element_type & device) { _algorithm_test_case_##CaseName##TestName<TypeParam>(device); } ); \ 58 template<typename TypeParam> void _algorithm_test_case_##CaseName##TestName(typename TypeParam::DeviceType& device) 73 #define POOL_ALGORITHM_TYPED_TEST_P(CaseName ,TestName) \ 74 template<typename TestTraits> void _pool_algorithm_test_case_##CaseName##TestName(typename TestTraits::PoolType); \ 75 TYPED_TEST_P(CaseName , TestName) \ 77 ASSERT_NE(0U, this->devices().size()) << "no suitable devices"; \ 79 for( auto & device : this->devices()) { \ 80 typename TypeParam::PoolType pool; \ 81 pool.template add_resource<typename TypeParam::Arch>(device); \ 82 std::cout << "running on pool with device " << count++ << std::endl; \ 83 _pool_algorithm_test_case_##CaseName##TestName<TypeParam>(std::move(pool)); \ 86 template<typename TypeParam> void _pool_algorithm_test_case_##CaseName##TestName(typename TypeParam::PoolType pool) 99 template <
typename DeviceType,
typename Traits>
101 static bool compatible(DeviceType
const&);
110 template <
typename ArchitectureType,
111 typename CapabilityType,
112 typename DeviceTypeParam=panda::PoolResource<ArchitectureType>
115 typedef ArchitectureType Arch;
116 typedef DeviceTypeParam DeviceType;
117 typedef CapabilityType Capability;
118 typedef std::shared_ptr<panda::PoolResource<Arch>> TestParam;
121 template <
typename ArchitectureType,
122 typename CapabilityType=void,
123 typename DeviceTypeParam=panda::PoolResource<ArchitectureType>,
124 typename PoolTypeParam=panda::test::TestResourcePool<ArchitectureType>>
126 typedef ArchitectureType Arch;
127 typedef CapabilityType Capability;
128 typedef DeviceTypeParam DeviceType;
129 typedef PoolTypeParam PoolType;
130 typedef PoolType TestParam;
141 template <
typename Traits>
145 typedef Traits AlgorithmTraits;
146 typedef std::shared_ptr<panda::PoolResource<typename Traits::Arch>> DeviceType;
153 std::vector<DeviceType>& devices() {
return _devices; }
156 std::vector<DeviceType> _devices;
164 #include "cheetah/utils/test_utils/detail/AlgorithmTester.cpp" 166 #endif // SKA_CHEETAH_TEST_UTILS_ALGORITHMTESTER_H
Some limits and constants for FLDO.
describes the algorithm to be tested to the AlgorithmTester
Base class for generic algortihm tests that require an accelerator device.
specified how to tell if a given device is capable enough. The ResourceCapability is specifed in the ...