Skip to Content

Сентябрь 2011

Win32-Git: про .netrc

Записка для памяти:

~/.netrc для Win32 Git (msysgit) называется ~/_netrc

Всех убью, один останусь: ~/.gitconfig называется, сюрприз, ~/.gitconfig

Update: но вообще, конечно, жесть. Без netrc спрашивает пароль, я его честно говорю и оно с этим паролем даже что-то вытаскивает и ломается с 401-й ошибкой не сразу.

Про AVX и ISPC

Разработчики Intel SPMD Program Compiler, который в этом блоге уже несколько раз поминался, выпустили версию 1.0.9 в которой

=== v1.0.9 === (26 September 2011)

The binary release of v1.0.9 is the first that supports AVX code generation. Two targets are provided: "avx", which runs with a programCount of 8, and "avx-x2" which runs 16 program instances simultaneously.

Честь им за это и хвала, мои попытки (не слишком настойчивые) самостоятельно собрать ISPC с LLVM3 так и не увенчались успехом, то какие-то ошибки в LLVM-овских H-файлах, то не линкуется, не больно то и хотелось.

Так как предыдущие тесты никуда не делись, я их переделал с новым ISPC, как с SSE4, так и с AVX.

Про AVX и OpenCL

Вчера вышел Intel OpenCL SDK 1.5 с соответствующим анонсом: Increase OpenCL application performance with the new Intel OpenCL SDK 1.5

Пытаюсь enlarge increase эту самую performance, сую в бензопилу лом туда AMD-шные примеры, которые на предыдущей версии работали очень бодренько (и временами почти догоняли AMD-шную видеокарту) и вижу замедление в 2-3 раза для половины примеров.

Начинаю читать код и не вижу там 256-битности. Ну, почти не вижу. Кое-где есть 256-битные load/store, нашел даже один vandps ymm1,ymm1,[memory], но в подавляющем большинстве код - 128-битный.

Он и в прошлой версии был 128-битный, но какой-то более человеческий.

Зато есть пошаговый отладчик, если бы не он, я бы версию 1.5 сразу бы снес, а так - еще подумаю.

Ну то есть понятно, производительность не переносится, но 2-3 раза просадки - это беспредел.

Единственный пример, который стал быстрее, называется Histogram. Но его и старая версия отказывалась векторизовать (немудрено) и новая тоже не хочет.

О Betterscanning

Так уж совпало, что сегодня все - вокруг темы сканирования.

Сегодня до меня доехали рамки для Epson V700/750 имени Betterscaning.com и я их немного потестировал.

Имею сказать:

  1. Они действительно нереально удобны. Всё предыдущее что я пробовал (родные от Epson разных моделей, родные от Nikon-9000) - не идет ни в какое сравнение. С перегородками (которые T-lock) совсем удобно: просто суешь пленку и прижимаешь этими T-locks в нужных местах. Никаких вылезающих краев и прочего безумия.

    Cо стеклом чуть менее удобно, вылезающие края бывают, но запихиваются легко.

    Короче, лучшие 150 баксов месяца.

  2. Три кадра 6x7 лезут в холдер, но, увы, не влезают в окно сканирования. Т.е. можно резать 6x7 по три (для сливера), а не по два. Но сканировать такое, увы, придется в два приема.
  3. Глубина резкости у сканера оказалась миллиметра полтора. То есть та точность подгонки, что у этих штук есть (~0.2мм, полный оборот ножки - 0.8) - избыточна.
  4. Чуда не случилось, 9000-й никон по проработке деталей не догнали и изрядно не догнали. Но A3 с 6x7 вполне можно печатать.
Если будете заказывать, учтите мой опыт:

О методологии

На сайте LL креативное сравнение 80Mpix IQ180 и форматки 8x10, которое меня просто порадовало.

8x10 Inch: ... Drum scanned (Dainippon screen SG 608) at 745 dpi which results in 8874 x 7229 pixels.
И это в то время, когда корифеи спорят, нужно ли сканировать форматный слайд на 8000dpi или хватит 3-4 тысяч (кроме foto.ru есть еще смысл на mformate поискать сломаных копий). А, да, и не надо ли выводить на струйник на 720 dpi вместо 360, это что, для 745dpi сканирования будем печатать 8x10 "контактом"?

Результат получился ожидаемый: Если отсканировать пленку с разрешением 64-Mpix (не вдавался, сколько пикселей в мегапикселе, считаю что 106), то по 100%-м кропам она сольет 80-Mpix заднику без AA-фильтра. Еще бы, вы самплите один цифровой сенсор (пленку) другим, не попадая в шаг (которого, собственно, у пленки и нет), понятно что будет размытие. Помимо размытия, будет еще aliasing ("наведенное зерно") с размером элемента порядка единиц пикселов.

Вместе с тем, интересно было бы переделать нормально: со сканированием в 4000-8000 и уменьшением в 6-12 раз. Я предвижу совершенно другую картинку....

Ждать или покупать, вот в чем вопрос

Сбылась вековая мечта человечества в виде ADSL+Wifi+GigabitEther в одном флаконе.

И даже в двух видах сбылась, Netgear DGND3700 (уже давно в продаже) и Linksys X3000.

Вопрос месяца: ждать Linksys в продаже или пойти и купить Netgear? Цель мероприятия - заменить две коробки одной. То есть не горит совершенно.

У Netgear несколько смущает надпись "не поддерживается IP-TV" (на русском сайте), но это ведь ерунда какая-то :)?

LibRaw 0.14.0 (Release)

После трех месяцев разработки и тестирования вышла LibRaw 0.14.

По уже сложившейся традиции, помещу тут несколько отредактированный Changelog.

В этой версии одно принципиальное изменение, влекущее за собой множество мелких:

Разрешены повторные вызовы постобработки (LibRaw::dcraw_process) без переоткрытия файла парой вызовов open()/unpack(). При этом, постобработку можно повторять меняя любые параметры обработки (за исключением выбора кадра через shot_select).

В сочетании с повышением скорости обработки, на (очень) приличной современной машине можно получить:

  • "Почти realtime" показ изменений изображения при смене параметров RAW-конвертации в режиме половинного разрешения. На 40-мегапиксельное изображение уходит примерно 250 мсек (т.к. half-mode, то выдается 10 мегапикселей, что сильно больше любого современного монитора).
  • "Совсем realtime" показ изменений небольшого окошка (например, вокруг курсора) в полном разрешениии с настоящей демозаикой (получается 30-50 кадров/сек для окошка 450x300)
Осталось дождаться, пока это подопрут разработчики конверторов. digiKam обещал, но пока еще не сделал...

О языке ++C

Нашелся тут чудесный баг в KDE-шном DNG-конвертере. Вдруг, внезапно, перестал конвертировать, получаются совершенно ЧОРНЫЕ DNG.

Понятно, пишут в багрепорты digiKam-у, а дальше стрелки переводятся по кругу, ко мне (но LibRaw не менялась, в KDE все еще 0.13), к автору DNG Converter, все отпираются т.к. test cases работают.

И наконец виновник найден

Было:

  1.   *output = ...some value...;
  2.   *output++;
стало
  1.   *output = ... some value...;
  2.   ++(*output);
И комментарий к коммиту: use prefix operator

А я подозреваю, что исходно там было и вовсе:

  1.   *output++ = ... some value...;
Проверять не стал, но предсказываю это.

Потом один доброжелатель разбил операцию на две, как умел, а второй, из ненависти к суффиксным инкрементам (или из желания подавить compiler warning), поменял на префиксный. Тоже, как умел.

Всех люблю: опенсорс, коллаборативную разработку по схеме "у семи нянек....", язык C/C++ тоже люблю.

О продолжительности жизни SSD

Прислали ссылку, невозможно не поделиться (под картинкой). Таки слухи о преждевременной смертности SSD несколько преувеличены (если верить этим данным):

Полный текст (и там еще много картинок): SSD Write Endurance 25nm Vs 34nm .

Мораль такая: срок жизни SSD: несколько (3-9) тысяч объемов по записанным файлам, то есть без учета всех эффектов по write amplification и тому подобному. Файловый микс, использованный в тестах (как и вообще условия, вроде количества неиспользуемого места), кажется разумным.

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

Про винду и бэкапы (restore)

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

Вчера провел на себе более человечный эксперимент:

  • Накатил диск C: из бэкапа 3-дневной давности
  • Оставив Users и ProgramData - актуальными
Все продолжило работать, за единственным исключением: Антивирус Касперского (точнее, KIS-2012) очень обиделся, что базы какие-то более свежие, чем у него записано. Снесение-установка его - помогли.

А восстанавливал из бэкапа я по причине непонятного поведения: стало грузиться долго, Google Chrome несколько раз упал, CPU load местами рост, короче странности (хотя вот непонятного сетевого трафика, который разумно было бы подозревать при странностях - не было). Несмотря на молчание антивируса, решил "от греха", благо делов то на три минуты - накатить образ диска.

Я к тому, что разнесение Users/ProgramData и всего остального - похоже рулит. В сравнении с обычным

  • побэкапили актуальное;
  • накатили "хороший" образ всего
  • и дальше мучительно восстанавливаем состояние многих программ (Скайп, Аутлук, uTorrent и далее по списку)
стало гораздо удобнее и проще.

Об андроидах

Рискуя флеймом, таки задам вопрос:

Порекомендуйте телефон на Андроиде!

Требований нет, есть пожелания:

  • Частое использование как телефона - не предполагается, у меня две нокии есть. Иногда - возможно. То есть качество звука, динамика, звонка, будильника - несущественно.
  • Разумная цена - имеет значение. Девайс за килобакс я в любом случае покупать не буду.
  • Срок жизни от батарей имеет значение.
  • Вес - не имеет значения (в разумных пределах), жить будет в напузной сумке (6" лезет легко, 7" не пробовал), а не в кармане рубашки.
  • Предполагаемое использование:
    • Мобильные карты (Яндекс, Гугл), модуль GPS нужен.
    • Мобильный интернет, как с самого девайса, так и работая модемом для ноутбука.
    • Книжку почитать иногда (т.е. 4" экран - минимум).
  • Всякие программистские пищалки и перделки (вроде USB Host) были бы приятны. WiFi - тоже.

Ну то есть я задал какие знаю параметы на Яндекс-Маркете и получил штук 20 моделей, различить которые не могу. Поможите.

...почитав собственные требования, задумался о 5-7" планшете, но планшет я сам сумею выбрать, их мало.

P.S. История в тему: в метро недавно видел сильно пожилую бабушку с Galaxy Tab или чем-то в этом духе, дюймов на 7. Подумал, что реально удобно с плохим зрением: кнопки большие, все видно, не промахнешься.

О векторном умножении: нет гигапикселя в секунду

Тема матричного цветопреобразования не отпускает нас.

Наш читатель maratyszcza намекает нам, что haddps - тоже хорошая инструкция.

Его вариант вы найдете по вышеуказанной ссылке, а я потестировал вариант попроще, без unroll, без префетча, без одновременной обработки половинок данных. Исключительно для совместимости с прошлыми тестами:

О Терафлопсах

Для истинных ценителей:

================================================================================
HPL-GPU 1.1.0  --  High-Performance Linpack benchmark  --   2010
Written by D. Rohr, M. Kretz and M. Bach,  Frankfurt Institute for Advanced Studies
Based on:
HPLinpack 2.0  --  High-Performance Linpack benchmark  --   September 10, 2008
Written by A. Petitet and R. Clint Whaley,  Innovative Computing Laboratory, UTK
Modified by Piotr Luszczek, Innovative Computing Laboratory, UTK
Modified by Julien Langou, University of Colorado Denver
================================================================================
...skip...
================================================================================
T/V                N    NB     P     Q               Time    CPU          Gflops
--------------------------------------------------------------------------------
WC06L2C64      122880  2048     1     1            1006.60 8742.71       1.229e+03
Avg. matri size per node: 112.50 GiB
--------------------------------------------------------------------------------
||Ax-b||_oo/(eps*(||A||_oo*||x||_oo+||b||_oo)*N)=        0.0002429 ...... PASSED
Это один узел кластера, а не кластер; не Nvidia; прочие подробности я пока раскрывать не уполномочен. Через месяцок.

Но штука получается забавная. И хочется надеяться, что цифирка в правой колонке еще далека от окончательной.

P.S. Троллинг: в тред призывается поисковая команда Яндекса, получившая на 400 узлах в 600 раз меньше. Правда два года назад.

P.P.S. Это, естественно, двойная точность.

О нагреве видеокарт

Читаю доку (техрепорт) к CALDGEMM и внезапно вычитываю такое (по смыслу, не близко к тексту):

  • в readme: ключ -f заливает входные матрицы нулями, а не случайными данными, отчего инициализация проходит быстрее (ну да, попробуйте 60Gb random нагенерировать).
  • в техрепорте: если входные матрицы нулевые, то конструкция сильно меньше греется т.к. в результате вычислений не меняется ни одного бита памяти.

Ну, собственно, так и есть, проверено на себе: с минус -f все работает как из пушки, а без оного - уносит нафиг, если вентилятор заранее не раскрутить (время реакции системы термосенсор - думатель - вентилятор недостаточно, нагрев практически мгновенно происходит).

Остается понять - это нулевые биты меньше греются или достаточно того, что содержимое не меняется?

О векторном умножении - финал

Исключительно в режиме записок для себя, вижу что интерес к теме у читателей потерялся, продолжаем тему скалярного произведения и матричного цветового преобразования.

Ассемблерные упражнения на тему векторных расширений.



.