首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >并行射线追踪器:非常低的加速比

并行射线追踪器:非常低的加速比
EN

Stack Overflow用户
提问于 2016-08-26 17:33:10
回答 1查看 238关注 0票数 1

我使用(py)CUDA编写了一个射线追踪器,并且获得了非常低的加速比;例如,在1000x1000图像中,GPU并行化代码仅比在CPU中执行的顺序代码快4倍。

对于每一条射线,我必须解决5个方程(射线追踪器使用本论文描述的过程生成黑洞图像),所以我的设置如下:每条射线在一个单独的块中计算,其中5个线程使用共享内存计算方程。也就是说,如果我想生成一个宽度为W像素和高度为H像素的图像,设置如下:

  • 网格:W块x H块。
  • 块:5线程。

最昂贵的计算是方程的分辨率,我用自定义Runge 4-5算法求解。

代码很长,很难在这么短的问题中解释,但是您可以在Github中看到它。CUDA内核是这里,Runge求解器是这里。使用完全相同的求解器的顺序版本的CPU版本可以找到在同一个回购中

要求解的方程需要几个计算,我担心sincossqrt等一些函数的CPU优化会导致较低的加速速度(?)

我的机器规格是:

  • GPU: GeForce GTX 780
  • 英特尔核心i7 CPU 930 @ 2.80GHz

我的问题是:

  1. 在GPU并行化的射线追踪器中,根据顺序代码得到3倍或4倍的加速比是正常的吗?
  2. 您认为在CUDA设置或代码中有什么问题可能导致这种行为吗?
  3. 我错过了什么重要的事情吗?

我明白这个问题可能过于具体,但如果你需要更多的信息,只要说出来,我会很乐意提供它。

EN

回答 1

Stack Overflow用户

发布于 2016-08-27 16:06:57

  1. 在GPU并行化的射线追踪器中,根据顺序代码得到3倍或4倍的加速比是正常的吗?

一根绳子有多长?这个问题没有答案。

  1. 您认为在CUDA设置或代码中有什么问题可能导致这种行为吗?

是的,正如注释中所指出的,您正在使用一个完全不合适的块大小,这浪费了GPU大约85%的潜在计算能力。

  1. 我错过了什么重要的事情吗?

是的,这个问题的答案。设置正确的执行参数大约是CUDA中实际性能调优要求的50%,您应该能够获得显著的性能改进,只需选择一个正常的块大小即可。除此之外,仔细的分析应该是您的下一个访问端口。

这个答案是从评论中收集起来的,并作为社区wiki条目添加,在没有足够的接近票数来结束它的情况下,将这个(非常广泛的)问题从未回答的列表中删除。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39171823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档