我正在看一篇比较两个定价者性能的论文:相同的模型(基于蒙特卡罗模拟)但一个在 CPU(C++)上实现,一个在 GPU(Cuda)上实现
该论文提到了在这两种情况下执行 N 条路径(比如说 100k 条路径)所花费的时间。附加信息:
- CPU 实现依赖于双精度,而 GPU 实现依赖于单精度。
- 定价者使用准随机生成器(收敛速度接近 O(1/N))
为了进行“公平”比较(即达到类似的精度),我们不应该将 GPU 定价器的路径数量加倍(单精度)吗?
我正在看一篇比较两个定价者性能的论文:相同的模型(基于蒙特卡罗模拟)但一个在 CPU(C++)上实现,一个在 GPU(Cuda)上实现
该论文提到了在这两种情况下执行 N 条路径(比如说 100k 条路径)所花费的时间。附加信息:
为了进行“公平”比较(即达到类似的精度),我们不应该将 GPU 定价器的路径数量加倍(单精度)吗?
首先,单精度不是双精度的两倍。从双精度到单精度,理论上很难确定你会得到什么加速;如果你想让这个公平,你必须实际测量加速。
其次,对于蒙特卡罗方法,人们通常用来确定算法“好”程度的指标是它们收敛到答案的速度。由于指数 () 是固定的,最重要的是位于,那是(或应该)独立于你计算的精度——它取决于诸如提案分布之类的东西,你是否有一个简单的 Metropolis-Hastings 或延迟拒绝算法等。