38
Решение дифф. уравнений на CUDA на примере задач аэро- гидродинамики. Лектор: Сахарных Н.А. (ВМиК МГУ, NVidia )

Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

  • View
    254

  • Download
    3

Embed Size (px)

Citation preview

Page 1: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики.

Лектор: Сахарных Н.А. (ВМиК МГУ, NVidia)

Page 2: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

План

Введение и постановка задачиОсновные уравненияЧисленный метод расщепленияОсобенности реализацииРезультаты и выводы

Page 3: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Введение

Вычислительные задачи аэро-гидродинамики Моделирование турбулентных

течений

ВМиК МГУ, кафедра мат. физики Пасконов В.М., Березин С.Б.

Page 4: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Турбулентность

Моделирование турбулентности

Прямое численное

моделирование (DNS)

Моделирование крупномасштабных вихрей (LES)

Осредненные уравнения

Навье-Стокса (RANS)

• все масштабы турбулентности• очень затратный

Page 5: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Постановка задачи

Течение вязкой несжимаемой жидкости в 3D канале

Канал заполнен и находится в однородной среде

Произвольные начальные и граничные условия

Неизвестные величины – скорость и температура

Page 6: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Основные уравнения

Полная система уравнений Навье-Стокса в безразмерных величинах Уравнение неразрывности Уравнения движения (Навье-Стокса) Уравнение энергии

Page 7: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Обозначения

Плотность

Скорость

Температура

Давление

Уравнение состояния

1const

),,( wvuu

T

RTRTp

p

– газовая постояннаяR

Page 8: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Уравнение неразрывности

Используется при выводе остальных уравнений (движения и энергии)

Проверка точности текущего решения

0)(

vt

const

Page 9: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Уравнения Навье-Стокса

Второй закон Ньютона:

Вязкая жидкость:

f – массовые силы (сила тяжести) – тензор вязких напряженийp – давление

Невязкая жидкость:

dVpV

)(F τf

dVpV

)(F f

τ

FdVDt

DV

v

Page 10: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Безразмерные уравнения

Параметры подобия Число Рейнольдса Число Прандтля

Уравнение состояния для идеального газа/жидкости:

RTp

'

''Re

LV

'

''Pr

k

cp

'k

– характерная скорость, размер– динамическая вязкость среды– коэффициент теплопроводности– удельная теплоемкость

',' LV

'

'pc

Page 11: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Уравнения движения

Безразмерная форма:

Не рассматриваем массовые силы Уравнение состояния Tp

0f

uuuu 2

Re

1

Tt

Page 12: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Уравнение энергии

Первый закон термодинамики для объема V:

Диссипативная функция:

Re

1

RePr

1

TTTt

Tu

Page 13: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Финальные уравнения

4 нелинейных уравнения

4 неизвестные величины: Компоненты скорости: u, v, w Температура: T

Re

1

RePr

1

TTTt

Tu

uuuu 2

Re

1

Tt

Page 14: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Численный метод

Расщепление по координатам

2

2

2

2

2

2

z

u

y

u

x

u

t

u

2

2

x

u

t

u

2

2

y

u

t

u

2

2

z

u

t

u

X Y Z

Page 15: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Уравнение диффузии

3 дробных шага – X, Y, ZНеявная конечно-разностная

схема2

3/1,,1

3/1,,

3/1,,1,,

3/1,, 2

x

uuu

t

uu nkji

nkji

nkji

nkji

nkji

2

2

x

u

t

u

nkjnx

nkji

nkj

nkjnx

nkji

nkj

u

u

u

t

x

u

u

u

q

q

q

q

,,

,,

,,1

2

3/1,,

3/1,,

3/1,,1

10

11

11

11

01

t

xq

2

2

Page 16: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Уравнения Навье-Стокса

Уравнение для X-компоненты скорости

+ итерации по нелинейности

2

2

2

2

2

2

Re

1

z

u

y

u

x

u

x

T

z

uw

y

uv

x

uu

t

u

2

2

Re

1

x

u

x

T

x

uu

t

u

2

2

Re

1

y

u

y

uv

t

u

2

2

Re

1

z

u

z

uw

t

u

X

Y

Z

Page 17: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Шаг по времени

(n-1) time step

Splitting by X

Splitting by Y

Splitting by Z

Updating non-linear parameter

s

Global iterations

(n) time step

(n+1) time step

Page 18: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Дробный шаг

Линейное PDEs

N time layer

u: x-velocity

v: y-velocity

w: z-velocity

T: temperature

N + 1 time layer

Sweep

Solves many tridiagonal

systems independently

Next layer

Previous layer

Page 19: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Дробный шаг

Нелинейное PDEs

N time layer

u: x-velocity

v: y-velocity

w: z-velocity

T: temperature

N + ½ time layer

N + 1 time layer

Update

Copy

Sweep

Solves many tridiagonal

systems independently

Local iterations

Next layer

Previous layer

Page 20: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Стадии алгоритма

Решение большого количества трехдиагональных СЛАУ

Вычисление диссипации в каждой ячейке сетки

Обновление нелинейных параметров

Page 21: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Особенности метода

Большой объем обрабатываемых данных

Высокая арифметическая интенсивность

Легко параллелится

Page 22: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Реализация на CUDA

Все данные хранятся в памяти GPU 4 скалярных 3D массива для каждой

переменной (u, v, w, T) 3 дополнительных 3D массива

~1GB для сетки 192^3 в double

Page 23: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Решение трехдиагональных СЛАУ

Каждая нить решает ровно одну трехдиагональную СЛАУ На каждом шаге N^2 независимых

систем

Расщепление X Расщепление Y Расщепление Z

Page 24: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Метод прогонки

Необходимо 2 дополнительных массива хранение: локальная память

Прямой ход вычисление a[i], b[i]

Обратный ход x[i] = a[i+1] * x[i+1] + b[i+1]

Page 25: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Проблемы реализации

Каждая нить последовательно читает и пишет столбец 3D массива Коэффициенты и правая часть

Y, Z – прогонки coalescedX – прогонка uncoalesced!

Page 26: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Оптимизация прогонки

X – прогонка Транспонируем входные массивы и

запускаем Y-прогонку

float double0.000

0.500

1.000

1.500

2.000

2.500

originalcoalesced

общая производительностьвсех прогонок

Page 27: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Расчет диссипации

Расчет частных производных по трем направлениям Локальный доступ к памяти

Каждая нить обрабатывает столбец данных Переиспользование расчитанных

производныхИспользование разделяемой

памяти (?)

Page 28: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Оптимизация диссипации

Рефакторинг кода Предварительный расчет

некоторых констант, избавление от лишних if

C++ шаблоны для X, Y, Z-диссипации Уменьшение числа

регистров, нет лишних обращений к памяти

float double0

0.5

1

1.5

2

2.5

originaloptimized

Page 29: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Нелинейные итерации

Необходимо посчитать полусумму двух 3D массивов

Каждая нить считает сразу для столбца данных – N^2 нитей Все чтения/записи coalesced

Оптимальный выбор размера блока

80% от пиковой пропускной способности на Tesla C1060

Page 30: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Пример кода

// boundary conditionsswitch (dir){

case X: case X_as_Y: bc_x0(…); break;case Y: bc_y0(…); break;case Z: bc_z0(…); break;

}a[1] = - c1 / c2;u_next[base_idx] = f_i / c2;

// forward trace of sweepint idx = base_idx;int idx_prev;for (int k = 1; k < n; k++){

idx_prev = idx;idx += p.stride;

double c = v_temp[idx];c1 = p.m_c13 * c - p.h;c2 = p.m_c2;c3 = - p.m_c13 * c - p.h;

double q = (c3 * a[k] + c2);double t = 1 / q; a[k+1] = - c1 * t;u_next[idx] = (f[idx] - c3 * u_next[idx_prev]) * t;

}

Page 31: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Тест производительности

Тестовые данные Сетка 128^3, 192^3 8 нелинейных итераций

Сравнение CPU и GPU Абсолютное время работы

Page 32: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Тест – 128 - float

Dissipation Sweep NonLinear Total0

3

6

9

12

15

18

21

24

27

30

NVIDIA Tesla C1060Intel Core i7 Nehalem 2.93GHz (4 cores)Intel Core 2 Quad 2.4GHz (4 cores)

time steps/sec

20x

7x

7x9x

Page 33: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Тест – 128 - double

Dissipation Sweep NonLinear Total0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

NVIDIA Tesla C1060Intel Core i7 Nehalem 2.93GHz (4 cores)Intel Core 2 Quad 2.4GHz (4 cores)

time steps/sec

10x

4x

4x

5x

Page 34: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Тест – 192 - float

Dissipation Sweep NonLinear Total0

1

2

3

4

5

6

7

8

9

NVIDIA Tesla C1060Intel Core i7 Nehalem 2.93GHz (4 cores)Intel Core 2 Quad 2.4GHz (4 cores)

time steps/sec28x

8x

8x

11x

Page 35: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Тест – 192 - double

Dissipation Sweep NonLinear Total0

1

2

3

4

5

6

NVIDIA Tesla C1060Intel Core i7 Nehalem 2.93GHz (4 cores)Intel Core 2 Quad 2.4GHz (4 cores)

time steps/sec

13x

4x

5x

5x

Page 36: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Визуализация

Векторное поле скоростей

u v

w T

Срез вдоль Х

Page 37: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Выводы

Высокая эффективность Tesla в задачах аэро-гидродинамики

Программная модель CUDA – удобное средство утилизации ресурсов GPU

Применение GPU открывает новые возможности для исследования

Page 38: Решение дифф. уравнений на CUDA на примере задач аэро-гидродинамики. zЛектор: yСахарных Н.А. (ВМиК МГУ,

Вопросы