eddy_em: (hram nauki)
[personal profile] eddy_em
Решил я сегодня проверить, насколько же реально крута видеокарта на моем ноутбуке. Откопал свой старый fitsview (где еще не было наворочено слишком много функций, так что CUDA полностью дублировала вычисления на CPU), и начал пробовать.

Поначалу у меня ничего не получилось. Я даже на ЛОРе тему создал. Потом, по наводке, сделал подробный вывод make'а и заметил, что не хватает при линковке флага -lcuda. Посмотрел, что творится в /usr/lib. И действительно:

ll /usr/lib/libcuda*
lrwxrwxrwx 1 root root       17 окт.  30 20:21 /usr/lib/libcuda.so.1 -> libcuda.so.304.60*
-rwxr-xr-x 1 root root 10218542 окт.  31 06:59 /usr/lib/libcuda.so.304.60*

Т.е. в библиотеке nvidia-utils-bumblebee отсутствует симлинк libvuda.so. Почитав внимательно арчевики, я понял, что заменить nvidia-utils-bumblebee на nvidia-utils (где все в порядке) нельзя, а доустанавливать dkms-nvidia (возможно, он бы добавил нужных файлов, либо я получил бы нерабочую графику) не хотелось. Поэтому я просто сделал вручную симлинк, так что теперь все в порядке:

ls -l /usr/lib/libcuda*
lrwxrwxrwx 1 root root       26 нояб.  3 13:13 /usr/lib/libcuda.so -> /usr/lib/libcuda.so.304.60*
lrwxrwxrwx 1 root root       17 окт.  30 20:21 /usr/lib/libcuda.so.1 -> libcuda.so.304.60*
-rwxr-xr-x 1 root root 10218542 окт.  31 06:59 /usr/lib/libcuda.so.304.60*

Главное — при обновлении не забыть пересоздать этот симлинк.
Судя по багтрекеру арча, добавлять этот симлинк в пакет разработчики пока не собираются. Ну и хрен с ними. Арч вообще последнее время что-то скатывается в полную задницу. Даже не знаю, на какой дистрибутив перейти, учитывая мое хроническое рукожопие.
Итак, после прогона cmake и сборки, я получил работающую программку. Запускаю при помощи optirun (иначе видеокарта не обнаруживается, уже проверял — хоть на арчевики и пишут, что мол, можно попытаться и без шмеля запустить). Загрузил тестовый спектр 2048x1024 пикселя и проверил скорость Фурье-фильтрации.

Итак, для начала — мой домашний десктоп (nVidia G94 [GeForce 9600 GT]):

CARD returns(err=0):  free mem:435281920,  total mem:536150016
DiffFilter (/Data/documents/SAO/GTK+openGL/FITSview/fitsview/src/CUDA.cu, line 616): allocate
DiffFilter (/Data/documents/SAO/GTK+openGL/FITSview/fitsview/src/CUDA.cu, line 621): copy image to dev
DiffFilter (/Data/documents/SAO/GTK+openGL/FITSview/fitsview/src/CUDA.cu, line 629): doing image FFT
DiffFilter (/Data/documents/SAO/GTK+openGL/FITSview/fitsview/src/CUDA.cu, line 633): allocate
build_GLG_filter (/Data/documents/SAO/GTK+openGL/FITSview/fitsview/src/CUDA.cu, line 540): size=2048, x0=896,x1=1152, y0=896,y1=1152, half=-1024, ss=8.9407e-08, sx2=25, sy2=25
DiffFilter (/Data/documents/SAO/GTK+openGL/FITSview/fitsview/src/CUDA.cu, line 656): doing filter FFT
DiffFilter (/Data/documents/SAO/GTK+openGL/FITSview/fitsview/src/CUDA.cu, line 661): multiplication
DiffFilter (/Data/documents/SAO/GTK+openGL/FITSview/fitsview/src/CUDA.cu, line 666): doing inverse FFT
DiffFilter (/Data/documents/SAO/GTK+openGL/FITSview/fitsview/src/CUDA.cu, line 672): allocate
DiffFilter (/Data/documents/SAO/GTK+openGL/FITSview/fitsview/src/CUDA.cu, line 677): copy to host
CARD returns(err=0):  free mem:410648064,  total mem:536150016
compute_minmax (/Data/documents/SAO/GTK+openGL/FITSview/fitsview/src/imtools.c, line 103): stat: max=17864.75, min=-37625.20
gen_texture (/Data/documents/SAO/GTK+openGL/FITSview/fitsview/src/opengl.c, line 492): min = -37625.2, wd = 55489.9
gen_texture (/Data/documents/SAO/GTK+openGL/FITSview/fitsview/src/opengl.c, line 507): time: 0.00513101
filter (/Data/documents/SAO/GTK+openGL/FITSview/fitsview/src/gtk.c, line 600): TIME: 1.05449

получил чуть больше секунды на простую операцию.
Теперь мой ноутбук (nVidia GF108 [GeForce GT 630M]):

CARD returns(err=0):  free mem:2115231744,  total mem:2147155968
DiffFilter (/tmp/fitsview/src/CUDA.cu, line 616): allocate
DiffFilter (/tmp/fitsview/src/CUDA.cu, line 621): copy image to dev
DiffFilter (/tmp/fitsview/src/CUDA.cu, line 629): doing image FFT
DiffFilter (/tmp/fitsview/src/CUDA.cu, line 633): allocate
build_GLG_filter (/tmp/fitsview/src/CUDA.cu, line 540): size=2048, x0=896,x1=1152, y0=896,y1=1152, half=-1024, ss=8.9407e-08, sx2=25, sy2=25
DiffFilter (/tmp/fitsview/src/CUDA.cu, line 656): doing filter FFT
DiffFilter (/tmp/fitsview/src/CUDA.cu, line 661): multiplication
DiffFilter (/tmp/fitsview/src/CUDA.cu, line 666): doing inverse FFT
DiffFilter (/tmp/fitsview/src/CUDA.cu, line 672): allocate
DiffFilter (/tmp/fitsview/src/CUDA.cu, line 677): copy to host
CARD returns(err=0):  free mem:2098843648,  total mem:2147155968
compute_minmax (/tmp/fitsview/src/imtools.c, line 103): stat: max=17864.76, min=-37625.22
gen_texture (/tmp/fitsview/src/opengl.c, line 492): min = -37625.2, wd = 55490
gen_texture (/tmp/fitsview/src/opengl.c, line 507): time: 0.00441313
filter (/tmp/fitsview/src/gtk.c, line 600): TIME: 0.260431

Вот такие пироги. Там, конечно, помимо непосредственно вычислений еще и всякие отображения в OpenGL используются. Но в общих чертах понятно, что железо на моем десктопе уже прилично устарело.
В общем, получилось, что ноутбучок мой считает чуть ли не в 4 раза шустрей десктопа. Вот такая, блин, портативная машинка... Единственное преимущество десктопа теперь - большое количество жестких дисков (все-таки, 5.25ТБ я в бук не запихаю).

P.S. Вкратце перескажу арчевики: что нужно сделать, чтобы заполучить рабочую куду на ноутбуках с чертовым оптимусом.
  1. Поставить bumblebee
  2. Поставить nvidia-bumblebee и nvidia-utils-bumblebee
  3. Поставить cuda
  4. Сделать симлинк /usr/lib/libcuda.so.1 -> libcuda.so.304.60
  5. Собирать обычным способом
  6. Запускать при помощи optirun

P.S. С грустью взглянул на свой недописанный велосипед и в очередной раз подумал, что надо бы найти время, да доделать его. Правда, для начала надо будет разобраться-таки с методом восстановления гартманограмм (т.к. этот fitsview создавался в основном как раз с целью способствовать проведению технических наблюдений).
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org

May 2025

S M T W T F S
    123
45678910
11121314151617
1819202122 2324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 2nd, 2025 01:18 am
Powered by Dreamwidth Studios