首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCL基准测试

OpenCL基准测试
EN

Stack Overflow用户
提问于 2011-10-25 07:57:52
回答 4查看 3.9K关注 0票数 2

我可以阅读很多关于OpenCL的资料,它似乎是最有前途的(唯一的?)多架构库。OpenCL应该是第一个并行体系结构编程标准,它最终将被大多数程序员采用。这很好,好吧,但是从原生编程库迁移到OpenCL会损失性能吗?在nVidia GeForces的例子中,我已经发现一篇文章是对同一程序的两种实现- CUDA和OpenCL代码-进行了比较,第一种似乎性能更好。在Pthread或Windows线程的情况下,我真的不知道,但我认为“通用性”和多架构方法总是会有“回报”的。只是为了停止对这个或那个的猜测,我想自己检查一切,但我需要你的帮助!有没有一个普遍接受的OpenCL基准测试集,我可以用来与本机代码进行比较?有没有类似于用OpenCL代码编写的CUDA SDK?感谢每一个人。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-11-16 14:22:49

目前还没有设置性能基准来测试不同框架的速度。已经创建了几个基准。值得注意的例子包括SHOC基准测试套件和Rodinia。在地平线上,OpenCL and the 13 Dwarves可能很快就会发布,这可能对基准测试有用。

为了在框架之间进行测试,已经完成了测试OpenCL和CUDA在性能方面的差异的工作。其中一些工作涉及理解对于OpenCL,虽然有正确性可移植性,但不能保证性能可移植性。Daga在他的论文中强调了架构感知优化的重要性。

票数 3
EN

Stack Overflow用户

发布于 2011-10-25 18:39:26

作为一名性能/基准专家,我只能试着给你一些关于OpenCL与CUDA的大致想法。不过,警告一下,我可能会弄错一些东西。

显然,基准测试的问题是,您只能客观地评估非常具体的事情-例如,在CUDA和OpenCL中完成的相同程序,在相同的硬件上(正如您指定的源)。但你不能从这个实验中推断出,在另一个程序上,或者在不同的硬件上,你会得到类似的结果。结果会有所不同,所以你必须有一个很大的测试套件。这就是你所要求的,但我不知道有任何这样的东西存在--人们会在他们的更大的项目中选择任何一种技术,而不会把所有东西都写两次。

这里有用CUDAOpenCL编写的NVIDIA代码示例。你可以选择几个,然后比较你的结果。

不过,我不认为那是值得花的时间。也许你应该从另一个角度来处理这个问题:你可以用其中一个框架做什么,而不能用另一个框架做什么?它们都使用相同的驱动程序,因此都将支持新硬件推出的奇特技术。线程调度是在硬件中完成的,因此它们在那里具有相同的性能。还需要测试的是以下内容:

  • 将优化代码使用所有可用内存带宽
  • 将编译器创建高效代码
  • 您是否能够利用所有计算单元
  • 等...

< code >F211

从我的测试来看,这些问题的答案--我的代码会以最佳方式使用硬件--对于这两个框架都是肯定的。所以他们肯定是在同一个联盟中比赛,即使一个人在某些特定问题上比另一个人快5%,我认为在一般情况下也不会有什么不同。

我故意没有写任何关于OpenCL的其他用例,例如CPU上的用例。这个领域要广泛得多,因为你有不同的OSes,甚至不同的OpenCL SDK用于相同的处理器(例如苹果和英特尔),并且有很多方法可以在没有OpenCL的情况下并行编程(进行比较)。

票数 4
EN

Stack Overflow用户

发布于 2012-03-09 19:59:57

一般来说,OpenCL和CUDA的性能是一样的。没有合适的基准测试,因为根本不能比较不同的硬件和架构。

如果你打算写一个基于GPU的应用程序,并且只想知道你应该选择哪一个。不要因为速度的不同而决定一个或另一个。与CPU实现相比,OCL和CUDA都将提供x100-x300加速。

我的建议是:

  • 如果你要做一个高级应用程序,你需要很多库,也许应该使用CUDA,因为它有更好的开发工具包和支持。
  • 如果你要做低级应用程序,你将从头开始编写所有代码,使用OpenCL,因为它将支持几乎所有未来的硬件(中央处理器和图形处理器)。也有一些库可以使用,但没有CUDA那么好。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7883274

复制
相关文章

相似问题

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