Реализация SVD для Cuda

f3434s

✩✩✩✩✩✩✩
31 Окт 2021
13
3
Реализация SVD для Cuda

Реализация алгоритма SVD на CUDA для простых матриц, т.е. которые хранятся построчно в виде массива.
Количество столбцов не должно превышать количество строк. Размерности матрицы должны быть кратны 16.

Реализован алгоритм, описанный в работе "SVD-разложение и его практические приложения, Колесников Е.В.".
Сначала проводится бидиагонализация матрицы. Затем запускается итерационный алгоритм, состоящий из QR-поворотов.
Разница только в том, что в данной программе по диагонали бегут сразу несколько потоков.

Программа не использует никаких дополнительных библиотек.

Из-за проблемы остановки долго работающих ядер драйвером приходится разбивать задачи на части. Например, функции перемножения матриц запускаются в тройных циклах. Первый цикл соответствует группам строк, второй - группам столбцов, а третий разбивает перемножение строки на столбец на части.
Программа отлаживалась на видеокарте GTX 280.

В алгоритме бидиагонализации используется преобразование Хаусхолдера, матрица которого равна своей обратной и транспонированной.

Для отладки раскомментируйте строки с PrintCudaMatrixToFile().


Архив с программой тут: https://yadi.sk/d/WZgS13Mz3WrJWz


Главный файл - svd.cu
 
  • Лойс +1
Реакции: Михаил1234

Un_ka

★★✩✩✩✩✩
13 Июл 2020
243
77
других форумов.
Отчего не на Гитхабе?
На данный форум вряд ли кто полезет, если понадобится что-то подобное.
У нас самое мощное, что может быть это esp, а не графические ядра.
Жаль, что единственная видеокарта Nvidia geforce 9600 gt образца 2008 года. А на AMD такое не запустишь.
 

f3434s

✩✩✩✩✩✩✩
31 Окт 2021
13
3
@Un_ka, вы людЯм помогать хотите? Или как? А потом yandex никто не отменял.
 

bort707

★★★★★★✩
21 Сен 2020
3,056
910

@f3434s, помощь людям - не повод тащить сюда все подряд, кому надо - найдет примеры для ИАРа на соответствующих ресурсах. Яндекс никто не отменял, как вы верно заметили. К тому же, людЯм надо помогать в том, что им интересно...вы уверены, что ваши темы увлекут местную аудиторию?;)
 
Изменено:

f3434s

✩✩✩✩✩✩✩
31 Окт 2021
13
3
молодежь должна развиваться в разные стороны..:cool:
 
  • Лойс +1
Реакции: Un_ka

f3434s

✩✩✩✩✩✩✩
31 Окт 2021
13
3
Да, честно говоря, странное что-то происходит. Раньше спасибо говорили, а сейчас накидываются как собаки и разводят срач. Не понятно почему. Тема весит 1 Кб, а срач - намного больше.. Мне действительно всё равно, где положить. Раньше было проще положить на какой-нибудь форум, народ смотрел. А сейчас что-то странное. Я лично много искал информацию, когда писал эти программы, и далеко не всегда находил информацию по этим темам, поэтому и решил выложить, чтобы сэкономить время другим. Так что, может на этих форумах и отвечают на какие-то вопросы, но на те, которые мне нужны - мало. Это не только про ваш. Иногда не понятно, вроде все как бы программисты, а для программиста самое главное - пример, а не перечитывание мануала. По хорошему вы сами должны писать готовые примеры и выкладывать их. Ну, если вы, конечно, спецы.
Вот парни из iAr...no так и сделали. Подготовили устройства, библиотеки и примеры использования и ролики к тому же. Поэтому на срач у них времени нет.
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,263
1,301
Москва
Может быть потому что подача странная ?
Я этой темой совсем не интересовался, из описания мне не понятно ничего.
В каком то из постов модератор правильно написал: надо оформить. Так если начать с цели, с задачи , а уже потом решение, то может и отклик был бы другой ?
 

bort707

★★★★★★✩
21 Сен 2020
3,056
910
Иногда не понятно, вроде все как бы программисты, а для программиста самое главное - пример, а не перечитывание мануала.
Тут не соглашусь. Не люблю разбирать работу чего-то нового на примерах - к сожалению они почти всегда с ошибками.
К тому же, даже хороший пример без четкого подробного описания мало что дает - разве что его тупо повторить, как мартышка.
А где "четкое подробное описание" взять, кроме как в даташите?
Пример не отвечает на вопросы - Почему автор применил такие функции, откуда он взял константы инициализации - все это без даташита вы ни из какого примера не узнаете.
Так что и сотня кривых примеров не заменяет одного хорошего даташита :)
Давно замечено что желание поделится со всеми своими примерами обычно возникает у новичков, которым особо хвастаться нечем :) В результате цифровая вселенная просто забита самым разным мусором, в котором очень трудно отфильтровать качественную информацию.

Так что, простите, я считаю такое выкладывание "примеров". как у вас -не только бесполезным, а зачастую и вредным И если б я что-то такое про матрицы писал. уж точно начал не с примеров, а с учебника.
 
Изменено:

Un_ka

★★✩✩✩✩✩
13 Июл 2020
243
77
других форумов.
Не люблю разбирать работу чего-то нового на примерах
Нет, примеры нужны. К описанию библиотек в каком-нибудь readme обычно (имеется в виду исходный код библиотек для "ардуино" на гитхабе) всегда есть папка с примерами.
Для отладки раскомментируйте строки с PrintCudaMatrixToFile().
А как же препроцессор #if , #ifndef DEBUG ?
А потом yandex никто не отменял
А на гитхабе всё-таки выложите. Там можно
⭐ получать.