Обновить
72
0
Artem Solopiy@EntityFX

Iot Solutions Developer

Отправить сообщение

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

Кто-то, кто-то? Вы :))

А вот это похвально!

MCST Virtual Bridge

MCST PCI Bridge (rev 06)

MCST Gigabit Ethernet Controller

MCST IDE controller

MCST SATA

MCST I2C SPI (rev 05)

MCST Parallel and Serial

MCST GPIO MPV

MCST HD Audio

MCST PCI-Express x4 (rev 01)

MCST PCI-Express x16 (rev 01)

MCST USB 2.0 ohci

MCST USB 2.0 ehci

Да, в основном так выходит: задача ложится на компилятор. Причём, от ia64 у e2k очень сильные отличия. Кстати, пример можете глянуть тут: https://ce.mentality.rip/z/cqc71s

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

А сколько пришлось делать ассемблерных вставок, чтобы добиться повышения производительноси? Обычно же это не более 1% от всего кода?
Поздравляю с успешным портированием! Отлично, а я жду появление на Эльбрусе NetCore нативного, обещали летом. Пока есть нативный Mono ну и NetCore работает под RTC.
Кстати, тут сравнение производительности Lua vs LuaJit Interpreter + LuaJit Full: luajit.org/performance.html
Спасибо, пробегал как-то ваши статьи, довольно интересно, оставлю в сообществе по Эльбрусам, пусть ознакомятся.

А если у х86 версии отключить JIT у Lua, собрать и сравнить?

Не указали, что долгое время не удавалось портировать по причине отсутствия LuaJit. Его перенесли на е2к, но он работает в режиме интерпретатора, а не с JIT. Вообще рекомендовали некоторые скрипты преобразовать в С++ и собрать нативно.

На мали Т628 текстуры пропадают.

Да, 3д драйвер недавно появился и я смог простые игры с поддержкой OpenGL ES 3 запустить. Драйвера на ускорение кодирования/декодирования нет, это я знаю, но процессор вытягивает в FHD.

Про FreeCAD не отвечу — не интересовался этой темой.
На Эльбрусе:

Extenstion 'xmlrpc' not loaded or not compiled! XmlRpc tests will procude empty result!
-------------------------------------------------------------------------------------------
|                                  PHP BENCHMARK SCRIPT                                   |
-------------------------------------------------------------------------------------------
Start               : 2021-05-22 23:28:40
Server              : Linux/5.4.0-2.11-e8c2 e2k
Platform            : Linux
System              : Linux
CPU                 :
              model : E8C2
              cores : 8
          available : 8
                MHz : 1550MHz
Memory              : 256 Mb available
Benchmark version   : 1.0.36
PHP version         : 7.4.7
  available modules :
           mbstring : yes
               json : yes
             xmlrpc : no
               pcre : yes
Max execution time  : 600 sec
Crypt hash algo     : MD5
-------------------------------------------------------------------------------------------
TEST NAME                      :      SECONDS |       OP/SEC |      OP/SEC/MHz |    MEMORY
-------------------------------------------------------------------------------------------
01_math                        :   13.572 sec |  73.68 kOp/s |  47.54  Ops/MHz |      2 Mb
02_string_concat               :    2.039 sec |   3.78 MOp/s |   2.44 kOps/MHz | 128.84 Mb
03_1_string_number_concat      :   10.689 sec | 467.78 kOp/s | 301.80  Ops/MHz |      4 Mb
03_2_string_number_format      :    9.120 sec | 548.25 kOp/s | 353.71  Ops/MHz |      4 Mb
04_string_simple_functions     :    9.785 sec | 132.85 kOp/s |  85.71  Ops/MHz |      4 Mb
05_string_multibyte            :    9.245 sec |  14.06 kOp/s |   9.07  Ops/MHz |      4 Mb
06_string_manipulation         :   43.879 sec |  29.63 kOp/s |  19.11  Ops/MHz |      4 Mb
07_regex                       :   29.604 sec |  43.91 kOp/s |  28.33  Ops/MHz |      4 Mb
08_1_hashing                   :    9.369 sec | 138.76 kOp/s |  89.52  Ops/MHz |      4 Mb
08_2_crypt                     :   26.396 sec | 378.84  Op/s |   0.24  Ops/MHz |      4 Mb
09_json_encode                 :   21.731 sec |  59.82 kOp/s |  38.60  Ops/MHz |      4 Mb
10_json_decode                 :   28.453 sec |  45.69 kOp/s |  29.48  Ops/MHz |      4 Mb
11_serialize                   :   28.453 sec |  45.69 kOp/s |  29.48  Ops/MHz |      4 Mb
11_serialize                   :   14.194 sec |  91.59 kOp/s |  59.09  Ops/MHz |      4 Mb
12_unserialize                 :   14.194 sec |  91.59 kOp/s |  59.09  Ops/MHz |      4 Mb
12_unserialize                 :   13.504 sec |  96.27 kOp/s |  62.11  Ops/MHz |      4 Mb
13_array_fill                  :   17.443 sec |   2.87 MOp/s |   1.85 kOps/MHz |     12 Mb
14_array_range                 :    1.609 sec |  62.14 kOp/s |  40.09  Ops/MHz |     12 Mb
14_array_unset                 :   18.711 sec |   2.67 MOp/s |   1.72 kOps/MHz |     12 Mb
15_loops                       :   11.621 sec |  17.21 MOp/s |  11.10 kOps/MHz |      4 Mb
16_loop_ifelse                 :    8.599 sec |   5.81 MOp/s |   3.75 kOps/MHz |      4 Mb
17_loop_ternary                :   12.434 sec |   4.02 MOp/s |   2.59 kOps/MHz |      4 Mb
18_1_loop_defined_access       :    4.744 sec |   4.22 MOp/s |   2.72 kOps/MHz |      4 Mb
18_2_loop_undefined_access     :   29.025 sec | 689.07 kOp/s | 444.56  Ops/MHz |      4 Mb
19_type_functions              :    6.675 sec | 449.42 kOp/s | 289.95  Ops/MHz |      4 Mb
20_type_conversion             :    6.671 sec | 449.71 kOp/s | 290.14  Ops/MHz |      4 Mb
21_0_loop_exception_none       :    0.447 sec |   8.94 MOp/s |   5.77 kOps/MHz |      4 Mb
21_1_loop_exception_try        :    0.531 sec |   7.54 MOp/s |   4.86 kOps/MHz |      4 Mb
21_2_loop_exception_catch      :   11.791 sec | 339.25 kOp/s | 218.87  Ops/MHz |      4 Mb
22_loop_null_op                :   12.497 sec |   4.00 MOp/s |   2.58 kOps/MHz |      4 Mb
23_loop_spaceship_op           :    9.828 sec |   5.09 MOp/s |   3.28 kOps/MHz |      4 Mb
24_xmlrpc_encode               :    -.--- sec |     -.--Op/s |     -.--Ops/MHz |         0
25_xmlrpc_decode               :    -.--- sec |     -.--Op/s |     -.--Ops/MHz |         0
26_1_class_public_properties   :    1.213 sec |   4.12 MOp/s |   2.66 kOps/MHz |      4 Mb
26_2_class_getter_setter       :    3.024 sec |   1.65 MOp/s |   1.07 kOps/MHz |      4 Mb
26_3_class_magic_methods       :    6.593 sec | 758.34 kOp/s | 489.25  Ops/MHz |      4 Mb
-------------------------------------------------------------------------------------------
Total time:                    :  405.037 sec |   1.49 MOp/s | 959.43  Ops/MHz |
Current PHP memory usage:      :        4 Mb
Peak PHP memory usage:         :   125.48 Mb
Протестировал PHP на Байкале:

Extenstion 'mbstring' not loaded or not compiled! Multi-byte string tests will produce empty result!
-------------------------------------------------------------------------------------------
|                                  PHP BENCHMARK SCRIPT                                   |
-------------------------------------------------------------------------------------------
Start               : 2021-05-23 02:16:32
Server              : Linux/5.10.32-un-def-alt1 aarch64
Platform            : Linux
System              : ALT Workstation 9.1 (Laertes)
CPU                 :
              model : Cortex-A57
              cores : 8
          available : 8
                MHz : 50MHz
Memory              : 256 Mb available
Benchmark version   : 1.0.37
PHP version         : 7.3.27
  available modules :
           mbstring : no
               json : yes
               pcre : yes
Max execution time  : 600 sec
Crypt hash algo     : MD5
-------------------------------------------------------------------------------------------
TEST NAME                      :      SECONDS |       OP/SEC |      OP/SEC/MHz |    MEMORY
-------------------------------------------------------------------------------------------
01_math                        :    8.808 sec | 113.53 kOp/s |   2.27 kOps/MHz |      2 Mb
02_string_concat               :    0.988 sec |   7.80 MOp/s | 155.95 kOps/MHz | 128.84 Mb
03_1_string_number_concat      :    7.818 sec | 639.52 kOp/s |  12.79 kOps/MHz |      4 Mb
03_2_string_number_format      :    6.880 sec | 726.75 kOp/s |  14.53 kOps/MHz |      4 Mb
04_string_simple_functions     :    8.959 sec | 145.10 kOp/s |   2.90 kOps/MHz |      4 Mb
05_string_multibyte            :    -.--- sec |     -.--Op/s |     -.--Ops/MHz |         0
06_string_manipulation         :   16.111 sec |  80.69 kOp/s |   1.61 kOps/MHz |      4 Mb
07_regex                       :    9.372 sec | 138.71 kOp/s |   2.77 kOps/MHz |      4 Mb
08_1_hashing                   :    9.121 sec | 142.52 kOp/s |   2.85 kOps/MHz |      4 Mb
08_2_crypt                     :   24.709 sec | 404.72  Op/s |   8.09  Ops/MHz |      4 Mb
09_json_encode                 :   15.315 sec |  84.88 kOp/s |   1.70 kOps/MHz |      4 Mb
10_json_decode                 :   22.405 sec |  58.02 kOp/s |   1.16 kOps/MHz |      4 Mb
11_serialize                   :   12.070 sec | 107.70 kOp/s |   2.15 kOps/MHz |      4 Mb
12_unserialize                 :   15.904 sec |  81.74 kOp/s |   1.63 kOps/MHz |      4 Mb
13_array_fill                  :    7.982 sec |   6.26 MOp/s | 125.29 kOps/MHz |     12 Mb
14_array_range                 :    1.150 sec |  86.99 kOp/s |   1.74 kOps/MHz |     12 Mb
14_array_unset                 :    7.537 sec |   6.63 MOp/s | 132.69 kOps/MHz |     12 Mb
15_loops                       :    8.161 sec |  24.51 MOp/s | 490.15 kOps/MHz |      4 Mb
16_loop_ifelse                 :    3.594 sec |  13.91 MOp/s | 278.27 kOps/MHz |      4 Mb
17_loop_ternary                :    8.815 sec |   5.67 MOp/s | 113.45 kOps/MHz |      4 Mb
18_1_loop_defined_access       :    1.877 sec |  10.66 MOp/s | 213.16 kOps/MHz |      4 Mb
18_2_loop_undefined_access     :   15.441 sec |   1.30 MOp/s |  25.90 kOps/MHz |      4 Mb
19_type_functions              :    4.260 sec | 704.26 kOp/s |  14.09 kOps/MHz |      4 Mb
20_type_conversion             :    4.171 sec | 719.26 kOp/s |  14.39 kOps/MHz |      4 Mb
21_0_loop_exception_none       :    0.186 sec |  21.56 MOp/s | 431.26 kOps/MHz |      4 Mb
21_1_loop_exception_try        :    0.213 sec |  18.81 MOp/s | 376.23 kOps/MHz |      4 Mb
21_2_loop_exception_catch      :    8.344 sec | 479.36 kOp/s |   9.59 kOps/MHz |      4 Mb
22_loop_null_op                :    5.616 sec |   8.90 MOp/s | 178.06 kOps/MHz |      4 Mb
23_loop_spaceship_op           :    4.535 sec |  11.02 MOp/s | 220.50 kOps/MHz |      4 Mb
26_1_class_public_properties   :    0.501 sec |   9.97 MOp/s | 199.44 kOps/MHz |      4 Mb
26_2_class_getter_setter       :    1.600 sec |   3.12 MOp/s |  62.50 kOps/MHz |      4 Mb
26_3_class_magic_methods       :    3.566 sec |   1.40 MOp/s |  28.04 kOps/MHz |      4 Mb
-------------------------------------------------------------------------------------------
Total time:                    :  246.007 sec |   2.45 MOp/s |  48.96 kOps/MHz |
Current PHP memory usage:      :        4 Mb
Peak PHP memory usage:         :   125.45 Mb
На Байкал-М:

gcc -g -Wall -O3 test-tlb.c -o test-tlb -lm -D FREQ="1.5"
for i in 4k 8k 16k 32k 64k 128k 256k 512k 1M 2M 4M 6M 8M 16M 32M 64M 128M 256M ; do echo "$i:"; ./test-tlb -H $i 64; ./test-tlb $i 64 ; ./test-tlb -Hr $i 64; ./test-tlb -r $i 64; done
4k:
  3.38ns (~5.1 cycles)
  3.38ns (~5.1 cycles)
  3.38ns (~5.1 cycles)
  3.38ns (~5.1 cycles)
8k:
  3.37ns (~5.1 cycles)
  3.37ns (~5.1 cycles)
  3.37ns (~5.1 cycles)
  3.38ns (~5.1 cycles)
16k:
  3.37ns (~5.1 cycles)
  5.65ns (~8.5 cycles)
  3.37ns (~5.1 cycles)
 12.84ns (~19.3 cycles)
32k:
  3.43ns (~5.1 cycles)
  4.60ns (~6.9 cycles)
  3.45ns (~5.2 cycles)
 11.42ns (~17.1 cycles)
64k:
  5.94ns (~8.9 cycles)
  6.02ns (~9.0 cycles)
 16.24ns (~24.4 cycles)
 16.22ns (~24.3 cycles)
128k:
  5.96ns (~8.9 cycles)
  6.59ns (~9.9 cycles)
 16.24ns (~24.4 cycles)
 16.38ns (~24.6 cycles)
256k:
  5.95ns (~8.9 cycles)
  6.66ns (~10.0 cycles)
 16.24ns (~24.4 cycles)
 18.65ns (~28.0 cycles)
512k:
  5.96ns (~8.9 cycles)
  6.65ns (~10.0 cycles)
 16.48ns (~24.7 cycles)
 19.81ns (~29.7 cycles)
1M:
  9.91ns (~14.9 cycles)
 11.20ns (~16.8 cycles)
 22.74ns (~34.1 cycles)
 33.13ns (~49.7 cycles)
2M:
 10.14ns (~15.2 cycles)
 11.88ns (~17.8 cycles)
 60.86ns (~91.3 cycles)
 64.48ns (~96.7 cycles)
4M:
 10.84ns (~16.3 cycles)
 12.67ns (~19.0 cycles)
 71.07ns (~106.6 cycles)
 78.54ns (~117.8 cycles)
6M:
 13.06ns (~19.6 cycles)
 16.53ns (~24.8 cycles)
 99.53ns (~149.3 cycles)
112.87ns (~169.3 cycles)
8M:
 17.26ns (~25.9 cycles)
 19.99ns (~30.0 cycles)
144.49ns (~216.7 cycles)
182.61ns (~273.9 cycles)
16M:
 21.79ns (~32.7 cycles)
 25.37ns (~38.1 cycles)
212.50ns (~318.7 cycles)
228.44ns (~342.7 cycles)
32M:
 22.04ns (~33.1 cycles)
 26.04ns (~39.1 cycles)
216.38ns (~324.6 cycles)
244.64ns (~367.0 cycles)
64M:
 22.06ns (~33.1 cycles)
 25.75ns (~38.6 cycles)
219.83ns (~329.7 cycles)
255.81ns (~383.7 cycles)
128M:
 21.97ns (~33.0 cycles)
 25.89ns (~38.8 cycles)
218.52ns (~327.8 cycles)
265.81ns (~398.7 cycles)
265.81ns (~398.7 cycles)
256M:
 21.95ns (~32.9 cycles)
 25.88ns (~38.8 cycles)
218.85ns (~328.3 cycles)
218.85ns (~328.3 cycles)
Попросили замерить задержки ОЗУ на Эльбрусе-8СВ:
Test-Tlb

 $ make run freq=1.5
gcc -g -Wall -O3 test-tlb.c -o test-tlb -lm -D FREQ="1.5"
for i in 4k 8k 16k 32k 64k 128k 256k 512k 1M 2M 4M 6M 8M 16M 32M 64M 128M 256M ; do echo "$i:"; ./test-tlb -H $i 64; ./test-tlb $i 64 ; ./test-tlb -Hr $i 64; ./test-tlb -r $i 64; done
4k:
  2.01ns (~3.0 cycles)
  2.01ns (~3.0 cycles)
  2.01ns (~3.0 cycles)
  2.01ns (~3.0 cycles)
8k:
  2.01ns (~3.0 cycles)
  2.01ns (~3.0 cycles)
  2.01ns (~3.0 cycles)
  2.01ns (~3.0 cycles)
16k:
  2.01ns (~3.0 cycles)
  2.01ns (~3.0 cycles)
  2.01ns (~3.0 cycles)
  2.01ns (~3.0 cycles)
32k:
  2.01ns (~3.0 cycles)
  2.01ns (~3.0 cycles)
  2.01ns (~3.0 cycles)
  2.01ns (~3.0 cycles)
64k:
  2.02ns (~3.0 cycles)
  2.02ns (~3.0 cycles)
  2.02ns (~3.0 cycles)
  2.02ns (~3.0 cycles)
128k:
  7.40ns (~11.1 cycles)
  7.43ns (~11.1 cycles)
  7.39ns (~11.1 cycles)
  7.45ns (~11.2 cycles)
256k:
  7.41ns (~11.1 cycles)
 10.98ns (~16.5 cycles)
  7.41ns (~11.1 cycles)
 10.00ns (~15.0 cycles)
512k:
  7.89ns (~11.8 cycles)
 16.36ns (~24.5 cycles)
  7.78ns (~11.7 cycles)
 16.29ns (~24.4 cycles)
1M:
 22.19ns (~33.3 cycles)
 21.36ns (~32.0 cycles)
 22.18ns (~33.3 cycles)
 21.46ns (~32.2 cycles)
2M:
 22.18ns (~33.3 cycles)
 22.19ns (~33.3 cycles)
 22.18ns (~33.3 cycles)
 22.20ns (~33.3 cycles)
4M:
 22.19ns (~33.3 cycles)
 24.19ns (~36.3 cycles)
 22.18ns (~33.3 cycles)
 27.09ns (~40.6 cycles)
6M:
 22.21ns (~33.3 cycles)
 28.77ns (~43.2 cycles)
 22.18ns (~33.3 cycles)
 35.63ns (~53.4 cycles)
8M:
 22.18ns (~33.3 cycles)
 31.61ns (~47.4 cycles)
 22.19ns (~33.3 cycles)
 39.64ns (~59.5 cycles)
16M:
 29.33ns (~44.0 cycles)
 69.35ns (~104.0 cycles)
 28.78ns (~43.2 cycles)
 86.74ns (~130.1 cycles)
32M:
108.36ns (~162.5 cycles)
 97.97ns (~147.0 cycles)
124.15ns (~186.2 cycles)
122.47ns (~183.7 cycles)
64M:
108.33ns (~162.5 cycles)
106.03ns (~159.0 cycles)
124.32ns (~186.5 cycles)
136.67ns (~205.0 cycles)
128M:
108.45ns (~162.7 cycles)
108.53ns (~162.8 cycles)
124.69ns (~187.0 cycles)
141.88ns (~212.8 cycles)
256M:
108.42ns (~162.6 cycles)
108.57ns (~162.9 cycles)
125.08ns (~187.6 cycles)
146.06ns (~219.1 cycles)

Да, спасибо. Скорее всего доп. флаги помогли. Да, у меня YouTube 1920p @30 тянул спокойно. Ускорение 3D с Panfrost появилось недавно.

Информация

В рейтинге
Не участвует
Откуда
Казань, Татарстан, Россия
Работает в
Дата рождения
Зарегистрирован
Активность

Специализация

Фулстек разработчик, IoT
Старший
C#
.NET Core
.NET
SQL
Linux
Docker
JavaScript
Проектирование архитектуры приложений