powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Программирование [игнор отключен] [закрыт для гостей] / CUDA: shared memory
6 сообщений из 6, страница 1 из 1
CUDA: shared memory
    #40054395
RubinDm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На хабре есть статься (https://habr.com/ru/post/55461/) о том, как надо (как было бы хорошо и полезно) применять shared memory cuda-устройства. Почитал, осознал, вдохновился, скопипастил, собрал, запустил и... обломался. Ну никак не удается заставить cuda-устройство (GTX850M) работать с применением shared-memory быстрее, нежели без применения таковой. Наоборот, с применением shared-memory производительность падает практически в два раза, причем на разных конфигурациях сетки и блоков. В чем может быть дело?

зы: хотел задать вопрос на хабре под самой статьей, но статья старая и как бы нельзя.
...
Рейтинг: 0 / 0
CUDA: shared memory
    #40054396
RubinDm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в догонку.. уже имеется обсуждение подобного вопроса на stackoverflow. не все из сказанного там мне понятно, но некий Tom (сотрудник NVIDIA) где-то в середине обсуждения указывает на то, что (цитата): Tom (сотрудник NVIDIA)Совместно используемая память также может быть полезна для преобразования неэффективного шаблона доступа в хорошо согласованный шаблон, например, для операции транспонирования - Том 22 апр. Представляется, что это должно непосредственно коррелировать с примером реализации алгоритма, приведенного в статье на хабре.
Однако, по факту алгоритм транспонирования матрицы с применением shared-memory не показывает выдающихся результатов.
Хотелось бы понять, почему...
Кроме того, хотелось бы понять, что именно Tom (сотрудник NVIDIA) подразумевает под такими терминами, как "неэффективный шаблон доступа" и "хорошо согласованный шаблон". Каковы критерии отнесения шаблона доступа к памяти к той или иной категории?
...
Рейтинг: 0 / 0
CUDA: shared memory
    #40054407
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RubinDm
Ну никак не удается заставить cuda-устройство (GTX850M) работать с применением shared-memory быстрее, нежели без применения таковой. Наоборот, с применением shared-memory производительность падает практически в два раза, причем на разных конфигурациях сетки и блоков. В чем может быть дело?

На основании чего ожидается ускорение?

Ты создал узкое место, которое требует синхронизации доступа, как следствие процессоры обращающиеся к shared-memory вынуждены простаивать в очереди, ожидая чтения/записи туда.

Архитектуру процессоров на видеокарте я не изучал, но думаю что у каждого ядра есть свой кэш, как и основного проца. В таких случаях при записи одним ядром в shared-memory она автоматически становится невалидной в кэшах других ядер и они вынуждены ее перечитывать из кэша ниже или основной памяти, что тоже скорости не добавляет. Для кэша используется более быстрая память, поэтому чтение из памяти раз в 5 медленнее чем из кэша.

Закон Амдала не обманешь. Там где можешь заставить потоки алгоритма работать независимо - надо это делать.
...
Рейтинг: 0 / 0
CUDA: shared memory
    #40054504
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В 2000х я находил статью, где предлагалось на headless unix серверах оснащенных современной видяшкой
использовать видеопамять как /tmp диск. В самом деле. Если консоль - только in text mode, тогда банки видео-памяти
не юзаются и ее можно как-то подключить как блочное устройство. Благо драйвер был написан. И намапить файловоую
систему на блочное устройство было делом утилитарным.

Это пожалуй было полезно как-раз для 2000х когда диски были еще только магнитные.
...
Рейтинг: 0 / 0
CUDA: shared memory
    #40054655
RubinDm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton, как интересно. Жаль только, что в решении поставленных вопросов неприменимо.
...
Рейтинг: 0 / 0
CUDA: shared memory
    #40056545
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RubinDm,

авторКак видно, GPU версия с разделяемой памятью выполняется почти в 20 раз быстрее, чем версия на CPU.
логично, что GPU со своей памятью управляется быстрее
но это если не таскать данные CPU-GPU
авторКоличество перемещений данных между CPU и GPU по-возможности необходимо свести к минимуму.
а вы, что делать-то пытались?
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / CUDA: shared memory
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]