Pull to refresh
85
Karma
0
Rating
Ермолаев Игорь @ErmIg

Пользователь

  • Followers 53
  • Following 1

Японский стартап предлагает ховербайки по $680 тысяч — они разгоняются до 100 км/ч и держат заряд 40 минут

Посмотрел. У них все выглядит гораздо продуманней: аппарат и легче и безопаснее (для пилота).

Как увеличить стек FPU

Зависит от задачи. Но если суммировать порядка 10^6 чисел, то легко получить погрешность во 2-3 знаке. Причем результат будет различасться в зависимости от того, что используешь: Scalar/SSE/AVX/AVX-512 (см подробнее здесь). Впрочем чем больше длина вектора, тем погрешность меньше.

Как увеличить стек FPU

Ну таких опций компилятора наверное еще не придумали. Я лично этот метод руками писал для нахождения суммы разностей квадратов на fp32 (вот пример на SSE см SquaredDifferenceKahanSum32f ).

Как увеличить стек FPU

Код на x87 скалярный, 80-bit регистры загружаются по невыровненному адресу за несколько тактов. Единственное возможное преимущество - повышенная точность, но ее можно достичь другими методами (например см метод Кэхена). Если оставаться в рамках стандартных 64-bit, то можно задействовать SSE, AVX, AVX-512. Это легко перекроет выгоду от x87 даже с учетом более медленного алгоритма.

Обзор инструкций ARM NEON для тех, кто знаком с MMX/SSE/AVX

Касательно оптимизации загрузки NEON векторов, я бы еще посмотрел в сторону выровненной загрузки и использования префетча:

#define PREFECH_SIZE 384

        template <bool align> inline uint8x16_t Load(const uint8_t * p);

        template <> inline uint8x16_t Load<false>(const uint8_t * p)
        {
#if defined(__GNUC__) && PREFECH_SIZE
            __builtin_prefetch(p + PREFECH_SIZE);
#endif
            return vld1q_u8(p);
        }

        template <> inline uint8x16_t Load<true>(const uint8_t * p)
        {
#if defined(__GNUC__)
#if PREFECH_SIZE
            __builtin_prefetch(p + PREFECH_SIZE);
#endif
            uint8_t * _p = (uint8_t *)__builtin_assume_aligned(p, 16);
            return vld1q_u8(_p);
#elif defined(_MSC_VER)
            return vld1q_u8_ex(p, 128);
#else
            return vld1q_u8(p);
#endif
        }

В некоторых случаях помогает (величиной PREFECH_SIZE лучше поиграться).

Почему именно Tesla победит в гонке за автономностью

Чтобы что-то отправить из архива, нужно его прежде туда сохранить. Если интересуют редко встречающиеся ситуации, которые плохо распознаются, то боюсь придется сохранять очень много — т.к. порог на срабатывание нужно будет сильно занижать.

Как ускорить игру «Жизнь» в сто раз

Небольшое замечание по поводу AVX2 версии:
Есть такая замечательная инструкция VPSHUFB (_mm256_shuffle_epi8, Avx2.Shuffle), которая может использоваться в качестве lookup таблицы из 16 одно байтовых значений.
Этой операцией можно заменить почти все битовые операции во втором цикле.

Сравниваем производительность C# и C++ в задачах обработки изображений

Ну как не упирается? Для суммирования изображения это обычно так. Смотрите: Ваш процессор с AVX имеет производительность порядка 50 GFLOPS на ядро, а для такого быстродействия потребуется загрузить 50 * 2 * 4 = 400 GB данных в секунду, тогда как пропускная способность памяти на канал порядка 10 GB в секунду. Т.е. в 40 раз меньше.
Дополнительные потоки позволяют задействовать второй канал памяти. Кроме того, если размеры изображения не велики — все данные могут вмещаться в кеш процессора. Но даже для кеша L1 — 400 GB данных в секунду — это многовато. А ведь результаты нужно еще сохранять.

Операция свертки, или медианная фильтрация теоретически могут задействовать все вычислительные ресурсы процессора. Но там паритета вроде нет?

Сравниваем производительность C# и C++ в задачах обработки изображений

Вы не проверяли: там где наблюдается паритет скорости, не упирается ли все в пропускную способность памяти?

Быстрая медианная фильтрация с использованием AVX-512

Круто! Я честно говоря сам думал о похожей оптимизации, но все руки не доходили. Я добавлю ваш код в основную ветку.

Быстрая медианная фильтрация с использованием AVX-512

Не все AVX512 юниты одинаково полезны. Во втором юните дублируются только наиболее востребованные операции. В документации в описании конкретной операции есть параметр Throughput (CPI), который по сути обратная величина от максимального количества таких операций за такт.

Быстрая медианная фильтрация с использованием AVX-512

P.S. Возникает вопрос: почему ускорение от AVX-512 не в два раза, а только на 30-35%? Дело в том, что в SkylakeX только 1 AVX-512 модуль, который выполняет операции вычисления целочисленных min/max, в тоже время у него 2 AVX-256 таких модуля, которые могут быть задействованы параллельно.

Быстрая медианная фильтрация с использованием AVX-512

В статье сравнивалась медианная фильтрация с окном 3x3. В ней сравнительно мало операций. Изображение сравнительно большое ~2MB (входное и выходное влезает в L3, но не влезает в L2). Потому уже начиная с AVX2 узким местом становится именно загрузка данных, а не сами операции с ними.
Если увеличить размер фильтра (хотя бы до 5x5), то ускорение от AVX2 и AVX-512BW значительно увеличиться.
Собственно в Simd есть реализация медианного фильтра с окном 3х3 и 5х5, с которыми там можно поиграться во встроенных тестах.
Для окна 5x5 AVX2 дает ускорение практически в 100 раз, AVX-512BW почти в 130 раз.

Ученые создали сверхпроводник. Он работает при комнатной температуре, но под большим давлением

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

Ученые создали сверхпроводник. Он работает при комнатной температуре, но под большим давлением

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

[Обновлено: силовики покинули офисы] В минских офисах «Яндекса» и Uber проходят обыски

Есть русский (Россия) и русский (Беларусь) — и это разные по правилам написания языки. Так же как есть Британский и Американский английский язык.

Самая сложная задача в Computer Vision

Да. Трекинг объектов без ярко выраженного идентификатора (лица, автомобильные номера) — очень нетривиальная задача. Но есть более сложная — многокамерный трекинг объектов… :)

SpaceX успешно вывела на орбиту еще 58 спутников системы Starlink

Вас не смущает, что 915+377=1292. Т.е. правительственные контракты это уже есть сумма контрактов NASA и военных контрактов. Т. е. не надо их еще раз суммировать. Урежьте осетра в 2 раза :)

Как GPU-вычисления буквально спасли меня на работе. Пример на Python

Вся соль блочного подхода в том, что при правильном порядке умножения матриц (вычислительная сложность: O^3, зависимость по данным: O^2) скорость всегда упирается в вычислительные ресурсы. При этом последовательно задействуются: регистры, кэш процессора 1 уровня, 2-го уровня, 3-его, оперативная память, SSD, HDD и т.п.

Как GPU-вычисления буквально спасли меня на работе. Пример на Python

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

Information

Rating
Does not participate
Location
Минск, Минская обл., Беларусь
Date of birth
Registered
Activity