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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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:
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.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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.
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
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.
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.
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?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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
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:
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
andCRC32:64
in benchmark log files.Last edit: Igor Pavlov 2021-01-19
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:
What is page size of that ubuntu 18.04.5 LTS aarch64 on raspberry pi 4?
"getconf PAGESIZE"
says 4kB
"cd /proc/1
grep -i pagesize smaps
KernelPageSize: 4 kB
MMUPageSize: 4 kB"
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
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.
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
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:
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
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
I overclocked with this settings in /boot/firmware/config.txt
Also have small heatsinks attached and fan blowing fresh air over it, so it doesn't overheat.
Last edit: HITCHER 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.
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.
There is an p7zip 7za 1602 in repository.
I recompiled the source with
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
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
Now i tried some other flags, but these two were the best i found.
Still not as good as binary from repository.
Note, that -march=armv8-a produces about the same result.
try
-marm
: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
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.
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
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?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.
Where I can get some "fat pe" example file?
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
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?
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
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.
is there 7zr.exe for windows arm64? How should i build one?
Last edit: harris 2023-12-01