2013-12-16 6 views
0

Я написал тестовое приложение (http://www.headline-benchmark.com), которое оценивает графические карты, но моя проблема заключается в том, что я получаю имя графической карты из API OpenGL, используя GL_STRING. Для карт NVidia это отлично работает, но для карт AMD я получаю бесполезное название, например «R9 200 Series», которое отображает (в настоящее время) четыре совершенно разных видеокарты.Метод получения информации о GPU для OS или API OpenGL

Я попытался использовать API OpenCL, чтобы получить дополнительную информацию о карте (например, общее количество вычислительных единиц), поскольку я могу использовать это, чтобы устранить карты AMD, но OpenCL склонен к сбою в старых системах, поэтому я бы предпочел избегай это. Есть ли какая-либо особенность API OpenGL, которую я могу использовать, что даст мне более подробную информацию о карточках? Или действительно ли AMD предоставляет какие-либо диагностические утилиты командной строки, которые я мог бы использовать?

ответ

1

Какие данные вы ищите?

Поскольку вы используете тестовую утилиту, я бы предложил использовать AMD ADL API. Это примерно то же самое, что и у NV, и они оба позволят вам получить память и часы GPU, а также нагрузку GPU%. Имейте в виду, что если вы хотите использовать эту информацию, вы должны запросить ее, пока ваш тест находится в полном разгаре, потому что современные графические процессоры масштабируют свои тактовые частоты обратно на холостом ходу.

AMD также недавно выпустила новый API, называемый AGS, который намного сложнее, чем ADL, и, вероятно, даст вам информацию, которую вы ищете. К сожалению, у меня еще не было возможности поработать с ним; ADL в основном предназначен для управления энергопотреблением, но по-прежнему полезен (особенно, поскольку он является межплатформенным, в отличие от AGS).

+0

Это очень информативно ... Тем не менее, я использую Java, и это действительно усложнит мою сборку, поскольку мне нужно будет создавать собственные двоичные коды кода на платформе, которую я поддерживаю. Кроме того, я стараюсь избегать патентованных API. Кстати, информация о olny, которая мне нужна, - это имя GPU (я могу получить «Radeon R9 200 Series» от OpenGL, но мне нужно получить «Radeon R9 290X»). У Catalyst Control Center есть командная строка - кажется, но я не могу найти для нее никакой документации. – Ags1

+0

@ Ags1: Я вернулся через свою кодовую базу и помнил, что есть также расширения: «GLX_AMD_gpu_association» и «WGL_AMD_gpu_association», они были изначально предназначены для того, чтобы вы могли выбрать конкретный графический процессор в многопроцессорной системе для рендеринга, но в порядке Чтобы поддержать это, им пришлось создать более сложную систему для определения графических процессоров. Поэтому они создали 'glXGetGPUInfo' и' wglGetGPUInfo'. –

+0

Спасибо, это похоже на API, специфичный для AMD, который мне нужен. Но почему AMD просто не предоставляет правильную информацию заранее в обычных GL_STRING? – Ags1

Смежные вопросы