• Ускоряем умножение матриц float 4x4 с помощью SIMD
    0
    Во-первых, что значит «например» — если это единственный пример(вернее там много похожих инструкций, но суть одна). Зачем вы делаете вид, будто бы у вас много примеров?

    Ооох, да пожалуйста:


    __m256 _mm256_unpacklo_ps (__m256 a, __m256 b)
    
    INTERLEAVE_DWORDS(src1[127:0], src2[127:0]){
        dst[31:0] := src1[31:0] 
        dst[63:32] := src2[31:0] 
        dst[95:64] := src1[63:32] 
        dst[127:96] := src2[63:32] 
        RETURN dst[127:0]
    }   
    
    dst[127:0] := INTERLEAVE_DWORDS(a[127:0], b[127:0])
    dst[255:128] := INTERLEAVE_DWORDS(a[255:128], b[255:128])
    dst[MAX:256] := 0

    __m256i _mm256_packs_epi32 (__m256i a, __m256i b)
    
    dst[15:0] := Saturate_Int32_To_Int16 (a[31:0])
    dst[31:16] := Saturate_Int32_To_Int16 (a[63:32])
    dst[47:32] := Saturate_Int32_To_Int16 (a[95:64])
    dst[63:48] := Saturate_Int32_To_Int16 (a[127:96])
    dst[79:64] := Saturate_Int32_To_Int16 (b[31:0])
    dst[95:80] := Saturate_Int32_To_Int16 (b[63:32])
    dst[111:96] := Saturate_Int32_To_Int16 (b[95:64])
    dst[127:112] := Saturate_Int32_To_Int16 (b[127:96])
    dst[143:128] := Saturate_Int32_To_Int16 (a[159:128])
    dst[159:144] := Saturate_Int32_To_Int16 (a[191:160])
    dst[175:160] := Saturate_Int32_To_Int16 (a[223:192])
    dst[191:176] := Saturate_Int32_To_Int16 (a[255:224])
    dst[207:192] := Saturate_Int32_To_Int16 (b[159:128])
    dst[223:208] := Saturate_Int32_To_Int16 (b[191:160])
    dst[239:224] := Saturate_Int32_To_Int16 (b[223:192])
    dst[255:240] := Saturate_Int32_To_Int16 (b[255:224])
    dst[MAX:256] := 0

    __m256 _mm256_dp_ps (__m256 a, __m256 b, const int imm8)
    
    DP(a[127:0], b[127:0], imm8[7:0]) {
        FOR j := 0 to 3
            i := j*32
            IF imm8[(4+j)%8]
                temp[i+31:i] := a[i+31:i] * b[i+31:i]
            ELSE
                temp[i+31:i] := 0
            FI
        ENDFOR
    
        sum[31:0] := (temp[127:96] + temp[95:64]) + (temp[63:32] + temp[31:0])
    
        FOR j := 0 to 3
            i := j*32
            IF imm8[j%8]
                tmpdst[i+31:i] := sum[31:0]
            ELSE
                tmpdst[i+31:i] := 0
            FI
        ENDFOR
        RETURN tmpdst[127:0]
    }
    
    dst[127:0] := DP(a[127:0], b[127:0], imm8[7:0])
    dst[255:128] := DP(a[255:128], b[255:128], imm8[7:0])
    dst[MAX:256] := 0

    И в все остальные команды арифметических и логических действий соблюдают это правило: результат работы с нижними 128 битами записывается в нижние 128 битов. А теперь ваша очередь показать все остальные инструкции спокойно перекидываются битами из нижних и верхних частей? Такие команды конечно есть, но работают они со всеми 128 битами одновременно, то есть являются инструкциями копирования, а никак не SIMD-операциями.

  • Ускоряем умножение матриц float 4x4 с помощью SIMD
    +1

    Вы вообще не поняли о чем я, видимо ни разу не использовали AVX. Я не про какие-то реализации каких-то процессоров, я про весь набор команд и их архитектуру. Посмотрите как работает например _mm256_shuffle_ps — в dst[127:0] могут попасть только биты из a[127:0] и b[127:0], но не из a[255:128] и b[255:128]. То есть нижние 128 бит работают только с нижними 128 битами, старшие со старшими — это больше похоже на два модуля SSE, чем на один модуль SSE, но в два раза больше. И это касается большинства команд. То же самое можно сказать про AVX512 — это скорее 4 модуля SSE, работающих параллельно, чем один очень длинный модуль SSE.

  • Наблюдения GRAVITY дополнительно подтвердили общую теорию относительности
    +3

    Скорее всего она движется по такой траектории уже миллиарды лет

  • Ускоряем умножение матриц float 4x4 с помощью SIMD
    0

    У вас данные выровнены по линиям кеша? 4x4x4 — это как раз одна линия. Возможно, если данные пересекают линии, результат будет отличаться.

  • Ускоряем умножение матриц float 4x4 с помощью SIMD
    0

    Не понял к чему вы это. Финальный код содержит стриминговые инструкции, которые в данном случае сильно вредны. Ваше нежелание или невозможность тестировать на реальных кейсах подводит вас.

  • Ускоряем умножение матриц float 4x4 с помощью SIMD
    0
    Код просто будет аналогичным.

    Если бы! AVX — это не в два раза больший SSE модуль, это два SSE модуля, работающих в паре. Если для сложения и умножения это ничего не меняет, то например _mm256_shuffle_ps ведёт себя совсем иначе.

  • Ускоряем умножение матриц float 4x4 с помощью SIMD
    +3
    Разные руководства по оптимизации рекомендуют лишний раз не дёргать кэш для массовых операций сохранения.

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


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

  • Сколько тёмной материи проходит через ваше тело каждую секунду
    0

    Если вы имеете в виду обычную или близкую по свойствам к обычной материю в другой параллельной вселенной, то это тоже невозможно, так как ТМ не группируется под действием электромагнитных сил в комки, как это делает обычная материя, и совершенно иначе распределена в галактиках.


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

  • Сколько тёмной материи проходит через ваше тело каждую секунду
    0

    Напишите пожалуйста на support@habr.com (для верности с копией на support@habrahabr.ru), если вам не сложно.

  • Сколько тёмной материи проходит через ваше тело каждую секунду
    0

    Там написано «10 в степени -22», -22 мелким шрифтом и смещено вверх.

  • Спросите Итана: если масса искривляет пространство-время, как оно распрямляется обратно?
    0

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

  • Спросите Итана: если масса искривляет пространство-время, как оно распрямляется обратно?
    0
    Серьёзное заявление. Доказательства есть?

    «искривляет» и «всасывает» — это такие два слова, которые на примере знакомых нам понятий пытаются объяснить, что же происходит. Ни одного ни другое не является строгим определением того, что происходит. Я подробно рассказал, почему понятие «искривляет» описывает ситуацию хуже, чем понятие «всасывает» и вводит в заблуждение большинство людей

  • Спросите Итана: если масса искривляет пространство-время, как оно распрямляется обратно?
    0
    если масса искривляет пространство-время, как оно распрямляется обратно?

    Все эти объяснения, в которых пространство «искривляется», на мой взгляд только уводят от сути, отчего и появляются такие вопрос. На самом деле любая масса не «искривляет» пространство вокруг себя, а всасывает его.


    Ну серьезно, как искривление пространства может объяснить то, что я сейчас сижу на стуле и непрерывно давлю на него? Пространство «искривлено», но я уже нахожусь в точке на стуле. Стоит мне приложить усилие (пусть даже довольно большое, большее, чем в открытом космосе), я уже смещусь от стула, допустим, вверх и там же и останусь. «Искривление» пространства никак не объясняет, почему я сам упаду на стул, как только перестану прилагать усилия.


    В то же время, всасывание пространства Землёй отлично объясняет то, что происходит. Точка пространства, где я нахожусь всасывается к центру Земли. Я следую за ней. Как только я встречаю на своем пути стул, мне нужно прикладывать усилия, чтобы преодолевать течение пространства к Земле и оказываться каждый раз в новой точке пространства.


    В такой модели просто не остается места вопросы «как пространство распрямляется обратно?». Нет массы — никто не всасывает.

  • Павел Дуров: После обращения РКН, Apple заблокировала обновления Telegram по всему миру
    +9
    Интересно, а почему тогда в mac Os'ном аппсторе телеграмм регулярно обновляется?

    Потому что РКН не просила Апл удалить Телеграм из Mac App Store?

  • Облысение: Теория и практика лечения, ч.1 «Дигидротестостерон мой, враг мой»
    –4

    Это что, последствия объединения с гиктаймс? Как такое убрать из ленты?

  • Samsung выплатит Apple $539 млн за нарушение патентного законодательства
    +3

    Для начала разберитесь, как это пишется

  • Samsung выплатит Apple $539 млн за нарушение патентного законодательства
    +3

    Потому что им это выгодно, очевидно

  • Как обновление Rust 1.26 ускорило мой код в три с лишним раза
    +4

    Расскажите поподробнее пожалуйста про 128-битную арифметику на x86

  • Женские сети: кто делает за нас выбор?
    +2

    Тут всё очевидно. Человек говорит «мне не нравится юмор, где присутствует гендерный стереотип». Ему отвечают юмором с гендерным стереотипом.

  • Женские сети: кто делает за нас выбор?
    +2
    Вы еще не передумали?

    Вы сейчас травите человека в профессонально сообщистве по половому признаку. Вам что, 12 лет?

  • Женские сети: кто делает за нас выбор?
    0

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

  • Женские сети: кто делает за нас выбор?
    +5

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

  • Руководство по ассемблеру Go
    +3

    Интересно, сколько бы он сэкономил, если бы просто заменил


    lshift := rshift
    
    if lshift&1 == 1 {
      lshift--
    }

    на


    lshift := rshift & (~1)

    Возможно в Go это записывается иначе, суть в том, чтобы просто обнулить последний бит.

  • Правдоподобная реконструкция Инстаграм-подобных фильтров
    0

    Опция сохранять оригинальные фото в настройках Инстаграма включена? Точно из фотопотока фотку берёте, а не из самого инстаграма? У вас не включены никакие автобекапы оригинальных фоток в айклауд? Не может быть, что у вас изображение уменьшется еще на этапе отправки на телеофн или с телефона? Я отправляю через AirDrop.

  • Правдоподобная реконструкция Инстаграм-подобных фильтров
    0
    Инстаграм максимум выдает 1400х1400 и соответственно такой файл из него выходит

    У меня до 4096x4096 выдает. Возможно зависит от девайса или платформы, у меня iPhone 7.

  • Этот день мы приближали, как могли — блокнот в Windows 10 стал понимать юниксовый перевод строки
    +2
    Причем здесь Лещенко?

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

  • Этот день мы приближали, как могли — блокнот в Windows 10 стал понимать юниксовый перевод строки
    +2

    А по-моему очень уместная. Это действительно очень старое неудобство, фикс которого вышел в канун праздника, неофициальным гимном которого является песня Льва Лещенко, откуда и позаимствованы эти слова. На всякий случай посмотрел биографию Льва Лещенко, 9 мая 1945 года ему было 3 года, так что врядли именно он приближал тот день.

  • Правдоподобная реконструкция Инстаграм-подобных фильтров
    0
    Правильно ли я понимаю что я могу уже конкретно эти ваши файлы взять и конвертировать в CUBE

    Правильно.


    Результаты где-то ближе, где-то так себе

    Первые шесть фильтров восстанавливаются очень точно, практически неотличимо, пример в самом начале статьи. Hudson, например, чуть хуже, потому что в нем кроме цвета, сверху еще накладывается текстура.


    Я сейчас нашёл машину с фотошопом и проверил, преобразовав Халды в кубы этой утилитой: https://github.com/mikeboers/LUT-Convert. Результаты для первых шести фильтров 1 в 1.


    Навскидку, проблема может быть в следующих местах:


    1. Вы что-то напутали и смотрите не на те фильтры, которые применяете в фотошопе.
    2. Вы проверяли фото с цветовым профилем и фотошоп и инстаграм по-разному их интерпртировали.
  • Правдоподобная реконструкция Инстаграм-подобных фильтров
    0
    Разумеется, я прочитал статью и посмотрел ссылки в начале.

    Ссылки в начале — примеры неудачных попыток воспроизвести инстаграмовские фильтры. Ни в одной из них не добились какого-то боле-менее правдоподобного сходства.


    я очень вряд ли смогу самостоятельно перенести этот результат в ФШ

    https://github.com/mikeboers/LUT-Convert
    https://filtergrade.com/use-3d-luts-photoshop/

  • Правдоподобная реконструкция Инстаграм-подобных фильтров
    0

    Очень странно, что вы задаете этот вопрос под статьёй, в которой подробно описано как хорошо сделать аналоги фильтров Instagram, в том числе для Фотошопа. Вы хотя бы намекните, чем описанное тут решение вас не устроило?

  • Правдоподобная реконструкция Инстаграм-подобных фильтров
    +1

    Это перевод моей же статьи ) Вот так хитро

  • Правдоподобная реконструкция Инстаграм-подобных фильтров
    +1
    идея была в раздельной обработке яркости и цвета

    Не имеет значение, насколько сложные преобразования происходят внутри, если значение выходного пикселя зависит только от входного, это преобразование отлично захватывается с помощью израобжений Халда. Для инстаграма это верно для 32 из 40 фильтров.


    но результат будет несколько отличным

    Вы говорите так, будто нужно проверить работает ли этот подход. Между тем всё уже проверно, он работает.

  • Правдоподобная реконструкция Инстаграм-подобных фильтров
    +2
    ну, и как мне это использовать?

    В статье есть как минимум исчерпывающий пример с GraphicsMagick и список другого ПО, которое может использовать изображения Халда.


    почему нельзя показать результат Вашей работы в виде готовых пресетов для того же фотошопа

    Еще раз погуглил, в статье всё же неточность — Фотошоп нативно понимает не изображения Халда, а 3D cube файлы. Но сконвертировать одно в другое не составит труда.


    хотел посмотреть, чем ваши лучше.

    Мои лучше тем, что это в принципе единственные известные мне фильтры, правдоподобно воспроизводящие фильтры из Инстаграма.

  • Правдоподобная реконструкция Инстаграм-подобных фильтров
    +2

    В общем случае это невозможно. RGB кривые — это три одномерных графика, а 3D LUT — трехмерный.

  • How much is the Хабрабургер
    –1

    **ать, как я люблю фотографии в PNG.

  • Почему создание простенького превью по ссылкам в Википедии заняло четыре года
    +3

    Так это скорее косяк Хабра. Раньше кажется автор показыался всегда, а теперь только в подсказке по наведению.



    Напишите в поддержку хабра лучше.

  • Особенности использования вещественных регистров x86 архитектуры
    0

    Более того, в MMX только целые и есть. А SSE5 вообще что за зверь )

  • Блокировка Telegram — готовимся к худшему?
    0
    это был ресурс, который удовлетворял львиную долю моих потребностей

    Да на вас всем, простите, насрать

  • Особенности использования вещественных регистров x86 архитектуры
    +3
    например, каждый 512 битный регистр способен работать либо с четырьмя 64-битными числами двойной точности, либо с восемью 32-битными числами одинарной точности.

    У вас всё хорошо с математикой?

  • Как стать GPU-инженером за час
    0

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