如何设计一个实时的CUDA财务应用程序

时间:2012-04-24 14:28:21

标签: c++ cuda real-time nvidia financial

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

我想对股票进行一些实时分析,比如100只股票。我有实时市场数据源,它将以更新的市场价格流动。我想做的是:

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

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

  3. 更新后,会发出信号或触发事件以开始分析计算。

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

  5. 以下是我的问题:

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

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

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

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

      非常感谢您的任何建议。

1 个答案:

答案 0 :(得分:2)

您的要求没有任何异常。

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

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

你可以扩展问题(2)吗?