Декабрь 2010

OpenMP: Intel vs Visual Studio

Непонятки с производительностью OpenMP в случае VisualStudio (см. еще обсуждение в каментах) заставило разобраться.

Выяснилось, что две переменные, которые read-only и вообще объявлены как const - считаются разделяемыми. Как следствие - локи при обращении и прочие удовольствия.

После устранения этого недоразумения (#pragma omp ... private(...)) и замены _mm_store_ps() на _mm_stream_ps(), чтобы в обеих компиляторах выходной массив писался через movntps, все встало на свои места: С-шный код с powf() остается сильно быстрее у Интела т.к. он...

О степенной функции, OpenMP и прочих граблях

Есть вот такое вот известное выражение, переложеное из википедии:

#define To_sRGB(q) (((q)<=0.0031308f)? 12.92f*(q) : (1+0.055f)*powf(q,1/2.4f)-0.055f)
В том смысле, что у sRGB внизу - линейный участок, а дальше степенная функция.

Если его напрямую запрограммировать (вот прямо с powf()), то в зависимости от компилятора получается от 7 Mpix/sec (Visual C++ 2010, один поток) до 100Mpix/sec (Intel Parallel Studio XE, включен OpenMP). Пиксель - это 3 компонента по 4 байта (float), то бишь гигабайт с...

Кому война....

Кому черезвычайная ситуация, а кому - выставка ледяной скульптуры.

P.S. Света еще немножко есть....

Полна чудес могучая природа

А в SSE4.1 оказывается есть минимум-максимум для 16-битных целых. 8 штук зараз.

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

И dot-product есть, правда только для float/double.

Чешутся руки забить на владельцев AMD и всего младше Penryn, держите меня...

Убийца предсказателей переходов

      if (cr2_slice[0]) {
        jidx = jrow*jwide + jcol;
        i = jidx / (cr2_slice[1]*jh.high);
        if
...

Rawspeed: записки на манжетах

Есть такая библиотека RawSpeed, которая натурально написана с душой и склонностью к правильным оптимизациям. Например, файлы .CR2 распаковываются раз в пять быстрее чем это делает LibRaw.

В стремлении эту несуразность поправить, фтыкаю в ее исходники одним глазом, вторым и третьим - в результаты прогона профайлера на LibRaw и RawSpeed на одном и том же файле.

И вижу интересное (в исходниках, не в профайле): Canon 1D Mark III обрабатывается у Коффина в dcraw (и у нас)...

О цвете

Вынесу, пожалуй, из каментов, это существенное соображение.

Нам пишут, дескать при использовании dcraw -o 0 в тесте алгоритмов интерполяции, получающаяся "интерференция" не столь ужасна, как была с цветом по-умолчанию (sRGB output).

Отвечаем: ну да, в тестовом DNG такая цветовая матрица (это от лени случайно совпало специально сделано), что при попытке привести ее к sRGB, значения в матрице поворота будут большие (по модулю). В результате, наступает клиппинг, который видимость "интерференционных эффектов" усиливает. Если к тем же DNG-данным приписать sRGB ColorMatrix1 (или выключить color processing, что приведет к тем же результатам), то такого усиления видимости - да, не будет.

Да, в ICC-терминах движок LibRaw/dcraw работает в Absolute Colormetric: точка белого никак не правится, все выходящее за gamut - обрезается.

Вместе с тем, воспроизводимость получаемых в LibRaw/dcraw эффектов в коммерческих приложениях (ACR, HDR Studio) наводит нас на мысль, что тамошний цветовой движок в точности такой же - Absolute Colormetric и с обрезкой gamut. Соответственно, это надо учитывать и тестировать в реальной работе (смотреть что ушло в клиппинг и все такое...).

LibRaw 0.12

Тем временем, зарелизили LibRaw 0.12:

  • Поддержка дополнительных алгоритмов, распространяемых на условиях GPL2/GPL3:
    • demosaic-pack-GPL2: алгоритмы интерполяции AFD, LMMSE, VCD, modified AHD, AHD+VCD; дополнительные методы медианной фильтрации изображения; поддержка сенсоров Foveon.
    • demosaic-pack-GPL3: алгоритм AMaZE и подавление хроматических аберраций для AMaZE.
  • Дополнительный алгоритм интерполяции (DCB) и шумопонижения (FBDD) включены в состав основной LibRaw.
  • Поддержка LCMS 2.x
  • Новый механизм ./configure на базе GNU autotools.
  • Исправлены ошибки:
    • Исправления в green_matching для некоторых layouts (как это по нашему?) байеровских матриц.
    • Исправлена ошибка в вызове add_masked_borders_to_bitmap(), которая проявлялась на камерах с нечетной шириной черной рамки.
  • Новые параметры командной строки примера unprocessed_raw: -B - вычитать уровень черного, -M - добавлять маскированную рамку к изображению.

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

Тихий, маленький....

По наводке с хабрахабра, погулил HP Proliant Microserver и мне понравилось:

  • Размер 27x25x21 см.
  • Прохладный, тихий
  • 4 SATA-диска 3.5", не hot-swap
  • Два PCIe-слота, 1x и 16x (и третий под IPMI card)
  • AMD Atom NEO, 2 core
  • Два слота DDR3, ECC до 8 гигов
  • гигабит, куча USB
  • $400 в Москве (с гигабайтом памяти и диском на 160), $300-330 в штатах.

Судя по результатам гугления, ставится туда все что шевелится:...

Цирк-с-конями.рф

Цирк с конями Приколы в национальном домене продолжаются, я уже смеяться устал.

Комедия в бесконечном числе действий:

  1. Регламент регистрации в .РФ предусматривает отказ регистрации в случае, если нарушается нравственность и мораль. Список нарушений морали и нравственности установлен КЦ и широко обсуждался (гуглить по словам "ебля с перископом"), в том числе и в этом блоге.
  2. Прошел уже месяц с приключениями, блокировками и прочим боданием Руцентра и КЦ, аморальный список действует (в числе прочего, домен старые-бляди.рф довольно долго торчал в whois с личным E-mail Лесникова в контактных данных, недавно поменяли).
  3. ВНЕЗАПНО Руцентр вводит свой стоп-лист
  4. И начинает снимать с регистрации уже зарегистрированные домены.
  5. Которые ТУТ ЖЕ перехватывают другие регистраторы, а вы как думали.
Понятно, что у многих/большинства Руцентровских доменов Администратор - сам Руцентр, он может направить (сам себе?) письменное заявление о снятии с регистрации и снять. А владелец домена - при этом может пососать упса с витамином "С".

Попкорн кончается, надо бежать в магазин за новой дозой....

Pages