Как проверить 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), это может быть не очень полезно, но посмотрите сами и оцените сами.