LSP Plugins: версия 1.1.4

Тема в разделе "WASM.PROJECTS", создана пользователем SadKo, 29 сен 2018.

  1. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.516
    Адрес:
    г. Санкт-Петербург
    Начиная с релиза 1.1.4 я выпустил весь набор плагинов LSP Plugins под лицензией GNU LGPL v3!

    Release 1.1.4 is coming out with a lot of new changes!
    First of all, LSP Plugins became completely open source and are licensed under terms of GNU LGPL v3 license!
    Additionally, experimental support of ARMv7-A architecture added, basicly for Raspberry Pi 3B/3B+ devices.

    The overall list of changes is listed below:
    • Changed licensing to GNU Lesser General Public License version 3 (GNU LGPL v3).
    • Moved code repository to GitHub while keeping release history.
    • Implemented linear impulse response profiler plugin.
    • Added basic Raspberry Pi 3B/3B+ (ARMv7A) support (experimental).
    • Implemented unit testing subsystem.
    • Implemented performance testing subsystem.
    • Implemented manual testing subsystem.
    • Fixed and optimized convolution algorithm for convolver module that produced invalid output.
    • Added LSPC file format implementation.
    • Added LSPC file format support to convolver plugins.
    • Huge refactoring: DSP code moved from core to separate subtree.
    • Partially implemented NEON SIMD instruction support for some DSP assembly functions for ARMv7A architecture.
    • Fixed bugs in some DSP oversampling routines.
    • Optimized complex multiplication functions.
    • Implemented additional complex number routines.
    • Implemented additional functions to DSP core.
    • Fixed compilation warnings and errors emitted by the GCC 8 compiler.
    • Updated development documentation.

    Demo for a new plugin:
     
  2. Rel

    Rel Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 дек 2008
    Сообщения:
    2.062
    а в формате Linux VST есть? мой любимый Cocos Reaper на линуксах поддерживает пока только LVST формат... можно канеш через Jack накрутить систему, но проще было бы сразу в DAW использовать...
     
  3. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.516
    Адрес:
    г. Санкт-Петербург
    Есть конечно.
     
  4. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.516
    Адрес:
    г. Санкт-Петербург
    А тем временем, после трёх лет разработки я выпустил новый релиз коллекции плагинов LSP Plugins - 1.1.5.
    Релиз для скачивания: https://github.com/sadko4u/lsp-plugins/releases/tag/lsp-plugins-1.1.5

    Изменения по релизу 1.1.5:
    • Implemented stereo version of Profiler plugin.
    • Added 'Spectralizer' and 'Mastering' modes to the Spectrum Analyzer plugin series.
    • All SIMD-optimized DSP code now ported to ARMv7A architecture and optimized using ARM NEON instruction set.
    • Added Frame Buffer primitive support by plugins and widgets.
    • Implemented RGBA and HSLA color manipulation routines for point array rendering optimizations.
    • Extended unit and performance test coverage.
    • Enabled RELRO and PIE option for binaries, simplified build system.
    • Implemented optimized DSP functions for minimum and maximum search.
    • Implemented optimized DSP functions for static biquad processing, dynamic biquad processing, dynamic bilinear transformation.
    • Extended DSP code with different set of software rendering functions that enhance visual effects.
    • Added support of FreeBSD operating system (plugins are available for building in FreeBSD ports).
    • Improved build process, added possibility to specify PREFIX variable for installing into specified path instead of /usr/local.
    • Fixed building issues under Ubuntu Linux related to compiler and linker flags reordering.
    • Fixed system character set detection on certain systems that caused disappearing of text labels in the UI.
    • Fixed window decorating issue under the i3 window manager.
    • Fixed biquad filter processing routines that could cause memory corruption and/or invalid behaviour in certain circumstances.
    • Fixed serious memory corruption in SSE implementation of fast convolution routines that could cause spontaneous crashes of convolvers.
    • Fixed buffer underflow in Convolver module that could cause memory corruption and spontaneous crashes of host.
     
    UbIvItS нравится это.
  5. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    4.271
    SadKo, а сравнивал производительность с аналогами?
     
  6. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.516
    Адрес:
    г. Санкт-Петербург
    С аналогами - нет, с нативной реализацией - да. Есть performance test на каждую функцию, реализующую тот или иной алгоритм. Прирост разный, от 50% до 900%, в зависимости от реализуемой функции.
     
  7. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    4.271
    любопытный разброс. как ты можешь объяснить причину таких тормозов у натива?
     
  8. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.516
    Адрес:
    г. Санкт-Петербург
    Самый первый аргумент - потому что мы работаем с большими пачками данных, то есть обрабатываем массивы, а не отдельные значения.
    Также всё зависит от скорости работы SIMD-инструкций. Какие-то работают эффективнее, какие-то менее эффективно. Где-то большой оверхед по инструкциям на применение вычислений по условию.
    Где-то функции немного упрощены по сравнению с реализацией в стандартной библиотеке (не учитываются отдельные значения типа +inf, -inf, nan и т.д.), то есть проверка корректности данных делегируется вызывающему коду.
    В последних моделях Intel и AMD, кстати, AVX-инструкции работают эффективнее SSE-инструкций.
    На AMD Bulldozer/Piledriver было наоборот: только некоторые кейсы с AVX работали быстрее, на остальных провал по сравнению с SSE3-реализацией (в которой появились регистры xmm8-xmm15, и буст получался за счёт параллельного выполнения инструкций вычисления 8-элементных векторов, а не 4-элементных).
    Методика тестирования: для каждого теста подгатавливаются выровненные в памяти буфера для входных данных и выходных данных. Входные данные заполняются случайными значениями в допустимом диапаазоне.
    Далее для каждой функции запускается тест, который работает по следующему алгоритму:
    - запускает внешний цикл, который собирает статистику и ограничивает время выполнения внутреннего цикла N секундами.
    - запускает внутренний цикл, который выполняется M раз на одну итерацию внешнего цикла, и в каждой итерации вызывает одну и ту же функцию, передавая указатели на буферы входных и выходных данных.
    После выполнения теста статистика собирается и преобразуется к удобочитаемому виду.

    Пример без оверхеда по условным вычислениям. Нужно посчитать логарифмы.
    Нативная реализация: https://github.com/sadko4u/lsp-plug...419a4754/include/dsp/arch/native/pmath.h#L249
    Реализация на SSE2: https://github.com/sadko4u/lsp-plugins/blob/master/include/dsp/arch/x86/sse2/pmath/log.h
    Реализация на AVX2 и AVX2+FMA3: https://github.com/sadko4u/lsp-plugins/blob/master/include/dsp/arch/x86/avx2/pmath/log.h
    Реализация на ARM NEON: https://github.com/sadko4u/lsp-plugins/blob/master/include/dsp/arch/arm/neon-d32/pmath/log.h
    Performance-тест: https://github.com/sadko4u/lsp-plugins/blob/master/src/test/ptest/dsp/pmath/log.cpp

    Ну и результаты Performance-теста (отрывки):
    Код (Text):
    1.  
    2. --------------------------------------------------------------------------------
    3. LSP version: 1.1.5
    4. --------------------------------------------------------------------------------
    5. CPU information:
    6.   Architecture:   x86_64
    7.   CPU string:     AMD Ryzen 7 2700 Eight-Core Processor
    8.   CPU model:      vendor=AMD, family=0x17, model=0x8
    9.   Features:       FPU CMOV MMX FXSAVE SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 SSE4A XSAVE FMA3 AVX AVX2
    10. --------------------------------------------------------------------------------
    11.  
    12. ┌Case────────────────────────┬Time[s]┬────Iter┬Samp[s]┬─────Est┬─Perf[i/s]┬Cost[us/i]┬─Rel[%]┐
    13. │native::logb1 x 4096        │   5.02│  112000│   5.00│  111649│  22329.91│   44.7830│ 100.00│
    14. │sse2::logb1 x 4096          │   5.00│  747000│   5.00│  746700│ 149340.14│    6.6961│ 668.79│
    15. │avx2::x64_logb1 x 4096      │   5.00│ 1097000│   5.00│ 1096636│ 219327.27│    4.5594│ 982.21│
    16. │avx2::x64_logb1_fma3 x 4096 │   5.00│ 1143000│   5.00│ 1142456│ 228491.28│    4.3765│1023.25│
    17. ├────────────────────────────┼───────┼────────┼───────┼────────┼──────────┼──────────┼───────┤
    18. │native::logb2 x 4096        │   5.01│  113000│   5.00│  112842│  22568.51│   44.3095│ 100.00│
    19. │sse2::logb2 x 4096          │   5.00│  790000│   5.00│  789686│ 157937.36│    6.3316│ 699.81│
    20. │avx2::x64_logb2 x 4096      │   5.00│ 1182000│   5.00│ 1181961│ 236392.25│    4.2303│1047.44│
    21. │avx2::x64_logb2_fma3 x 4096 │   5.00│ 1248000│   5.00│ 1247031│ 249406.31│    4.0095│1105.11│
    22. ├────────────────────────────┼───────┼────────┼───────┼────────┼──────────┼──────────┼───────┤
    23. │native::loge1 x 4096        │   5.03│  124000│   5.00│  123184│  24636.98│   40.5894│ 100.00│
    24. │sse2::loge1 x 4096          │   5.01│  749000│   5.00│  748214│ 149642.82│    6.6826│ 607.39│
    25. │avx2::x64_loge1 x 4096      │   5.00│ 1099000│   5.00│ 1098541│ 219708.29│    4.5515│ 891.78│
    26. │avx2::x64_loge1_fma3 x 4096 │   5.00│ 1097000│   5.00│ 1096590│ 219318.19│    4.5596│ 890.20│
    27. ├────────────────────────────┼───────┼────────┼───────┼────────┼──────────┼──────────┼───────┤
    28. │native::loge2 x 4096        │   5.03│  123000│   5.00│  122298│  24459.68│   40.8836│ 100.00│
    29. │sse2::loge2 x 4096          │   5.01│  792000│   5.00│  791205│ 158241.13│    6.3195│ 646.95│
    30. │avx2::x64_loge2 x 4096      │   5.00│ 1190000│   5.00│ 1189911│ 237982.34│    4.2020│ 972.96│
    31. │avx2::x64_loge2_fma3 x 4096 │   5.00│ 1194000│   5.00│ 1193091│ 238618.32│    4.1908│ 975.56│
    32. ├────────────────────────────┼───────┼────────┼───────┼────────┼──────────┼──────────┼───────┤
    33. │native::logd1 x 4096        │   5.06│   82000│   5.00│   81093│  16218.80│   61.6569│ 100.00│
    34. │sse2::logd1 x 4096          │   5.00│  740000│   5.00│  739481│ 147896.32│    6.7615│ 911.88│
    35. │avx2::x64_logd1 x 4096      │   5.00│ 1090000│   5.00│ 1089058│ 217811.77│    4.5911│1342.96│
    36. │avx2::x64_logd1_fma3 x 4096 │   5.00│ 1133000│   5.00│ 1132365│ 226473.08│    4.4155│1396.36│
    37. ├────────────────────────────┼───────┼────────┼───────┼────────┼──────────┼──────────┼───────┤
    38. │native::logd2 x 4096        │   5.01│   82000│   5.00│   81812│  16362.48│   61.1154│ 100.00│
    39. │sse2::logd2 x 4096          │   5.00│  784000│   5.00│  783723│ 156744.73│    6.3798│ 957.95│
    40. │avx2::x64_logd2 x 4096      │   5.00│ 1185000│   5.00│ 1184242│ 236848.42│    4.2221│1447.51│
    41. │avx2::x64_logd2_fma3 x 4096 │   5.00│ 1239000│   5.00│ 1238033│ 247606.72│    4.0387│1513.26│
    42. └────────────────────────────┴───────┴────────┴───────┴────────┴──────────┴──────────┴───────┘
    43.  
    44. --------------------------------------------------------------------------------
    45. CPU information:
    46.   Architecture:   x86_64
    47.   CPU string:     AMD Athlon(tm) 64 X2 Dual Core Processor 4400+
    48.   CPU model:      vendor=AMD, family=0xf, model=0x6b
    49.   Features:       FPU CMOV MMX SSE SSE2 SSE3
    50. --------------------------------------------------------------------------------
    51.  
    52. ┌Case─────────────────┬Time[s]┬───Iter┬Samp[s]┬────Est┬Perf[i/s]┬Cost[us/i]┬Rel[%]┐
    53. │native::logb1 x 4096 │   5.04│  27000│   5.00│  26795│  5359.17│  186.5961│100.00│
    54. │sse2::logb1 x 4096   │   5.01│ 142000│   5.00│ 141836│ 28367.28│   35.2519│529.32│
    55. ├─────────────────────┼───────┼───────┼───────┼───────┼─────────┼──────────┼──────┤
    56. │native::logb2 x 4096 │   5.15│  28000│   5.00│  27181│  5436.35│  183.9470│100.00│
    57. │sse2::logb2 x 4096   │   5.02│ 152000│   5.00│ 151520│ 30304.04│   32.9989│557.43│
    58. ├─────────────────────┼───────┼───────┼───────┼───────┼─────────┼──────────┼──────┤
    59. │native::loge1 x 4096 │   5.12│  30000│   5.00│  29303│  5860.62│  170.6303│100.00│
    60. │sse2::loge1 x 4096   │   5.03│ 140000│   5.00│ 139087│ 27817.59│   35.9485│474.65│
    61. ├─────────────────────┼───────┼───────┼───────┼───────┼─────────┼──────────┼──────┤
    62. │native::loge2 x 4096 │   5.01│  29000│   5.00│  28954│  5790.93│  172.6840│100.00│
    63. │sse2::loge2 x 4096   │   5.02│ 147000│   5.00│ 146375│ 29275.03│   34.1588│505.53│
    64. ├─────────────────────┼───────┼───────┼───────┼───────┼─────────┼──────────┼──────┤
    65. │native::logd1 x 4096 │   5.09│  20000│   5.00│  19628│  3925.75│  254.7286│100.00│
    66. │sse2::logd1 x 4096   │   5.01│ 142000│   5.00│ 141792│ 28358.54│   35.2627│722.37│
    67. ├─────────────────────┼───────┼───────┼───────┼───────┼─────────┼──────────┼──────┤
    68. │native::logd2 x 4096 │   5.14│  19000│   5.00│  18473│  3694.76│  270.6535│100.00│
    69. │sse2::logd2 x 4096   │   5.03│ 152000│   5.00│ 151114│ 30222.94│   33.0875│817.99│
    70. └─────────────────────┴───────┴───────┴───────┴───────┴─────────┴──────────┴──────┘
    71.  
    72. --------------------------------------------------------------------------------
    73. LSP version: 1.1.5
    74. --------------------------------------------------------------------------------
    75. CPU information:
    76.   Architecture:   armv7a
    77.   CPU string:     Cortex-A53
    78.   CPU model:      vendor=0x41, architecture=7, variant=0, part=0xd03, revision=4
    79.   Features:       HALF THUMB FAST_MULT VFP EDSP NEON VFPv3 TLS VFPv4 IDIVA IDIVT VFPD32 LPAE
    80. --------------------------------------------------------------------------------
    81.  
    82. Statistics of performance test 'dsp.pmath.log':
    83. ┌Case───────────────────┬Time[s]┬───Iter┬Samp[s]┬────Est┬Perf[i/s]┬Cost[us/i]┬Rel[%]┐
    84. │native::logb1 x 4096   │   5.50│  11000│   5.00│  10003│  2000.71│  499.8217│100.00│
    85. │neon_d32::logb1 x 4096 │   5.02│  76000│   5.00│  75738│ 15147.62│   66.0170│757.11│
    86. ├───────────────────────┼───────┼───────┼───────┼───────┼─────────┼──────────┼──────┤
    87. │native::logb2 x 4096   │   5.46│  11000│   5.00│  10072│  2014.59│  496.3800│100.00│
    88. │neon_d32::logb2 x 4096 │   5.05│  81000│   5.00│  80183│ 16036.67│   62.3571│796.03│
    89. ├───────────────────────┼───────┼───────┼───────┼───────┼─────────┼──────────┼──────┤
    90. │native::loge1 x 4096   │   5.10│  11000│   5.00│  10776│  2155.29│  463.9757│100.00│
    91. │neon_d32::loge1 x 4096 │   5.02│  75000│   5.00│  74747│ 14949.54│   66.8917│693.62│
    92. ├───────────────────────┼───────┼───────┼───────┼───────┼─────────┼──────────┼──────┤
    93. │native::loge2 x 4096   │   5.03│  11000│   5.00│  10941│  2188.35│  456.9663│100.00│
    94. │neon_d32::loge2 x 4096 │   5.06│  80000│   5.00│  79074│ 15814.85│   63.2317│722.69│
    95. ├───────────────────────┼───────┼───────┼───────┼───────┼─────────┼──────────┼──────┤
    96. │native::logd1 x 4096   │   5.09│   9000│   5.00│   8839│  1767.99│  565.6131│100.00│
    97. │neon_d32::logd1 x 4096 │   5.02│  75000│   5.00│  74751│ 14950.31│   66.8883│845.61│
    98. ├───────────────────────┼───────┼───────┼───────┼───────┼─────────┼──────────┼──────┤
    99. │native::logd2 x 4096   │   5.03│   9000│   5.00│   8951│  1790.22│  558.5911│100.00│
    100. │neon_d32::logd2 x 4096 │   5.00│  79000│   5.00│  78970│ 15794.01│   63.3152│882.24│
    101. └───────────────────────┴───────┴───────┴───────┴───────┴─────────┴──────────┴──────┘
    102.  
    103.  
    Пример с оверхедом по условным вычислениям. Нужно установить значение тона (Hue) цвета и прозрачности (Alpha) в зависимости от значения входного параметра.
    Нативная реализация: https://github.com/sadko4u/lsp-plug...nclude/dsp/arch/native/graphics/effects.h#L17
    Реализация на SSE2: https://github.com/sadko4u/lsp-plug...lude/dsp/arch/x86/sse2/graphics/effects.h#L81
    Реализация на AVX2 и AVX2+FMA3: https://github.com/sadko4u/lsp-plug...ude/dsp/arch/x86/avx2/graphics/effects.h#L121
    Реализация на ARM NEON: https://github.com/sadko4u/lsp-plug.../dsp/arch/arm/neon-d32/graphics/effects.h#L99
    Performance-тест: https://github.com/sadko4u/lsp-plugins/blob/master/src/test/ptest/dsp/graphics/effects.cpp

    Ну и результаты Performance-теста (отрывки):
    Код (Text):
    1.  
    2. --------------------------------------------------------------------------------
    3. CPU information:
    4.   Architecture:   x86_64
    5.   CPU string:     AMD Ryzen 7 2700 Eight-Core Processor
    6.   CPU model:      vendor=AMD, family=0x17, model=0x8
    7.   Features:       FPU CMOV MMX FXSAVE SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 SSE4A XSAVE FMA3 AVX AVX2
    8. --------------------------------------------------------------------------------
    9.  
    10. ┌Case────────────────────────────┬Time[s]┬─────Iter┬Samp[s]┬──────Est┬──Perf[i/s]┬Cost[us/i]┬Rel[%]┐
    11. │static::eff_hsla_hue x 4096     │   5.04│   645000│   5.00│   640159│  128031.82│    7.8106│115.41│
    12. │native::eff_hsla_hue x 4096     │   5.00│   555000│   5.00│   554670│  110934.19│    9.0144│100.00│
    13. │sse2::eff_hsla_hue x 4096       │   5.02│  1145000│   5.00│  1140338│  228067.70│    4.3847│205.59│
    14. │avx2::x64_eff_hsla_hue x 4096   │   5.00│  1410000│   5.00│  1409742│  281948.46│    3.5467│254.16│
    15. └────────────────────────────────┴───────┴─────────┴───────┴─────────┴───────────┴──────────┴──────┘
    16.  
    17. --------------------------------------------------------------------------------
    18. CPU information:
    19.   Architecture:   x86_64
    20.   CPU string:     AMD Athlon(tm) 64 X2 Dual Core Processor 4400+
    21.   CPU model:      vendor=AMD, family=0xf, model=0x6b
    22.   Features:       FPU CMOV MMX SSE SSE2 SSE3
    23. --------------------------------------------------------------------------------
    24.  
    25. ┌Case──────────────────────────┬Time[s]┬────Iter┬Samp[s]┬─────Est┬─Perf[i/s]┬Cost[us/i]┬Rel[%]┐
    26. │static::eff_hsla_hue x 4096   │   5.15│  155000│   5.00│  150626│  30125.22│   33.1948│108.21│
    27. │native::eff_hsla_hue x 4096   │   5.10│  160000│   5.00│  156923│  31384.70│   31.8627│112.73│
    28. │sse2::eff_hsla_hue x 4096     │   5.03│  140000│   5.00│  139199│  27839.84│   35.9198│100.00│
    29. └──────────────────────────────┴───────┴────────┴───────┴────────┴──────────┴──────────┴──────┘
    30.  
    31. --------------------------------------------------------------------------------
    32. CPU information:
    33.   Architecture:   armv7a
    34.   CPU string:     Cortex-A53
    35.   CPU model:      vendor=0x41, architecture=7, variant=0, part=0xd03, revision=4
    36.   Features:       HALF THUMB FAST_MULT VFP EDSP NEON VFPv3 TLS VFPv4 IDIVA IDIVT VFPD32 LPAE
    37. --------------------------------------------------------------------------------
    38.  
    39. ┌Case────────────────────────────┬Time[s]┬────Iter┬Samp[s]┬─────Est┬─Perf[i/s]┬Cost[us/i]┬Rel[%]┐
    40. │static::eff_hsla_hue x 4096     │   5.35│   55000│   5.00│   51445│  10289.11│   97.1902│111.10│
    41. │native::eff_hsla_hue x 4096     │   5.40│   50000│   5.00│   46304│   9260.87│  107.9812│100.00│
    42. │neon_d32::eff_hsla_hue x 4096   │   5.09│  185000│   5.00│  181792│  36358.60│   27.5038│392.60│
    43. └────────────────────────────────┴───────┴────────┴───────┴────────┴──────────┴──────────┴──────┘
    44.  
    45.  
    Полные логи теста во вложении.

    Особенно интересно наблюдать, как бодаются Athlon 4400+ и Raspberry Pi 3B+ в плане SIMD-производительности.
     

    Вложения:

    UbIvItS нравится это.
  9. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    4.271
    SadKo, короче, весь секрет пролегает в правильном использование асма на векторных регистрах :) а под интел оптимазил?
     
  10. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.516
    Адрес:
    г. Санкт-Петербург
    На интел примерно те же показатели, где-то чуть лучше, где-то чуть хуже. Но блок вещественной арифметики при меньших тактовых частотах даёт лучшую производительность на ядро, это факт.
    В понедельник могу прогнать те же тесты на Core i5 и сюда кинуть результат.
     
    UbIvItS нравится это.
  11. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.516
    Адрес:
    г. Санкт-Петербург
    Результаты тестов на Core i5, как обещал.

    Код (Text):
    1.  
    2. --------------------------------------------------------------------------------
    3. LSP version: 1.1.5
    4. --------------------------------------------------------------------------------
    5. CPU information:
    6.   Architecture:  x86_64
    7.   CPU string:  Intel(R) Core(TM) i5-6400 CPU @ 2.70GHz
    8.   CPU model:  vendor=Intel, family=0x6, model=0x5e
    9.   Features:  FPU CMOV MMX FXSAVE SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 XSAVE FMA3 AVX AVX2
    10. --------------------------------------------------------------------------------
    11.  
    12. ┌Case────────────────────────┬Time[s]┬────Iter┬Samp[s]┬─────Est┬─Perf[i/s]┬Cost[us/i]┬─Rel[%]┐
    13. │native::logb1 x 4096        │   5.00│  225000│   5.00│  224958│  44991.70│   22.2263│ 100.00│
    14. │sse2::logb1 x 4096          │   5.01│  736000│   5.00│  735021│ 147004.25│    6.8025│ 326.74│
    15. │avx2::x64_logb1 x 4096      │   5.00│ 1485000│   5.00│ 1484246│ 296849.26│    3.3687│ 659.79│
    16. │avx2::x64_logb1_fma3 x 4096 │   5.00│ 1545000│   5.00│ 1544477│ 308895.41│    3.2373│ 686.56│
    17. ├────────────────────────────┼───────┼────────┼───────┼────────┼──────────┼──────────┼───────┤
    18. │native::logb2 x 4096        │   5.02│  214000│   5.00│  213108│  42621.74│   23.4622│ 100.00│
    19. │sse2::logb2 x 4096          │   5.01│  766000│   5.00│  765153│ 153030.78│    6.5346│ 359.04│
    20. │avx2::x64_logb2 x 4096      │   5.00│ 1574000│   5.00│ 1573301│ 314660.23│    3.1780│ 738.26│
    21. │avx2::x64_logb2_fma3 x 4096 │   5.00│ 1622000│   5.00│ 1621427│ 324285.59│    3.0837│ 760.85│
    22. ├────────────────────────────┼───────┼────────┼───────┼────────┼──────────┼──────────┼───────┤
    23. │native::loge1 x 4096        │   5.01│  295000│   5.00│  294492│  58898.48│   16.9784│ 100.00│
    24. │sse2::loge1 x 4096          │   5.00│  709000│   5.00│  708318│ 141663.78│    7.0590│ 240.52│
    25. │avx2::x64_loge1 x 4096      │   5.00│ 1397000│   5.00│ 1396231│ 279246.36│    3.5811│ 474.11│
    26. │avx2::x64_loge1_fma3 x 4096 │   5.00│ 1480000│   5.00│ 1479668│ 295933.77│    3.3791│ 502.45│
    27. ├────────────────────────────┼───────┼────────┼───────┼────────┼──────────┼──────────┼───────┤
    28. │native::loge2 x 4096        │   5.00│  304000│   5.00│  303898│  60779.66│   16.4529│ 100.00│
    29. │sse2::loge2 x 4096          │   5.01│  753000│   5.00│  752085│ 150417.06│    6.6482│ 247.48│
    30. │avx2::x64_loge2 x 4096      │   5.00│ 1507000│   5.00│ 1506335│ 301267.02│    3.3193│ 495.67│
    31. │avx2::x64_loge2_fma3 x 4096 │   5.00│ 1557000│   5.00│ 1556885│ 311377.14│    3.2115│ 512.30│
    32. ├────────────────────────────┼───────┼────────┼───────┼────────┼──────────┼──────────┼───────┤
    33. │native::logd1 x 4096        │   5.00│  143000│   5.00│  142940│  28588.10│   34.9796│ 100.00│
    34. │sse2::logd1 x 4096          │   5.00│  727000│   5.00│  726274│ 145254.95│    6.8844│ 508.10│
    35. │avx2::x64_logd1 x 4096      │   5.00│ 1453000│   5.00│ 1452972│ 290594.48│    3.4412│1016.49│
    36. │avx2::x64_logd1_fma3 x 4096 │   5.00│ 1487000│   5.00│ 1486092│ 297218.58│    3.3645│1039.66│
    37. ├────────────────────────────┼───────┼────────┼───────┼────────┼──────────┼──────────┼───────┤
    38. │native::logd2 x 4096        │   5.03│  141000│   5.00│  140285│  28057.05│   35.6417│ 100.00│
    39. │sse2::logd2 x 4096          │   5.00│  729000│   5.00│  728900│ 145780.03│    6.8597│ 519.58│
    40. │avx2::x64_logd2 x 4096      │   5.00│ 1504000│   5.00│ 1503280│ 300656.11│    3.3261│1071.59│
    41. │avx2::x64_logd2_fma3 x 4096 │   5.00│ 1549000│   5.00│ 1548845│ 309769.09│    3.2282│1104.07│
    42. └────────────────────────────┴───────┴────────┴───────┴────────┴──────────┴──────────┴───────┘
    43.  
    44. ┌Case────────────────────────────┬Time[s]┬─────Iter┬Samp[s]┬──────Est┬──Perf[i/s]┬Cost[us/i]┬Rel[%]┐
    45. │static::eff_hsla_hue x 4096     │   5.02│   590000│   5.00│   587100│  117420.16│    8.5164│100.00│
    46. │native::eff_hsla_hue x 4096     │   5.02│   615000│   5.00│   612775│  122555.03│    8.1596│104.37│
    47. │sse2::eff_hsla_hue x 4096       │   5.01│   905000│   5.00│   902356│  180471.33│    5.5410│153.70│
    48. │avx2::x64_eff_hsla_hue x 4096   │   5.01│  1890000│   5.00│  1886800│  377360.07│    2.6500│321.38│
    49. └────────────────────────────────┴───────┴─────────┴───────┴─────────┴───────────┴──────────┴──────┘
    50.  
    51.  
    Полные логи в аттаче.
     

    Вложения: