Presentation is loading. Please wait.

Presentation is loading. Please wait.

Сахарных Николай (Nvidia) Решение трехдиагональных систем для методов покоординатного расщепления и задач гидродинамики.

Similar presentations


Presentation on theme: "Сахарных Николай (Nvidia) Решение трехдиагональных систем для методов покоординатного расщепления и задач гидродинамики."— Presentation transcript:

1 Сахарных Николай (Nvidia) Решение трехдиагональных систем для методов покоординатного расщепления и задач гидродинамики.

2 2011 Введение Трехдиагональные системы широко применяются в графике и общих вычислениях – Методы покоординатного расщепления Будет рассмотрено 2 примера: – 3D моделирование течений – 2D эффект глубины резкости (DOF)

3 2011 План Обзор методов решения трехдиагональных систем – Введение – Метод прогонки – Циклическая редукция Моделирование течений в 3D Эффект глубины резкости в 2D

4 2011 Решение трехдиагональных систем Задача состоит в решении нескольких независимых систем с трехдиагональной матрицей – Размеры матриц зависят от конкретной задачи

5 2011 Метод прогонки Прямой ход: Обратный ход: Самый быстрый последовальный метод – Сложность O(N) – Оптимальное число операций

6 2011 Шаг редукции Исключаем переменные через линейные комбинации уравнений: После 1 шага редукции система делится на 2 независимые: Шаг редукции можно выполнить N нитями параллельно

7 2011 Циклическая редукция Параллельная циклическая редукция (PCR) – Применяем шаг редукции к обеим меньшим системам – Общая сложность O(N log N) – Для некоторых матриц специального вида достаточно меньшего числа шагов

8 2011 Циклическая редукция Циклическая редукция (CR) – Прямая редукция только для одной из меньших систем, затем обратная подстановка – Сложность O(N), но требуется больше операций, чем в прогонке – Меньше параллельности, чем в PCR

9 2011 План Обзор методов решения трехдиагональных систем Моделирование течений в 3D – Постановка задачи, приложения – Метод покоординатного расщепления – Детали реализации на GPU, оптимизация – Анализ производительности и результаты Эффект глубины резкости в 2D

10 2011 Постановка задачи Вязкая несжимаемая жидкость в трехмерной области Эйлеровы координаты для скорости и температуры свободный поток на выходе инъекция жидкости на входе прилипание на границе

11 2011 Приложения Моделирование потоков крови в сердце Через МРТ или УЗИ определяются границы сердца Моделирование течения внутри найденного объема

12 2011 Приложения Моделирование течений в море Статические границы Дополнительные параметры моделирования (например, соленость)

13 2011 Обозначения Уравнение состояния – Соотношение между и – Пример: Плотность Скорость Температура Давление – газовая постоянная

14 2011 Основные уравнения Уравнение неразрывности – Несжимаемая жидкость: Уравнения Навье-Стокса: – Безразмерная форма – число Рейнольдса (= отношение сил инерции к вязкости)

15 2011 Основные уравнения Уравнение энергии: – Безразмерная форма – удельная теплоемкость – число Прандтля – диссипативная функция

16 2011 Метод расщепления Расщепляем по 3 координатам: X Y Z Фикс. Y, Z Фикс. X, Z Фикс. X, Y

17 2011 Метод расщепления - итерации Глобальные итерации для всей системы Некоторые уравнения нелинейные: – Локальные итерации для аппроксимации нелинейных членов предыдущий шаг по времени Решаем X- расщепление Решаем Y- расщепление Решаем Z- расщепление Обновляем переменные следующий шаг по времени глобальные итерации

18 2011 Дискретизация Используем регулярную сетку, неявную конечно-разностную схему: Получаем трехдиагональную систему – для каждой пары (j, k) i i+1 i-1 i+1 i-1 i

19 2011 Трехдиагональные системы Решаем большое число систем с трехдиагональной матрицей Размеры систем могут отличаться внешний узел внутренний узел граница system 1 system 2 system 3

20 2011 Детали реализации { { { строим трехдиагональные матрицы и правые части; решаем получившиеся системы; } обновляем нелинейные коэффициенты; }

21 2011 Реализация на GPU Храним все массивы данных на GPU в глобальной памяти – Минимум транзакций через PCI-E – Отображение 3D массивов в линейную память Основные методы – Построить матрицы – Решить системы Дополнительные функции для работы с массивами – Слияние, копирование, операции с масками (X, Y, Z) Z + Y * dimZ + X * dimY * dimZ

22 2011 Построение матриц Входные данные: – Предыдущий слой – Нелинейный слои Каждая нить рассчитывает: – Коэффициенты матрицы – Правую часть системы Используем шаблоны C++ для разных направлений и уравнений a b c d

23 2011 Построение матриц - производительность Направление Z в несколько раз медленнее X/Y – Каждая нить работает с непрерывным куском массива – Запросы в память не объединяются, много промахов в кэш Tesla C2050 (SP) сек DirRequests per load L1 gld hit % IPC X2 – 325 – 451.4 Y2 – 333 – 441.4 Z320 – 150.2 Ядра Время

24 2011 Построение матриц - оптимизация Запускаем расчеты вдоль Z в транспонированном пространстве XZY – Локальный доступ к памяти – Дополнительные затраты на транспонирование XYZ Локальные итерации по X Локальные итерации по Y Локальные итерации по Z Транспонируем входные массивы Транспонируем выходные массивы Локальные итерации по Y XZY

25 2011 Построение матриц - оптимизация Решение систем занимает намного больше времени, чем транспонирование данных – с увеличением числа локальных итераций транспонирование занимает еще меньший % времени Tesla C2050 (SP) сек 2.5x Время Z dirRequests per load L1 gld hit % IPC Original320 – 150.2 Transposed2 – 330 – 381.3 Ядра

26 2011 Анализ задачи Большое число систем – Максимум – квадрат размера сетки на каждом шаге – 16K для 128^3 Относительно небольшие размеры систем – Максимальный размер = размеру сетки – 128 for 128^3 В данном случае подходит метод распараллеливания, где 1 нить решает ровно 1 систему – Число нитей достаточно, чтобы загрузить GPU

27 2011 Решение трехдиагональных систем Расположение элементов матрицы в памяти сильно влияет на производительность Sequential (последовательно) Interleaved (перемежаются) a0a1a2a3a0a1a2a3 a0 a1 system 1 system 2 Подходит для редукции Подходит для прогонки Расщепление вдоль Z Расщепление вдоль X, Y Thread 1 Thread 2 Thread 3 Thread 1 Thread 2 Thread 3

28 2011 Производительность разных методов Параметры тестов – Размер систем = N – Число систем = N^2 Расположение матрицы в памяти – Редукция, транспонированная прогонка (Sweep_T): sequential – Прогонка (Sweep): interleaved Tesla C2050 мс N Реализации PCR/CR взяты из: “Fast tridiagonal solvers on the GPU” Y. Zhang, J. Cohen, J. Owens, 2010

29 2011 Выбор метода для решения систем Применительно к методу расщепления в 3D области – Для направлений X, Y элементы матрицы перемежаются (interleaved) по умолчанию – В направлении Z тоже interleaved, но в транспонированном пространстве Наиболее эффективный метод – прогонка – Одна нить решает одну систему – Также можно поэкспериментировать с PCR для направления Z

30 2011 Анализ производительности – Fermi Влияние L1/L2 – Использование 48K L1 вместо 16K дает 10-15% прироста в скорости – Выключение L1 снижает производительность на 10% – L1 помогает только в случае локального переиспользования и невыровненного доступа Пропускная способность прогонки на Tesla C2050 – Одинарная точность = 119 GB/s, 82% от пика – Двойная точность = 135 GB/s, 93% от пика

31 2011 Сравнение производительности Конфигурация CPU: – Intel Core i7 4 ядра @ 2.8 GHz – На CPU использовались все 4 ядра через OpenMP (ускорение около 3-4x раз по сравнению с 1 ядром) Конфигурации GPU: – NVIDIA Tesla C1060 – NVIDIA Tesla C2050 Измеряем время на построение матриц и решение систем для всех итераций

32 2011 Тестовые примеры ТестРазмер сеткиXYZ Куб128 x 128 x 12810K Сердце96 x 160 x 12813K8K Море160 x 128 x 12818K20K6K Куб Сердце Море

33 2011 Результаты – Куб Одинаковые размеры по X, Y, Z SINGLE DOUBLE систем/мс 5.9x 9.5x 2.7x 8.2x

34 2011 Результаты – Сердце Больше систем вдоль X, размеры плавно меняются SINGLE DOUBLE систем/мс 8.1x 11.4x 3.3x 7.8x

35 2011 Результаты – Море Множество систем разной размерности вдоль X и Y SINGLE DOUBLE систем/мс 6.5x 9.6x 3.1x 7.2x

36 2011 Дальнейшая работа Основное ограничение – доступный объем памяти – 3D массивы: сетка, временные слои, матрицы Распределение задачи на несколько GPU и между узлами кластера позволяет рассчитывать большие сетки Разделяем сетку поперек расщепления Распределяем части по доступным GPU Решаем системы и обновляем общие слои GPU 1 GPU 2 GPU 3 GPU 4 Направление расщепления

37 2011 Ресурсы http://code.google.com/p/cmc-fluid-solver/ “Efficient Tridiagonal Solvers for ADI methods and Fluid Simulation”, GPU Technology Conference, 2010, Nikolai Sakharnykh “Tridiagonal Solvers on the GPU and Applications to Fluid Simulation”, GPU Technology Conference, 2009, Nikolai Sakharnykh “Система динамической визуализации на многопроцессорных компьютерах с общей памятью и ее применение для численного моделирования турбулентных потоков вязкой жидкоти”, Вестник Московского Университета 2007, Пасконов В.М., Березин С.Б., Корухова Е.С.

38 2011 План Обзор трехдиагональных решателей Моделирование течений в 3D Эффект глубины резкости в 2D – Постановка задачи – Метод покоординатного расщепления – Анализ и подходы к решению – Результаты

39 2011 Постановка задачи Применение метода расщепления для 2D задач Моделирование эффекта глубины резкости (DOF) – Используем уравнение диффузии для размытия изображения Решаем трехдиагональные системы в 2D области – Другие методы являются более эффективными для GPU

40 2011 Численный метод Метод покоординатного расщепления X Y для всех

41 2011 Реализация метода расщепления Неявная схема всегда устойчива После дискретизации на регулярной сетке с dx = dt = 1: Получаем трехдиагональную систему для каждого j (столбца изображения) i i-1 i i+1

42 2011 Анализ задачи Малое число систем – Максимум 2K для больших разрешений Большие размеры матриц – До 2K для больший разрешений Использование 1 нити для решения 1 системы не будет эффективным – Низкая загруженность GPU

43 2011 Реализация на GPU Использование циклической редукции – Размеры большие, поэтому PCR будет менее эффективным, чем CR – Правильное расположение элементов матрицы (sequential) Использование гибридных решений – Параллельная редукция + прогонка, когда число систем достаточно велико

44 2011 Идея использования уравнения диффузии Распространение температуры (= цвет) на 2D пластине (= изображении) с неоднородной теплопроводностью (= радиусы размытия) большие радиусы на фоне радиусы в фокусе = 0 четкие границы Основные особенности: - Нет “color bleeding” - Поддержка неоднородных радиусов любого размера

45 2011 Эффект глубины резкости в играх Metro2033, © THQ, 4A Games

46 2011 Эффект глубины резкости в играх Metro2033, © THQ, 4A Games

47 2011 Полезные ресурсы Статья Pixar о Diffusion DOF: http://graphics.pixar.com/library/DepthOfField/paper.pdf Циклическая редукция на CUDA: http://www.idav.ucdavis.edu/func/return_pdf?pub_id=978 Сэмпл в GPU Computing SDK – OpenCL Tridiagonal

48 2011 Выводы 10x ускорение метода расщепления в сложных областях – Высокая производительность Fermi в двойной точности Фотореалистичные эффекты в играх в реальном времени Выбирайте метод решения в зависимости от задачи

49 2011 Вопросы?

50 2011 Диссипативная функция Расщепление вдоль координат X, Y, Z:

51 2011 Как работают линзы фокус размытие

52 2011 Пост-обработка изображения Используем буфер глубины для рачетов радиусов размытия DOF фильтр цвет радиус

53 2011 Техника размытия через диффузию Используем уравнение диффузии для моделирования размытия цвета “Interactive Depth of Field Using Simulated Diffusion on a GPU”, Kass et al. 2006, Pixar

54 2011 Использование уравнения диффузии Уравнение диффузии: u(x,y,t) – цвет β(x,y) – квадрат радиуса t = 0 x, y – координаты t – время t = 1 Исходное изображение Результат Радиус размытия

55 2011 Эффект глубины резкости в играх заставки перезарядка оружия Metro2033, © THQ, 4A Games прицеливание Call of Duty 4, © Activision, Infinity Ward


Download ppt "Сахарных Николай (Nvidia) Решение трехдиагональных систем для методов покоординатного расщепления и задач гидродинамики."

Similar presentations


Ads by Google