FastRawViewer 1.4.7: обработка RAW-данных на GPU

Текст устарел, читайте анонс новой версии

Comments

А кстати, зачем обязательно в плавающей точке грузить в GPU, есть же 16-битные форматы.
И по моему опыту OpenCL значительно быстрее OGL (наверное и DX тоже, давно не тестировал) на трансферах системная->видео, до 12 Гб/с на хороших картах.

1) Да, есть 16-битная плавучка, это следующий шаг (может завтра скую).
32-битная плавучка в FRV просто есть готовая, берешь и кладешь в текстуру.

2) Я не думаю, если честно, что opencl-евские буфера внезапно быстрее PBO, c чего бы, механизм то один должен быть. Готовности к использованию OpenCL в данном конкретном проекте у меня тоже нет.

На самом деле,основной вопрос с FP16 плавучкой - это скорость конверсии на CPU.
Пишуть, одна операция на цикл (latency 3, но можно развернуть пошире) т.е. 8 байт.

Теоретически - быстро, практика вот покажет.

1) Я имел в виду целочисленные 16 бит, у вас же целые 12-14 бит в качестве исходных данных? Если нет, то пардон.
2) Теоретически одно и то же, практически есть разница. Объясняю это тем, что в GPGPU API трансферы лучше отлаживают т.к. это критичное для скорости место, а в 3D почти без разницы, сколько там текстура грузится.
Но может быть это я не умею готовить OpenGL/PBO и поэтому у меня оно тормозит, кажется никогда больше 1 Гб/с не получалось. А у вас сколько?
OpenCL можно протестировать на примере oclBandwidthTest (в режиме pinned memory) из NVidia GPU Computing SDK, или как он сейчас называется. Хотя понятно, что мало радости тащить в проект ещё один API только для трансферов.

1) У нас внутреннее представление для работы - 32-bit float. Плавучка для теней - сильно лучше работает по очевидным причинам (округления, накопление ошибок). Это не говоря о том, что многих SSE/AVX операций просто нет для целых (типа dotp).

При этом FP16 - достаточно должно быть (ну в тестах я глазом разницы не вижу) и я бы и работал так на CPU, да оно не умеет.

2) Я для PBO просто не знаю времени трансфера: я в буфер положил, текстуру к нему прицепил (и так 40 раз) и начал рисовать: сделал glBindTexture(..,tex[0]), затем tex[1]... и так далее. Вот пока я рисую из tex[0] - tex1 и доедет.

Тест имени http://www.songho.ca/opengl/gl_pbo.html говорит 4.5Gb/sec на пинг-понг буферах, при этом у меня карта в PCIe3-8x (т.е. теоретический предел в районе 8Gb/sec) - т.е. я такую скорость считаю вполне ок.

Имело бы смысл, конечно, сделать сильно обрезанный тестовый вариант FRV, который не занимается всякой ненужной ерундой (типа обновления GUI) и там реальную скорость можно было бы тоже померять.

С другой стороны - непонятно даже и зачем: ну вот пока идет всякая отрисовка GUI - драйвер втихаря копирует PBO, никому не мешая.

3) Тащить OpenCL в данный проект в версию 1.x я не буду. Есть ненулевое количество юзеров со всякими HD2500, у которых OpenCL вроде как и есть (но я вот не уверен, к примеру, что интел его не подропал), а толку с него мало.
При этом плавучка в OpenGL там вполне есть настоящая.

по 3) - поддержка OpenCL теоретически есть даже на трехзначниках, типа моего i5-520 и HD Graphics первого поколения. по факту ее даже capture one не жрет, там что-то типа 1.1 версии.

и насколько я помню, нвидия не особо opencl жалует тоже...

1) Согласно интеловской табличке, OpenCL начинается с 3-го поколения Core: https://www.intel.com/content/www/us/en/support/articles/000005524/graph... (HD4000/2500).
На более старых - CPU only (там были какие-то потуги с GPU насколько я помню, но в текущих драйверах их нет).

2) Я сильно боюсь проблем с совместимостью и багами в драйверах. OpenGL мы вроде все шишки уже набили, а тут - нет.

по п.1) там кажется отдельный openCL драйвер для 1-2 поколений был.

2) собственно я про то и говорю, только с нвидией кроме багов еще добавляется их нежелание поддерживать конкурирующую технологию.

Да, там что-то такое было, но по-моему интел его похерил и в стандартных видеодрайверах OpenCL нету.
Заставить пользователя обновить драйвера - практически невозможная задача.

А конкурирующую технологию не хочет поддерживать не только NV, но и Apple (у них же Metal), поэтому даже на AMD-шных картах на маках с OpenCL (по слухам) грустновато. Это несмотря на то, что Apple там был в основателях консорциума (как и NV, впрочем)

https://developer.apple.com/macos/whats-new/ -> "...Deprecation of OpenGL and OpenCL..."

N/A

Будет повод перейти на новые технологии постепенно. Deprecation - это же не deletion

2) Ну значит я неправильно работаю с OGL, извиняюсь что влез.
3) OpenCL на HD2500/Win7 есть, но работает медленно (напр. luxmark на процессоре i3 считает в 2 раза быстрее). То ли железка слабая, то ли драйвер не оптимизирован.

А какая там версия OpenCL на 2500? И входит ли оно в стандартные драйвера, или надо ставить что-то отдельное?

Версия 1.2. Вроде бы ничего специально не ставил кроме драйвера графики. Хотя драйвера OCL для CPU в системе как-то появились - может быть их ставил, но уже не помню как.

Вот я смутно помню, что когда у меня был Sandy Bridge - для него сначала был OpenCL (1.0 конечно), а потом пропал. Могу провраться, конечно.

Потом у меня стал Haswell, там он тоже как-то был так, что пользоваться я им не мог (монитор надо было кажется подключить к процессорной видяхе и назначить первичным).

И только еще более потом - оно стало человечным (т.е. устройство можно было использовать даже если оно просто вот есть, но ничего к нему не подключено), причем эта человечность требует Win10, а а восьмерке - нет.

HD2500 - это Ivy Bridge, а не Sandy, OpenCL там официально есть.
Но при подключении монитора к дискретной карте встройку (на Win7) уже не видит, это да.

У меня Ivy не было (и нет), т.е. я скорее про свой опыт пишу: оно было а потом пропало (из стандартных драйверов? Нужно было отдельно ставить? Не помню совсем)

Вот чуток комментов.

Скачал я FastRawViewer-1.4.7.1295.dmg
Глянул в README.txt - и там сразу FastRawViewer 0.9.x BETA, Испугался, полез проверять.
Поправьте что-ли (и там на таком рязанском диалекте английского всё написано, что ух!)

Иконка приложения в инсталл имидже и в папке Applications разная. Тоже как-то странно (я может и догадываюсь, почему).

Запустил, иконка в трее отличается от иконки в Applications. С первого запуска - взяло и сдохло (трейс не догадался сохранить). После второго запуска - получилось. (MBP 15 Late 2013, 10.13.4, это Haswell/Crystalwell)

Ссылки из экранов tips'ов - не копируются, это плохо.

В МакОСи Folders начинать с Computer? Ну не знаю, ожидал бы текущего юзера по умолчанию.
В правом нижнем низу кнопка Fullscreen делает то-же, что и зеленая в window-bar в левом верхнем. Я ожидал максимайза картинки на весь экран (думаю это ожидание от ютуба, который в браузере, но вам-то зачем дубли контролей?).
Нажатие на правую нижнюю "Customize RawViewer" приводит к смене файла (оно там на 2-3-4 прыгает в режиме слайдшоу) и я сходу логику не понял (тыкнуть 3-4 раза на клавиатуре в стрелку лево-право, подождать чуток пока успокоится, потом ткнуть в "Customize RawViewer" и оно ещё прыгает дальше на несколько фоток).

Спасибо за комментарии, потому что от свежего юзера они особенно ценны, это именно первый взгляд.
Хотя, конечно, обычный юзер смотрит в другие места (ну никак не в README)

По пунктам, которые я посчитал существенными (хотя вся эта бодяга с тестированием RAW-на-GPU - она ВООБЩЕ ПРО ДРУГОЕ, но тем не менее):
- README - да, косяк, надо заменить на введение из мануала (уже, в новых релизах будет)
- если не начинать дерево папок с Computer, то как показать /Volumes? Фильтрация под-дерева конечно есть (и реальный пользователь до нее дойдет постепенно).
- про ссылки в типсах вообще не понял. Какие ссылки?
- про Customize RawViewer тоже не понял (такого пункта меню у нас нет, есть другие). С прыганием там был бы благодарен за такое: Preferences - Other - Debug log messages: all, потом получить прыгание, потом Menu - Help - Debug log - и прислать его нам.

Понятно, что тут большинство комментариев - это косметика.
1. Сделать несколько корней у дерева папок? Ну там Home/Computer/Volumes?
1a. Заметил, что странно ведут себя кнопки Options / Close у левых Panels. То есть курсор ещё явно на шестеренке, но если его вести по шестеренке вправо - слишком рано Close подсвечивается. В общем с границами области подсветки кнопки Close беда.
2. Типсы - запускаем FRV, вылезает окошко Tip: Getting familiar with ..., так вот на первом экране там есть и URL на скачивания документации, и адрес почты для поддержки. А скопировать/кликнуть на них никак.
3. Самый правый нижний угол основного окна, там такая хитрая иконка типа "восьмиугольник с лампочкой внутри", у нее tooltip - "Customize RawViewer", на нее кликаешь - менюшка из трёх пунктов вылезает (Edit Preferences/Edit keyboard shortcuts/...). Так вот кроме менюшки при нажатии ещё зачем-то несколько фоток перелистывает. Могу видео записать, если непонятно.

1: это чудовищно больное место. Т.е. там был родной Qt-шный QDirModel и поверх него прокси (в терминах Model/View) которая что-то делала (сортировку, фильтрацию)
У небольшого процента пользователей это место (невероятно) глючило (понятно что можно с них получить крэшдамп - но толку с него - ну только узнать что глючит). 4/5 несчастных были с маков, остальные - с винды, но только сетевой доступ. Судя по симптомам (у меня никак не воспроизводилось) - это было что-то вроде запроса к фолдеру, который в модели еще не прочитался (и нет, там был код, который должен синхронно вычитать - но то ли не работал, то ли еще что)
Отчаявшись это место починить, мы написали свой QDirModel с нужными фильтрами и сортировкой - и эта проблема наконец ушла.
Сделать туда несколько корней - ну, теоретически можно. Практически - с учетом возможности переустановки корня (правая кнопка на фолдере) - не нужно.
Когда-нибудь мы этим займемся (и тогда объединим и favorites с основным окном Folders). Скорее всего - не в этом году.

1a: не воспроизвел (10.13.5)
2: все эти ссылки есть в Menu - Help (про первую ссылку это прямо в типсе и написано).
/ви не поверите, но типсы эти - это PNG, потому что иначе там так или иначе жопа с версткой. Скоро будет PDF/.

3: А уж не кнопочками ли ты ходишь по меню? Если ими, то неперхваченные нажатия влево-вправо - да, будут работать как хоткеи и листать картинки вправо-влево.

1a. Ну вот курсор еще указывает на правый край шестеренки, а активно уже Close. Я собственно первым делом так и промазал, хотев настройки поглядеть.
2. Понятно, что это картинка и ссылки там легко хрен сделаешь. Но зачесалось на скачивание мануала кликнуть. Это же вообще самое первое, что видно новому юзеру, а тут так обламывают :)
3. Я стрелками влево-вправо листаю фотки. Потом курсором мышки тыкаю в иконку. Вылезает менюшка (причём бывает не с первого клика), и вот менюшка вылезла, ничего не делаю, а фотки начинают листаться.

1a: там же если мышь наведена - mouseover, меняется цвет фона (проверил, меняется). Добавить спейсинг не проблема конечно.
2. Мануал - в комплекте
а) на установочном образе, там где ты readme нашел, надо было в него кликать, а не ридми наше ругать (обругал ты его за дело - в это место никто не заглядывал года четыре).
б) через меню

3) Ну в принципе, если у тебя шибко крупные фотки и/или шибко медленный диск (или компьютер), то там в очередь запоминаются нажатия стрелочек (до 5 штук) и отрабатывают /это отключаемо, но практически никто не жалуется/.

Вот если ты нихрена не листаешь, а идешь в это меню - есть такой эффект, что оно самопроизвольно листается??

1a. Там спейсинга явно не хватает. Визуально курсор показывает на шестеренку, а фон - у Close выделен. Такое ощущение, что активные области не совпадают по размерам с выделением фоном.
3. Нахожусь на фотке N. Нажимаю стрелку право быстро три раза. Шагает на ДВЕ фотки. Жду пару секунд (это явно дольше, чем надо для рендеринга). Ничего не происходит. Нажимаю на эту иконку - прыгает ещё на одну фотку. Такое ощущение, что последнее нажатие сидит в какой-то очереди и выстреливает только после иконки. Причем если быстро нажать стрелку скажем 6 раз, то может сделать четыре шага и ждёт. И после иконки потом доходит два оставшихся.

3: не могу воспроизвести.
Preferences - Other - Debug Log messages: all
сделать "то что ты делаешь"
Menu - Help - Debug Log -> Save to file -> mailto lexa@lexa.ru

(хотя, конечно, там не все в логах есть и почему оно отмерзло после вызова меню - не поймем. Но хоть поймем отчего замерзло)

Add new comment