2010-01-14 49 views
10

当我在控制台登录时,我的OpenCL程序可以找到GPU设备,但是当我使用ssh远程登录时,无法找到GPU设备。此外,如果我在ssh会话中以root身份运行程序,程序可以找到GPU。如何在Mac上远程登录时在GPU上测试OpenCL?

该电脑是一款带有GeForce 9400 GPU的Snow Leopard Mac。

如果我从控制台或以root身份运行的程序(见下文),输出如下(注意“的GeForce 9400”线):

2 devices found 
Device #0 name = GeForce 9400 
Device #1 name = Intel(R) Core(TM)2 Duo CPU  P8700 @ 2.53GHz 

,但如果它仅仅是我,过ssh,没有GeForce 9400条目:

1 devices found 
Device #0 name = Intel(R) Core(TM)2 Duo CPU  P8700 @ 2.53GHz 

我想测试我的代码在GPU上,而不必是根。那可能吗?下面简化GPU发现程序:

#include <stdio.h> 
#include <OpenCL/opencl.h> 

int main(int argc, char** argv) { 
    char dname[500]; 
    size_t namesize; 
    cl_device_id devices[10]; 
    cl_uint num_devices; 
    int d; 

    clGetDeviceIDs(0, CL_DEVICE_TYPE_ALL, 10, devices, &num_devices); 
    printf("%d devices found\n", num_devices); 
    for (d = 0; d < num_devices; ++d) { 
     clGetDeviceInfo(devices[d], CL_DEVICE_NAME, 500, dname, &namesize); 
     printf("Device #%d name = %s\n", d, dname); 
    } 
    return 0; 
} 

编辑:我基本上是发现被要求在nvidia's forums同样的问题。不幸的是,唯一的答案是“这是错误的论坛”。

回答

2

在Windows上,根据this forum thread,似乎可能无法远程访问GPU。

这篇文章是关于Windows而不是Mac,因此不直接解决这个问题。由于目前还没有人提供任何答案,所以这是迄今为止我发现的最相关的信息。

-2

OK,我不知道杰克关于雪豹的OpenCL或者,可是......

我听说Mac桌面上一个版本XWindows的基地。 在这种情况下,这篇文章: http://developer.amd.com/support/KnowledgeBase/Lists/KnowledgeBase/DispForm.aspx?ID=19 其中讨论了“如何修改安全设置以允许远程会话访问系统上运行的X服务器”。 可能会有帮助。因为那篇文章是关于ATI Stream应用程序(而不是OpenCL)和Linux(而不是MacOS),它可能不会有帮助,但请自己来看看并判断。

+0

感谢您的提示。我以前没看过那个文档。针对Linux提供的解决方案涉及更改/ dev/nvidiactl上的权限。不幸的是,我无法在Mac上找到该设备,也没有其他任何暗示。 Windows解决方案归结为使用VNC,这听起来像一个伟大的建议。不幸的是我尝试了VNC到Mac,但它仍然没有帮助。控制台上的相同桌面可以找到GPU。通过VNC,找不到GPU。除非我是根。大概有一个许可的地方... –

+1

Mac桌面不是基于XWindows - 设计和架构是完全不同的。在系统盘上实际上有一个名为X11的单独软件包,您可以安装该软件包来支持X应用程序(即许多传统的Unix应用程序),这些应用程序位于本机Mac窗口系统内。 – gavinb

2

我认为GPU资源属于桌面会话(即使显示登录屏幕,它始终存在),这是远程会话不可用的原因。通过更改权限来强制这个问题正在颠覆系统,并且必然会导致问题。

您是否尝试过运行屏幕共享来远程访问Mac而不是ssh?这样,您就可以像平常一样在桌面上运行应用程序,并查看您的结果(可能存在一些延迟,具体取决于您的网络连接)。

1

当您尝试SSH时,机器的状态如何?使用我的苹果机,如果只显示登录屏幕,我无法SSH,如果我的用户帐户登录在桌面上,则由ssh调用的程序可以访问gpu。我还没有尝试在我的机器上创建新的用户帐户。您可能需要为您的帐户设置自动登录,然后只需要输入密码即可从屏幕保护程序中唤醒。这应该给你可接受的安全性,并仍然确保你的用户帐户可以访问GPU。

0

您是否尝试过在本地和远程登录,同时?如果问题在于GPU所有权与本地GUI控制台用户相关联,并且您必须通过ssh远程访问,这应该可行;前提是计算机不会被其他用户使用,取代您的本地登录。

0

尝试使用sudo。 GPU只是操作系统的另一个设备。

1

您是否尝试过VNC?我知道我以前需要在Windows机器上使用VNC来使用GPU。 Windows上的远程桌面无法正常工作,因为它使用本地图形卡。

0

就在昨天,我通过SSH登录了我的工作计算机(OS X 10.8.2),并且opencl programm在GPU上运行良好。我认为,您的问题只有一个原因 - 访问GPU硬件的权限不足。尝试以具有管理员权限的用户身份登录或通过sudo运行您的程序。

+0

当我说“如果我在ssh会话中以root身份运行程序,程序可以找到GPU”,我的意思是管理员可以访问GPU。我想要一个不需要提升特权的解决方案。 –