? ??? ?? Ampere Computing? ?? ???????
? ??? Ampere ????? ?????? ??? ????? ?? GCC (GNU Compiler Collection) ??? ????? ???? ??? ?? ?????.
??????? ?????? ? ? ??? ???? ??? ????? ? ???????. ???? ???? ??? ?????. ?? ???? ??? ???? ??? ??? ???? ??? ???? ??? ?? ??? ???? ???? ??? ??? ?? ? ? ????. ???? ??? ??? ??? ??? ???? ??? ??? ???? ? ?? ??? ?? ??, ?? ???? ???? ? ?? ?? ??? ?? ????? ????! ? ?? ??? ??? ?? ????? ??? ????? ??? ?? ???? ????? ?? ?? ???? ??? ??? ? ??? ????. ???? ?? ?? ??? ?? ??? ?????
?? ??? ???? ?? ?? ????? ??? ???? ??? ??? ??? ?? ??? ?? ? ???? ??????. Ampere Altra ?? ?????? ?? ?? ???? ? ? 10 ?? ?? ?? ??? ?? ???? ??? ???? ?? ?? ? ?? ???? ?????. Ampere Altra ??? ????? ??????? ?? ?? ???? ??? ?? ?? ??? ???? ????? ????? ????? ??? ?????.
? ??? ?? ??? ??? ?? ????? ?? ??? ????? ?? ??? ?? ?? ???? GCC ??? ?????. ?? ?? ??? GCC ??? ???? ?? ?? ??? ???? VP9 ??? ??? ?????? ?? ? Ampere ???? ? MySQL ??????? ??? ??????. Ampere ?????? ???? ?? ?????? ????? ?? ??? ??? ????? ???????.
GCC ?? ??
GCC ????? ?????? ??? ???? ??? ?? ??? ?????. ??? ??? GCC ? ???? ??????. Ampere ?????? ?? ??? ?? ?? ??? ???? ??? ????? GCC -MCPU ??? ??????.
GCC -MCPU ??? ????? CPU ??? ????? GCC? GCC? -mcpu = aviL?? ???? ???? ???? CPU ??? ????? ??????. ??? x86 ?? ???? ?? GCC -MCPU? -mtune? ?? ?? ?? ????? GCC -MCPU? ARM ?? ????? ??? ?????. ??? ??? ???? ??? ???? ???? ?? ARM ???? ??????.
????, ??? ??? -mcpu ? ???? ARM? ??? ? ? -march ? -mtune? ?????. ??? VP9 ??? ??? ?????? GCC -MCPU ??? ???? ?? ??? ???? ?? ?????.
-MCPU ?? ?? :
-
-mcpu = ampere1 : Ampeereone ?????? ???? ??? ?????. Ampereone? Ampere? ??? ???? ???? ?????, ??? ???? ???? ??? ??? ?? ?? ?? ?????. ??? Ampere Altra ? Altra Max ?????? ???? ?? ??? ?? ? ? ????. ? ??? ??? GCC ?? 12.1 ???? ?? ? ?? GCC 10.5 ? GCC 11.3?? ? ??????.
-mcpu = neovse-n1 : Ampere altra, Ampere altra Max ? Ampere Ampereone?? ???? ??? ?????. Ampere Ampereone?? ???? ?? ?? ??? ???? ?? ????? ?? ??? ?? ??? ?? ??? ????? ????. Ampere Altra ? Ampere Altra Max ????? ?? CPU ?? ??? ?????? GCC ?? 9.1 ??? ?????.
-
-mcpu = ???? : ?? ?? CPU GCC? ???? CPU ??? ?????. Ampere Altra ? Ampere Altra Max ????? ?? CPU ?? ??? ?????? GCC ?? 9.1 ??? ?????.
-
-mcpu = Native? ???? ????? ? ??? ?? ??, ?? ????? ?? ?? ??? ?? ????? ???? ?? ??? ? ??? ????. Ampere Ampereone ?????? ??? ?? ? ??, ?? ? ???? AMPERE AMPEREONE ?????? ???? ARMV8.6 ??? ??? ? ?? ??? ??? ??? Altra ?? Altra Max ?????? ???? ?? ? ????. ??? Ampere Altra ?? Altra Max ?????? ?? ? ?? GCC? Ampere Ampereone ?????? ?? ??? ?? ?? ?? ??? ???? ????. ?? ?? ??? ?? ????? ?? ??? ??? ? ???? ?????.
?? ??? Ampere ???? -MCPU ?? ???? GCC ??? ?? ????.
????
-mcpu ?
gcc 9
gcc 10
gcc 11
gcc 12
gcc 13
|
??? ???
Neoverse-n1
≥ 9.1
??
??
??
??
??? ??? ??
Neoverse-n1
≥ 9.1
??
??
??
??
???
??? 1
N/A
≥ 10.5
≥ 11.3
≥ 12.1
??
??? ?? ??? ??? ??? ??? ?? ?? gcc -mcpu ??? ???? ???? (-mcpu = ampere1, -mcpu = neovse -n1 ?? -mcpu = avati). ??? ?? ? ?? ?? ??? ???? ?? ??? ????? ??.
?? GCC ?? ?? :
|
Ampere ????? ?? ? ? ???? ?? ?? ? ???? ?????? -MCPU? ?????. (??? ???“-mcpu ?? ??”??? ??????.)
|
-o2? ?? GCC ??? ??? ???? ?? GCC ??? ???? ?? ???? ????? ????.
-o3? ??? ???? ???? ??? ???? ?? ?? ???? ???? ?? ???? ??? ??? ???? ??? ?? ???? ? ?????.
???? ??? ??? (PGO) : -fprofile -generate & -fprofile -use. ????? ???, ?? ??? ? ?? ??? ?? ???? ?? ? ?? ??? ?? ??? ???? ???? ?????. ?? ?? ???? ??????? ?? ???? ????? (?? ??).
?? ?? ??? (LTO) : -flto. ????? ?? ?? ???? ??? ? ? ??? ?? ?? ???? ??????. ?? ?? ?? ???? ??? ??? ?? ??? ?? ?? ??? ?? ? ? ????. ?? ?? ?? ???? ???? ?? ???? ???????. ? ??? ?? ?? ??? ???? ??? ?? ????? ?? ?? ? ? ????. ?? ?? ?? ????? LTO? ???? ?? ??? ?? ? ????.
GCC -MCPU ? ???
-mcpu = avatiel ? libvpx ??? ????? ??
?? ?? ??? ??? ??? CPU ??? ?? ?????? Linux Perf? ??? ???? ?? vpx_convolve8_horiz_neon ? vpx_convolve8_vert_neon? ?????. Libvpx git ???? ??? ??? ARMV8.6-A USDOT (Mixed-Sign Dot-Product) ???? ???? ARM? ?? ??????? ?????. vpx_convolve8_horiz_neon? ?? ? CPU ???? GCC -MCPU = ??? ???? 6.07E 11?? 2.52E 11?? ???? Ampere Altra ?????? DOT ?? ???? ?????? CPU ???? 2.4X? ??? ?????.
vpx_convolve8_vert_neon? ??, CPU ???? 2.46E 11?? 2.07E 11?? ???? 16% ??????.
?????, -MCPU = NATIVE? ???? DOT ?? ??? ????? ?? ???? ???? ???? Ampere Altra ?????? Fired_videos_Sports_SPORTS_SPORTS_SPORTS_SPORTS_SPORTS_1080P_SPORTS_1080P -0063.MKV ??? ??? ?????. ?? ?? CPU ??? ? ??? ???? ?? Perf Record ? Perf Report ????? ???? ?? ? ???? ?????.
?? ??
??
??? (%)
???
?? (%)
??
?? ??
vpx_convolve8_horiz_neon
8.72
6.07E 11
7.52
1.13E 12
vpx_convolve8_vert_neon
3.53
2.46 E11
2.51
3.78E 11
?? ?? ????
100
6.97e 10
100
1.48E 11
-mcpu = ????
vpx_convolve8_horiz_neon
3.89
2.52E 11
3.87
5.71E 11
vpx_convolve8_vert_neon
3.19
2.07 E11
3.29
4.86E 11
?? ?? ????
100
6.48E 10
100
1.48E 11
GCC ???? ??? ???
? ????? GCC? ??? ??? ??? (PGO)? ?? ??? PGO? ???? MySQL? ????? ?? ??? ?????. ???? ??? ???? ?? GCC? ?? ???, ?? ?? ?? ??, ?? ?? ? ?? Unrolling, ?? ?? ? ???? ?? ???? ???? ? ?? ??? ??? ?? ? ????. PGO? ???? ?? ??? ????? 3 ???? ??? ??? ???????.
???? ??? ???, GCC -Fprofile -Generate? ???? ?? ????? ??????.
|
???? ???? ???? ?? ?? ?????? ?? ????? ?????.
???? ???, gcc -fprofile -use? ???? ?? ????? ???????
|
PGO? ???? ??? ?? 2 ???? ?? ??? ?? ?????. GCC -fprofile -Generate? ?? ? ?? ????? ???? ??? ??? ??? ?? ???? ???? ????? ???? ?? ????? ?? ? ????. GCC Manual? ???? ?? ?? ?? ??? ???? ??? ???? ???? ?? ????? ???? ?? ?? ??? ?? ?? ? ??? ??? ???? ????? ???? ???? ???? ??? ??????.
GCC ???? ?? ??? -fprofile-update = Atomic? ?? ??? ??????? ???? ?? ? ???? ???? ???? ??? ???? ? ????.
PGO? ?? ??? ??
PGO? ???? GCC? ?? ?? ??? ???? ?? ?? ?? ??? ??? ?? ?? ??? ???? ?? ????? ? ? ??? ? ? ????. PGO? ??? ????? ? ???? ? ??? ??????. PGO? ??? ??? ?? ????? ?? ????? ???? ?? ??? PERP ????? ???? CPU? ?? ???? ?? (PMU) ??? BR_MIS_PRED_RETIED? ?? ? ????. ?? ?? ?? ??? ??? ?? ??? ?? ??? ????, ?? Stall_Frontend PMU ???? ?? ? ? ????. L2 ?? ?? ?? ??? ?? ?? ????? PGO? ????? ? ???, ??? ?? ?? ? ??? ????? ? ????. ????, ?? ??? ?? ??, CPU ??? ?? ?? ? L2 ?? ?? ??? PGO? ??? ???? ??? ?? ?????.
MySQL ?????? GCC PGO ?? ??
MySQL? ???? ?? ???? ?? ?? ???????? ??? MySQL ???? ??? ?? GCC PGO ???? ????? ???? ?????. PGO ??? ??? GCC? ?? ? ?? ?? ?? ??? ???? ???? ?? ??????. PGO? ???? Ampere Altra Max ????? L2 ?? ?? ?? ?? ? CPU ??? ?? ??.
GCC PGO? ???? MySQL? ????? ??? ?????
Sysbench? MySQL ?? ? ???? ? ???????
GCC PGO? MySQL MTR (MySQL-Test-Run) ??? ??? ? ???? ??? ?????.
sysbench? oltp_point_select ? oltp_read_only ???? ???? ?? ?? ? ???? PGO ??? ??? ??????.
?? ? ???? ?? 1?? 1024? ???? OLTP_Point_Select? ?? ??? 29%, Ampere Altra Max M128-30 ?????? OLTP_READ_ONLY ???? ?? 20%? ?? ?????.
64 ?? ???? ???? PGO? MySQL? ???? ???? ??? 32% ?? ?????.
?? ?? ??? MySQL ?? ???? Ampere Developer ? ????? ?? ? ????.
??
?????? ?????? ?? ? ???? ?? ???? ?? ??? ??? ???????. ? ??? Ampere ?????? ???? ??? ??????? ???? ?? ??? GCC ???? ???? ?? ?? ??? ?????. Ampere Cloud Native ????? ???? ?? ??? ???? ??? ???? ?? ?? ???? -mcpu ??? ???? ?? ?????. MySQL ?????? ? VP9 ??? ???? ? ?? ?? ??? ??? ??? ?? ??? ?? ????? ????? ?? GCC ??? ???? ?? ?????.?? ??? ???? ???? ?? ?? ? Ampere? ??? ???? ???? ????? ???? ???? ?? ??? ???, ??? ?? ? ? ?? ???? ?????. ??? ??? ??? ?? ? ?? ??? Developer.amperecomputing.com?? ?? ??? ?? Community.amperecomputing.com?? ??? ????? ?????.
|
|
? ??? Ampere ??????? GCC ???? ?? ?????. ??? ??? PHP ??? ????? ?? ?? ??? ?????!