Menu

7-Zip for ARM64

2020-08-09
2024-04-18
1 2 3 > >> (Page 1 of 3)
  • Igor Pavlov

    Igor Pavlov - 2020-08-09

    7-Zip 21.00 alpha for ARM64/ARM was released.

    7-Zip for 64-bit Windows ARM64:
    https://7-zip.org/a/7z2100-arm64.exe

    7-Zip for 32-bit Windows ARM:
    https://7-zip.org/a/7z2100-arm.exe

    If you have a computer with Windows on ARM, please try to install both versions: 7-Zip for ARM and 7-Zip for ARM64.

    Please write here at forum your reports how 7-Zip for ARM/ARM64 is working.

    7-Zip testing

    Aslo you can run benchmark commands that test main code of 7-Zip:

    7z b -mmt=* -bt > c:\res\b.txt
    7z b -mmt=* -bt -slp >> c:\res\b.txt
    7z b -mm=* -mmt=* -bt >> c:\res\b.txt
    

    You must create some folder c:\res for text files with results.

    Also you can install x86 and x64 versions of 7-Zip 21.00 alpha to arm system to get all results: arm64, arm, x86, x64.
    Please create zip or 7z archive from txt file results, and attach archive here at forum.

    Latest version 7-Zip 21.00 alpha contains optimized code for CRC-32 calculation with ARM hardware instructions. You can see the speed of that code in lines CRC32:32 and CRC32:64 in benchmark log files.

     

    Last edit: Igor Pavlov 2021-01-19
    • HITCHER

      HITCHER - 2020-08-13

      I have raspberry pi 4, 4GB, and no windows installed, but ubuntu 18.04.5 LTS aarch64.
      With wine 3.6, your arm32 binary runs, but 64 bit version does not. Maybe kernel has wrong config, or wine 3.6 64bit has some problem with this. Anyhow, here are the results of 32 bit:

       
      • Igor Pavlov

        Igor Pavlov - 2020-08-13

        What is page size of that ubuntu 18.04.5 LTS aarch64 on raspberry pi 4?

         
        • HITCHER

          HITCHER - 2020-08-13

          "getconf PAGESIZE"
          says 4kB

          "cd /proc/1
          grep -i pagesize smaps

          KernelPageSize: 4 kB
          MMUPageSize: 4 kB"

           
          • Igor Pavlov

            Igor Pavlov - 2020-08-13

            Thanks.
            I just noted that your Linux-Win results ar better than results of native windows 10 on raspberry pi 4.

            About arm64 on Wine problem.
            Can it run any other arm64 binary (not 7-Zip) there?
            Is it problem of 7-Zip arm64 or the problem for all arm64 programs?

             

            Last edit: Igor Pavlov 2020-08-13
            • HITCHER

              HITCHER - 2020-08-13

              I think it ist problem of wine64 ver.3.6 on arm64.
              I only can open some programs that came with wine64, like cmd.exe, notepad.exe, taskmgr.exe which list as 64bit arm files with linux file info tool.
              Maybe i try later on ubuntu 20.04 for arm64, with newer version of wine.

               
            • HITCHER

              HITCHER - 2020-08-14

              Tried now ubuntu 20.04 arm64 on raspberry pi4, but wine did not work either auf of the box.

              Nevertheless, raspberry pi4 4GB did overclock flawlessly to 2 GHz (from 1,5), and i got some results from 7za 16.02.
              Maybe it would be better for linux, if 7za would be updated to ver.20, so no wine is needed, which is a whole problem of its own.

               

              Last edit: HITCHER 2020-08-15
              • Igor Pavlov

                Igor Pavlov - 2020-08-14

                Yes, I plan to work for linux version of 7-Zip more in near future.
                BTW, If you test native Linux, you can compile ARM32 also:

                -march=armv7-a
                

                And it can be fastest code for LZMA decoding on Cortex-A72 core.
                It's because of ARM32 supports conditional execition that is used by LZMA decoder.
                And new arm64 doesn't support such instructions anymore.
                ARM32-Thumb2 supports conditional execition too, but ARM32 code is more affective.

                 

                Last edit: Igor Pavlov 2020-08-14
                • HITCHER

                  HITCHER - 2020-08-15

                  Thanks for the tip, i will try it later on original raspbian OS 32bit.
                  Now i am on ubuntu 20.04 arm64 OS, so i tried these opimization flags for 64bit

                  PTFLAGS=-O3 -march=armv8-a -mtune=cortex-a72 -mcpu=cortex-a72 -s
                  

                  I overclocked with this settings in /boot/firmware/config.txt

                  over_voltage=5
                  arm_freq=2000
                  gpu_freq=650
                  

                  Also have small heatsinks attached and fan blowing fresh air over it, so it doesn't overheat.

                   

                  Last edit: HITCHER 2020-08-15
                  • Igor Pavlov

                    Igor Pavlov - 2020-08-15

                    32-bit arm executable running must be ok for arm64 linux too.
                    Also note that "Transparent Huge Pages" feature affects the speed of 7-Zip, if THP is enabled in Linux system.

                     
                    • HITCHER

                      HITCHER - 2020-08-15

                      I now switched back to original raspberry-os, which is 32 bit, but with 64-bit kernel. It can be optionally installed with rpi-update.

                      pi@raspberrypi:~/Documents $  uname -a
                      Linux raspberrypi 5.4.58-v8+ #1335 SMP PREEMPT Thu Aug 13 22:29:57 BST 2020 aarch64 GNU/Linux
                      

                      There is an p7zip 7za 1602 in repository.
                      I recompiled the source with

                      OPTFLAGS=-O3 -march=armv7-a -mtune=cortex-a72 -s
                      

                      but the 32bit binary from the repository is about 15% faster, so there must be made additional optimizations.

                      These are the results of the original 7za 32 bit from repository with overclocked pi4 @ 2 GHz.

                       

                      Last edit: HITCHER 2020-08-15
                      • Igor Pavlov

                        Igor Pavlov - 2020-08-15

                        Maybe mtune=cortex-a72 is not required for best result. Maybe -mtune=cortex-a53 is better, or try without -mtune.

                        Note that only LZMA decoding speed is good for 32-bit arm. All another codes can be faster for arm64.
                        Also the code must be 32-bit arm (non thumb). Thumb/Thumb2 is slower.

                         

                        Last edit: Igor Pavlov 2020-08-15
                        • HITCHER

                          HITCHER - 2020-08-16

                          Now i tried some other flags, but these two were the best i found.
                          Still not as good as binary from repository.

                          >> OPTFLAGS=-Ofast -march=armv7-a+mp+sec+neon-vfpv4 -mtune=generic-armv7-a -s
                          
                          7-Zip (a) [32] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
                          p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,32 bits,4 CPUs LE)
                          
                          LE
                          CPU Freq: 16000000 32000000 64000000 64000000 - 256000000 512000000 - 2048000000
                          
                          RAM size:    3798 MB,  # CPU hardware threads:   4
                          RAM usage:    882 MB,  # Benchmark threads:      4
                          
                                                 Compressing  |                  Decompressing
                          Dict     Speed Usage    R/U Rating  |      Speed Usage    R/U Rating
                                   KiB/s     %   MIPS   MIPS  |      KiB/s     %   MIPS   MIPS
                          
                          22:       4198   358   1140   4084  |     113283   397   2436   9665
                          23:       4110   380   1102   4188  |     110778   396   2419   9585
                          24:       3897   379   1106   4190  |     108572   397   2400   9531
                          25:       3705   381   1111   4231  |     106396   399   2374   9469
                          ----------------------------------  | ------------------------------
                          Avr:             375   1115   4173  |              397   2408   9563
                          Tot:             386   1761   6868
                          
                          
                          
                          >> OPTFLAGS=-Ofast -march=armv8-a+crc+simd+nocrypto  -mtune=generic-armv7-a -s
                          
                          7-Zip (a) [32] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
                          p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,32 bits,4 CPUs LE)
                          
                          LE
                          CPU Freq: 21333333 64000000 64000000 64000000 - 256000000 - 1024000000 2048000000
                          
                          RAM size:    3798 MB,  # CPU hardware threads:   4
                          RAM usage:    882 MB,  # Benchmark threads:      4
                          
                                                 Compressing  |                  Decompressing
                          Dict     Speed Usage    R/U Rating  |      Speed Usage    R/U Rating
                                   KiB/s     %   MIPS   MIPS  |      KiB/s     %   MIPS   MIPS
                          
                          22:       4249   368   1122   4134  |     113840   398   2441   9712
                          23:       4054   378   1094   4131  |     111353   398   2423   9635
                          24:       3868   379   1098   4159  |     108979   398   2404   9567
                          25:       3681   381   1104   4203  |     106154   398   2375   9447
                          ----------------------------------  | ------------------------------
                          Avr:             376   1105   4157  |              398   2411   9590
                          Tot:             387   1758   6874
                          

                          Note, that -march=armv8-a produces about the same result.

                           
                          • Igor Pavlov

                            Igor Pavlov - 2020-08-16

                            try -marm:

                            -O2 -marm -march=armv7-a
                            
                             
                            • HITCHER

                              HITCHER - 2020-08-16

                              This optimization flag -marm did something. It made compression results a little better. I did also combine it with best optimization flags from before, and got combined score from over 7000.

                              file info tool shows about same from previos builds without -marm flag, for example:
                              pi@raspberrypi:~/Downloads/p7zip_16.02/bin $ file 7za
                              7za: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0, BuildID[sha1]=50948fcd52b6bd68d8b2cf2e57a3a2e4b4faa2a1, stripped

                               
                              • HITCHER

                                HITCHER - 2020-08-27

                                I did the test again with same last binary, but switched kernel back from 64-Bit to 32 Bit, which is the normally used kernel from raspberrypi os. For some unknown reason, the 32-Bit kernel is still faster for some benchmarks, but in other benchmarks 64-Bit kernel gives better results.

                                 
    • HITCHER

      HITCHER - 2020-08-27

      I installed on Android 9 Tablet with Mediatek Helio P70 SOC (TECLAST T30), 4GB RAM, wine for android 4.21.
      https://dl.winehq.org/wine-builds/android/
      It should be about the same hardware as in amazon fire tab 10 from 2019 model,
      only frequency is 100 MHz higher (2100 MHz). It has 4x A73 cores and 4x A53 cores.
      It can execute only the arm 32 build exe for windows, not 64 or x86.

       

      Last edit: HITCHER 2020-08-27
    • Igor Pavlov

      Igor Pavlov - 2021-01-19

      If someone has installed latest Windows for ARM64 that supports x64 emulation , please write here some details about that system.
      What are names of Program Files folders that are used by Windows for x86, x64, arm and arm64 programs?

       
      • Final Aeon

        Final Aeon - 2021-01-19

        There are 3 profiles only for 4 architectures since WOW subsystem is 32bit only:
        shared arm64+x64: \Program Files + System32
        arm32: \Program Files (Arm) + SysArm32
        x32: \Program Files (x86) + SysWOW64

        ...so in \Windows\System32 and \Program Files there are (after clean install) MS' "fat-PEs" (fat portable executables), which have arm64 part and x64 part in one single file. So the best solution is to compile fat (arm64+x64) 7Zip and place it in \Program Files. Basically x64 files by 3rd party installers all go to \Program Files and \System32.

         
        • Igor Pavlov

          Igor Pavlov - 2021-01-20

          Where I can get some "fat pe" example file?

           
          • Final Aeon

            Final Aeon - 2021-01-20

            Here you have "FAT PE" vc++ arm64+x64 redists:
            https://mega.nz/file/edUSxRKC#7ztnXIYaGIlV9COGICw5i4mCKflO-7hYB1PLbL0itj8
            And here you have the comparison of FAT PE arm64+x64 versus PURE arm64 ONLY:
            https://mega.nz/file/HRci3LpR#AsazvrvEzj5fi9mV7LZvQpr_p7pPNJJrDCQ77ppP7f4
            Also you can use https://www.uupdump.net/?dark=1 to download latest W21H2Prev arm64 image. It is full of FAT PE files. LOL

            BTW: Do you rather have Telegram for chat?

             

            Last edit: Final Aeon 2021-01-20
            • Igor Pavlov

              Igor Pavlov - 2021-01-20

              I don't see x86 code in that mfc140.dll.
              Headers show only arm64.
              there is one big .text section.
              Is there specification of that fat-pe?

               
              • Final Aeon

                Final Aeon - 2021-02-21

                You are looking to compile ARM64EC code.
                That needs an insider SDK.
                You can additionally get the EWDK, which contains everything too.
                But otherwise latest preview of everything (Kits + VS).
                Credits for info: @gus33000

                 
    • Carmelo Baquero Agüero

      Surface Pro X
      Procesador Microsoft SQ1 @ 3.0 GHz 3.00 GHz
      RAM instalada 15,9 GB (15,5 GB usable)
      Tipo de sistema Sistema operativo de 64 bits, procesador basado en ARM

      Windows version:
      Edición Windows 10 Pro
      Versión 20H2
      Compilación del sistema operativo 19042.928

      the three tests run attached.

       
    • harris

      harris - 2023-12-01

      is there 7zr.exe for windows arm64? How should i build one?

       

      Last edit: harris 2023-12-01
1 2 3 > >> (Page 1 of 3)

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.