Свежие комментарии

Title Comment
хороший пост, есть и цифры, и анализ. конечно грустно, что

хороший пост, есть и цифры, и анализ.

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

для больших вычислительных задач я бы попробовал Intel ArBB, но для "кусочной" оптимизации он не сильно подходит.

В документации нет. На

В документации нет. На неизвестную прагму - ругается.

По факту (ассемблерному листингу) - цикл развернут.

Интересная статья. #pragma

Интересная статья.
#pragma unroll понимает Visual C++? Сомневаюсь.

Для меня это, вообщем-то,

Для меня это, вообщем-то, единственный способ читать отечественные журналы, так что конкретно в моем случае это денежка, которую иначе бы не получили никак.

Та же история с журналами из UK/US, бо австралийские больше частью дикий хлам что в электронном, что в бумажном виде.

Подобные посредники обдирают

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

Процессорный кэш, пусть даже L3 и пусть на 8Mb - это мегапик

Процессорный кэш, пусть даже L3 и пусть на 8Mb - это мегапиксель. А с мегапикселем оно и так не тормозит (см. выше про 100 мегапикселей в секунду в плохом случае).

Ну так очевидно, что формат промежуточных результатов опреде

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

Т.е. дело тут совсем не в float, а в битах для хранения.

Давно уже читаю периодику

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

Перестал покупать периодику

Перестал покупать периодику лет шесть назад, одновременно с началом работы в печатном издании. Причиной сравнительно недавнего увольнения оттуда было острейшее ощущение дремучей статичности руководства и нежелания менять workflow на тот, который позволил бы изданию не протухнуть. Проблема не только в носителе, но и в "квантовании" доставляемого материала. Сейчас потребитель хочет постоянного потока, пусть и не слишком концентрированного. А традиционный рабочий процесс (даже если выдавать его результат в сеть) журнала или не-ежедневной газеты - это выдача концентрированного материала порциями раз в неделю, две недели или месяц.
Особо показательным примером "нового формата новостей" был лично для меня сайт, который запустили в Adobe перед выходом CS5. Найти там четко структурированную информацию о coming features было невозможно, за то был многоканальный агрегатор потоков сознания - трансляция твиттеров, подкастов и ютуб-каналов мычащих адобовских тимлидов и т.п. Если люди хотят этого, то классические новости и тематические журналы обречены.

Я не рефлексировал на тему

Я не рефлексировал на тему "почему я перестал читать коммерс", но факт на лице: газеты копятся на тумбочке и читать я их почти перестал. Где-то раз в неделю выкидываю пачку нечитанных за прошлую неделю.

Еще в прошлом году, за исключением лета (когда приехал - и вот они за две недели), - успевал их потреблять.

Может быть, конечно, контент стал хуже.

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

У разных изданий -

У разных изданий - по-разному. У некоторых, конечно, одни старые пердуны в читателях, так что им пока еще незаметно. Но раз уж ЗаРулем приложение для каких-то планшетов сделало.. В общем, весь вопрос в том, сколько планшетов будет продано, включая китайские, и сколько из них займут то физическое пространство, где раньше лежал дежурный журнал или газета.

А, да, точно. Нормальная

А, да, точно. Нормальная группировка появилась в какой-то относительно свежей прошивке, последней бета-версии перед 3.0 или около того.

У меня сходу была именно она, потом 3.0.

В 2.9-чего-то тоже все было

В 2.9-чего-то тоже все было вроде бы нормально, хотя я уже не помню.

Докладываю для пользы будущих

Докладываю для пользы будущих читателей: дело было в прошивке (была 2.92). Я поставил самую свежую, какую смог съесть патчер (3.0) и теперь у меня все в шоколаде. (Карты группируются по параметру -m, если он у карт одинаковый (скажем, genshtab500), отдельно их включить или выключить нельзя.)
Еще раз большое спасибо за инструкции!

Не может ли быть дело в том,

Не может ли быть дело в том, что прошивка у меня 2.92? Я как-то не нашел пропатченной более новой прошивки (возможно, я дурак и нужно брать любую прошивку и патчить, но я так понял, что к каждой прошивке свой патчер)...
Спасибо!

Я вроде ставлю параметр -m,

Я вроде ставлю параметр -m, но ничего от этого не меняется...
Вот такая строка: map2jnx.exe -p 500 -m 500genshtab asilan.tif 500asilan.jnx
Аналогично для 250 метров (только везде 250). Результат тот же - все в одной куче... Что я делаю не так? Может быть, надо стереть входящую в комплект демку?

Я ставлю и разные ProductID

Я ставлю и разные ProductID (-p) и разные ProductName (-m). Прошивка - 3.0, если правильно помню (прибор в шкафу и без батарей, включать лень, тем более что и карт в нем сейчас нет).

Виноват, забыл упомянуть, что

Виноват, забыл упомянуть, что на экране выбора карт в приборе у меня три строки - две с векторными картами, которые были в комплекте, и третья - BidsEye Satellite imagery, в которой перечислены все положенные туда jnxы, (пробовал ставить галку -p и давать номера, никак не повлияло).

Карты в меню выбора "что

Карты в меню выбора "что показывать" группируются по ProductName (ключ -m у map2jnx)

Соответственно, задавая разные значения -m ... для разных карт - вы делаете их выключаемыми отдельно.

А как же отключить карты отдельно?...

Спасибо за прекрасную инструкцию, очень помогло новоприбывшему в ряды владельцев 62s. Единственное, с прошивками немного непонятно, но синтез данных с веломании, Вашего поста и другого Интернета помог.
А вот что я пока что не могу понять - как же все-таки вручную включать или выключать карты? Допустим, я положил себе два jnx-а: 500мку и 250мку, но 250мка мне нужна не всегда, а только в определенных случаях (грубо говоря, найти отличия от 500ки). Но при этом 250-метровка лезет на экран слишком рано. Вероятно, с ранним вылезанием можно бороться с помощью jnxscale, но можно ли вообще выбирать, какие карты показывать, а какие - нет?
Спасибо!

Не, ну матрица дана нам

Не, ну матрица дана нам снаружи, конечно же можно домножить ее на константу так, чтобы и лишнего переполнения в 32 битах не было и точность не терялась.

Ну и может быть обратная сторона: в матрице уже очень большие значения, но с разным знаком. И результат умножения в float влезает (а после сложения - остается в 16-битном диапазоне), а в int - не хватает пары десятков порядков. В этом случае, наоборот, надо бы поделить на константу....

Тут вот какая беда: закодировать исходный алгоритм может и студент. Закодировать его же в float - еще проще (клиппинг не нужен совсем). А чтобы сделать это же в целых - нужно хорошо представлять предметную область и написать заметное количество нетривиального кода, что уровень требований к исполнителю (и к тестированию) сильно поднимает.

не ну зачем жеж так пошло. мы

не ну зачем жеж так пошло. мы результат сохраняем по сути как 16 бит fixed point значит и преобразование в 32 битных fixed point вполне может нас устроить. Если же матрица в плавучке это данность свыше, то о какой экономии сопроцессора речь? :)

Собственно, если взять и

Собственно, если взять и "тупо поменять на int" матрицу из примера, то получится матрица:
{0,0,0,0},{1,1,1,1,1},{1,1,1,1}
Поверьте - результат расчетов с такой матрицей будет совсем иной :)

Не-не. Матрицу не надо "тупо

Не-не. Матрицу не надо "тупо менять на int", вы тут запросто пару бит в младших разрядах потеряете об округления.

мда зарапортовался ) мои

мда зарапортовался )
мои жалобы были против "экономии на памяти" и гигабайтов в памяти в виде float[] картинок. sorry.

поскольку сейчас на работе простой :) попробовал ваш сниппет и на 2008й если тупо заменить матрицу и out на int и вставить clamp(0, ushort_max, out[cc]) то оно в пару раз быстрее. Разумеется надо мерять оптимизированный против оптимизированного :) так как и там и там оно не векторизировало ничего. Мое впечатление что если возня с переводом матрицы в целые себя оправдает то на пре-avx машинках целочисленка выиграет с малым отрывом.

с выводом что вычисления сейчас очень дешевы по сравнению с хранением я не спорю просто это никак не связано с ценой гигабайта RAM. Как в шутку сказал в одной из недавних презенташек Meyer "RAM is new disk".

Я не понимаю, против чего вы

Я не понимаю, против чего вы согласны, разжуйте поподробнее.

Собственно, в тексте поста есть сниппет кода, если вы дадите свой вариант, мне несложно его побенчмаркать вместе с прочими.

Вот полная версия, для удобства:

float mat[3][4] = {{ 0.17f,0.22f,0.33f,0.44f},{0.55f,0.66f,0.77f,0.88f},{1.01f,1.02f,1.03f,1.04f}} ;

void sdotp(unsigned short *image,int sz)
{
int cc;
unsigned short *img = image;
float out[3];
for(int i = 0; i < sz; i++,img+=4)
{
out[0] = out[1] = out[2] = 0;
for(cc=0;cc<4;cc++) {
out[0] += mat[0][cc] * img[cc];
out[1] += mat[1][cc] * img[cc];
out[2] += mat[2][cc] * img[cc];
}
for(cc=0;cc<3;cc++)
img[cc] = out[cc];
img[3] = 0;
}
}

ну так я и объясняю что

ну так я и объясняю что потому и 16бит что нельзя весь bandwidth выжирать в одно горло. А будете вы там конвертить прочитанные шорты во флоаты или нет это практически не повлияет на поведение системы под нагрузкой на все cpu. Кстати будете смеяться, но на gpu специально есть float16.

А компиляторы и вся эта "модель черного ящика" в стиле plug'n'pray мне уже в печени сидят.

Ну а зачем вы это мне

Ну а зачем вы это мне объясняете?
Объясните компилятору.

Потому что если я уж дойду до ручного написания _mm_loadu_si128, то я и сделаю все в плавучке и на dpps, это всяко быстрее.

простите мой френч но читать

простите мой френч но читать из памяти по 2 байта в 2011 это диагноз. Зачитать в вектор из 8ми шортов и сделать пару shuffle и все полетит как птица. Ваши 10G моментально начнут упираться в bandwidth как только вы запустите на всех ядрах что-то такое же.

Есть вот такое решение http://www.ebay.com/sch/i.html?_kw=bi

Есть вот такое решение
http://www.ebay.com/sch/i.html?_kw=bicycle%20lift&_ds=1&_fcid=100&_local...

Pages

Subscribe to comments_recent_new