|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
双精度改单精度
例子FluidSimulation2D是双精度的,我的HD5570不支持,给改成单精度的了。附改好的可执行文件。
在dos窗口里执行2d即用GPU计算。
执行2d --device cpu即用CPU计算
主要是把源程序中的double全部自动替换成float
但这句:
glutInitDisplayMode( GLUT_RGB | GLUT_DOUBLE );
是关于opengl的语句,其中的GLUT_DOUBLE里的double不能被换掉。
然后把FluidSimulation2D.cpp中这段删掉或注释掉:
// Check if cl_khr_fp64 extension is supported
if(strstr(deviceInfo.extensions, "cl_khr_fp64"))
{
buildOptions.append("-D KHR_DP_EXTENSION");
}
else
{
// Check if cl_amd_fp64 extension is supported
if(!strstr(deviceInfo.extensions, "cl_amd_fp64"))
{
reqdExtSupport = false;
OPENCL_EXPECTED_ERROR("Device does not support cl_amd_fp64 extension!");
}
}
还有FluidSimulation2D_Kernels.cl中这段注释掉
#ifdef KHR_DP_EXTENSION
#pragma OPENCL EXTENSION cl_khr_fp64 : enable
#else
#pragma OPENCL EXTENSION cl_amd_fp64 : enable
#endif
cl_khr_fp64和cl_amd_fp64是控制要不要双精度的,一个是khr定义的标准opencl的,一个是amd的具体实现。以前amd的是khr的子集,有区别,现在应该没有了。
[ 本帖最后由 shirazbj 于 2012-12-26 08:27 编辑 ] |
|