![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 19.06.2011
Сообщений: 21
|
![]()
Уже более года назад приводил здесь на форуме пример работы с 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. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 06.10.2013
Сообщений: 216
|
![]()
Спасибо! искал подобное, будет время займусь
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 19.06.2011
Сообщений: 21
|
![]()
Для ATI-AMD надо вроде в этих библиотеках копаться: atiadlxx.dll , atiadlxy.dll , GPUPerfAPIGL.dll ? С температурой GPU там более менее понятно как разобраться, а вот как с GPUutilization - не ясно: там сессии какие-то...
|
![]() |
![]() |
![]() |
#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. |
![]() |
![]() |
![]() |
#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 этим кодом на своём сетапе - будет интересно. ![]() Вот скан части экрана при работе НЕ тестовой программы, где уже мониторится и использование GPU, и скорость вентилятора, и частоты GPU/памяти (в коде применялся тот же модуль ProcessorUsage.pas мониторинга CPU-GPU loading): Последний раз редактировалось Prok186; 06.01.2018 в 14:46. |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 19.06.2011
Сообщений: 21
|
![]()
Тот же пример, но мониторится так же и потребляемая видеокартой мощность (это для NVIDIA). Для AMD потребляемую мощность и занятую память определить через эти DLL так и не удалось.
![]() |
![]() |
![]() |
![]() |
#7 |
Регистрация: 08.04.2016
Сообщений: 3
|
![]()
Пробовал твой проект запускать.
при попытке загрузки библиотеки nvml.dll LibHandleNV:= LoadLibraryW(PWideChar(nvml_Lib)); LibHandleNV = 0 и хоть убей. Приложение компилю в Делфе под 32 платформу (стандарт в делфях), да и возможности переключить платформу тоже не нашёл. Windows 7 х64. Подскажи секрет загрузки этой библиотеки? :-) Если нужно сменить платформу приложения в Делфе, прошу подсказать как именно это сделать, я так и не нашёл информацию. |
![]() |
![]() |
![]() |
#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. |
|
![]() |
![]() |
![]() |
#9 | |
Регистрация: 08.04.2016
Сообщений: 3
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#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 |