Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.60/219: Рейтинг темы: голосов - 219, средняя оценка - 4.60
 Аватар для kirill7785
380 / 5 / 1
Регистрация: 25.07.2021
Сообщений: 57

У меня заработал гидродинамический решатель на видеокарте

25.07.2021, 14:02. Показов 48418. Ответов 57
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Я пишу свою гидродинамическую программу на С/С++, cuda C с 2009 года.
Вот ссылка на мою программу
https://github.com/kirill7785/AliceFlow

В эти выходные используя библиотеку AMGCL разработчика ddemidov из Казани
https://github.com/ddemidov/amgcl

Я смог добиться расчёта на сетках из 700 тысяч неизвестных за один час расчётного времени.

До этого, при расчётах на центральном процессоре, я фактически был ограничен сетками в 200 тысяч неизвестных по времени гидродинамического расчёта.
Миниатюры
У меня заработал гидродинамический решатель на видеокарте   У меня заработал гидродинамический решатель на видеокарте  
2
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.07.2021, 14:02
Ответы с готовыми решениями:

Проблема с драйверами на видеокарте RX 580 4gb или в самой видеокарте
Добрый день. Столкнулся с такой проблемой. Приобрёл видеокарту на б/у рынке. Пломбы заводские на месте, так что не думаю что бы...

Решатель Sudoku?
Меня интересует такая штука, как код способный решить Sudoku но я просто не знаю что для этого нужно. Писал через StringGrid. Вот я хочу...

Решатель примеров
Пользователь вводит арифметический пример: числа, знаки операций, скобки – и получает ответ. Очень красиво и сложно алгоритмически. ...

57
фрилансер
 Аватар для Алексей1153
6497 / 5728 / 1133
Регистрация: 11.10.2019
Сообщений: 15,300
30.08.2021, 10:24
Студворк — интернет-сервис помощи студентам
kirill7785, я тут ещё побурчу ) Пока вчера лазил по коду, видел такое
C++
1
2
3
B[0][0]=1.0; B[0][1]=xP; B[0][2]=xP2;
B[1][0]=1.0; B[1][1]=xE; B[1][2]=xE2;
B[2][0]=1.0; B[2][1]=xEE; B[2][2]=xEE2;
где B - это указатель на указатель, который является частью массива, который и вовсе указатель на указатель на указатель

C++
1
2
3
4
5
6
    Real*** B = new Real**[inumcore];
    for (int tid = 0; tid < inumcore; ++tid) {
        B[tid] = new Real * [3];
        for (int l = 0; l < 3; l++) B[tid][l] = new Real[3];
        for (int i = 0; i < 3; ++i) for (int j = 0; j < 3; ++j) B[tid][i][j] = 0.0;
    }
я не вникал, производится ли обращение к B в циклах (то есть интенсивно), и если да - то лучше такой многомерный массив сделать не в виде списков указателей, а в виде одного участка памяти (например, в одномерном векторе), а индексацию сделать в виде пересчёта трёхмерного индекса в индекс вектора. И оформить в виде класса

минусы: переделывание текущего кода
плюсы: более скромное потребление памяти и более высокое быстродействие

Добавлено через 46 секунд
но если обращение к этому объекту редкое, то можно и не переделывать. Хотя и не очень красиво выглядит
0
 Аватар для kirill7785
380 / 5 / 1
Регистрация: 25.07.2021
Сообщений: 57
11.09.2021, 15:25  [ТС]
По поводу В - внимательно смотрите код. В функцию передается B[tid] где tid это id thread. Соответственно внутри функции обращение к B[][]. Надо смотреть кто кого вызывал и как передавал данные.

По поводу входного файла: разделитель целой и дробной части в файле meshin должен быть только точка.

Если прога пишет что симметричность матрицы для поправки давления нарушена то причина этого некорректный файл meshin, нужно его проверять. Файл meshin создается граф интерфейсом на Delphi DavisTest, но на гите версия еще не выложена свежая для DavisTest. Также файл meshin создаётся программой AliceMesh\AliceFlow v.0.48, но свежая версия также пока не выложена.
0
 Аватар для kirill7785
380 / 5 / 1
Регистрация: 25.07.2021
Сообщений: 57
26.11.2021, 20:39  [ТС]
19-20 ноября 2021 реализовал блочные сетки для расчётов теплопередачи в твердом теле. Число блоков не ограничено, но уровень вложенности только 1. Т.е. нельзя создать блок сетки в основном блоке, а в него вложится еще (как бы блок в блоке).
По точности метод с блоками не уступает структурированной сетке, но имеет место быть сильная экономия числа ячеек сетки. По скорости расчёта с блоками не всегда всё однозначно иногда наблюдается ускорение расчёта а иногда нет, т.к. несмотря на сокращение числа ячеек сетки появляются накладные расходы на сшитие разных блоков сетки. Еще одним ограничением является то что два блока не могут иметь общей границы и должны контачить только через ячейки кабинета -основного блока расчётной области в котором все и живет.
Миниатюры
У меня заработал гидродинамический решатель на видеокарте   У меня заработал гидродинамический решатель на видеокарте   У меня заработал гидродинамический решатель на видеокарте  

0
 Аватар для kirill7785
380 / 5 / 1
Регистрация: 25.07.2021
Сообщений: 57
28.11.2021, 19:29  [ТС]
Расчёт радиатора 2012 года в программе AliceFlow. Расчёт в 3D.
Миниатюры
У меня заработал гидродинамический решатель на видеокарте   У меня заработал гидродинамический решатель на видеокарте   У меня заработал гидродинамический решатель на видеокарте  

0
 Аватар для kirill7785
380 / 5 / 1
Регистрация: 25.07.2021
Сообщений: 57
08.12.2021, 07:26  [ТС]
По поводу блочной сетки. На границе вложенного блока с основной сеткой организовано сшитие двух разных расчётных областей так чтобы они составляли единую расчетную область. Из маленьких клеток внутри блока прописана в матрице СЛАУ диффузионная связь с внешней расчетной сеткой кабинета. А из большой ячейки кабинета прописано множество связей к мелким ячейкам блока (один ко многим). Диффузионная связь. Диффузионные связи вносятся прямо в матрицу связи (матрицу СЛАУ системы). Связь один ко многим организуется в виде длинной строки матрицы с большим числом коэффициентов соседей. Несмотря на сокращение количества ячеек сетки есть гипотеза что матрица СЛАУ полученная на блочной сетке хуже обусловлена. Это гипотеза пока.
0
 Аватар для kirill7785
380 / 5 / 1
Регистрация: 25.07.2021
Сообщений: 57
08.12.2021, 08:51  [ТС]
Ещё один радиатор 2012 года, рассчитанный в программе AliceFlow. В модели такта теплоносителя (вода) используется полигон из 120 точек.
Миниатюры
У меня заработал гидродинамический решатель на видеокарте   У меня заработал гидродинамический решатель на видеокарте   У меня заработал гидродинамический решатель на видеокарте  

У меня заработал гидродинамический решатель на видеокарте   У меня заработал гидродинамический решатель на видеокарте  
0
 Аватар для kirill7785
380 / 5 / 1
Регистрация: 25.07.2021
Сообщений: 57
08.12.2021, 09:04  [ТС]
Внимание знатоки вопрос. На странице 18 статьи написано что в алгебраическом многосеточном методе на основе RS огрубления (RS - Ruge and Stueben) можно запрограммировать RS алгоритм построения грубой сетки за O(n) операций. Они ссылаются на Кормена и на алгоритм bucket sort. В тоже время алгоритм RS требует для своей реализации приоритетной очереди, значит его трудоемкость для n узлов O(n*log2(n)). Я пока не могу для себя придумать как они сделали RS за O(n). Прошу высказаться по этому поводу знатоков, можно псевдокод привести или словами мысли по этому поводу написать. Я у себя в программе делал несколько версий приоритетной очереди на основе сбалансированных деревьев, на основе двоичной кучи, на основе Фиббоначчиевой кучи. Но все это типо класса O(n*log2(n)). Как же можно за O(n) ? Прошу высказаться.

Добавлено через 58 секунд
статья: Analysis and parallelization
strategies for Ruge-Stuben AMG
on many-core processors
P. Zaspel
0
 Аватар для kirill7785
380 / 5 / 1
Регистрация: 25.07.2021
Сообщений: 57
18.12.2021, 14:17  [ТС]
Асемблес в асемблесе сделал. В модели 217 тысяч ячеек. Время расчёта 30с на Geforce GTX 1080 Ti.
Миниатюры
У меня заработал гидродинамический решатель на видеокарте   У меня заработал гидродинамический решатель на видеокарте   У меня заработал гидродинамический решатель на видеокарте  

У меня заработал гидродинамический решатель на видеокарте  
0
 Аватар для kirill7785
380 / 5 / 1
Регистрация: 25.07.2021
Сообщений: 57
18.12.2021, 14:32  [ТС]
Длины в модели меняются от 2мкм до 60мм. Между рёбрами пластинчатого радиатора скорость воздуха 2м/с.

Добавлено через 13 минут
Тепловая мощность 60Вт. Связка радиатор воздушного охлаждения -> корпус транзистора -> кристалл транзистора.
0
 Аватар для kirill7785
380 / 5 / 1
Регистрация: 25.07.2021
Сообщений: 57
18.12.2021, 20:18  [ТС]
С наступающим !!!
Миниатюры
У меня заработал гидродинамический решатель на видеокарте   У меня заработал гидродинамический решатель на видеокарте   У меня заработал гидродинамический решатель на видеокарте  

0
 Аватар для kirill7785
380 / 5 / 1
Регистрация: 25.07.2021
Сообщений: 57
22.01.2022, 08:22  [ТС]
Обтекание куба в 3D рассчитанное в программе AliceFlow на сетке 310*100*100 контрольных объёмов.
Миниатюры
У меня заработал гидродинамический решатель на видеокарте   У меня заработал гидродинамический решатель на видеокарте  
0
фрилансер
 Аватар для Алексей1153
6497 / 5728 / 1133
Регистрация: 11.10.2019
Сообщений: 15,300
22.01.2022, 09:03
kirill7785, интересно, почему такая асимметрия на левом скрине. Сила тяжести ещё учитывается?
0
 Аватар для kirill7785
380 / 5 / 1
Регистрация: 25.07.2021
Сообщений: 57
22.01.2022, 09:07  [ТС]
Сила тяжести не учитывается. Невесомость. Ассиметрия из-за нелинейности уравнений Навье Стокса при достаточно высоком Рейнольдсе. Там должно что то типо дорожки Кармана образовываться, но это куб не цилиндр и я считал в стационаре (900 итераций) т.к. в нестационарной постановке очень долго считать будет. Время расчёта 900 итераций 368минут на 2*intel xeon 2630v4 2.2ГГц.
0
 Аватар для kirill7785
380 / 5 / 1
Регистрация: 25.07.2021
Сообщений: 57
22.01.2022, 09:16  [ТС]
Вот такие распределения ещё могут быть. Это я пересчитывал своим мультигридом.
Миниатюры
У меня заработал гидродинамический решатель на видеокарте   У меня заработал гидродинамический решатель на видеокарте  
0
 Аватар для kirill7785
380 / 5 / 1
Регистрация: 25.07.2021
Сообщений: 57
22.01.2022, 09:27  [ТС]
Ещё картинка зависит от схемы аппроксимации конвективного члена. Если использовать схему против потока первого порядка то получится симметричная картина обтекания. А у меня используется для конвективного члена схема WACEB она более высокого порядка. Я реализовал схему WACEB с помощью метода отложенной коррекции.
0
фрилансер
 Аватар для Алексей1153
6497 / 5728 / 1133
Регистрация: 11.10.2019
Сообщений: 15,300
22.01.2022, 09:43
kirill7785, для меня все эти термины непонятны, конечно, поскольку я не в теме Но по интуиции - некая симметрия должна быть, хотя бы в виде затухающей синусоиды

Вот последний скрин "покрасивше" выглядит

Добавлено через 1 минуту
("жёлтая" 0.9 скорость справа от куба смущает, правда. Должно же к оранжевой по бокам сверху и снизу вернуться)
0
 Аватар для kirill7785
380 / 5 / 1
Регистрация: 25.07.2021
Сообщений: 57
13.02.2022, 22:40  [ТС]
777тысяч неизвестных, гидродинамика на процессоре в 8потоков без видеокарты, без
библиотеки Дениса Демидова AMGCL за 16мин. 2*intel xeon 2630v4 2.2ГГц.
Алгоритм cfd успеха скорости вычислений:
1. Для компонент скорости якоби окончание по опусканию невязки 0.1;
2. Давление сначала итерационный метод Чебышева с полиномом 128степени и BiCGStab как внешний итерационный процес.
BiCGStab предобусловлен итерационным методом Чебышева. Если за первые 1-7 итераций невязка для
поправки давления упала на 0.1 то Ок переходим к слующей итерации SIMPLE. Обычно в большинстве случаев достаточно
1 итерации BiCGStab с Чебышевым. Это быстро за 2с в среднем. А вот если за 7 итераций не сошлось опять стартуем
с нуля для поправки давления но теперь алгоритмом FGMRes(m) + amg + Якоби. Обычно нужно 20 итераций чтобы сойтись
для поправки давления до невязки 1.0e-7. Время одной итерации правда в 7раз дольше 14с в среднем. Но эти медленные
итерации с amg для поправки давления очень редки.
В итоге 16мин для 777тысячи неизвестных на 320 итераций SIMPLE алгоритма на xeon 2630v4 8потоков.
Алгоритм с amg медленней в 7 раз так у него тяжелая фаза инициализации setup phase.
Миниатюры
У меня заработал гидродинамический решатель на видеокарте   У меня заработал гидродинамический решатель на видеокарте  
0
 Аватар для kirill7785
380 / 5 / 1
Регистрация: 25.07.2021
Сообщений: 57
13.02.2022, 22:43  [ТС]
Вышеописанное реализовано в программе AliceFlow 3D которая на данный момент убрана с Gitа.
0
 Аватар для kirill7785
380 / 5 / 1
Регистрация: 25.07.2021
Сообщений: 57
17.02.2022, 21:29  [ТС]
6 млн неизвестных за 10ч (900 итераций SIMPLE алгоритма). 8 потоков 2*intel xeon 2630v4.
Миниатюры
У меня заработал гидродинамический решатель на видеокарте   У меня заработал гидродинамический решатель на видеокарте   У меня заработал гидродинамический решатель на видеокарте  

У меня заработал гидродинамический решатель на видеокарте  
0
 Аватар для kirill7785
380 / 5 / 1
Регистрация: 25.07.2021
Сообщений: 57
17.02.2022, 21:54  [ТС]
fluid interior number 0: maxelm=5570560, maxbound=323584
iter continity x-velocity y-velocity z-velocity
0 0.29376 1 1.1511e+02 5.7838e-05 0.0000e+00 0.0000e+00 0:13:78 899
1 0.3 2 8.7442e+01 3.3417e-03 4.8931e-01 4.9456e-01 0:19: 4 898
0 0.3 3 1.2739e+01 1.0000e+00 1.0000e+00 1.0000e+00 0:14:86 897
0 0.3 4 2.6424e+02 1.0960e+00 1.1257e+00 1.1455e+00 0:14:91 896
0 0.3 5 2.7789e+01 1.7361e+00 1.9689e+00 1.7344e+00 0:13:99 895
Лог первых пяти итераций на размерности 5.5млн неизвестных. Под конец время одной итерации не 15с, а 40с.

Добавлено через 1 минуту
потребление памяти 30Гб.

Добавлено через 4 минуты
fluid interior number 0: maxelm=25294516, maxbound=1296336
iter continity x-velocity y-velocity z-velocity
6 0.00158468 1 4.1029e+03 0.0000e+00 0.0000e+00 2.9125e-07 3:44:59 899
1 0.3 2 1.1355e+02 9.9428e-02 1.0092e-01 3.6373e-05 1:32:12 898
6 0.3 3 1.6437e+03 1.0000e+00 1.0000e+00 1.0000e+00 3:43:41 897
6 0.3 4 8.9629e+01 9.5941e-01 1.0313e+00 1.5972e+00 3:48: 3 896
6 0.3 5 1.5562e+03 7.7827e-01 1.1265e+00 1.7008e+00 3:46:12 895
Лог 25млн неизвестных по вышеописанному алгоритму. Время одной итерации 3мин 48с. Т.е. в конце время одной итерации минут 10 будет примерно и на эту задачу алгоритм потратит более 6 дней.
Потребление озу 135гб.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.02.2022, 21:54

Решатель «Судоку»
Написать решатель «Судоку». Правила игры в «Судоку» достаточно простые: «Игровое поле представляет собой квадрат размером 9×9,...

Решатель Судоку Qt C++
Здравствуйте, я новичок, дали задание разработать игру &quot;решатель судоку&quot;, задача, чтобы при наборе некоторого кол-ва чисел в разных клетках...

Решатель ЗЛП/ЗЦЛП
Всем привет. В ходе выполнения научной работы в универе встала необходимость решения задач целочисленного линейного программирования...

Решатель диф. уравнения
Всем привет. Прошу помощи или подсказки как справиться с задачей. Имеется файл с исходными параметрами (переменными). Я пробовал написать...

Решатель Find() с массивом
Добрый день! Подскажите как заставить работать решатель Find с массивами? В приложении - расчет. В первой области #1 решатель...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru