我有一个关于如何设计我的应用程序的一般性问题。我已经阅读了 Cuda 文档,但仍然不知道应该研究什么。如果有人能阐明它,我真的很感激。
我想要对股票进行一些实时分析,比如 100 只股票。我有实时市场数据源,它将随着更新的市场价格而流动。我想做的是:
为cuda卡上的每只股票预先分配黑色内存,并保留白天时间的内存。
当有新数据进来时,直接更新Cuda卡上相应的内存。
更新后,发出信号或触发事件开始分析计算。
计算完成后,将结果写回CPU内存。
这是我的问题:
将数据从 CPU 内存传输到 GPU 内存的最有效方法是什么?因为我想要实时,所以每秒从CPU复制内存快照到GPU是 Not Acceptable 。
我可能需要在 CPU 和 GPU 上为 100 只股票分配内存块。如何将CPU内存单元映射到每个GPU内存单元?
当新数据到达Cuda卡时如何触发分析计算?
我在 Windows XP 上使用配备 Cuda 3.2 的 Tesla C1060。
非常感谢您的任何建议。
最佳答案
您的要求没有什么异常。
只要应用程序正在运行,您就可以将信息保留在 GPU 内存中,并进行一些小的更新以使数据与 CPU 上的数据保持同步。您可以使用 cudaMalloc()
分配 GPU 内存,并使用 cudaMemcpy()
将更新的数据写入分配的内存部分。或者,您可以将数据保存在 Thrust 结构中,例如 thrust::device_vector
。当您更新 device_vector
时,CUDA 内存复制将在后台完成。
更新数据后,您只需重新运行内核即可获取更新的计算结果。
您能否详细说明问题(2)?
关于c++ - 如何设计实时 CUDA 金融应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10300022/