|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
28.12.2017, 12:49 | #1 |
Пользователь
Регистрация: 19.06.2011
Сообщений: 21
|
Delphi & OpenCL + программное измерение загрузки GPU-CPU
Уже более года назад приводил здесь на форуме пример работы с OpenCL в связке с Delphi - http://www.programmersforum.ru/showt...=288226http://
------------------------------------------------------------------- Дополню его. Открываю отдельную тему, т.к. новый пример м.б. интересен и безотносительно к OpenCL , поскольку в нём есть программное (прямо из Delphi-кода) определение:
Внутри той же ссылки для скачивания http://gofile.me/2Zesj/C0f3wb1o добавил папку: OpenCL_Demo2017 Barrier and Local_Memory REDUCT В ней новый пример под Delphi XE8 64bit (работает и при компиляции в Delphi под Win32, но с ограничениями, о которых будет сказано ниже). Отличия: 1. Добавлен пример простейшей редукции с использованием barrier и LocalMemory с обилием комментариев внутри Kernel-файла ProgramGPU1.cpp 2. Показано, как внутри Kernel создать а-ля динамический массив (стандарт языка OpenCL 1.2 этого не позволяет). 3. Главное. На форме (см. вложенный скан экрана, он есть и в указанной выше новой папке) добавлены Gauge-компоненты, показывающие перечисленные выше параметры загрузки системы (CPU-GPU). 4. Для определения загрузки GPU используется nvml.dll, - мануал 2017: https://docs.nvidia.com/deploy/pdf/N...ence_Guide.pdf , так что последние 4 параметра определяются только для карт NVIDIA, и при компиляции в Delphi под 64bit. Эта динамич. библиотека для каждой карты NVIDIA - своя, обычно при установке драйвера карты она попадает в папку C:\Program Files\NVIDIA Corporation\NVSMI\nvml.dll (этот путь прямо прописан в прилагаемом примере по ссылке). Всё что связано с определением загрузки CPU-GPU находится в отдельном модуле ProcessorUsage.pas, который может быть применён и для других программ (без OpenCL). 5. Если есть желание попробовать OpenCL не только на видеокартах, но и на процессорах INTEL, надо поставить драйвер https://software.intel.com/en-us/art...st_CPU_runtime 6. Буду весьма признателен , если кто-то подскажет способ измерения загрузки GPU от AMD, и самое простое - его температуры. Есть похожая DLL - как у NVIDIA, только для AMD Radeon? 7. Пример делался в Delphi XE8, компилировался под 64bit. Система - Windows 10Pro. При компиляции под 32bit не будут отображаться компоненты загрузки GPU (даже если у вас карта NVIDIA, и по указанному пути удастся найти библиотеку nvml.dll). Кроме того, из-за ограничений в адресации памяти под 32bit, максимальный размер матриц 1400 x 8 (так и задано по умолчанию на форме). Скан экрана при работе тестовой программы прилагаю. 8. Скан фрагмента экрана при работе моей уже не тестовой научной программы-OpenCL, где используется этот-же модуль определения загрузки CPU-GPU, тоже прилагаю. 9. Ещё раз напоминаю, что при запуске *.exe рядом с ним должны лежать два текстовых файла *.cpp - они будут отправлены на компиляцию драйверу видеокарты! Всех с наступающим Новым годом !! Последний раз редактировалось Prok186; 28.12.2017 в 16:16. |
29.12.2017, 12:58 | #2 |
Форумчанин
Регистрация: 06.10.2013
Сообщений: 216
|
Спасибо! искал подобное, будет время займусь
|
29.12.2017, 13:59 | #3 |
Пользователь
Регистрация: 19.06.2011
Сообщений: 21
|
Для ATI-AMD надо вроде в этих библиотеках копаться: atiadlxx.dll , atiadlxy.dll , GPUPerfAPIGL.dll ? С температурой GPU там более менее понятно как разобраться, а вот как с GPUutilization - не ясно: там сессии какие-то...
|
30.12.2017, 15:40 | #4 |
Пользователь
Регистрация: 19.06.2011
Сообщений: 21
|
Упсс... Уже cмог определить загрузку GPU от AMD и его текущую температуру - использовал atiadlxx.dll (пример на днях дополню и перезалью на ту же ссылку). Но вот определить, сколько процентов памяти задействовал с карты AMD под свои расчёты на OpenCL пока не смог. C NVIDIA у меня это вышло без проблем (см. пример выше).
Увы, для atiadlxx.dll нет подробного мануала, как для NVIDIA - https://docs.nvidia.com/deploy/pdf/N...ence_Guide.pdf. Может, вообще нужна для AMD другая DLL - GPUPerfAPIGL.dll для определения загрузки памяти ? А как для AMD загрузку контроллера памяти найти - вообще не знаю (даже готовые утилиты типа GPU-z 2.5.0 не показывают загрузку контроллера для AMD, только для NVIDIA). Хорошо бы пример! Последний раз редактировалось Prok186; 30.12.2017 в 15:43. |
05.01.2018, 19:40 | #5 |
Пользователь
Регистрация: 19.06.2011
Сообщений: 21
|
Прилагаю допиленную версию (zip-файл). Дополнена измерением температуры для AMD тоже, плюс мониторинг скорости вращения вентилятора AMD-NVIDIA, частот (MHz) GPU и памяти для AMD-NVIDIA .
В папку для скачивания (ссылка выше) тоже всё перезалил. Внутри есть под-папка с Supporting Information в названии. Файлы из неё напрямую НЕ используются. Это примеры работы с nvml.dll (NVIDIA) и atiadlxx.dll (AMD) и некоторая документация к этим библиотекам. Например, для второй из них надо открыть в любом броузере ADL_SDK.html. С процентом загрузки памяти именно AMD, увы, не удалось разобраться, хотя у того же Win10 Task Menager или у GPU-z загрузка памяти AMD отображается. Если кто-то сможет протестировать измерение загрузки GPU-CPU этим кодом на своём сетапе - будет интересно. Особенно, если установлено 2 (или более) карты AMD или AMD + NVIDIA. Вот скан части экрана при работе НЕ тестовой программы, где уже мониторится и использование GPU, и скорость вентилятора, и частоты GPU/памяти (в коде применялся тот же модуль ProcessorUsage.pas мониторинга CPU-GPU loading): Последний раз редактировалось Prok186; 06.01.2018 в 14:46. |
02.02.2018, 16:57 | #6 |
Пользователь
Регистрация: 19.06.2011
Сообщений: 21
|
Тот же пример, но мониторится так же и потребляемая видеокартой мощность (это для NVIDIA). Для AMD потребляемую мощность и занятую память определить через эти DLL так и не удалось.
|
22.02.2018, 11:31 | #7 |
Регистрация: 08.04.2016
Сообщений: 3
|
Не загружается библиотека nvml.dll
Пробовал твой проект запускать.
при попытке загрузки библиотеки nvml.dll LibHandleNV:= LoadLibraryW(PWideChar(nvml_Lib)); LibHandleNV = 0 и хоть убей. Приложение компилю в Делфе под 32 платформу (стандарт в делфях), да и возможности переключить платформу тоже не нашёл. Windows 7 х64. Подскажи секрет загрузки этой библиотеки? :-) Если нужно сменить платформу приложения в Делфе, прошу подсказать как именно это сделать, я так и не нашёл информацию. |
10.03.2018, 11:37 | #8 | |
Пользователь
Регистрация: 19.06.2011
Сообщений: 21
|
Читаем внимательно выше:
Цитата:
Надо в Delphi менять платформу на Win64: в версии Delphi-Starter этого нет, и может не быть, если был отказ при установке Delphi от 64-bit платформы. А если всё же в установленной версии Delphi XE8 (или выше - на XE2...XE7 не проверял эту программу) есть платформа Win64, то она включается просто: справа, в Project Manager, кликаем правой кнопкой мышки на Target Platform --> Add Platform Ну а для начала надо проверить, идёт ли готовый exe-шник (он ведь тоже выложен!), рядом с которым (в той же папке) должны лежать 2 файла *.cpp. Последний раз редактировалось Prok186; 10.03.2018 в 16:28. |
|
10.03.2018, 15:53 | #9 | |
Регистрация: 08.04.2016
Сообщений: 3
|
Цитата:
|
|
18.03.2018, 23:15 | #10 |
Регистрация: 08.04.2016
Сообщений: 3
|
На х64 проект перевёл, теперь хенел хватает, но есть проблема дальше.
Для видеокарт usage, CPU и Mem fryquence показывает -1. Тестил на GTS 450 и 650 Ti. Может просто карточки слишком древние? |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Использование OpenCL в Delphi-коде под Win64 | Prok186 | Общие вопросы Delphi | 10 | 05.01.2019 18:00 |
в чем отличие gpu core clock и gpu clock почему значания разные? | gpu0 | Компьютерное железо | 0 | 10.06.2012 05:17 |
Связь загрузки CPU с Task Manager ? | spamer | Свободное общение | 11 | 19.01.2012 11:31 |
CPU Internal Cache, программное управление | SunKnight | Свободное общение | 0 | 11.05.2010 22:30 |
ИИ в играх-GPU. Что будут делать CPU? | Levsha100 | Свободное общение | 17 | 03.07.2009 14:54 |