#include #include #include #include #include #include #include void TestNvccIndependenceTransform(void) { typedef int T; const int n = 10; thrust::host_vector h_input = unittest::random_integers(n); thrust::device_vector d_input = h_input; thrust::host_vector h_output(n); thrust::device_vector d_output(n); thrust::transform(h_input.begin(), h_input.end(), h_output.begin(), thrust::negate()); thrust::transform(d_input.begin(), d_input.end(), d_output.begin(), thrust::negate()); ASSERT_EQUAL(h_output, d_output); } DECLARE_UNITTEST(TestNvccIndependenceTransform); void TestNvccIndependenceReduce(void) { typedef int T; const int n = 10; thrust::host_vector h_data = unittest::random_integers(n); thrust::device_vector d_data = h_data; T init = 13; T h_result = thrust::reduce(h_data.begin(), h_data.end(), init); T d_result = thrust::reduce(d_data.begin(), d_data.end(), init); ASSERT_ALMOST_EQUAL(h_result, d_result); } DECLARE_UNITTEST(TestNvccIndependenceReduce); void TestNvccIndependenceExclusiveScan(void) { typedef int T; const int n = 10; thrust::host_vector h_input = unittest::random_integers(n); thrust::device_vector d_input = h_input; thrust::host_vector h_output(n); thrust::device_vector d_output(n); thrust::inclusive_scan(h_input.begin(), h_input.end(), h_output.begin()); thrust::inclusive_scan(d_input.begin(), d_input.end(), d_output.begin()); ASSERT_EQUAL(d_output, h_output); } DECLARE_UNITTEST(TestNvccIndependenceExclusiveScan); void TestNvccIndependenceSort(void) { typedef int T; const int n = 10; thrust::host_vector h_data = unittest::random_integers(n); thrust::device_vector d_data = h_data; thrust::sort(h_data.begin(), h_data.end(), thrust::less()); thrust::sort(d_data.begin(), d_data.end(), thrust::less()); ASSERT_EQUAL(h_data, d_data); } DECLARE_UNITTEST(TestNvccIndependenceSort);