Yapı 3902'den itibaren AVX / AVX2 + FMA3 / AVX512 + FMA3 komut seti ile MQL5 programlarının derlenmesi - sayfa 3

 

Dikkat dağınıklığı: İnsanlar Windows 11'in neden modern işlemciler gerektirdiğini anlamıyor. TPM tartışmasıyla dikkatleri dağılıyor.

Aslında Microsoft teknisyenleri, işletim sistemi çekirdeğini/uygulamalarını paslı bir kova altında derlemekten kurtulmayı ve en azından AVX'e geçmeyi hayal ediyor. Bu şekilde hız ve yetenekleri geliştirmek mümkün olacak.

Ama henüz geçmediler, uyumsuzluklardan korkuyorlar ve işi yokuşa sürüyorlar.

 

AVX2 Terminalinin daha sonra yayınlanacağı bilgisini kaçırmışım.

AVX2 ve FMA3 kullanılarak oluşturulan terminalin üçüncü sürümünü yakında yayınlayacağız.

 
Renat Fatkhullin #:

Dikkat dağınıklığı: İnsanlar Windows 11'in neden modern işlemciler gerektirdiğini anlamıyor. TPM tartışmasıyla dikkatleri dağılıyor.

Aslında Microsoft teknisyenleri, işletim sistemi çekirdeğini/uygulamalarını paslı bir kova altında derlemekten kurtulmayı ve en azından AVX'e geçmeyi hayal ediyor. Bu şekilde hız ve yetenekleri geliştirmek mümkün olacaktır.

Ancak AVX'e geçmediler, uyumsuzluklardan korkuyorlar ve sürüncemede bırakıyorlar.

Bence buradaki herkes EX5 uygulamasının hızı ve bir test cihazı ile terminal bağırsakları hakkında çok daha fazla endişe duyuyor.

 
fxsaber #:

Sanırım buradaki herkes EX5'in hızı ve terminalin test cihazı ile boşaltılması konusunda çok daha fazla endişe duyuyor.

Windows optimizasyon seviyesi, Windows'ta çalışan tüm programların performansının temelini oluşturur.

Çünkü tüm programlar AVX/AVX2 vb. hakkında hiçbir fikri olmayan Windows API'sini büyük ölçüde kullanır. Ancak bazı yerlerde işletim sistemi çok daha hızlı sonuçlar üretebilir.

 

Doğrulanmamış olmamak için - Ubuntu 22.04'te çok modern NIC'lerin en son sürümleri için resmi Intel IAVF açık kaynak sürücüsünü kendim oluşturuyorum:

make install
....

/tmp/iavf-4.9.1/src/.iavf.mod.o.cmd
cmd_/tmp/iavf-4.9.1/src/iavf.mod.o := gcc -Wp,-MMD,/tmp/iavf-4.9.1/src/.iavf.mod.o.d -nostdinc
-isystem /usr/lib/gcc/x86_64-linux-gnu/11/include -I./arch/x86/include -I./arch/x86/include/generated -I./include -I./arch/x86/include/uapi
-I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/compiler-version.h -include ./include/linux/kconfig.h
-I./ubuntu/include -include ./include/linux/compiler_types.h
-D__KERNEL__
-fmacro-prefix-map=./= -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE
-Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Wno-format-security
-std=gnu89 -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -fcf-protection=none -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387
-mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone
-mcmodel=kernel -DCONFIG_X86_X32_ABI
-Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -mindirect-branch-cs-prefix
-mfunction-return=thunk-extern -fno-jump-tables -mharden-sls=all -fno-delete-null-pointer-checks
-Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-address-of-packed-member
-O2 -fno-allow-store-data-races -Wframe-larger-than=1024 -fstack-protector-strong -Wimplicit-fallthrough=5 -Wno-main -Wno-unused-but-set-variable
-Wno-unused-const-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-stack-clash-protection -g -gdwarf-5 -pg
-mrecord-mcount -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wvla -Wno-pointer-sign -Wno-stringop-truncation -Wno-zero-length-bounds
-Wno-array-bounds -Wno-stringop-overflow -Wno-restrict -Wno-maybe-uninitialized -Wno-alloc-size-larger-than -fno-strict-overflow -fno-stack-check
-fconserve-stack -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wno-packed-not-aligned -I/tmp/iavf-4.9.1/src
-fsanitize=bounds -fsanitize=shift -fsanitize=bool -fsanitize=enum -DMODULE -DKBUILD_BASENAME='"iavf.mod"' -DKBUILD_MODNAME='"iavf"' -D__KBUILD_MODNAME=kmod_iavf
-c -o /tmp/iavf-4.9.1/src/iavf.mod.o /tmp/iavf-4.9.1/src/iavf.mod.c

Açıkça devre dışı bırakılmış: sse, sse2, mmx, 3d now, AVX

Adres Temizleyici etkinleştirilmiştir, bu da tüm kodu yavaşlatır. En azından O2 optimizasyonu etkinleştirildi.

Intel x710/810 NIC'lerin verimli ve minimum gecikme ile çalışmasını nasıl umabilirim? Tüm işletim sistemi, çekirdek ve sürücülerin en az düzeyde oluşturulmasını gerektirir.

 
Renat Fatkhullin #:

Asılsız olmamak

İşletim sistemi de dahil olmak üzere yazılımı yeniden derlemeden önce ve sonra karşılaştırmalı performans rakamlarını paylaştıkları bir kaynağın bağlantısını paylaşın.

 

Her ihtimale karşı EA'ları çalıştırdığım sunucuda derlemem gerekecek. Ya da AVX dizüstü bilgisayarımda yanlış sistemde olduğu ortaya çıkacak)

Ve metaquot sunucularla oldukça eğlenceli hale gelebilir).

 
Aleksey Nikolayev #:

Her ihtimale karşı EA'ları çalıştırdığım sunucuda derlemem gerekecek. Ya da AVX iş dizüstü bilgisayarımdaki yanlış sisteme düşecek)

Ve metaquot sunucularla oldukça eğlenceli hale gelebilir).

VPS ağımızda tüm sunucular en azından AVX'e sahip. Çoğunda AVX2 vardır.

 
fxsaber #:

İşletim sistemi de dahil olmak üzere yazılımı yeniden derlemeden önce ve sonra karşılaştırmalı performans rakamlarını paylaştıkları bir kaynağın bağlantısını paylaşın.

Her şey google'da.

Sentetik testler, özellikle donanım üreticilerinden çok açıklayıcı değildir. Bir sonuca varmak için, önerilen bir tanesine inanmak yerine çok sayıda kıyaslamayı kontrol etmeniz gerekir.

Her şeyi kendi programlarınızda kendi durumunuzu anlayarak kendiniz test etmeniz gerekir. Float/double ağır matematik iyi hızlandırılmıştır. Ve derleyici doğru olmalıdır - sadece Clang.

 

MetaQuotes-Demo'da mevcut olan 3905 numaralı güncel beta sürümünde, MQL5 için bilgileri genişlettik:

void OnStart()
  {
   Print("CPU name:         ",TerminalInfoString(TERMINAL_CPU_NAME));
   Print("CPU cores:        ",TerminalInfoInteger(TERMINAL_CPU_CORES));
   Print("CPU architecture: ",TerminalInfoString(TERMINAL_CPU_ARCHITECTURE));   // новое
   Print("");
   Print("EX5 architecture: ",__CPU_ARCHITECTURE__);                            // новое
  }

CPU name:         12th Gen Intel Core i9-12900K
CPU cores:        24
CPU architecture: AVX2 + FMA3

EX5 architecture: AVX

Terminalin üzerinde çalıştığı işlemcinin yeteneklerini anında tanıyabilirsiniz.

__CPU_ARCHITECTURE__ string makrosunu kullanarak EX5 dosyasının hangi komut seti için oluşturulduğunu öğrenebilir ve kontrol edebilirsiniz.


Yükleme başarısız olduğunda şöyle yazar:

your CPU architecture does not allow to run the file 'test.ex5', AVX512 required, you have AVX2
Neden: