10

当我在控制台登录时,我的 OpenCL 程序可以找到 GPU 设备,但当我使用 ssh 远程登录时却找不到。此外,如果我在 ssh 会话中以 root 身份运行该程序,该程序可以找到 GPU。

该计算机是带有 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 上测试我的代码,而不必是 root。那可能吗?简化的 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 的论坛上提出了基本相同的问题。不幸的是,唯一的答案是“这是错误的论坛”形式。

4

9 回答 9

3

我希望 GPU 资源归桌面会话所有(即使显示登录屏幕,它也始终存在),这就是远程会话无法使用它的原因。通过更改权限来强行解决问题,是对系统的颠覆,必然会导致问题。

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

于 2010-03-19T01:58:19.900 回答
2

根据这个论坛帖子,在 Windows 上,似乎无法远程访问 GPU 。

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

于 2010-01-15T15:51:20.223 回答
2

在找到这篇文章之前,我在 Ubuntu 下遇到了同样的问题:http: //dhruba.name/2012/11/09/opencl-cookbook-running-remote-multi-gpu-opencl-computations-over-ssh-on-ubuntu -or-debian-using-amd-catalyst-drivers/

对我有用的是这条线:

export COMPUTE=:0

在我在远程 ssh 登录中输入之后,clinfo正确显示了我的两个设备(CPU 和 GPU)

于 2013-01-30T00:10:23.500 回答
1

你试过VNC吗?我知道过去我需要使用 VNC 在 windows 机器上使用 GPU。Windows 上的远程桌面无法使用,因为它使用您的本地显卡。

于 2012-03-07T03:39:17.143 回答
1

当您尝试 ssh 到机器时,机器的状态是什么?在我的 Mac 上,如果只显示登录屏幕,我无法通过 ssh 访问它,如果我的用户帐户已在桌面登录,则 ssh 调用的程序可以访问 gpu。我还没有尝试在我的机器上创建一个新的用户帐户。您可能想为您的帐户设置自动登录,然后只需要输入密码即可从屏幕保护程序中唤醒。这应该为您提供可接受的安全性,并仍然确保您的用户帐户可以访问 GPU。

于 2010-03-19T02:25:31.853 回答
0

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

于 2010-12-05T19:31:57.550 回答
0

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

于 2010-11-25T13:39:08.450 回答
0

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

于 2012-10-07T18:40:24.233 回答
-2

好的,我不知道 Jack 关于 Snow Leopard 或 OpenCL,但是...

我听说 Mac 桌面是基于 XWindows 的一个版本。在这种情况下,这篇文章: http: //developer.amd.com/support/KnowledgeBase/Lists/KnowledgeBase/DispForm.aspx ?ID=19 讨论了“如何修改安全设置以允许远程会话访问 X系统上运行的服务器”。 可能会有所帮助。

由于那篇文章是关于 ATI Stream 应用程序(而不是 OpenCL)和 Linux(而不是 MacOS)的,因此它可能没有帮助,但请自行查看和判断。

于 2010-01-18T22:07:31.973 回答