Hi, all.
I have a question about utilizing CPU features on Jetson AGX Orin.
My development environment is as follows:
- Jetson AGX Orin Development Kit(32GB)
- Flashed with the lastest Jetpack release r35.4.1
The problem occurs when I tried to compile my source code using gcc-11 with -march=native
compile option. I know that official supported gcc version stays on 9, but I need to build a project which contains c++20
features.
While building my project, compilation errors printed as below:
[build] Assembler messages:
[build] Error: unknown architectural extension 'flagm'
[build] Error: unrecognized option -march=armv8.2-a+crypto+fp16+rcpc+dotprod+flagm
I have never experienced until the -march=native
option is given, so started to investigate which compile options are provided via the keyword native
for both gcc-9
and gcc-11
.
$ /usr/bin/gcc-11 -Q -march=native --help=target
The following options are target specific:
-mabi= lp64
-march= armv8.2-a+crypto+fp16+rcpc+dotprod+flagm
-mbig-endian [disabled]
-mbionic [disabled]
...
Assembler messages:
Error: unknown architectural extension 'flagm'
Error: unrecognized option -march=armv8.2-a+crypto+fp16+rcpc+dotprod+flagm
$ /usr/bin/gcc-9 -Q -march=native --help=target
The following options are target specific:
-mabi= lp64
-march= armv8-a
-mbig-endian [disabled]
-mbionic [disabled]
...
(no error messages)
The output messages indicate that error generated from the compile option flagm
that came from cpu features. As far as I know, gcc-9
does not support cortex A87ae(I found this information at here) optimization options while gcc-11
has optimization features for my Jetson device.
It seems to be gcc-11
found all the cpu features and get them into native
. (I am not familiar with this level, so it might be wrong guess). The features are listed like,
$ cat /proc/cpuinfo
processor : 0
model name : ARMv8 Processor rev 1 (v8l)
BogoMIPS : 62.50
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp uscat ilrcpc flagm
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd42
CPU revision : 1
...
Also, I was able to find this flagm
instruction on official Arm document. For my understanding, the project should be built since the compiler supports optimization options for Arm cortex a87ae.
I really cannot understand why gcc-11
complaining about flagm
.
Any possible reasons?