Проверка, интегрирован ли графический процессор или нет

#opencl

#opencl

Вопрос:

Я не смог найти ни одной команды запроса об устройстве, интегрированном / встроенном в процессор или использующем системную оперативную память или собственную выделенную память gddr? Я могу сравнить сопоставление / сопоставление с чтением / записью, чтобы получить вывод, но это устройство может быть загружено в это время и вести себя неправильно, и это усложнило бы и без того сложный алгоритм балансировки нагрузки, который я использую.

Есть ли простой способ проверить, использует ли графический процессор ту же память, что и процессор, чтобы я мог выбрать прямое отображение / отключение вместо чтения / записи?

Редактировать: существует CL_DEVICE_LOCAL_MEM_TYPE

 CL_GLOBAL or CL_LOCAL
 

является ли это признаком интегрированности?

Ответ №1:

В OpenCL 1.x есть запрос устройства CL_DEVICE_HOST_UNIFIED_MEMORY :

Является CL_TRUE, если устройство и хост имеют единую подсистему памяти, и является CL_FALSE в противном случае.

Этот запрос устарел с версии OpenCL 2.0, но, вероятно, пока должен работать на платформах OpenCL 2.x. В противном случае вы можете создать эвристику из результата CL_DEVICE_SVM_CAPABILITIES instead .

Комментарии:

1. Является ли устаревание из-за того, что в будущем все станет унифицированным хостом? Сейчас я на opencl 1.2, и мне нужно, чтобы это соответствовало 2.x позже.

2. Нет, не все будет иметь объединенную память с хостом в будущем. Я предполагаю, что он устарел, потому что он считался недостаточно определенным или потому, что запросы SVM предоставляли более полезную информацию.