Code Monkey home page Code Monkey logo

Comments (21)

martadinata666 avatar martadinata666 commented on May 28, 2024 2

I mean it already success with removal of aes and lse, success here: running the binary in raspberry pi 4, and removal of +crc and +neon of course will work, as crc32 and neon supported in by pi4 CPU thus I don't have reason to remove it.

[target.aarch64-unknown-linux-gnu]
linker = "aarch64-linux-gnu-gcc"
rustflags = ["-C", "target-feature=+crc,+neon"]

I will let maintainer to decide, to enable the crc and neon rustflags, or let it empty β˜•

from openobserve.

hengfeiyang avatar hengfeiyang commented on May 28, 2024 2

just remove the aes and lse

I will remove these features for the next release.

from openobserve.

martadinata666 avatar martadinata666 commented on May 28, 2024 1

just remove the aes and lse

from openobserve.

hengfeiyang avatar hengfeiyang commented on May 28, 2024 1

@martadinata666 we released new version 0.4.8, i deleted aes and lse, it should work for you.

from openobserve.

hengfeiyang avatar hengfeiyang commented on May 28, 2024

We are running ARM version in our own cluster. and we tested in macOS M1 CPU. it works.

Can you provide some detail of your CPU?

from openobserve.

elraro avatar elraro commented on May 28, 2024

Yes, of course. Sorry, first issue hehe

ubuntu@dalaran:~/dalaran/openobserve$ cat /proc/cpuinfo
processor       : 0
BogoMIPS        : 108.00
Features        : fp asimd evtstrm crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x0
CPU part        : 0xd08
CPU revision    : 3

processor       : 1
BogoMIPS        : 108.00
Features        : fp asimd evtstrm crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x0
CPU part        : 0xd08
CPU revision    : 3

processor       : 2
BogoMIPS        : 108.00
Features        : fp asimd evtstrm crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x0
CPU part        : 0xd08
CPU revision    : 3

processor       : 3
BogoMIPS        : 108.00
Features        : fp asimd evtstrm crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant     : 0x0
CPU part        : 0xd08
CPU revision    : 3

Hardware        : BCM2835
Revision        : d03115
Serial          : 10000000fa965b10
Model           : Raspberry Pi 4 Model B Rev 1.5

It's a Raspberry Pi 4 8GB RAM.

from openobserve.

hengfeiyang avatar hengfeiyang commented on May 28, 2024

Ha, our ARM version build with neon feature of ARM CPU. it looks you cpu doesn't support.

You can find detail here:

https://github.com/openobserve/openobserve/blob/main/.cargo/config.toml

from openobserve.

elraro avatar elraro commented on May 28, 2024

Maybe is wrong the flag?

https://www.baeldung.com/linux/proc-cpuinfo-flags#3-neon

from openobserve.

hengfeiyang avatar hengfeiyang commented on May 28, 2024

Yes, it looks your CPU supports NEON https://en.wikipedia.org/wiki/Raspberry_Pi

But in the cargo file we also enabled other features, maybe doesn't support other features. need to check.

You can run rustc --print target-features to check the features support by your cpu.

from openobserve.

elraro avatar elraro commented on May 28, 2024

Output of rustc --print target-features

ubuntu@dalaran:~$ rustc --print target-features
Features supported by rustc for this target:
    crt-static - Enables C Run-time Libraries to be statically linked.

Code-generation features supported by LLVM for this target:
    Target features listing is not supported by this LLVM version.

Use +feature to enable a feature, or -feature to disable it.
For example, rustc -C target-cpu=mycpu -C target-feature=+feature1,-feature2

Code-generation features cannot be used in cfg or #[target_feature],
and may be renamed or removed in a future version of LLVM or rustc.


from openobserve.

hengfeiyang avatar hengfeiyang commented on May 28, 2024

This is my local machine:

$ rustc --print target-features   
Features supported by rustc for this target:
    aes                                - Enable AES support (FEAT_AES, FEAT_PMULL).
    bf16                               - Enable BFloat16 Extension (FEAT_BF16).
    bti                                - Enable Branch Target Identification (FEAT_BTI).
    crc                                - Enable ARMv8 CRC-32 checksum instructions (FEAT_CRC32).
    dit                                - Enable v8.4-A Data Independent Timing instructions (FEAT_DIT).
    dotprod                            - Enable dot product support (FEAT_DotProd).
    dpb                                - Enable v8.2 data Cache Clean to Point of Persistence (FEAT_DPB).
    dpb2                               - Enable v8.5 Cache Clean to Point of Deep Persistence (FEAT_DPB2).
    f32mm                              - Enable Matrix Multiply FP32 Extension (FEAT_F32MM).
    f64mm                              - Enable Matrix Multiply FP64 Extension (FEAT_F64MM).
    fcma                               - Enable v8.3-A Floating-point complex number support (FEAT_FCMA).
    fhm                                - Enable FP16 FML instructions (FEAT_FHM).
    flagm                              - Enable v8.4-A Flag Manipulation Instructions (FEAT_FlagM).
    fp16                               - Full FP16 (FEAT_FP16).
    frintts                            - Enable FRInt[32|64][Z|X] instructions that round a floating-point number to an integer (in FP format) forcing it to fit into a 32- or 64-bit int (FEAT_FRINTTS).
    i8mm                               - Enable Matrix Multiply Int8 Extension (FEAT_I8MM).
    jsconv                             - Enable v8.3-A JavaScript FP conversion instructions (FEAT_JSCVT).
    lor                                - Enables ARM v8.1 Limited Ordering Regions extension (FEAT_LOR).
    lse                                - Enable ARMv8.1 Large System Extension (LSE) atomic instructions (FEAT_LSE).
    mte                                - Enable Memory Tagging Extension (FEAT_MTE, FEAT_MTE2).
    neon                               - Enable Advanced SIMD instructions (FEAT_AdvSIMD).
    paca                               - Enable v8.3-A Pointer Authentication extension (FEAT_PAuth).
    pacg                               - Enable v8.3-A Pointer Authentication extension (FEAT_PAuth).
    pan                                - Enables ARM v8.1 Privileged Access-Never extension (FEAT_PAN).
    pmuv3                              - Enable Code Generation for ARMv8 PMUv3 Performance Monitors extension (FEAT_PMUv3).
    rand                               - Enable Random Number generation instructions (FEAT_RNG).
    ras                                - Enable ARMv8 Reliability, Availability and Serviceability Extensions (FEAT_RAS, FEAT_RASv1p1).
    rcpc                               - Enable support for RCPC extension (FEAT_LRCPC).
    rcpc2                              - Enable v8.4-A RCPC instructions with Immediate Offsets (FEAT_LRCPC2).
    rdm                                - Enable ARMv8.1 Rounding Double Multiply Add/Subtract instructions (FEAT_RDM).
    sb                                 - Enable v8.5 Speculation Barrier (FEAT_SB).
    sha2                               - Enable SHA1 and SHA256 support (FEAT_SHA1, FEAT_SHA256).
    sha3                               - Enable SHA512 and SHA3 support (FEAT_SHA3, FEAT_SHA512).
    sm4                                - Enable SM3 and SM4 support (FEAT_SM4, FEAT_SM3).
    spe                                - Enable Statistical Profiling extension (FEAT_SPE).
    ssbs                               - Enable Speculative Store Bypass Safe bit (FEAT_SSBS, FEAT_SSBS2).
    sve                                - Enable Scalable Vector Extension (SVE) instructions (FEAT_SVE).
    sve2                               - Enable Scalable Vector Extension 2 (SVE2) instructions (FEAT_SVE2).
    sve2-aes                           - Enable AES SVE2 instructions (FEAT_SVE_AES, FEAT_SVE_PMULL128).
    sve2-bitperm                       - Enable bit permutation SVE2 instructions (FEAT_SVE_BitPerm).
    sve2-sha3                          - Enable SHA3 SVE2 instructions (FEAT_SVE_SHA3).
    sve2-sm4                           - Enable SM4 SVE2 instructions (FEAT_SVE_SM4).
    tme                                - Enable Transactional Memory Extension (FEAT_TME).
    v8.1a                              - Support ARM v8.1a instructions.
    v8.2a                              - Support ARM v8.2a instructions.
    v8.3a                              - Support ARM v8.3a instructions.
    v8.4a                              - Support ARM v8.4a instructions.
    v8.5a                              - Support ARM v8.5a instructions.
    v8.6a                              - Support ARM v8.6a instructions.
    v8.7a                              - Support ARM v8.7a instructions.
    vh                                 - Enables ARM v8.1 Virtual Host extension (FEAT_VHE).
    crt-static                         - Enables C Run-time Libraries to be statically linked.

from openobserve.

elraro avatar elraro commented on May 28, 2024

I will take a look, I don't know if some package are missing or somethink.

Best regards

from openobserve.

elraro avatar elraro commented on May 28, 2024

Hi @hengfeiyang

rust was not installed correctly. Again, output from rustc --print=target-features

Features supported by rustc for this target:
    aes                                - Enable AES support (FEAT_AES, FEAT_PMULL).
    bf16                               - Enable BFloat16 Extension (FEAT_BF16).
    bti                                - Enable Branch Target Identification (FEAT_BTI).
    crc                                - Enable ARMv8 CRC-32 checksum instructions (FEAT_CRC32).
    dit                                - Enable v8.4-A Data Independent Timing instructions (FEAT_DIT).
    dotprod                            - Enable dot product support (FEAT_DotProd).
    dpb                                - Enable v8.2 data Cache Clean to Point of Persistence (FEAT_DPB).
    dpb2                               - Enable v8.5 Cache Clean to Point of Deep Persistence (FEAT_DPB2).
    f32mm                              - Enable Matrix Multiply FP32 Extension (FEAT_F32MM).
    f64mm                              - Enable Matrix Multiply FP64 Extension (FEAT_F64MM).
    fcma                               - Enable v8.3-A Floating-point complex number support (FEAT_FCMA).
    fhm                                - Enable FP16 FML instructions (FEAT_FHM).
    flagm                              - Enable v8.4-A Flag Manipulation Instructions (FEAT_FlagM).
    fp16                               - Full FP16 (FEAT_FP16).
    frintts                            - Enable FRInt[32|64][Z|X] instructions that round a floating-point number to an integer (in FP format) forcing it to fit into a 32- or 64-bit int (FEAT_FRINTTS).
    i8mm                               - Enable Matrix Multiply Int8 Extension (FEAT_I8MM).
    jsconv                             - Enable v8.3-A JavaScript FP conversion instructions (FEAT_JSCVT).
    lor                                - Enables ARM v8.1 Limited Ordering Regions extension (FEAT_LOR).
    lse                                - Enable ARMv8.1 Large System Extension (LSE) atomic instructions (FEAT_LSE).
    mte                                - Enable Memory Tagging Extension (FEAT_MTE, FEAT_MTE2).
    neon                               - Enable Advanced SIMD instructions (FEAT_AdvSIMD).
    paca                               - Enable v8.3-A Pointer Authentication extension (FEAT_PAuth).
    pacg                               - Enable v8.3-A Pointer Authentication extension (FEAT_PAuth).
    pan                                - Enables ARM v8.1 Privileged Access-Never extension (FEAT_PAN).
    pmuv3                              - Enable Code Generation for ARMv8 PMUv3 Performance Monitors extension (FEAT_PMUv3).
    rand                               - Enable Random Number generation instructions (FEAT_RNG).
    ras                                - Enable ARMv8 Reliability, Availability and Serviceability Extensions (FEAT_RAS, FEAT_RASv1p1).
    rcpc                               - Enable support for RCPC extension (FEAT_LRCPC).
    rcpc2                              - Enable v8.4-A RCPC instructions with Immediate Offsets (FEAT_LRCPC2).
    rdm                                - Enable ARMv8.1 Rounding Double Multiply Add/Subtract instructions (FEAT_RDM).
    sb                                 - Enable v8.5 Speculation Barrier (FEAT_SB).
    sha2                               - Enable SHA1 and SHA256 support (FEAT_SHA1, FEAT_SHA256).
    sha3                               - Enable SHA512 and SHA3 support (FEAT_SHA3, FEAT_SHA512).
    sm4                                - Enable SM3 and SM4 support (FEAT_SM4, FEAT_SM3).
    spe                                - Enable Statistical Profiling extension (FEAT_SPE).
    ssbs                               - Enable Speculative Store Bypass Safe bit (FEAT_SSBS, FEAT_SSBS2).
    sve                                - Enable Scalable Vector Extension (SVE) instructions (FEAT_SVE).
    sve2                               - Enable Scalable Vector Extension 2 (SVE2) instructions (FEAT_SVE2).
    sve2-aes                           - Enable AES SVE2 instructions (FEAT_SVE_AES, FEAT_SVE_PMULL128).
    sve2-bitperm                       - Enable bit permutation SVE2 instructions (FEAT_SVE_BitPerm).
    sve2-sha3                          - Enable SHA3 SVE2 instructions (FEAT_SVE_SHA3).
    sve2-sm4                           - Enable SM4 SVE2 instructions (FEAT_SVE_SM4).
    tme                                - Enable Transactional Memory Extension (FEAT_TME).
    v8.1a                              - Support ARM v8.1a instructions.
    v8.2a                              - Support ARM v8.2a instructions.
    v8.3a                              - Support ARM v8.3a instructions.
    v8.4a                              - Support ARM v8.4a instructions.
    v8.5a                              - Support ARM v8.5a instructions.
    v8.6a                              - Support ARM v8.6a instructions.
    v8.7a                              - Support ARM v8.7a instructions.
    vh                                 - Enables ARM v8.1 Virtual Host extension (FEAT_VHE).
    crt-static                         - Enables C Run-time Libraries to be statically linked.

Code-generation features supported by LLVM for this target:
    CONTEXTIDREL2                      - Enable RW operand CONTEXTIDR_EL2.
    a35                                - Cortex-A35 ARM processors.
    a510                               - Cortex-A510 ARM processors.
    a53                                - Cortex-A53 ARM processors.
    a55                                - Cortex-A55 ARM processors.
    a57                                - Cortex-A57 ARM processors.
    a64fx                              - Fujitsu A64FX processors.
    a65                                - Cortex-A65 ARM processors.
    a710                               - Cortex-A710 ARM processors.
    a715                               - Cortex-A715 ARM processors.
    a72                                - Cortex-A72 ARM processors.
    a73                                - Cortex-A73 ARM processors.
    a75                                - Cortex-A75 ARM processors.
    a76                                - Cortex-A76 ARM processors.
    a77                                - Cortex-A77 ARM processors.
    a78                                - Cortex-A78 ARM processors.
    a78c                               - Cortex-A78C ARM processors.
    aggressive-fma                     - Enable Aggressive FMA for floating-point..
    all                                - Enable all instructions.
    alternate-sextload-cvt-f32-pattern - Use alternative pattern for sextload convert to f32.
    altnzcv                            - Enable alternative NZCV format for floating point comparisons (FEAT_FlagM2).
    am                                 - Enable v8.4-A Activity Monitors extension (FEAT_AMUv1).
    ampere1                            - Ampere Computing Ampere-1 processors.
    ampere1a                           - Ampere Computing Ampere-1A processors.
    amvs                               - Enable v8.6-A Activity Monitors Virtualization support (FEAT_AMUv1p1).
    apple-a10                          - Apple A10.
    apple-a11                          - Apple A11.
    apple-a12                          - Apple A12.
    apple-a13                          - Apple A13.
    apple-a14                          - Apple A14.
    apple-a15                          - Apple A15.
    apple-a16                          - Apple A16.
    apple-a7                           - Apple A7 (the CPU formerly known as Cyclone).
    apple-a7-sysreg                    - Apple A7 (the CPU formerly known as Cyclone).
    arith-bcc-fusion                   - CPU fuses arithmetic+bcc operations.
    arith-cbz-fusion                   - CPU fuses arithmetic + cbz/cbnz operations.
    ascend-store-address               - Schedule vector stores by ascending address.
    b16b16                             - Enable SVE2.1 or SME2.1 non-widening BFloat16 to BFloat16 instructions (FEAT_B16B16).
    balance-fp-ops                     - balance mix of odd and even D-registers for fp multiply(-accumulate) ops.
    brbe                               - Enable Branch Record Buffer Extension (FEAT_BRBE).
    call-saved-x10                     - Make X10 callee saved..
    call-saved-x11                     - Make X11 callee saved..
    call-saved-x12                     - Make X12 callee saved..
    call-saved-x13                     - Make X13 callee saved..
    call-saved-x14                     - Make X14 callee saved..
    call-saved-x15                     - Make X15 callee saved..
    call-saved-x18                     - Make X18 callee saved..
    call-saved-x8                      - Make X8 callee saved..
    call-saved-x9                      - Make X9 callee saved..
    carmel                             - Nvidia Carmel processors.
    ccidx                              - Enable v8.3-A Extend of the CCSIDR number of sets (FEAT_CCIDX).
    clrbhb                             - Enable Clear BHB instruction (FEAT_CLRBHB).
    cmp-bcc-fusion                     - CPU fuses cmp+bcc operations.
    cortex-r82                         - Cortex-R82 ARM processors.
    cortex-x1                          - Cortex-X1 ARM processors.
    cortex-x2                          - Cortex-X2 ARM processors.
    cortex-x3                          - Cortex-X3 ARM processors.
    crypto                             - Enable cryptographic instructions.
    cssc                               - Enable Common Short Sequence Compression (CSSC) instructions (FEAT_CSSC).
    custom-cheap-as-move               - Use custom handling of cheap instructions.
    d128                               - Enable Armv9.4-A 128-bit Page Table Descriptors, System Registers and Instructions (FEAT_D128, FEAT_LVA3, FEAT_SYSREG128, FEAT_SYSINSTR128).
    disable-latency-sched-heuristic    - Disable latency scheduling heuristic.
    ecv                                - Enable enhanced counter virtualization extension (FEAT_ECV).
    el2vmsa                            - Enable Exception Level 2 Virtual Memory System Architecture.
    el3                                - Enable Exception Level 3.
    enable-select-opt                  - Enable the select optimize pass for select loop heuristics.
    ete                                - Enable Embedded Trace Extension (FEAT_ETE).
    exynos-cheap-as-move               - Use Exynos specific handling of cheap instructions.
    exynosm3                           - Samsung Exynos-M3 processors.
    exynosm4                           - Samsung Exynos-M4 processors.
    falkor                             - Qualcomm Falkor processors.
    fgt                                - Enable fine grained virtualization traps extension (FEAT_FGT).
    fix-cortex-a53-835769              - Mitigate Cortex-A53 Erratum 835769.
    fmv                                - Enable Function Multi Versioning support..
    force-32bit-jump-tables            - Force jump table entries to be 32-bits wide except at MinSize.
    fp-armv8                           - Enable ARMv8 FP (FEAT_FP).
    fuse-address                       - CPU fuses address generation and memory operations.
    fuse-adrp-add                      - CPU fuses adrp+add operations.
    fuse-aes                           - CPU fuses AES crypto operations.
    fuse-arith-logic                   - CPU fuses arithmetic and logic operations.
    fuse-crypto-eor                    - CPU fuses AES/PMULL and EOR operations.
    fuse-csel                          - CPU fuses conditional select operations.
    fuse-literals                      - CPU fuses literal generation operations.
    harden-sls-blr                     - Harden against straight line speculation across BLR instructions.
    harden-sls-nocomdat                - Generate thunk code for SLS mitigation in the normal text section.
    harden-sls-retbr                   - Harden against straight line speculation across RET and BR instructions.
    hbc                                - Enable Armv8.8-A Hinted Conditional Branches Extension (FEAT_HBC).
    hcx                                - Enable Armv8.7-A HCRX_EL2 system register (FEAT_HCX).
    ite                                - Enable Armv9.4-A Instrumentation Extension FEAT_ITE.
    kryo                               - Qualcomm Kryo processors.
    ls64                               - Enable Armv8.7-A LD64B/ST64B Accelerator Extension (FEAT_LS64, FEAT_LS64_V, FEAT_LS64_ACCDATA).
    lse128                             - Enable Armv9.4-A 128-bit Atomic Instructions (FEAT_LSE128).
    lse2                               - Enable ARMv8.4 Large System Extension 2 (LSE2) atomicity rules (FEAT_LSE2).
    lsl-fast                           - CPU has a fastpath logical shift of up to 3 places.
    mec                                - Enable Memory Encryption Contexts Extension.
    mops                               - Enable Armv8.8-A memcpy and memset acceleration instructions (FEAT_MOPS).
    mpam                               - Enable v8.4-A Memory system Partitioning and Monitoring extension (FEAT_MPAM).
    neoverse512tvb                     - Neoverse 512-TVB ARM processors.
    neoversee1                         - Neoverse E1 ARM processors.
    neoversen1                         - Neoverse N1 ARM processors.
    neoversen2                         - Neoverse N2 ARM processors.
    neoversev1                         - Neoverse V1 ARM processors.
    neoversev2                         - Neoverse V2 ARM processors.
    nmi                                - Enable Armv8.8-A Non-maskable Interrupts (FEAT_NMI, FEAT_GICv3_NMI).
    no-bti-at-return-twice             - Don't place a BTI instruction after a return-twice.
    no-neg-immediates                  - Convert immediates and instructions to their negated or complemented equivalent when the immediate does not fit in the encoding..
    no-zcz-fp                          - Has no zero-cycle zeroing instructions for FP registers.
    nv                                 - Enable v8.4-A Nested Virtualization Enchancement (FEAT_NV, FEAT_NV2).
    outline-atomics                    - Enable out of line atomics to support LSE instructions.
    pan-rwv                            - Enable v8.2 PAN s1e1R and s1e1W Variants (FEAT_PAN2).
    predictable-select-expensive       - Prefer likely predicted branches over selects.
    predres                            - Enable v8.5a execution and data prediction invalidation instructions (FEAT_SPECRES).
    prfm-slc-target                    - Enable SLC target for PRFM instruction.
    rasv2                              - Enable ARMv8.9-A Reliability, Availability and Serviceability Extensions (FEAT_RASv2).
    rcpc3                              - Enable Armv8.9-A RCPC instructions for A64 and Advanced SIMD and floating-point instruction set (FEAT_LRCPC3).
    reserve-x1                         - Reserve X1, making it unavailable as a GPR.
    reserve-x10                        - Reserve X10, making it unavailable as a GPR.
    reserve-x11                        - Reserve X11, making it unavailable as a GPR.
    reserve-x12                        - Reserve X12, making it unavailable as a GPR.
    reserve-x13                        - Reserve X13, making it unavailable as a GPR.
    reserve-x14                        - Reserve X14, making it unavailable as a GPR.
    reserve-x15                        - Reserve X15, making it unavailable as a GPR.
    reserve-x18                        - Reserve X18, making it unavailable as a GPR.
    reserve-x2                         - Reserve X2, making it unavailable as a GPR.
    reserve-x20                        - Reserve X20, making it unavailable as a GPR.
    reserve-x21                        - Reserve X21, making it unavailable as a GPR.
    reserve-x22                        - Reserve X22, making it unavailable as a GPR.
    reserve-x23                        - Reserve X23, making it unavailable as a GPR.
    reserve-x24                        - Reserve X24, making it unavailable as a GPR.
    reserve-x25                        - Reserve X25, making it unavailable as a GPR.
    reserve-x26                        - Reserve X26, making it unavailable as a GPR.
    reserve-x27                        - Reserve X27, making it unavailable as a GPR.
    reserve-x28                        - Reserve X28, making it unavailable as a GPR.
    reserve-x3                         - Reserve X3, making it unavailable as a GPR.
    reserve-x30                        - Reserve X30, making it unavailable as a GPR.
    reserve-x4                         - Reserve X4, making it unavailable as a GPR.
    reserve-x5                         - Reserve X5, making it unavailable as a GPR.
    reserve-x6                         - Reserve X6, making it unavailable as a GPR.
    reserve-x7                         - Reserve X7, making it unavailable as a GPR.
    reserve-x9                         - Reserve X9, making it unavailable as a GPR.
    rme                                - Enable Realm Management Extension (FEAT_RME).
    saphira                            - Qualcomm Saphira processors.
    sel2                               - Enable v8.4-A Secure Exception Level 2 extension (FEAT_SEL2).
    slow-misaligned-128store           - Misaligned 128 bit stores are slow.
    slow-paired-128                    - Paired 128 bit loads and stores are slow.
    slow-strqro-store                  - STR of Q register with register offset is slow.
    sme                                - Enable Scalable Matrix Extension (SME) (FEAT_SME).
    sme-f16f16                         - Enable SME2.1 non-widening Float16 instructions (FEAT_SME_F16F16).
    sme-f64f64                         - Enable Scalable Matrix Extension (SME) F64F64 instructions (FEAT_SME_F64F64).
    sme-i16i64                         - Enable Scalable Matrix Extension (SME) I16I64 instructions (FEAT_SME_I16I64).
    sme2                               - Enable Scalable Matrix Extension 2 (SME2) instructions.
    sme2p1                             - Enable Scalable Matrix Extension 2.1 (FEAT_SME2p1) instructions.
    spe-eef                            - Enable extra register in the Statistical Profiling Extension (FEAT_SPEv1p2).
    specres2                           - Enable Speculation Restriction Instruction (FEAT_SPECRES2).
    specrestrict                       - Enable architectural speculation restriction (FEAT_CSV2_2).
    strict-align                       - Disallow all unaligned memory access.
    sve2p1                             - Enable Scalable Vector Extension 2.1 instructions.
    tagged-globals                     - Use an instruction sequence for taking the address of a global that allows a memory tag in the upper address bits.
    the                                - Enable Armv8.9-A Translation Hardening Extension (FEAT_THE).
    thunderx                           - Cavium ThunderX processors.
    thunderx2t99                       - Cavium ThunderX2 processors.
    thunderx3t110                      - Marvell ThunderX3 processors.
    thunderxt81                        - Cavium ThunderX processors.
    thunderxt83                        - Cavium ThunderX processors.
    thunderxt88                        - Cavium ThunderX processors.
    tlb-rmi                            - Enable v8.4-A TLB Range and Maintenance Instructions (FEAT_TLBIOS, FEAT_TLBIRANGE).
    tpidr-el1                          - Permit use of TPIDR_EL1 for the TLS base.
    tpidr-el2                          - Permit use of TPIDR_EL2 for the TLS base.
    tpidr-el3                          - Permit use of TPIDR_EL3 for the TLS base.
    tracev8.4                          - Enable v8.4-A Trace extension (FEAT_TRF).
    trbe                               - Enable Trace Buffer Extension (FEAT_TRBE).
    tsv110                             - HiSilicon TS-V110 processors.
    uaops                              - Enable v8.2 UAO PState (FEAT_UAO).
    use-experimental-zeroing-pseudos   - Hint to the compiler that the MOVPRFX instruction is merged with destructive operations.
    use-postra-scheduler               - Schedule again after register allocation.
    use-reciprocal-square-root         - Use the reciprocal square root approximation.
    use-scalar-inc-vl                  - Prefer inc/dec over add+cnt.
    v8.8a                              - Support ARM v8.8a instructions.
    v8.9a                              - Support ARM v8.9a instructions.
    v8a                                - Support ARM v8.0a instructions.
    v8r                                - Support ARM v8r instructions.
    v9.1a                              - Support ARM v9.1a instructions.
    v9.2a                              - Support ARM v9.2a instructions.
    v9.3a                              - Support ARM v9.3a instructions.
    v9.4a                              - Support ARM v9.4a instructions.
    v9a                                - Support ARM v9a instructions.
    wfxt                               - Enable Armv8.7-A WFET and WFIT instruction (FEAT_WFxT).
    xs                                 - Enable Armv8.7-A limited-TLB-maintenance instruction (FEAT_XS).
    zcm                                - Has zero-cycle register moves.
    zcz                                - Has zero-cycle zeroing instructions.
    zcz-fp-workaround                  - The zero-cycle floating-point zeroing instruction has a bug.
    zcz-gp                             - Has zero-cycle zeroing instructions for generic registers.

Use +feature to enable a feature, or -feature to disable it.
For example, rustc -C target-cpu=mycpu -C target-feature=+feature1,-feature2

Code-generation features cannot be used in cfg or #[target_feature],
and may be renamed or removed in a future version of LLVM or rustc.

from openobserve.

hengfeiyang avatar hengfeiyang commented on May 28, 2024

So, looks it supports every feature we used. but there is no log.

Can you help to build it on Raspberry for test? I have no RaspberryπŸ˜‚

from openobserve.

martadinata666 avatar martadinata666 commented on May 28, 2024

That is feature for the target not the capacity of CPU itself. I manually download the binary and run openobserve and it throws illegal instruction, so this is a CPU feature not supported. Thus I'm checking raspberry pi CPU instruction support, results:

ubuntu@rpi4:~/docker/openobserve $ sudo isa-info
Instruction sets:
	ARM v8.1 atomics: no
	ARM v8.1 SQRDMLxH: no
	ARM v8.2 FP16 arithmetics: no
	ARM v8.3 dot product: no
	ARM v8.3 JS conversion: no
	ARM v8.3 complex: no
Cryptography extensions:
	AES: no
	SHA1: no
	SHA2: no
	PMULL: no
	CRC32: yes

Looking on the .cargo features definition


[target.aarch64-unknown-linux-gnu]
linker = "aarch64-linux-gnu-gcc"
rustflags = ["-C", "target-feature=+aes,+crc,+lse,+neon"]

When AES definitely not supported on raspberry pi, im not really sure about the other instructions crc lse neon, but I will make sure by rebuilding binary β˜•

from openobserve.

hengfeiyang avatar hengfeiyang commented on May 28, 2024

Thanks, after you build succeed, please give us some information, let's try to improve the build progress.

from openobserve.

elraro avatar elraro commented on May 28, 2024

Hi.

The problem is the ldadd instruction.

imagen

https://developer.arm.com/documentation/dui0801/g/A64-Data-Transfer-Instructions/LDADDA--LDADDAL--LDADD--LDADDL--LDADDAL--LDADD--LDADDL

ldadd instruction is supported in version 8.1 and superior.

The correct Raspberry Pi 4 CPU is Quad-core Cortex-A72 (ARM v8) 64-bit SoC @ 1.5 GHz. https://www.raspberrypi.com/documentation/computers/processors.html#bcm2711 which is ARM v8.0 -> https://en.wikipedia.org/wiki/Comparison_of_ARM_processors#ARMv8-A

Apple M1 is arm 8.5 -> https://en.wikipedia.org/wiki/Apple_M1 Instruction set ARMv8.5-A[5]

On which platform are you compiling it? @hengfeiyang

Thank you @skgsergio @MrMarble for your help

from openobserve.

martadinata666 avatar martadinata666 commented on May 28, 2024

The only succed binary is when compiled without aes and lse, crc is supported, and also neon even it not listed on the cpu instuctions check command.

from openobserve.

hengfeiyang avatar hengfeiyang commented on May 28, 2024

So, you can build success only with feature crc, actually, you can delete all features like this:

[target.aarch64-unknown-linux-gnu]
linker = "aarch64-linux-gnu-gcc"
rustflags = []

Try to build again?

from openobserve.

elraro avatar elraro commented on May 28, 2024

@martadinata666 AArch64 represents the state of the ARMv8-A architecture, so the target must be Armv8.0-A.

What is the rust flag to compile to that target?

Additionally @hengfeiyang , you could compile it for the ARM M1 and its optimisations, but I understand it would have to be a separate package.

from openobserve.

martadinata666 avatar martadinata666 commented on May 28, 2024

confirmed working here β˜•

from openobserve.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.