С удовлетворением спешу сообщить, что мучившая меня с апреля проблема с VTune - излечена.
Поставил C++ Studio XE 2011 SP1 (Vtune там 2011 XE Update 5) - и Hotspot Analysis (который через драйвер) - заработал. И полугода не прошло. А то так и жил на Lightweight Hotspot. И хрен с ним с Hotspot, работают Lock/Wait и Concurrency, которые раньше были удобными, а за полгода я отвык.
Компиляторы (смотрел gcc 4.6, Visual Studio 2010 и Intel 11.0, все с включенной стандартной оптимизацией -O3/O2 без тонких настроек) делают разное:
gcc и Visual Studio генерируют код с той семантикой, какой написано;
Intel C++ делает так же, если компилирует "библиотеку", но оптимизирует первый случай до второго, если все потроха (методы класса и вызывающий их main()) лежат в одном файле.
~/.netrc для Win32 Git (msysgit) называется ~/_netrc
Всех убью, один останусь: ~/.gitconfig называется, сюрприз, ~/.gitconfig
Update: но вообще, конечно, жесть. Без netrc спрашивает пароль, я его честно говорю и оно с этим паролем даже что-то вытаскивает и ломается с 401-й ошибкой не сразу.
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.
Пытаюсь enlarge increase эту самую performance, сую в бензопилу лом туда AMD-шные примеры, которые на предыдущей версии работали очень бодренько (и временами почти догоняли AMD-шную видеокарту) и вижу замедление в 2-3 раза для половины примеров.
Начинаю читать код и не вижу там 256-битности. Ну, почти не вижу. Кое-где есть 256-битные load/store, нашел даже один vandps ymm1,ymm1,[memory], но в подавляющем большинстве код - 128-битный.
Он и в прошлой версии был 128-битный, но какой-то более человеческий.
Зато есть пошаговый отладчик, если бы не он, я бы версию 1.5 сразу бы снес, а так - еще подумаю.
Ну то есть понятно, производительность не переносится, но 2-3 раза просадки - это беспредел.
Единственный пример, который стал быстрее, называется Histogram. Но его и старая версия отказывалась векторизовать (немудрено) и новая тоже не хочет.
Так уж совпало, что сегодня все - вокруг темы сканирования.
Сегодня до меня доехали рамки для Epson V700/750 имени Betterscaning.com и я их немного потестировал.
Имею сказать:
Они действительно нереально удобны. Всё предыдущее что я пробовал (родные от Epson разных моделей, родные от Nikon-9000) - не идет ни в какое сравнение. С перегородками (которые T-lock) совсем удобно: просто суешь пленку и прижимаешь этими T-locks в нужных местах. Никаких вылезающих краев и прочего безумия.
Cо стеклом чуть менее удобно, вылезающие края бывают, но запихиваются легко.
Короче, лучшие 150 баксов месяца.
Три кадра 6x7 лезут в холдер, но, увы, не влезают в окно сканирования. Т.е. можно резать 6x7 по три (для сливера), а не по два. Но сканировать такое, увы, придется в два приема.
Глубина резкости у сканера оказалась миллиметра полтора. То есть та точность подгонки, что у этих штук есть (~0.2мм, полный оборот ножки - 0.8) - избыточна.
Чуда не случилось, 9000-й никон по проработке деталей не догнали и изрядно не догнали. Но A3 с 6x7 вполне можно печатать.
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 раз. Я предвижу совершенно другую картинку....
После трех месяцев разработки и тестирования вышла LibRaw 0.14.
По уже сложившейся традиции, помещу тут несколько отредактированный Changelog.
В этой версии одно принципиальное изменение, влекущее за собой множество мелких:
Разрешены повторные вызовы постобработки (LibRaw::dcraw_process)
без переоткрытия файла парой вызовов open()/unpack().
При этом, постобработку можно повторять меняя любые параметры
обработки (за исключением выбора кадра через shot_select).
В сочетании с повышением скорости обработки, на (очень) приличной современной машине можно получить:
"Почти realtime" показ изменений изображения при смене параметров RAW-конвертации в режиме половинного разрешения. На 40-мегапиксельное изображение уходит примерно 250 мсек (т.к. half-mode, то выдается 10 мегапикселей, что сильно больше любого современного монитора).
"Совсем realtime" показ изменений небольшого окошка (например, вокруг курсора) в полном разрешениии с настоящей демозаикой (получается 30-50 кадров/сек для окошка 450x300)
Осталось дождаться, пока это подопрут разработчики конверторов. digiKam обещал, но пока еще не сделал...