Страницу Назад
Поискать другие аналоги этой работы
200 Программирование графических процессоров Лабораторная 3ID: 238931Дата закачки: 28 Августа 2023 Продавец: svladislav987 (Напишите, если есть вопросы) Посмотреть другие работы этого продавца Тип работы: Работа Лабораторная Сдано в учебном заведении: ДО СИБГУТИ Описание: Выполнение лабораторной работы поможет получить навыки требующиеся для выполнения третьего задания контрольной работы. Задание 1. Прочитайте главы теоретического материала под названиями "Pinned memory" и "Потоки (streams) в CUDA". Ответьте на контрольные вопросы в конце глав (ответы на контрольные вопросы не нужно включать в отчёт по лабораторной работе). 2. Примените потоки для алгоритмов реализованные в лабораторной работе №1. 3. Определите оптимальное количество потоков для матрицы размером 2500x2500 элементов и вектора размером 2500 элементов. Методические указания Для выполнения лабораторной работы требуется модифицировать код, выполняемый на хосте таким образом, чтобы данные передавались на устройство частями асинхронно, после этого выполнялось функция-ядро над переданной частью, после завершения вычислений часть ответа асинхронно должна копироваться на хост. На хосте создайте и проинициализируйте матрицу и вектор, которые будут умножаться. Затем выделите память на хосте под результирующий вектор и проинициализируйте его нулями. Выделите память под матрицу и вектора на устройстве, создайте нужное количество потоков (начните с двух потоков). Теперь нужно определиться какие части данных передавать в каждый поток. Разделение нужно произвести таким образом, чтобы результатом работы функции-ядра была часть конечного результата, не требующая дальнейшей обработки. В таком случае имеет смысл в каждом потоке передавать на устройство часть строк матрицы, а вектор передать сразу полностью, потому что для вычислений, каждой нитью используется одна строка из матрицы и вектор. Результатом работы нити будет один элемент результирующего вектора. Для того чтобы определить размер порции данных нужно количество строк матрицы поделить на количество потоков, и результат умножить на длину строки. После этого полностью скопируйте значения вектора на устройство. И для каждого потока асинхронно скопируйте часть данных на устройство, используя функцию cudaMemcpyAsync, запустите вычисления над порцией данных, асинхронно скопируйте результат на хост. В конце синхронизируйте все потоки вызовом функции cudaDeviceSynchronize() – эта функция будет ожидать завершения всех запущенных потоков. Проведите исследование зависимости времени работы алгоритма от количества потоков. Начните с двух потоков и увеличивайте их количество до тех пор, пока время, затраченное на вычисления, не перестанет уменьшаться. Замеры времени следует проводить, включая асинхронные пересылки данных. Комментарии: зачет Размер файла: 249 Кбайт Фаил: (.rar)
Скачано: 2 Коментариев: 0 |
||||
Есть вопросы? Посмотри часто задаваемые вопросы и ответы на них. Опять не то? Мы можем помочь сделать! Некоторые похожие работы:Лабораторная работа 1 2 3 Программирование графических процессоров Все варианты 2023 годЛабораторная работа 1-3 по дисциплине: Программирование графических процессоров. Вариант 15 Лабораторные работы №1-3 по курсу «Программирование графических процессоров». Вариант общий Лабораторные работы №№1-3 по дисциплине: Программирование графических процессоров Лабораторная работа 1 Программирование графических процессоров Все варианты 2023 год Лабораторная работа 2 Программирование графических процессоров Все варианты 2023 год Лабораторная работа 3 Программирование графических процессоров Все варианты 2023 год Ещё искать по базе с такими же ключевыми словами. |
||||
Не можешь найти то что нужно? Мы можем помочь сделать! От 350 руб. за реферат, низкие цены. Спеши, предложение ограничено ! |
Вход в аккаунт:
Страницу Назад
Cодержание / Программирование графических процессоров / Программирование графических процессоров Лабораторная 3
Вход в аккаунт: