【发布时间】:2016-03-10 08:36:31
【问题描述】:
我是 CUDA 和 OpenCL 的新手。
我已经将一个程序的内核从 CUDA 内核翻译成 OpenCL 内核。我在两个版本中都使用相同的种子来生成随机数。
虽然 OpenCL 版本每次运行都得到完全相同的结果,但 CUDA 版本每次运行时给出的结果略有不同。
我正在编译没有-use_fast_math 的CUDA 版本。
我的设备是 1.1 功能。
知道可能是什么原因吗?
提前致谢
【问题讨论】:
-
不是说你的OpenCL版本不对吗?
-
在我看来,您的问题中没有足够的信息来做出任何有根据的陈述。您能否提供一个简短、完整的可编译代码来演示该问题? (我可以复制、粘贴和编译的完整代码,无需添加或编辑任何内容。)您是否对所有 cuda API 调用和内核调用执行cuda error checking?您是否使用
cuda-memcheck运行代码以查找内核中的越界访问或其他问题? -
实际上,我正在实施人工神经网络。很难提供所有代码。
-
OpenCL 版本似乎工作正常,最终权重始终与我从固定种子开始时相同。 CUDA 版本给出的结果略有不同。我的问题实际上是是否有任何可能影响 CUDA 结果准确性的 CUDA 编译选项。
-
将代码缩减为能够重现问题的简短代码。通常,当人们创建reproducer 时,他们会自己发现问题。你也没有回答我关于 cuda 错误检查或 cuda-memcheck 的问题。
标签: cuda neural-network opencl