ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

c – 拨打opencl需要多长时间?

2019-07-26 08:18:58  阅读:169  来源: 互联网

标签:c gpgpu opencl linear-algebra


我目前正在实现一种在小矩阵和向量上分配线性代数的算法.代码很快,但我想知道在gpgpu而不是cpu上实现它是否有意义.

我能够将大多数矩阵和向量存储在gpu内存中作为预处理步骤,并且具有乘法算法的配置文件,这些算法在gpu上更快.

但现在我的真实问题,
如何确定从cpu调用gpu的开销?我失去了多少个循环以便我的代码被执行以及类似的东西?

我希望有人有一些意见吗?

解决方法:

很难确定调用OpenCL的确切“开销”,因为GPU上的操作可以与CPU上运行的任何其他操作并行完成.
例如,根据您的应用程序,您可以从应用程序中将一大块数据传输到GPU,并且在以下数据块的CPU中进行一些预处理.类似地,当代码在GPU上执行时,您可以在CPU上对将来需要的某些数据进行一些准备工作.

传输到GPU将通过DMA传输完成,这种传输速度非常快.
根据我的经验,我能够以4毫秒的顺序将大约4MB的数据传输到GPU(现代GPU,现代主板),同时对先前发送的数据进行一些处理.
从那时起,似乎可以肯定地说,您可以每秒向GPU上传和下载1GB数据的订单,并对该数据进行一些处理.

在您的情况下,GPU或CPU端将成为瓶颈. CPU端,如果它不能每秒向GPU提供1GB的准备数据.这可能很可能受到磁盘I / O的限制.

要测试GPU路径,请设置一堆准备处理的数据缓冲区.您可能希望继续将该数据重新发送到GPU,处理它并下载结果(您将丢弃).测量吞吐量并与应用程序的CPU版本的吞吐量进行比较.

不要只测量GPU处理部分,因为GPU上的传输和处理将争夺GPU内存控制器的时间并且将影响彼此的速度.

此外,如果您希望在小块数据上获得非常好的响应时间,而不是良好的吞吐量,那么您可能无法通过GPU获益,因为它会给您的处理带来一些延迟.

标签:c,gpgpu,opencl,linear-algebra
来源: https://codeday.me/bug/20190726/1542156.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有