2

我有一个关于如何设计我的应用程序的一般性问题。我已经阅读了 Cuda 文档,但仍然不知道我应该研究什么。如果有人可以阐明它,我真的很感激。

我想做一些关于股票的实时分析,比如 100 只股票。而且我有实时市场数据馈送,它将随着更新的市场价格流式传输。我想做的是:

  1. 为cuda卡上的每只股票预先分配内存黑色,并在白天保留内存。

  2. 当有新数据进来时,直接更新Cuda卡上相应的内存。

  3. 更新后发出信号或触发事件开始解析计算。

  4. 计算完成后,将结果写回 CPU 内存。

以下是我的问题:

  1. 将数据从 CPU 内存流式传输到 GPU 内存的最有效方法是什么?因为我想要它是实时的,所以每秒将内存快照从 CPU 复制到 GPU 是不可接受的。

  2. 我可能需要在 CPU 和 GPU 上为 100 个股票分配内存块。如何将 CPU 内存单元映射到每个 GPU 内存单元?

  3. 当新数据到达 Cuda 卡时如何触发分析计算?

我在 Windows XP 上使用带有 Cuda 3.2 的 Tesla C1060。

非常感谢您的任何建议。

4

1 回答 1

2

你的要求没有什么不寻常的。

只要您的应用程序正在运行,您就可以将信息保存在 GPU 内存中,并进行少量更新以使数据与 CPU 上的数据保持同步。您可以分配 GPU 内存cudaMalloc()并用于cudaMemcpy()将更新的数据写入已分配内存的部分。或者,您可以将数据保存在 Thrust 结构中,例如thrust::device_vector. 更新时device_vector,CUDA 内存副本在后台完成。

更新数据后,您只需重新运行内核即可获得更新的计算结果。

你能扩展问题(2)吗?

于 2012-04-24T22:41:14.220 回答