Тип работы:
Предмет:
Язык работы:


Реализация движка для симуляции физики частиц на GPU

Работа №141962

Тип работы

Дипломные работы, ВКР

Предмет

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

Объем работы24
Год сдачи2023
Стоимость4750 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
27
Не подходит работа?

Узнай цену на написание


Введение 4
1. Постановка задачи 7
2. Обзор 8
2.1. Работы по симуляции элементарных частиц на видеокартах 8
2.2. Выбор API для работы с видеокартами 10
2.3. Direct3D 12 11
3. Реализация 14
3.1. Архитектура 14
3.2. Слой абстракции от графического API 15
3.3. Генератор кода для взаимодействия с ресурсами шейдеров 16
3.4. Граф зависимостей ресурсов 18
3.5. Библиотека для работы с шейдерами 19
3.6. Блок работы с геометрией 19
3.7. API фреймворка 19
Апробация 21
Заключение 22
Список литературы 23

В настоящее время компьютеры зачастую используются для расче­тов различных симуляций физических эффектов. Ядерная физика не стала исключением. Вычисления на компьютерах помогают получать различные теоретические или даже практические результаты. Напри­мер, при помощи компьютерной симуляции частиц можно рассчиты­вать, какие показания будут на детекторе этих частиц, расположенном у подножия горы. С помощью такого моделирования можно предсказы­вать показания детектора при тех или иных изменениях внутри горы. Таким образом, можно наблюдать изменения в горных породах, имея только детекторы элементарных частиц.
В Московском физико-техническом институте разрабатываются программные решения для симуляции поведения элементарных частиц. Как правило, такие решения основаны на численном интегрировании методами Монте-Карло. Для симуляций со сложной геометрией (напри­мер, при расчете распределений частиц вблизи горы) прослеживается путь множества частиц, обычно рассчитывая пересечения лучей, сгене­рированных по частицам, на каждый шаг симуляции. Для подобного рода симуляций можно использовать различные формы представления сцены. Например, библиотека TURTLE позволяет загрузить карту высот и искать пересечения лучей с геометрией, представленной в та­кой форме, из кода на CPU. Но иногда таких возможностей бывает недостаточно и требуется больше гибкости. Зачастую, в таком случае данная задача решается представлением геометрии для симуляции в виде набора треугольников с требуемой детализацией.
Учитывая то, что задача симуляции множества частиц хорошо па- раллелизируема, для данной задачи имеет смысл использовать видео­карты. Современные графические процессоры, состоят из множе­ства потоковых процессоров (рисунок 11), имеющих несколько блоков выполнения, исполняющих одновременно только одинаковые операции на всех потоках, запущенных на этом блоке. Также GPU имеют боль­шую пропускную способность памяти, как правило, с большой задерж­кой, которая скрывается планировщиком, снимающим с блоков вы­полнения потоки, ожидающие выполнения операции с видеопамятью. Часто современные видеокарты имеют аппаратное ускорение пересе­чений лучей с геометрией. Для запуска программируемой работы на видеокарте пишется шейдер (программа, выполняемая на видеокарте с разными входными данными). Как правило, вычислительная рабо­та на GPU разбивается программистом на множество рабочих групп (групп выполнений шейдера, которые распределяются по вычислитель­ным блокам драйвером видеокарты).
По описанным выше причинам, для разработки алгоритмов симу­ляции элементарных частиц будет полезен фреймворк, позволяющий задавать геометрию в формате набора треугольников и предоставля­ющий интерфейс для пересечения лучей с заданной сценой. При этом данное решение должно позволять реализовывать новые алгоритмы, в отличие от множества существующих решений (например, MCGPU), уже имеющих внутри себя алгоритмы, основанные на методах Монте- Карло. Работа направлена на разработку движка, позволяющего по­лучать доступ к вычислительным мощностям современных видеокарт, при этом инкапсулируя внутри себя часть сложности работы с API для взаимодействия с видеокартой. Тему дипломной работы предложил Ро­лан Гринис, научный сотрудник МФТИ.

Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


На данный момент достигнуты следующие задачи.
1. Проведен обзор существующих работ по симуляции физики ча­стиц на видеокартах.
2. Разработана архитектура движка симуляции частиц.
3. Реализован фреймворк для разработки алгоритмов симуляций ядерной физики.
4. Проведена апробация реализованного решения.
Исходный код открыт и доступен в GitHub.


[1] [1904.03435] TURTLE: A C library for an optimistic stepping through a topography.— URL: https://arxiv.org/abs/1904.03435 (дата обращения: 2022-12-09).
[2] Achieved Occupancy.— URL: https://docs.nvidia.com/ gameworks/content/developertools/desktop/analysis/report/ cudaexperiments/kernellevel/achievedoccupancy.htm (дата обращения: 2022-09-18).
[3] Akenine-Moller T. Haines E. Hoffman N. Real-Time Rendering, Fourth Edition.— A K Peters/CRC Press, 2018.— P. 837-821.— ISBN: 9781351816144.
[4] CUDA C++ Programming Guide.— URL: https://docs. nvidia.com/cuda/cuda-c-programming-guide/index.html# device-memory-accesses (дата обращения: 2022-12-10).
[5] CUDA Zone - Library of Resources | NVIDIA Developer. — URL: https://developer.nvidia.com/cuda-zone (дата обращения: 2022-09-18).
[6] D3D12 Memory Allocator - GPUOpen.— URL: https://gpuopen. com/d3d12-memory-allocator (дата обращения: 2022-12-11).
[7] D3D12_RESOURCE_STATES - Win32 apps | Microsoft Learn.- URL: https://learn.microsoft.com/en-us/windows/win32/api/ d3d12/ne-d3d12-d3d12_resource_states (дата обращения: 2023­05-06).
[8] DD2018: Adam Sawicki - Porting your engine to Vulkan or DX12 - YouTube.— URL: https://youtu.be/6NWfznwFnMs (дата обращения: 2022-12-11).
[9] DIDSR/MCGPU: GPU-accelerated Monte Carlo x-ray transport code to simulate medical x-ray imaging devices. — URL: https://github. com/DIDSR/MCGPU (дата обращения: 2023-03-26).
[10] Direct3D - Win32 apps | Microsoft Learn.— URL: https://learn. microsoft.com/en-us/windows/win32/direct3d (дата обращения: 2022-12-11).
[11] DirectX Raytracing - PIX on Windows.— URL: https://devblogs. microsoft.com/pix/directx-raytracing (дата обращения: 2022­12-11).
[12] DirectX Raytracing (DXR) Functional Spec | DirectX-Specs. — URL: https://microsoft.github.io/DirectX-Specs/d3d/Raytracing. html (дата обращения: 2022-12-11).
[13] DirectX-Specs | Engineering specs for DirectX features.—
URL: https://microsoft.github.io/DirectX-Specs/d3d/
CPUEfficiency.html#detailed-api-descriptions (дата
обращения: 2022-12-11).
[14] DirectX-Specs | Engineering specs for DirectX features. — URL: https://microsoft.github.io/DirectX-Specs/d3d/HLSL_ ShaderModel6_5.html (дата обращения: 2022-12-12).
[15] Documentation - PIX on Windows.— URL: https://devblogs. microsoft.com/pix/documentation (дата обращения: 2022-12-11).
... всего 29 источников


Работу высылаем на протяжении 30 минут после оплаты.



Подобные работы


©2025 Cервис помощи студентам в выполнении работ