【问题标题】:Is CUDA suitable for real-time applications?CUDA 适合实时应用吗?
【发布时间】:2012-10-19 07:57:21
【问题描述】:

继续我的previous question。 CUDA 适合实时快速应用吗? 任务是:我需要我的应用程序在 0.1-0.3 毫秒内进行大量计算。 CUDA 内核在适合我的项目的非常好的时间内处理这些计算,但是由于我得到的所有开销(内存复制),时间是不可接受的。

CUDA 是不能用于此类应用程序,还是有一些技巧可以避免我之前的问题中描述的情况?

These guys 提供所谓的“GPU Workbench”,并在他们自己的 linux 版本上构建了经过修改的 gpu 驱动程序。他们说他们的系统比典型的 GPU 配置执行得更快。有人知道吗?

【问题讨论】:

  • 不清楚你在问什么。
  • 只是想知道是否有人将 CUDA 用于时间要求严格的应用程序:整个周期(写入 gpu 内存、内核、从 gpu 读取)必须持续 0.1-0.3 毫秒。可能是我之前的问题中描述的一些建议或遇到奇怪开销的人。可能有人使用过 GPU Workbench,它确实比标准 cuda 驱动程序和运行时更快。

标签: performance cuda real-time


【解决方案1】:

0.3ms 是在 GPU 上运行完整程序的非常小的时间窗口。即使对于非常小的任务,10 倍也是更典型的。如果您的任务非常小,可以在如此短的时间内运行,那么您可能甚至还没有使 GPU 饱和,甚至在 GPU 上运行它也没有任何意义。

也就是说,我确实将 CUDA 用于实时分布式系统,周转时间大约为 1 秒,但听起来我们对“实时”的定义比你的要宽松一些。

我对您链接的“GPU Workbench”一无所知。

【讨论】:

  • 毫无疑问,CUDA 不应该以我想要的方式使用。但我希望有机会让它快速运行。模拟 CPU 代码的运行速度比我在 GTX680 上尝试过的代码慢 20 倍。但不幸的是,GTX680 上的代码在生产中使用它的速度仍然很慢。如果您对我正在处理的事情感兴趣并且我遇到的问题欢迎来到我的first topic
【解决方案2】:

我将分两部分回答这个问题。

  1. 程序的运行时间取决于数据量和您实现的并行度。并且还使用不同的技术(使用 L1 和 L2 缓存、多个内核)和其他东西。正如您提到的实时应用程序,您需要不时使用 CPU 内存。如果可能,请尝试一次使用所有数据。

  2. 如果您的应用程序使用图形。我推荐使用图形库(OpenGL [also, GLSL], DirectX [HLSL])。

【讨论】:

    猜你喜欢
    • 2012-04-23
    • 1970-01-01
    • 2016-09-20
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    相关资源
    最近更新 更多