从理论上讲,我们应该得到的性能增益,当我们使用CUDA,我实现高斯 - 塞德尔方法,并与流所需出奇时间比没有streams.Does更大的人有例子,其中我可以看到性能增益流(除样品给出的实例在同一时间作为内核处理将被执行SDK的目录不是如此有用)我们真的可以通过CUDA流获得性能提升吗?
2
A
回答
2
CUDA流使PCI Express的传输。由于Amdahl定律,只有进行数据传输和处理内核等量的工作负载将受益于CUDA流。要确定你的工作量是否将受益,配置文件或添加一些计时代码到你的应用程序,看看理论最大性能优势是什么。
注意的是,为了得到CUDA流的性能改进,你要“软件管道”的下载,内核启动,并上传。这样做:
foreach stream {
cudaMemcpyAsync(device[stream], host[stream], ... stream);
}
foreach stream {
LaunchKernel<<<...stream>>>(...);
// you can launch multiple kernels in stream, if desired.
}
foreach stream {
cudaMemcpyAsync(host[stream], device[stream], ... stream);
}
不是这个:
foreach stream {
cudaMemcpyAsync(device[stream], host[stream], ... stream);
LaunchKernel<<<...stream>>>(...);
cudaMemcpyAsync(host[stream], device[stream], ... stream);
}
1
是,在问题中,计算时间是显著和所有的数据是不是相互依存。然后,您可以将昂贵的计算时间隐藏在昂贵的内存传输中。
注意,CUDA可同时进行内存复制和内核执行,所以当一个流是做内存拷贝其他的都可以做计算。
相关问题
- 1. 通过转向Apache的lighttpd,我可以获得怎样的性能提升?
- 2. 我们可以通过solr配置文件提升字段吗?
- 3. 我们可以通过画布获得真实的图像大小吗?
- 4. 我的程序通过EmptyWorkingSet函数获得性能提升?危险吗?
- 5. 我可以期望从删除此JOIN中获得性能提升吗?
- 6. 我们可以通过使用PReLU使用BatchNorm来提高性能吗?
- 7. 我们可以用Xamarin.Forms为UWP获得流体设计吗?
- 8. 我可以从数据库分页中获得什么性能提升?
- 9. 我们可以测试CUDA或OpenCL与CPU性能的对比速度吗?
- 10. CUDA流的性能
- 11. 我们可以通过Facebook Graph API中的付款ID获得订阅ID吗?
- 12. 我们可以导出通过静态库提供的功能吗
- 13. 我们可以通过CDN提供HEIF图像吗?
- 14. 我们可以通过它的顺序获取Groovy类的声明属性吗?
- 15. 我们可以通过编程方式在j2me中获得电话号码吗?
- 16. 我们可以通过CursorManager在Flex 4中获得动态游标吗?
- 17. 我们可以通过ChromeDriver Selenium捕获GET响应吗?
- 18. 我可以通过Reflection获得私人房产的价值吗?
- 19. 我可以通过JQuery获得div的坐标吗?
- 20. 我们可以通过js
- 21. 可以通过模块/静态类来提高ASP.NET性能吗?
- 22. 我们可以通过hiredis保存Redis中的C结构吗?我可以保存但不能得到它
- 23. 我可以通过php POST获取对象的属性吗?
- 24. 我可以通过单个请求获得INSERT/UPDATE ID吗?
- 25. 我可以通过数字获得价值吗?
- 26. 我可以通过/ EHsc获得“__try”条款吗?
- 27. 我可以通过网址获得回报吗
- 28. 我可以通过ASP.NET RangeValidator获得一个onblur/onfocus事件吗?
- 29. 我可以通过PHP/Curl获得Gmail聊天吗?
- 30. 我可以通过spring安全性获得多个安全上下文吗?