LINUX.ORG.RU
решено ФорумTalks

[нытик-тред][нищеброд] Чертова CUDA!

 ,


0

2

Вот как можно было писать модуль CUFFT, что мне моих 512МБ видеопамяти (GeForce 9600) не хватает, чтобы сделать Фурье малюсенького изображения 4к х 4к?

Вот чего такого делает cufftPlan2d, что ей 300МБ мало? (аллокаторы я еще не вызывал даже…) Ведь 4к х 4к - это всего лишь 128МБ!!!

// эх, фермю, что-ли покупать???

☆☆☆☆☆

Ответ на: комментарий от bhfq

Дык, хочется же скорости.

Буду теперь обработчики переделывать: если CUDA не хочет выполняться, буду CPU'шными аналогами пользоваться.

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от ZenitharChampion

У меня на работе поприличнее видеокарта. Да и проблема не в том, чтобы посчитать, а просто поныть захотелось: 512МБ, оказывается, уже очень мало…

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от ZenitharChampion

С чего бы это вдруг, если OpenCL через CUDA реализуется?

Eddy_Em ☆☆☆☆☆
() автор топика

Говорят в Куде 3.2 КУФФТ в разы больше памяти жрёт, чем в 3.0 (хотя боюсь в случае с изображением 4к х 4к всё равно не хватит).

kranky ★★★★★
()

Вот кусочек кода:

	getprops();
	CUFFTCALL(cufftPlan2d(&fftr2c, size2, size2, CUFFT_R2C));
	getprops();
(getprops показывает всякие сведения о видеокарте) И вот что получаем:
…
CARD returns(err=0):  free mem:432803584,  total mem:536150016
…
CARD returns(err=0):  free mem:140811520,  total mem:536150016
278МБ (!!!) сожрала функция cufftPlan2d. Это же жесть!

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

Скучно же =)

Алсо в чейнджлоге где-то у них было, что они скорость ффт увеличили засчёт большего потребления памяти. Да и какой смысл четвёрочку максимальную юзать, когда ни всякой плюсовой ересью не пользуешься, ни ферми нету?

kranky ★★★★★
()
Ответ на: комментарий от Xenius

Надо было Radeon HD5xxx или 6xxx покупать и юзать OpenCL.

И жрать кактус OpenCL? Который мало того, что уродливый, так еще и тормозной…

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

> Который мало того, что уродливый, так еще и тормозной…

Но CUDA-то ещё ужасней. Так что по сравнению с ней, OpenCL — просто избавление

Xenius ★★★★★
()
Ответ на: комментарий от Xenius

CUDA ужасней? O_o

Да на OpenCL тот же код раз в 5 больше места занимает. Еще и синтаксис уродский. А в CUDA все отлично и удобно.

Eddy_Em ☆☆☆☆☆
() автор топика

http://packages.python.org/pyfft/

Можно попробовать это. Быстрее, чем cufft, а также вполне работает с такими массивами по крайней мере на макбуке автора =).

Библиотека написана для Питона, что предоставляет годную пищу для троллей, и это тоже хорошо

michwill ★★★★★
()
Ответ на: комментарий от michwill

Быстрее, чем cufft

Учитывая то, что оно через pycuda работает, жрет, наверное, память как собака…

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от devl547

Просто вот бесит то, что если на материнке оперативки не хватает, просто идешь в магазин и берешь еще одну планочку на 2..4ГБ. А если не хватает в видеокарте, либо жри кактус, либо трать тысяч 10 на более свежую модель.

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от devl547

Ну, не знаю…

Но пока действительно получается, что каждые 2-3 года необходимо выкидывать уйму денег, чтобы сделать небольшой апгрейд (материнка + процессор + оперативка + видеокарта). А еще мне пора очередной полуторатерабайтник покупать (или же надо разгрести фильмотеку: всякую дрянь поудалять, не дрянь заболванить).

Eddy_Em ☆☆☆☆☆
() автор топика

Ну так разбивай задачу, и сможешь хоть все 4м х 4м обрабатывать.

AlexVR ★★★★★
()
Ответ на: комментарий от Eddy_Em

А еще мне пора очередной полуторатерабайтник покупать

забываешь про закон заполнения жесткого диска: «За год заполняется 80% емкости жесткого диска компьютера» :)

AlexVR ★★★★★
()
Ответ на: комментарий от AlexVR

Я его как только купил, оттащил к другу и заполнил на 100% =)

А потом долго чистил.

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от true_admin

А что - большой, что ли? Последний раз я так и делал: нужно было менять видеокарту, а старая материнка была с AGP, оперативка - DDR. В общем, пришлось все менять.

Теперь вот процессор хочется проапгрейдить - опять придется и материнку, и оперативку, и процессор менять. Видеокарта, наверное, пока еще старая сойдет.

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

А еще мне пора очередной полуторатерабайтник покупать

Надо просто излечиться от синдрома хомяка. Не хранить и не качать всякий шлак, который никогда не посмотришь. Например, я до сих пор не могу 750 гиг забить.

Reset ★★★★★
()
Ответ на: комментарий от Xenius

CUDA это почти C++, да еще оно встраивается в уже готовый C++ код. Поэтому оно само по себе короче, да еще не надо плясать с бубном вокруг инициализации.

Reset ★★★★★
()
Ответ на: комментарий от Eddy_Em

CUDA ужасней? O_o

У Xenius'а столлманизм головного мозга. Он софт оценивает не по объективным техническим характеристикам, а по понятиям «свободно»/«несвободно».

Reset ★★★★★
()
Ответ на: комментарий от Reset

Например, я до сих пор не могу 750 гиг забить.

Мой рабочий

~$ df -h
Файловая система            Разм  Исп  Дост  Исп% смонтирована на
/dev/sda5              28G   12G   15G  44% /
none                  493M  268K  493M   1% /dev
none                  498M  260K  497M   1% /dev/shm
none                  498M  324K  497M   1% /var/run
none                  498M     0  498M   0% /var/lock
none                  498M     0  498M   0% /lib/init/rw
/dev/sda6              45G   31G   12G  73% /home

~$ sudo fdisk -l /dev/sda

Диск /dev/sda: 80.0 ГБ, 80026361856 байт
255 heads, 63 sectors/track, 9729 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xdf17df17

Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sda1   *           1         191     1534176   82  Linux своп / Solaris
/dev/sda2             192        9730    76614657    5  Расширенный
/dev/sda5             192        3839    29295616   83  Linux
/dev/sda6            3839        9730    47318016   83  Linux

AlexVR ★★★★★
()
Ответ на: комментарий от AlexVR

Так то же рабочий… У меня тоже на работе не сильно-то жесткий диск забивается:

df
Файловая система      Разм  Исп  Дост  Исп% смонтирована на
/dev/sda1              21G  8,4G   12G  42% /
/dev/sda4             665G  135G  531G  21% /home
none                 1009M   12M  998M   2% /tmp
/dev/sda2              11G  3,1G  7,0G  31% /var
encfs                 665G  135G  531G  21% /home/eddy/Docs/cr/crypt

ishtar> 27.09, 11:47 /
fdisk -l

Диск /dev/sda: 750.2 ГБ, 750156374016 байт
255 heads, 63 sectors/track, 91201 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Disk identifier: 0x4c3c028f

  Устр-во Загр     Начало       Конец       Блоки   Id  Система
/dev/sda1               1        2612    20980858+  83  Linux
/dev/sda2            2613        3918    10490445   83  Linux
/dev/sda3            3919        4441     4200997+  83  Linux
/dev/sda4            4442       91201   696899700   83  Linux

Eddy_Em ☆☆☆☆☆
() автор топика
Ответ на: комментарий от Eddy_Em

Только он у тебя почти в 10 раз больше :)

З.Ы. Хотя я лукавлю, для файл помоек на работе у меня есть серваки :) А на рабочем у меня только документы и минимальный набор данных.

AlexVR ★★★★★
()
Ответ на: комментарий от AlexVR

А у меня этот компьютер - еще и файлопомойка + принтсервер + экспериментальный сервер удаленного доступа и т.п.

Eddy_Em ☆☆☆☆☆
() автор топика

Итак, с Фурье на CUDA я разобрался. Вот скриншот, на котором показан результат фильтрации длиннощелевого спектра фильтром лапласиана гауссианы с размером окна фильтра 256x256 пикселей и среднеквадратичным отклонением 5 пикселей.

Eddy_Em ☆☆☆☆☆
() автор топика
17 ноября 2011 г.
Ответ на: комментарий от Xenius

>Вы, наверное, просто не умеете его готовить.

Дай угадаю, ты ведь не используешь по работе ни CUDA, ни OpenCL?

Lighting ★★★★★
()
9 мая 2012 г.
Ответ на: комментарий от Eddy_Em

Привет... можешь подсказать одну вещь?

Я вот тоже сейчас cufft изучаю, всё примерно по тем же причинам =) Вообще мне нужно трёхмерное преобразование (ну это потом, сначала с одномерным бы разобраться)

Вот есть функция cufftPlan1d(), она принимают такие параметры как nx и batch

Что такое nx - понятно - вроде как длина одномерного массива, да? (для 2d и 3d есть ещё ny и nz). А что такое batch? И почему его нет для cufftPlan2/3d() ? %) не совсем пойму.

В примере, который в конце доки (CUFFT Library.pdf, стр. 24) для случая Complex-To-Complex инициализируется массив размера NX*BATCH, в то время как для случая Real-To-Complex он странного размера (NX/2+1)*BATCH (хотя и исходные данные, и выходные хранятся в одном массиве, думаю, уж не ошибка ли там)

Если вопрос с примером из доки не понятен, страницу я указал... ну это не так важно... В любом случае, зачем нужен batch? :) и почему его нет в 2d/3d?

BattleCoder ★★★★★
()
Ответ на: комментарий от michwill

Очень интересно... написано на питоне, и говорите, что быстрее?.. Жаль нет времени поизучать =) да и скорость мне не особо важна, мне важно, чтоб работало.

Вообще в моей задаче надо просто много-много (тысячи раз) применять трёхмерное Фурье-преобразование к вещественному массиву и находить квадрат модуля для каждого комплексного числа, которое получится. ну и сложить потом все эти значения =)

Сейчас просто «играюсь» с одномерным преобразованием... для себя проверил, что применением прямого и обратного преобразования получил «примерно тот же» массив, который давал на вход, с погрешностями, конечно.

BattleCoder ★★★★★
()
Ответ на: комментарий от BattleCoder

А что такое batch? И почему его нет для cufftPlan2/3d() ? %) не совсем пойму.

Здесь тоже интересуются. В общем, это - нечто вроде параметра параллелизации, когда несколько одномерных БПФ реализуются в параллели для ускорения.

Советую почитать статью по поводу ускорения одномерных БПФ.

думаю, уж не ошибка ли там

Может быть: надо поковырять.

Ну, а в 2D/3D параметра batch нет, т.к. они уже выполняются в параллели.

Eddy_Em ☆☆☆☆☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.