请选择 进入手机版 | 继续访问电脑版

开源计算机图形学社区(Open Source Computer Graphics Community) |OpenGPU Forum (2007-2013)| OpenGPU Project

 找回密码
 注册
搜索
查看: 1852|回复: 8

GPU对分支的执行效率问题 [复制链接]

Rank: 16Rank: 16Rank: 16Rank: 16

注册时间
2010-11-25
积分
2329
发表于 2017-4-10 18:13:01 |显示全部楼层

分别用 C++ 和 OpenCL 实现了 bsp 场景的光线追踪渲染(使用while实现递归,内存访问只有最基本的碰撞信息,cl buffer flag为 CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR),代码几乎完全一样,CPU只用了单线程,效果如下:

GPU 19秒  ( GeForce GTX 750 Ti -- GM107 -- A2 -- 1163MHz )
CPU 29秒  ( Intel Core i5 4590 -- Haswell -- 3500 MHz )

运行时用 GPU-Z 看了 GPU Load 是100% 。

结果很意外啊,根本不能加速,CPU 还可以开启多线程,那就比 GPU 渲染还快很多了。

我原以为 GPU 那么多核同时跑,效率应该快很多倍。

这个结果正常吗?

Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28Rank: 28

注册时间
2007-6-11
积分
30012
发表于 2017-4-10 20:47:29 |显示全部楼层
正常也不正常,因为GPU不适合这种轻量级和Incoherent的工作,当你的场景重量级到能够掩盖GPU延迟的时候就可能接近CPU了,因为大量的时间花在调用上,而不是实际计算上。如果GPU算超大规模矩阵迭代这种,就比CPU强多了。

使用道具 举报

Rank: 16Rank: 16Rank: 16Rank: 16

注册时间
2010-11-25
积分
2329
发表于 2017-4-11 12:26:58 |显示全部楼层
Jedimaster 发表于 2017-4-10 20:47
正常也不正常,因为GPU不适合这种轻量级和Incoherent的工作,当你的场景重量级到能够掩盖GPU延迟的时候就可 ...

跟CPU一样,这个应用里GPU的主要消耗还是在计算上,因为我把核心的递归求交函数直接返回的话,速度是很快的。其他代码可以说对效率影响很小。

我疑惑的是,这样一个bsp递归求交函数,拥有几十上百处理单元的GPU运行效率比CPU单线程快不了多少,原因何在?是不是代码里有不少分支循环导致?


使用道具 举报

Rank: 13Rank: 13Rank: 13Rank: 13

注册时间
2013-6-23
积分
1244
发表于 2017-4-11 13:21:17 |显示全部楼层
听上去很有趣,方不方便贴一点shader的代码大家一起研究下。

使用道具 举报

Rank: 16Rank: 16Rank: 16Rank: 16

注册时间
2010-11-25
积分
2329
发表于 2017-4-11 13:54:32 |显示全部楼层
IceCode 发表于 2017-4-11 13:21
听上去很有趣,方不方便贴一点shader的代码大家一起研究下。


完整 OpenCL 代码看附件。

我刚学CL不久,不少写法可能不是最优化的,希望不要误导。


核心算法就是bsp场景遍历求交,基本上是从 Quake 代码里照搬的。

我现在想尝试探索下在游戏里应用 ray tracing,可以先从小的场景做起。

使用道具 举报

Rank: 12Rank: 12Rank: 12

注册时间
2010-11-18
积分
933
发表于 2017-4-11 20:11:51 |显示全部楼层
欢迎交流学习。我也是做这方面探索的。推荐看一下gpu高性能计算的书籍噢。
下面是我们的一些成果。

使用道具 举报

Rank: 16Rank: 16Rank: 16Rank: 16

注册时间
2010-11-25
积分
2329
发表于 2017-4-12 12:46:11 |显示全部楼层
yjlh1234_1 发表于 2017-4-11 20:11
欢迎交流学习。我也是做这方面探索的。推荐看一下gpu高性能计算的书籍噢。
下面是我们的一些成果。

效果很牛啊,渲染速度也快。场景结构组织是什么类型的(bsp,bvh等)?光线求交有什么优化吗?

使用道具 举报

Rank: 12Rank: 12Rank: 12

注册时间
2010-11-18
积分
933
发表于 2017-4-12 14:22:18 |显示全部楼层
Awakening3D 发表于 2017-4-12 12:46
效果很牛啊,渲染速度也快。场景结构组织是什么类型的(bsp,bvh等)?光线求交有什么优化吗? ...

BVH,注意优化一下节点的平衡。SAH值仔细点。光线求交速度一般,注意存储位置和尽量压缩数据大小。

使用道具 举报

Rank: 16Rank: 16Rank: 16Rank: 16

注册时间
2010-11-25
积分
2329
发表于 2017-5-3 12:24:13 |显示全部楼层

使用道具 举报

最近看过此主题的会员

您需要登录后才可以回帖 登录 | 注册

‹‹
我的工具栏

关于我们|手机版|Archiver|开源计算机图形学社区(Open Source Computer Graphics Community) | OpenGPU Project | OpenGPU Forum (2007-2013)

GMT+8, 2017-12-16 13:05 , Processed in 0.096045 second(s), 12 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部