Eclipse MacPro lion 10.7.4上的Nsight 5.0

Eclipse MacPro lion 10.7.4上的Nsight 5.0,eclipse,cuda,nsight,Eclipse,Cuda,Nsight,我是CUDA开发者的新手,在MacPro上使用NSight 5 我用两个粒子做了一个非常简单的模拟(ver1和ver2,这两个结构都有指向另一种结构类型的指针–链接) 代码已编译,但在到达此块末尾时似乎遇到问题,并且从未进入integrate\u functor(): 。。。 推力:装置向量d向量globalvec(2); d_vecGlobalVec[0]=ver1; d_vecGlobalVec[1]=ver2; 推力:每个( d_vecGlobalVec.begin(), d_vecGlo

我是CUDA开发者的新手,在MacPro上使用NSight 5

我用两个粒子做了一个非常简单的模拟(
ver1
ver2
,这两个结构都有指向另一种结构类型的指针–
链接

代码已编译,但在到达此块末尾时似乎遇到问题,并且从未进入
integrate\u functor()

。。。
推力:装置向量d向量globalvec(2);
d_vecGlobalVec[0]=ver1;
d_vecGlobalVec[1]=ver2;
推力:每个(
d_vecGlobalVec.begin(),
d_vecGlobalVec.end(),
积分函子(deltaTime)
);
...
因此,我的问题是:

  • 在NSight中,我可以看到
    ver1
    ver2
    的成员变量的值;但是就在这个代码块的最后一行之前,当我展开
    d_vecGlobalVec
    的层次结构时,我可以看到这些值中的任何一个-相应的字段(例如,这个向量中第一个元素的字段)只是空的。为什么会这样?显然,
    ver1
    ver2
    在主机备忘录上,而
    d_vecGlobalVec
    中的值在设备上

  • 2. NSight团队的一名成员发布了

    那么接下来,一般来说,这是否意味着我应该能够在主机和设备代码之间进进出出,并且能够看到主机/设备变量,就好像它们之间没有障碍一样

    系统:

    英伟达GeForce GT 650M 1024 MB


    Mac OS X Lion 10.7.4(11E2620)

    确保您的设备代码被实际调用。检查所有返回代码并确认设备在输出上实际工作。有时,如果推力认为它更有效,它可能会在主机上运行代码

    我真的建议升级到10.8-它有最新的驱动程序,对NVIDIA GeForce 6xx系列有最好的支持


    还请注意,为了获得最佳体验,您需要使用不同的GPU进行显示和CUDA调试-否则Mac OS X可能会干扰并终止调试器。

    您好,Eugene,谢谢,但由于代码就在此处终止,并且它从未进入我的设备注释函数integrate_functor(),由于缺乏日志信息,我看不出确切的位置-我该如何做你建议的事情?“确保您的设备代码实际被调用。检查所有返回代码并确认设备在输出上实际工作”“从外观上看,您的设备代码从未执行过。这可能有多种原因-通常是错误的编译器设置(确保为SM 3.0生成PTX和/或SASS)或错误的启动配置。我建议从简单的CUDA C(sans-推力)应用程序开始(例如,您可以使用Nsight new CUDA C project wizard创建bitreverse应用程序),以确保CUDA toolkit已正确安装并可用于开发应用程序。另一个选项是将源代码发送到cudatools@nvidia.com (你可以说这是给尤金的)所以我们可以在本地复制/排除故障。嗨,非常感谢,Eugene!是的,我一直在运行粒子和NBody样本,它们看起来都运行得很好。所以我假设启动配置和编译器设置都很好?正如你看到我在原始帖子中添加的评论一样,我现在遇到的最大问题是bugger只停留在主机代码上,而不是设备代码上。@ChrisV提到了这个问题,但我认为它与我的情况仍然有点不同。现在,你能尝试使用cuda gdb调试粒子或NBody并确认你实际上可以破解设备代码吗?很可能你有一些GPU deb解决的工具包安装问题好的,我刚刚发现,很明显,它确实进入了“设备”注释功能好的,我刚刚发现(通过好的老“打印”)显然,该程序确实进入了“设备”注释函数,但调试并没有在断点处停止,ChrisV@NAVIDIA有一篇文章解决了类似的问题,但我的问题仍然是:1.我如何让它在mac上运行的NSight中工作,特别是如何“打开第二个IDE实例并连接其CPU调试?”在Mac OS 10 2上使用单机版NSight的r。出于某种原因,调试器总是在main()函数的第一行中断-这会对任何事情产生影响吗?
    ...    
    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)
    );
    ...