예제 #1
0
파일: test.cpp 프로젝트: 8l/kalmar
	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);
	}
예제 #2
0
파일: test.cpp 프로젝트: 8l/kalmar
	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);
		}
	}
예제 #3
0
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;
}
예제 #4
0
파일: test.cpp 프로젝트: 8l/kalmar
	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;
	}
예제 #5
0
파일: test.cpp 프로젝트: 8l/kalmar
	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;
	}
예제 #6
0
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));
}
예제 #7
0
파일: test.cpp 프로젝트: 8l/kalmar
	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;
	}
예제 #8
0
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));
}
예제 #9
0
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;
}
예제 #10
0
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));
}
예제 #11
0
파일: test.cpp 프로젝트: 8l/kalmar
	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);
		}
	}
예제 #12
0
파일: test.cpp 프로젝트: 8l/kalmar
	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;
	}
예제 #13
0
 /**
 ********************************************************************************
 * @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;
 }
예제 #14
0
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();
}