Как проверить OpenCL на GPU при удаленном входе в систему на Mac?

Моя программа OpenCL может найти устройство GPU, когда я вошел в систему на консоли, но не тогда, когда я удаленно с помощью ssh. Кроме того, если я запускаю программу как root в сеансе ssh, программа может найти GPU.

Компьютер - это Snow Leopard Mac с графическим процессором GeForce 9400.

Если я запустил программу (см. ниже) с консоли или с правами 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

Я бы хотел проверить свой код на графическом процессоре, не будучи 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;
}

EDIT: я нашел по существу тот же вопрос, который задают на nvidia forums. К сожалению, единственный ответ был в форме "это неправильный форум".

Ответ 1

В Windows кажется, что удаленный доступ к графическому процессору может оказаться невозможным, согласно этой теме форума.

Это сообщение о Windows, а не Mac, и поэтому напрямую не затрагивает этот вопрос. Поскольку никто еще не дал никаких ответов, так что это самая важная информация, которую я нашел до сих пор.

Ответ 2

Я ожидаю, что ресурс GPU будет принадлежать сеансу рабочего стола (который всегда присутствует, даже если отображается экран входа в систему), поэтому он недоступен для удаленных сеансов. Принуждение проблемы путем изменения разрешений - это подрыв системы и неизбежно приведет к проблемам.

Вы пытались запустить Screen Sharing для удаленного доступа к Mac, а не ssh? Таким образом, вы можете запустить приложение на рабочем столе в обычном режиме и увидеть свои результаты (возможно, с некоторой задержкой, в зависимости от вашего сетевого подключения).

Ответ 3

У меня была такая же проблема в 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)

Ответ 4

Каков статус машины, когда вы пытаетесь использовать ssh? С моими маками, если отображается только экран входа в систему, я не могу ssh к нему, и если моя учетная запись пользователя зарегистрирована на рабочем столе, тогда программа, вызванная ssh, может получить доступ к gpu. Я еще не пытался создать новую учетную запись пользователя на своей машине. Вы можете настроить автозапуск для своей учетной записи, а затем просто потребовать пароль для пробуждения из заставки. Это должно обеспечить вам приемлемую безопасность и обеспечить, чтобы ваша учетная запись пользователя имела доступ к графическому процессору.

Ответ 5

Вы пробовали VNC? Я знаю, что мне нужно использовать VNC для использования GPU на машинах Windows в прошлом. Удаленный рабочий стол в Windows просто не будет работать, поскольку он использует вашу локальную графическую карту.

Ответ 6

Вы пытались войти в систему локально и удаленно, в то же время? Если проблема заключается в том, что владение GPU привязано к локальному пользователю консоли GUI, и вы должны получить доступ удаленно через ssh, это должно работать; если компьютер не будет использоваться другим пользователем, заменив ваш локальный логин.

Ответ 7

Попробуйте использовать sudo. GPU - это еще одно устройство для операционной системы.

Ответ 8

Только вчера я вошел на свой рабочий компьютер (OS X 10.8.2) через SSH, а программа opencl хорошо работала с GPU. Я думаю, есть только одна причина вашей проблемы - недостаточные права на доступ к оборудованию GPU. Попробуйте войти в систему как пользователь с правами администратора или запустите свою программу через sudo.

Ответ 9

Хорошо, я не знаю Джека о Snow Leopard или OpenCL, но...

Я слышал, что настольный компьютер Mac основан на версии XWindows. В этом случае эта статья: http://developer.amd.com/support/KnowledgeBase/Lists/KnowledgeBase/DispForm.aspx?ID=19 в котором обсуждается "как изменить параметры безопасности, чтобы позволить удаленному сеансу доступа к X-серверу, запущенному в системе". может быть полезным.

Поскольку эта статья посвящена приложениям ATI Stream (вместо OpenCL) и Linux (вместо MacOS), это может быть не очень полезно, но посмотрите сами и оцените сами.