bool GpuAccView1ToGpuAccView2() { accelerator_view cpu_av1 = cpu_acc.get_default_view(); accelerator_view stg_arr_av1 = gpu_acc.get_default_view(); accelerator_view cpu_av2 = cpu_acc.get_default_view(); accelerator_view stg_arr_av2 = gpu_acc.create_view(); return CopyAndVerifyFromStagingArrayToStagingArray<DATA_TYPE, RANK>(cpu_av1, stg_arr_av1, cpu_av2, stg_arr_av2); }
StagingArrayToStagingArrayTests() { cpu_acc = accelerator(accelerator::cpu_accelerator); gpu_acc = require_device_for<DATA_TYPE>(); if(gpu_acc.get_supports_cpu_shared_memory()) { WLog() << "Accelerator " << gpu_acc.get_description() << " supports zero copy" << std::endl; // Set the default cpu access type for this accelerator gpu_acc.set_default_cpu_access_type(DEF_ACCESS_TYPE); } }
runall_result test10(accelerator& device) { array<int, 1> arr1(64, device.get_default_view(), ACCESS_TYPE); array<int, 2> arr2(64, 64, device.get_default_view(), ACCESS_TYPE); array<int, 3> arr3(64, 64, 64, device.get_default_view(), ACCESS_TYPE); runall_result res; res &= REPORT_RESULT(VerifyCpuAccessType(arr1, ACCESS_TYPE)); res &= REPORT_RESULT(VerifyCpuAccessType(arr2, ACCESS_TYPE)); res &= REPORT_RESULT(VerifyCpuAccessType(arr3, ACCESS_TYPE)); return res; }
runall_result Gpu1AccViewToGpu2AccView() { accelerator_view gpu_av1 = gpu_acc1.get_default_view(); accelerator_view gpu_av2 = gpu_acc2.get_default_view(); runall_result res; for(auto a_t_tuple : access_types_vec) { print_access_type_tuple(a_t_tuple); res &= CopyAndVerifyFromArrayToNonContiguousArrayView<DATA_TYPE, RANK>(gpu_av1, gpu_av2, std::get<0>(a_t_tuple), std::get<1>(a_t_tuple), std::get<0>(a_t_tuple)); } return res; }
runall_result CpuAccViewToGpuAccView() { accelerator_view cpu_av = cpu_acc.get_default_view(); accelerator_view gpu_av = gpu_acc.get_default_view(); runall_result res; for(auto a_t_tuple : access_types_vec) { print_access_type_tuple(a_t_tuple); res &= CopyAndVerifyFromNonContigArrayViewConstToArray<DATA_TYPE, RANK>(cpu_av, gpu_av, std::get<0>(a_t_tuple), std::get<1>(a_t_tuple)); } return res; }
runall_result test9(accelerator& device) { extent<2> arr_extent = CreateRandomExtent<2>(64); array<float, 2> arr(arr_extent, device.get_default_view(), ACCESS_TYPE); return REPORT_RESULT(VerifyCpuAccessType(arr, ACCESS_TYPE)); }
runall_result Gpu1AccViewToGpu2AccView() { accelerator_view cpu_av = cpu_acc.get_default_view(); accelerator_view arr_av = gpu_acc1.get_default_view(); accelerator_view stg_arr_av = gpu_acc2.get_default_view(); runall_result res; for(auto a_t_tuple : access_types_vec) { print_access_type_tuple(a_t_tuple); res &= CopyAndVerifyFromStagingArrayToArray<DATA_TYPE, RANK>(cpu_av, arr_av, stg_arr_av, std::get<0>(a_t_tuple)); } return res; }
runall_result test12(accelerator& device) { extent<2> arr_extent = CreateRandomExtent<2>(64); std::vector<int> cont(arr_extent.size(), 10); array<int, 2> arr(arr_extent, cont.begin(), cont.end(), device.get_default_view(), ACCESS_TYPE); return REPORT_RESULT(VerifyCpuAccessType(arr, ACCESS_TYPE)); }
runall_result test14(accelerator& device) { std::vector<int> cont1(64, 10); array<int, 1> arr1(64, cont1.begin(), cont1.end(), device.get_default_view(), ACCESS_TYPE); std::vector<int> cont2(64 * 64, 10); array<int, 2> arr2(64, 64, cont2.begin(), cont2.end(), device.get_default_view(), ACCESS_TYPE); std::vector<int> cont3(64 * 64 * 64, 10); array<int, 3> arr3(64, 64, 64, cont3.begin(), cont3.end(), device.get_default_view(), ACCESS_TYPE); runall_result res; res &= REPORT_RESULT(VerifyCpuAccessType(arr1, ACCESS_TYPE)); res &= REPORT_RESULT(VerifyCpuAccessType(arr2, ACCESS_TYPE)); res &= REPORT_RESULT(VerifyCpuAccessType(arr3, ACCESS_TYPE)); return res; }
runall_result test8(accelerator& device) { extent<2> arr_extent = CreateRandomExtent<2>(64); array_view<int , 2> arr_v(arr_extent); array_view<const int, 2> arr_v_c(arr_v); array<int, 2> arr(arr_v_c, device.get_default_view(), ACCESS_TYPE); return REPORT_RESULT(VerifyCpuAccessType(arr, ACCESS_TYPE)); }
StagingArrayToArrayTests() { cpu_acc = accelerator(accelerator::cpu_accelerator); gpu_acc1 = require_device_for<DATA_TYPE>(); gpu_acc2 = require_device_for<DATA_TYPE>(gpu_acc1); if(gpu_acc1.get_supports_cpu_shared_memory()) { WLog() << "Accelerator " << gpu_acc1.get_description() << " supports zero copy" << std::endl; // Set the default cpu access type for this accelerator gpu_acc1.set_default_cpu_access_type(DEF_ACCESS_TYPE1); access_types_vec.push_back(std::make_tuple(access_type_none)); access_types_vec.push_back(std::make_tuple(access_type_read)); access_types_vec.push_back(std::make_tuple(access_type_write)); access_types_vec.push_back(std::make_tuple(access_type_read_write)); } else { access_types_vec.push_back(std::make_tuple(access_type_auto)); } if(gpu_acc2.get_supports_cpu_shared_memory()) { WLog() << "Accelerator " << gpu_acc2.get_description() << " supports zero copy" << std::endl; // Set the default cpu access type for this accelerator gpu_acc2.set_default_cpu_access_type(DEF_ACCESS_TYPE2); } }
runall_result GpuAccView1ToGpuAccView2() { accelerator_view gpu_av1 = gpu_acc.create_view(); accelerator_view gpu_av2 = gpu_acc.create_view(); runall_result res; for(auto a_t_tuple : access_types_vec) { print_access_type_tuple(a_t_tuple); res &= CopyAndVerifyFromNonContigArrayViewConstToArray<DATA_TYPE, RANK>(gpu_av1, gpu_av2, std::get<0>(a_t_tuple), std::get<1>(a_t_tuple)); } return res; }
/** ******************************************************************************** * @fn setDefaultAccelerator * @brief Set a default accelerator *******************************************************************************/ int setDefaultAccelerator() { std::vector<accelerator> allAccl = accelerator::get_all(); /************************************************************************** * if deviceID is not set, the default accelerator is AMD Readon * **************************************************************************/ if(!enableDeviceId) { for (unsigned i = 0; i < allAccl.size(); ++i) { if (allAccl[i].get_description().find(L"AMD Radeon") != std::wstring::npos || allAccl[i].get_description().find(L"ATI Radeon") != std::wstring::npos ) { deviceAccl = allAccl[i]; break; } } } else { deviceAccl = allAccl[deviceId]; } accelerator::set_default(deviceAccl.device_path); std::wcout << L"Selected accelerator : " << deviceAccl.get_description() << std::endl; if (deviceAccl == accelerator(accelerator::direct3d_ref)) { std::cout << "WARNING!! Running on very slow emulator!" << std::endl; } if(deviceAccl == accelerator(accelerator::cpu_accelerator)) { std::cout << "There is no need to run on single CPU !"<<std::endl; return SDK_FAILURE; } return SDK_SUCCESS; }
bool test_accelerator_view(const accelerator_view& av, const accelerator& acc) { return av.get_accelerator() == acc && av.get_is_debug() == acc.get_is_debug() && av.get_version() == acc.get_version(); }