Уже более года назад приводил здесь на форуме пример работы с
OpenCL в связке с
Delphi -
http://www.delphisources.ru/forum/sh...ad.php?t=28188
-------------------------------------------------------------------
Дополню его. Открываю отдельную тему, т.к. новый пример м.б. интересен и безотносительно к
OpenCL , поскольку в нём есть программное (прямо из
Delphi-кода) определение:
- общей загрузки CPU ;
- загрузки CPU данной задачей ;
- загрузки GPU (общей);
- загрузки контроллера памяти GPU ;
- процента использованной памяти GPU ;
- температуры GPU .
Внутри той же ссылки для скачивания
http://gofile.me/2Zesj/fbsharing-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. Главное. На форме (см. скан экрана
Reduct DEMO.tiff в указанной выше новой папке) добавлены
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. Ещё раз напоминаю, что при запуске
*.exe рядом с ним должны лежать
два текстовых файла
*.cpp -
они будут отправлены на компиляцию драйверу видеокарты!
7. Пример делался в
Delphi XE8, компилировался под
64bit. Система -
Windows 10Pro. При компиляции под
32bit не будут отображаться компоненты загрузки
GPU (даже если у вас карта
NVIDIA, и по указанному пути удастся найти библиотеку
nvml.dll). Кроме того, из-за ограничений в адресации памяти под
32bit, максимальный размер матриц
1400 x 8 (так и задано по умолчанию на форме).
---------
Буду весьма признателен , если кто-то подскажет способ измерения загрузки
GPU от
AMD, и самое простое - его температуры. Есть похожая
DLL - как у
NVIDIA, только для
AMD Radeon? Может, эти:
atiadlxx.dll , atiadlxy.dll , GPUPerfAPIGL.dll ?