Моя программа OpenCL может найти устройство GPU, когда я зарегистрирован в консоли, но не, когда я зарегистрирован удаленно с ssh. Далее, если я запускаю программу как корень на ssh сессии, программа может найти GPU.
Компьютер является Snow Leopard Mac с GeForce 9400 GPU.
Если я запускаю программу (см. ниже) от консоли или как корень, вывод следующим образом (заметьте строку "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
#include
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. К сожалению, единственный ответ имел форму, "это - неправильный форум".
Как уже упоминалось, ?
используется для объявления типа значения как допускающего значение null .
Это замечательно в нескольких ситуациях:
Например, рассмотрим класс, используемый для представления отзывов от клиента, которому был задан ряд необязательных вопросов:
class CustomerFeedback
{
string Name { get; set; }
int? Age { get; set; }
bool? DrinksRegularly { get; set; }
}
Использование типов NULL для Age
и ChargedRegular
может использоваться для указания на то, что клиент не ответил на эти вопросы.
В приведенном примере значение null
для LastLogon
означает, что пользователь никогда не входил в систему.
Можно обернуть каждую ссылку прослушивателя в WeakReference , а затем использовать SunOnWriteArraySet .
-121--2711746-В Windows удаленный доступ к графическому процессору может оказаться невозможным, согласно этому потоку форума .
Это сообщение касается Windows, а не Mac, и, таким образом, не касается непосредственно этого вопроса. Как никто еще не дал никаких ответов, так что это самая актуальная информация, которую я нашел до сих пор.
Хорошо, я не знаю Джека о Снежном Леопарде или OpenCL, но...
Я слышал, что рабочий стол Mac основан на версии XWindows. В таком случае, эта статья: http://developer.amd.com/support/KnowledgeBase/Lists/KnowledgeBase/DispForm.aspx?ID=19 в котором обсуждается "как изменить настройки безопасности, чтобы разрешить удаленный сеанс доступа к X-серверу, запущенному в системе". Может быть полезно .
Так как эта статья о приложениях ATI Stream (вместо OpenCL) и Linux (вместо MacOS), она может быть не полезнаl, но посмотрите и посудите сами.
В каком состоянии находится машина, когда вы пытаетесь подключиться к ней по ssh? С моими Mac, если отображается только экран входа в систему, я не могу подключиться к нему по ssh, и если моя учетная запись пользователя вошла в систему на рабочем столе, то программа, вызванная ssh, может получить доступ к графическому процессору. Я еще не пробовал создать новую учетную запись пользователя на своем компьютере. Вы можете настроить автоматический вход для своей учетной записи, а затем просто запросить пароль для выхода из заставки. Это должно обеспечить приемлемую безопасность и при этом гарантировать, что ваша учетная запись пользователя имеет доступ к графическому процессору.
Я ожидаю, что ресурс GPU принадлежит сеансу рабочего стола (который всегда присутствует, даже если отображается экран входа в систему), поэтому это не так доступен для удаленных сеансов. Форсирование проблемы путем изменения разрешений подрывает систему и обязательно приведет к проблемам.
Пробовали ли вы использовать общий доступ к экрану для удаленного доступа к Mac вместо ssh
? Таким образом, вы можете запускать приложение на рабочем столе как обычно и видеть свои результаты (возможно, с некоторой задержкой, в зависимости от вашего сетевого подключения).