找回密码
 注册
查看: 2465|回复: 3

win下ati卡用gcc编opencl笔记五

[复制链接]
发表于 2012-12-26 08:11:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

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 编辑 ]

2d.zip

2.58 MB, 下载次数: 92

 楼主| 发表于 2012-12-26 08:13:47 | 显示全部楼层
GPU的结果
gpu.gif
 楼主| 发表于 2012-12-26 08:15:14 | 显示全部楼层
i7-870的结果,比hd5570处理的快。
cpu.gif
 楼主| 发表于 2012-12-26 08:24:44 | 显示全部楼层
i7-870双精度的结果,比单精度慢了些。
double.gif
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表