【发布时间】:2013-02-05 07:03:32
【问题描述】:
我是 CUDA 开发新手,我在 MacPro 上使用 NSight 5。
我正在使用两个粒子(ver1 和 ver2,这是两个具有指向另一种结构的指针的结构 - links)进行非常简单的模拟
编译后的代码在到达这个块的末尾时似乎遇到了问题,并且从未进入integrate_functor():
...
thrust::device_vector<Vertex> d_vecGlobalVec(2);
d_vecGlobalVec[0] = ver1;
d_vecGlobalVec[1] = ver2;
thrust::for_each(
d_vecGlobalVec.begin(),
d_vecGlobalVec.end(),
integrate_functor(deltaTime)
);
...
所以我的问题是:
在NSight中,我可以看到
ver1和ver2的成员变量的值;但就在此块中代码的最后一行之前,当我展开d_vecGlobalVec的层次结构时,我可以看到这些值中的任何一个 - 相应的字段(例如,此向量中的第一个元素)只是空的。为什么会这样?显然,ver1和ver2在主机备忘录上,而d_vecGlobalVec中的值在设备上。
2.
NSight 团队的一名成员发布了this。
那么,总的来说,这是否意味着我应该能够在主机和设备代码之间进出,并且能够看到主机/设备变量,就好像它们之间没有障碍一样?
系统:
NVIDIA GeForce GT 650M 1024 MB
Mac OS X Lion 10.7.4 (11E2620)
【问题讨论】:
-
好的,我刚刚发现,它确实进入了 'device' 注释函数
-
好吧,我刚刚发现(通过古老的“打印”),显然,程序确实进入了“设备”注释函数,但调试没有停在断点处 ChrisV @ NAVIDIA 有一篇解决类似问题的帖子 stackoverflow.com/a/13692092 但我的问题仍然存在: 1. 我怎样才能让它在我的 mac 上运行的 NSight 中工作,特别是如何“打开第二个 IDE”实例并将其 CPU 调试器与 Mac OS 10 上的独立 NSight 连接 2. 出于某种原因,调试器总是在 main() 函数的第一行中断 - 这会对任何事情产生影响吗?