Форум по Delphi программированию



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.12.2021, 16:46
Prok186 Prok186 вне форума
Прохожий
 
Регистрация: 19.06.2011
Сообщения: 22
Репутация: 10
По умолчанию OpenCL-Delphi : Multi GPUs DEMO

Уже несколько лет прошло, как выкладывал здесь свои примеры использования OpenCL в Delphi:
https://delphisources.ru/forum/showthread.php?t=28188
https://delphisources.ru/forum/showthread.php?t=29311
Сейчас наконец-то появились драйверы и для карт Nvidia, где взамен устаревшей версии OpenCL 1.2 идёт последняя версия OpenCL 3.0. Кое-что из неё используется в новой Demo-программе, которая может распараллеливать расчёты на несколько GPU (хотя она идёт и на старой версии OpenCL 1.2). Например, используются при возможности неоднородные рабочие группы.
===
Исходники для Delphi 10.2 (Tokyo) - здесь:
OpenCL_MultiGPU_2021 Tokyo 10.2.2
http://gofile.me/2Zesj/ZO2YWyyuy - можно скачать только это;
http://gofile.me/2Zesj/qZDKNrpU8 - вся папка с разными Demo-OpenCL.
===
Напомню (а лучше почитать старые описания по 2-м ссылкам выше):
===
1) Рядом с исполняемым файлом Project_OpenCL_Demo2021_MultiGPU.exe должен лежать текстовый файл ProgramPress.cpp
===
2) Расчёты выполняются с квадратной "матрицей" (их там всего 17 штук!), размер стороны которой MatrixSize задаётся на основной форме. По умолчанию это 2500. Кол-во расчётных слоёв по 3-ей координате - это Layers, по умолчанию это 8. При запуске выдаётся общий размер памяти, который требуется от всех GPU. Если памяти железа не хватит - вылетим, и надо уменьшить кол-во слоёв либо размер матрицы.
===
Версия драйвера для Nvidia, с которой тестировал:
472.12-desktop-win10-win11-64bit-international-whql
===
3) Тестировал с одной видеокартой AMD и с парой Nvidia 1080ti. Если у вас есть больше видеокарт в системе, либо пара AMD - интересно будет обсудить результат.
===
4) Когда в системе несколько видеокарт, и вы задали работу "со всеми", вся расчётная область режется на куски по индексу i, после каждой итерации - сшивание GPU0 --> Host --> GPU1 (это быстро!) и наоборот - по границам нарезки с помощью "небольших" обновляемых при расчётах массивов Connector. Сшивание можно отрубить, убрав галку на основной форме.
===
5) По окончании расчёта выдаётся форма, где видна погрешность расчёта Pogr = (д.б. порядка 1E-7): она определяется по сравнению результатов расчёта на CPU и на GPUs.
===
6) Изначально исходные данные заполняются рандомно. При след. запуске результат м.б. иной. Главное, чтобы погрешность Pogr была малой. Например, при отключении Connector она сразу станет большой: но это когда несколько видеокарт.
===
7) Можете сравнить время расчётов на 1 GPU и на 2,3... Для 2-х своих Nvidia 1080 ti (см. вложенный рисунок) я задавал MatrixSize = 5400 и Layers = 8 (что требует порядка 17Gb памяти на оба GPU).
Изображения
Тип файла: jpg Multi GPUs 1.jpg (94.3 Кбайт, 2 просмотров)

Последний раз редактировалось Prok186, 28.12.2021 в 18:16.
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 10:41.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2021

ВКонтакте   Facebook   Twitter   Ссылка на Telegram