24 #include "cheetah/data/cuda/test/TimeFrequencyTest.h" 25 #include "cheetah/data/TimeFrequency.h" 26 #include "cheetah/data/FrequencyTime.h" 27 #include "panda/Copy.h" 37 TimeFrequencyTest<T>::TimeFrequencyTest()
43 TimeFrequencyTest<T>::~TimeFrequencyTest()
48 void TimeFrequencyTest<T>::SetUp()
53 void TimeFrequencyTest<T>::TearDown()
57 template <
class Arch,
typename NumericalRepT,
typename OtherNumericalRepT>
61 typedef Arch Architecture;
62 typedef NumericalRepT FirstType;
63 typedef NumericalRepT SecondType;
66 typedef ::testing::Types<DataTypes<Cuda, uint8_t, uint8_t>,
67 DataTypes<Cuda, uint8_t, uint16_t>,
68 DataTypes<Cuda, uint8_t, float>,
69 DataTypes<Cuda, uint16_t, uint8_t>,
70 DataTypes<Cuda, uint16_t, uint16_t>,
71 DataTypes<Cuda, uint16_t, float>,
72 DataTypes<Cuda, float, uint8_t>,
73 DataTypes<Cuda, float, uint16_t>,
74 DataTypes<Cuda, float, float>,
75 DataTypes<Cpu, uint8_t, uint8_t>,
76 DataTypes<Cpu, uint8_t, uint16_t>,
77 DataTypes<Cpu, uint8_t, float>,
78 DataTypes<Cpu, uint16_t, uint8_t>,
79 DataTypes<Cpu, uint16_t, uint16_t>,
80 DataTypes<Cpu, uint16_t, float>,
81 DataTypes<Cpu, float, uint8_t>,
82 DataTypes<Cpu, float, uint16_t>,
83 DataTypes<Cpu, float, float>> TimeFrequencyTypes;
85 TYPED_TEST_CASE(TimeFrequencyTest, TimeFrequencyTypes);
87 TYPED_TEST(TimeFrequencyTest, test_copy)
89 typedef typename TypeParam::Architecture Arch;
90 typedef typename TypeParam::FirstType NumericalRep;
91 typedef typename TypeParam::SecondType OtherNumericalRep;
93 typedef TimeFrequency<Cpu, NumericalRep> TfDataType;
95 std::random_device rd;
96 std::mt19937 mt(rd());
97 std::uniform_int_distribution<int> nspectra(8, 1024);
98 std::uniform_int_distribution<int> nchans(8, 32);
100 data::DimensionSize<data::Time> number_of_spectra(nspectra(mt));
101 data::DimensionSize<data::Frequency> number_of_channels(nchans(mt));
103 TfDataType tf_host_data(number_of_spectra, number_of_channels);
105 srand((
unsigned) time(0));
106 std::generate(tf_host_data.begin(), tf_host_data.end(), [&]() {
return (rand()%255); });
108 auto f1 =
typename data::TimeFrequency<Cpu, NumericalRep>::FrequencyType(100.0 * boost::units::si::hertz);
109 auto f2 =
typename data::TimeFrequency<Cpu, NumericalRep>::FrequencyType(200.0 * boost::units::si::hertz);
110 typename utils::ModifiedJulianClock::time_point epoch(utils::julian_day(50000.0));
111 auto delta = (f2 - f1)/ (
double)(number_of_channels-1);
113 tf_host_data.set_channel_frequencies_const_width( f1, delta);
114 tf_host_data.start_time(epoch);
116 TimeFrequency<Arch, NumericalRep> input_data(tf_host_data);
117 TimeFrequency<Cuda, OtherNumericalRep> output_data(input_data);
118 TimeFrequency<Cpu, OtherNumericalRep> output_data_copy(output_data);
119 TimeFrequency<Cpu, NumericalRep> input_data_copy(tf_host_data);
121 for(
unsigned i=0; i < input_data_copy.number_of_spectra(); ++i)
125 auto input_channel_it = input_spectrum.begin();
127 auto output_channel_it = output_spectrum.begin();
128 while(input_channel_it != input_spectrum.end())
130 ASSERT_EQ(*input_channel_it, *output_channel_it);
138 TYPED_TEST(TimeFrequencyTest, test_cornerturn)
140 typedef typename TypeParam::Architecture Arch;
141 typedef typename TypeParam::FirstType NumericalRep;
142 typedef typename TypeParam::SecondType OtherNumericalRep;
143 typedef FrequencyTime<Cpu, NumericalRep> FtDataType;
145 std::random_device rd;
146 std::mt19937 mt(rd());
147 std::uniform_int_distribution<int> nspectra(8, 1024);
148 std::uniform_int_distribution<int> nchans(8, 32);
150 data::DimensionSize<data::Time> number_of_spectra(nspectra(mt));
151 data::DimensionSize<data::Frequency> number_of_channels(nchans(mt));
153 FtDataType tf_host_data(number_of_spectra, number_of_channels);
154 srand((
unsigned) time(0));
155 std::generate(tf_host_data.begin(), tf_host_data.end(), [&]() {
return (rand()%255); });
157 auto f1 =
typename data::TimeFrequency<Cpu, NumericalRep>::FrequencyType(100.0 * boost::units::si::hertz);
158 auto f2 =
typename data::TimeFrequency<Cpu, NumericalRep>::FrequencyType(200.0 * boost::units::si::hertz);
159 typename utils::ModifiedJulianClock::time_point epoch(utils::julian_day(50000.0));
160 auto delta = (f2 - f1)/ (
double)(number_of_channels-1);
162 tf_host_data.set_channel_frequencies_const_width( f1, delta);
163 tf_host_data.start_time(epoch);
165 FrequencyTime<Arch, NumericalRep> input_data(tf_host_data);
166 TimeFrequency<Cuda, OtherNumericalRep> output_data(input_data);
167 TimeFrequency<Cpu, OtherNumericalRep> output_data_copy(output_data);
168 TimeFrequency<Cpu, NumericalRep> input_data_copy(input_data);
170 for(
unsigned i=0; i < input_data_copy.number_of_spectra(); ++i)
174 auto input_channel_it = input_spectrum.begin();
176 auto output_channel_it = output_spectrum.begin();
177 while(input_channel_it != input_spectrum.end())
179 ASSERT_EQ(*input_channel_it, *output_channel_it);
Some limits and constants for FLDO.
BaseT::Spectra Spectra
Iterator class for accessing each time sample.