Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Программирование алгоритма Гаусса на Cuda

Автор:   •  Декабрь 23, 2023  •  Лабораторная работа  •  2,983 Слов (12 Страниц)  •  59 Просмотры

Страница 1 из 12

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

Кафедра автоматики

ОТЧЁТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №1-2

ПО ДИСЦИПЛИНЕ «КОМПЬЮТЕРНАЯ ГРАФИКА»

«Программирование алгоритма Гаусса на Cuda»

Факультет: АВТ

Группа: АВТ-108

Студент(ы):  Мартынович О.Е.

                       Бакин И.И.

Преподаватель: Ильиных С.П.

Новосибирск, 2023

Цель работы

Определить зависимость времени расчета определителя матрицы от её размера, путем вычисления его по алгоритму Гаусса, используя CUDA. Протестировать быстродействие на CPU.

Задачи работы

  1. Реализовать алгоритм вычисления определителя матрицы произвольного размера на CPU с помощью языка C++.
  2. Реализовать алгоритм вычисления определителя матрицы произвольного размера на GPU с помощью языка C++ и программно-аппаратной архитектуры параллельных вычислений CUDA.
  3. Записать и сравнить скорость вычисления определителя матрицы на CPU и GPU.
  4. Построить графики зависимости времени от размера матрицы и сделать выводы.

Исходные данные

GPU Nvidia Geforce GTX 1650:

[pic 1]

Рисунок 1 - Характеристики GPU из ПО Nvidia Geforce Expirience

CPU Intel Core i5-10300H:

[pic 2]


Ход работы

Алгоритм

Задается массив размерность N*N. Он наполнен случайными числами. Затем, с помощью итерационных циклов вычисляется определитель матрицы с помощью алгоритма Гаусса. Весь алгоритм состоит из эквивалентных преобразований:

  1. Разделим элементы каждой строки на первый элемент соответствующей строки:

[pic 3]

[pic 4]

  1. Вычтем из элементов всех строк, начиная со второй, элементы первой строки:

[pic 5]

В дальнейшем повторяем шаги, меняя номер элемента строки, чтобы добиться верхнетреугольного (нижнетреугольного) вида матрицы. Затем останется лишь вычислить произведение элементов на главной диагонали. Найденный определитель хранится отдельно.

Вычисления на CUDA

Для параллельных вычислений на GPU используется технология CUDA. CUDA – это архитектура параллельных вычислений от NVIDIA, позволяющая существенно увеличить вычислительную производительность благодаря использованию GPU.

  • Устройство (device) — GPU. Выполняет роль «подчиненного» — делает только то, что ему говорит CPU.
  • Хост (host) — CPU. Выполняет управляющую роль — запускает задачи на устройстве, выделяет память на устройстве, перемещает память на/с устройства. И да, использование CUDA предполагает, что как устройство, так и хост имеют свою отдельную память.
  • Ядро (kernel) — задача, запускаемая хостом на устройстве.

Основные режимы работы:

  • __host__ — выполнятся на CPU, вызывается с CPU (в принципе его можно и не указывать).
  • __global__ — выполняется на GPU, вызывается с CPU.
  • __device__ — выполняется на GPU, вызывается с GPU.

Основные этапы CUDA-программы

  1. Выделяется нужное количество памяти на устройство.
  2. Копирование информации из СРU в GPU.
  3. Cтарт работы программы.
  4. Хост копирует результаты из памяти устройства в свою память.
  5. Вывод работы программы


Естественно, для наибольшей эффективности использования GPU нужно чтобы соотношение времени, потраченного на работу ядер, к времени, потраченному на выделение памяти и перемещение данных, было как можно больше.

Важный принцип — ядра пишутся обычные последовательные программы в них не увидеть создания и запуска потоков в коде самих ядер. Вместо этого, для организации параллельных вычислений GPU запустит большое количество копий одного и того же ядра в разных потоках. Чем больше потоков вы запускаете (при условии, что все они будут выполнять полезную работу) — тем лучше. При вызове ядер создаётся сетка, в которой имеются блоки, которые содержат потоки. Программа ожидает выполнение всех потоков в сетке.

...

Скачать:   txt (20.7 Kb)   pdf (274.8 Kb)   docx (852.4 Kb)  
Продолжить читать еще 11 страниц(ы) »
Доступно только на Essays.club