Свежие комментарии
Title | Comment |
---|---|
Сравнил. Пока на core2, у |
Сравнил. Пока на core2, у меня на AVX нету свежего gcc сейчас. gcc: получается медленнее, чем развернутое руками умножение просто на C. clang (llvm 3-devel): "умножение руками" и векторное - одинаково. Но "умножение руками" имеет сильно более очевидный код. И все это сильно медленнее, чем я ожидал. Похоже, что Sandy Bridge в сравнении с Core2 - офигенный просто шаг вперед, не только по частоте. Завтра подробнее напишу. |
Спасибо за информацию, тоже |
Спасибо за информацию, тоже хотел подобную штуку покупать, теперь не буду |
Если хочется иметь instant updates в программе вроде Lightro |
Если хочется иметь instant updates в программе вроде Lightroom (RPP, whatever), т.е. по движению контрола сразу виден результат, то оптимизация нужна. Понятно, что первейшая оптимизация - это уменьшение количества обрабатываемых данных до размера экрана (2-4 мегапикселя), но это - тоже оптимизация. Ну и для этого количества данных весь пайплайн обработки надо бы за 50-100 (а лучше - 30) миллисекунд прогнать. |
<i><q>Я, собственно, клоню к тому, что во втором десятилетии |
Я, собственно, клоню к тому, что во втором десятилетии 21-го века, когда гигабайт RAM стоит примерно $6, вся эта экономия на памяти и на математическом сопроцессоре - устарела до черезвычайности. надо начать с того, что оптимизация для десктопных процессоров в большинстве случаев не нужна ;) We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil |
Ага. Накодировал dot product. |
Ага. Я сегодня вечером или завтра это дело попрофайлю и расскажу. Но что-то я пока не уверен, что это сильно лучше просто gcc с векторизацией. |
Вещественные описываются |
Вещественные описываются точно так же. На той же странице: "The vector_size attribute is only applicable to integral and float scalars". Только, как и в случае с ручным кодингом на intrinsics (по сути, на ассемблере), надо помнить о выравнивании на размер всего вектора при ручном выделении памяти. Запаковывать/распаковывать вектора можно как обычно, через union, например. Документация, к сожалению, крайне скудная, но примеры нагуглить можно, типа такого http://stackoverflow.com/questions/4596912/sse-simd-extensions-support-i... |
Ага, разобрался. Прикольная |
Ага, разобрался. Прикольная штука (т.к. умеет legacy FPU), жаль что совместимость с другими компиляторами отсутствует. |
Я по ссылке вижу только целые |
Я по ссылке вижу только целые вектора. Где поподробнее почитать. |
Ещё бы сравнить это по |
Ещё бы сравнить это по производительности с встроенными в GCC переносимыми (не завязанными на конкретную процессорную архитектуру) векторными типами (http://gcc.gnu.org/onlinedocs/gcc/Vector-Extensions.html). Умеет порождать как SSE, так и legacy FPU код с циклами. Вероятно, будет несколько медленнее ручного SSE, зато элегантно. |
Да, согласен, кривовато. |
Да, согласен, кривовато. |
Ну значит у них текст написан/озаглавлен неправильно, им бы |
Ну значит у них текст написан/озаглавлен неправильно, им бы акцентировать на то, что заполненный буфер на вычислителе оказывается "сразу". Понятно, что буфер надо как-то заполнить в любом случае, независимо от дальнейшего его использования. |
Насколько я понимаю, это и есть скорость мысли, т.е. пропуск |
Насколько я понимаю, это и есть скорость мысли, т.е. пропускная способность подсистемы памяти. Скорость записи из процессора в ОЗУ. |
<i>на мобильных реально без копирования, то есть там просто |
на мобильных реально без копирования, то есть там просто ремаппинг из хоста в GPU? Смотря на каких, бывает что да |
Я не знаю про RPP, а обычно проблема в том, что подобных хот |
Я не знаю про RPP, а обычно проблема в том, что подобных хот-спотов не один, а пара десятков, причем треть из них - в чужих компонентах (например, в color management engine), еще треть - в подготовке/приеме данных для/от этих чужих компонент и только треть - своя. И получается, что не сделав свою *быструю* CMS - ничего и не получится. А это - тот еще геморой. |
Вот это надо гениям из RPP показать. А то у них плавучка э |
Вот это надо гениям из RPP показать. А то у них плавучка это оправдание тормознутости софта. |
А промежуточные результаты как хранить? Вопрос, собственно, |
А промежуточные результаты как хранить? Вопрос, собственно, в этом. Ну вот, к примеру, фотошоп. Сделали "действие". На старте было 16 бит, на выходе - 16 бит. Промежуточная математика - допустим в 32, но проблема то не в ней. |
Я что-то туплю ... А зачем что-то ВЫЧИСЛЯТЬ в 16 битах? 16 б |
Я что-то туплю ... А зачем что-то ВЫЧИСЛЯТЬ в 16 битах? 16 бит - это только формат хранения для больших объемов. Вычислять на современных процессорах менее чем в 32 битах просто смысла нет. В случае dcraw куча 16-битных вычислений тянутся понятно откуда: в 97 году память была узким местом для обработки фото. И что ты там меняешь на float? Насколько я понимаю, img дан нам в unsigned short свыше :) |
Да, естественно, если мы боремся за влезает/не влезает в кэш |
Да, естественно, если мы боремся за влезает/не влезает в кэш (или "влезает в L1/влезает в L2"), то жизнь другая совершенно. Или если мы боремся за bandwidth памяти/диска, что тоже часто встречается. А вот конкретно с (единичными) картинками - не так. В кэш в любом случае не влезет (а что влезет - то обрабатывается с "достаточной скоростью"), а ситуация, когда ограничены bandwidth диска - неинтересная на практике т.к. в память то влезет. Про кино - не знаю, мало опыта. |
Я делал эксперимент один раз, на макбуке с GF 8600M и у меня |
Я делал эксперимент один раз, на макбуке с GF 8600M и у меня вроде так и получилось (ну то есть скорость записи в mapped-память GPU была равна скорости записи просто в память). Хотя вот про OpenCL AMD пишет странное CPU-to-GPU data transfers exceed 15GB/s using APU zero copy path Казалось бы, если zero copy, то какие в жопу 15Gb/s, оно должно "со скоростью мысли" |
если применять основную мысль (legacy data types) к обработк |
если применять основную мысль (legacy data types) к обработке изображений, то она верная, т.к. в основном это stream processing и задача легко влезает в память. вообще говоря, конечно же нет. скажем, используя char и short вместо int и long можно добиться более высокой плотности хранения данных, соответственно больше данных можно впихнуть в кэш для тех алгоритмов, где есть смысл кэшировать. ну и конечно есть море задач, где лучший тип данных это вообще vector(bool) или bitset, куда запакован массив int, обрезанный по макс. битовой ширине. опять же, из соображений кэша или нехватки памяти. |
А на мобильных реально без копирования, то есть там просто р |
А на мобильных реально без копирования, то есть там просто ремаппинг из хоста в GPU? Получается тогда что обычный PCIex16 должен отсасывать у хорошего ноутбука просто не нагибаясь? |
не, они комуницируют сообщениями через сокет (локальный или |
не, они комуницируют сообщениями через сокет (локальный или tcp). |
Мне отчего-то казалось, что milter грузится в адресное прост |
Мне отчего-то казалось, что milter грузится в адресное пространство sendmail как .so Тогда да, не работать может только от неправильного радиуса кривизны. |
Несмотря на мое уважение к современным кодогенераторам, сове |
Несмотря на мое уважение к современным кодогенераторам, совершенства нет. Из личного опыта: Из чужого опыта: умножают матрицы таки kernel-ом на ассемблере (SSE и т.п.), а не доверяют кодогенератору. Потому что добиться ровно блока 8x2 (к примеру) прагмами разворотов цикла сильно сложнее, чем руками это место закодировать. Ну и всякая fast math (синус-косинус-экспонента-логарифм), в лучшем случае тебе сделают обращение к SVML, а всякие узкоспециальные случаи (вроде того, что заранее известен входной диапазон) - никак не поддержаны. |
Да, конечно. Проблема тут в том, что тогда придется весь ко |
Да, конечно. Проблема тут в том, что тогда придется весь код обработки туда загнать. Что можно, просто работы реально дохрена, потому что кода достаточно много переносить. Но хочется нести туда только хот-споты. Которых ну примерно 10 кусочков кода по 10 строчек (вроде вышепоказанного), ну может чуть больше, работы по переносу немного. Но приходится обломится. Зато на мобильных GPU, которые используют хостовую RAM за отсутствием своей, можно обойтись без копирования. Ну и конечно всякие AMD Fusion и прочие Ivy Bridge, где память тоже общая - тоже сильно упрощают жизнь. |
Я думаю (опираясь на свои старые опыты с цветокоррекцией на |
Я думаю (опираясь на свои старые опыты с цветокоррекцией на HLSL/GLSL) что настоящий ништяк наступит когда можно будет гнать на видимокарту слегка может быть причесанный RAW, а обратно получать уже RGB и максимум разве что профиль прикладывать. А так эти ваши туда-сюда совершенно не прикалывают. |
1. <i>Есть устоявшееся мнение, дескать обработка (изображени |
1. Есть устоявшееся мнение, дескать обработка (изображений) в целых (16-битных) числах - это быстро, а делать то же самое в плавучке - медленно. 2. А я вот тут читаю ассемблер, порожденный компилятором из C-шного кода обработки изображения. Много думаю. Я лет 6 назад сделал (2) и сразу перестал (1). Я еще со времен Ваткома с подозрением отношусь к возможностям себя переплюнуть компилятор и уже неоднократно утверждался в. |
вот конкретно в протоколе милтера проблемы нет. но из-за кри |
вот конкретно в протоколе милтера проблемы нет. я, если что, практические наблюдения имею |
Я почти уверен, что между 8.11 и 8.13 мильтер просто так, бе |
Я почти уверен, что между 8.11 и 8.13 мильтер просто так, без перекомпиляции, не перенесется. |
у меня ощущение, что ведро 3.0 доставит много радости и заст |
у меня ощущение, что ведро 3.0 доставит много радости и заставит просраться. |
Pages
