编译“好”代码后跟“坏”代码会使“好”代码无效

时间:2014-01-15 06:11:25

标签: xcode opencl gpgpu

所以,我决定将OpenCL用于我写的某个程序。起初,我只是将其用于GPU中的基本功能,即递归计算多个数组,然后在CPU中计算它们的总和。我设法使它工作,但不必要的PCIe使它很慢。因此,第二步是在GPU中执行总和,最终只读取结果(最终目标)。由于某种原因,它不能很好地工作,但问题出在这里。回到完成工作的代码根本不能正常工作!像这样的东西::

 1. "good code compiling" -> 20s, result ok!
 2. "Bad code compiling " -> 2s, wrong result.
 3. return to "good code" -> 10s, wrong result, same as 2.

这些步骤只是通过重命名源文件来互换,当然,“坏人”的基本代码与“好人”的基本代码相同,所以它们看起来确实相同(对我来说)。此外,我意识到更改程序运行的GPU(到Intel)和返回(到Nvidia),问题似乎“重置”,“好”代码再次正常运行。另一方面,重新初始化系统是无效的(根本没有变化)。

有什么线索吗?编译器或其他东西可以跳过某些任务吗?无论如何至少迫使Xcode从头开始重新运行?

哦,我差点忘了,我在OS X 10.9上的Xcode上,在MacBookPro上以NVIDIA GeForce GT 650 M为主要目的。

提前致谢。

0 个答案:

没有答案