Optimizasyon için CPU Çekirdeklerini Değerlendirme - sayfa 6

 
Burada talimatların özü hakkında kaynaktan bilgi topladım

E5-2670'in sahip olmadığı talimatlar:
BMI (Bit Manipulation Instructions), bit işleme işlemlerini hızlandırmak için Intel ve AMD işlemcilerde kullanılan komut kümeleridir. BMI'ler SIMD talimatları değildir ve yalnızca evrensel işlemci kayıtları ile çalışır.
Bit işleme işlemleri en yaygın olarak düşük seviyeli cihaz kontrolü, hata algılama ve düzeltme, veri optimizasyonu, sıkıştırma ve şifreleme için tasarlanmış uygulamalar tarafından kullanılır. BMI'nin programlar tarafından kullanılması bu işlemleri önemli ölçüde hızlandırır (bazen birkaç kez), ancak program kodunun yazılması programcılar için daha zor hale gelir.
Intel ve AMD işlemcilerdeki BMI komut setleri önemli ölçüde farklılık gösterir.
Intel işlemciler BMI1 ve BMI2 paketlerini (BMI1'e ek olarak) kullanır.
AMD işlemcileri, BMI1'e ek olarak, SSE4a paketinin parçası olan ABM (Gelişmiş Bit İşleme) yönergelerini kullanır (Intel'de bu yönergeler de mevcuttur, ancak SSE4.2 ve BMI1'in bir parçası olarak uygulanır). Ayrıca AMD işlemciler, BMI1'e ek olan TBM (Sondaki Bit Manipülasyonu) komut setini kullanır.

F16C, yarı duyarlıklı ikili sayılar (16 bit) ve standart tek duyarlıklı ikili kayan nokta sayıları (32 bit) arasındaki dönüştürmeleri hızlandırmak için x86 mimarisi işlemcilerinde kullanılan bir komut setidir.
F16C, hem AMD hem de Intel işlemcilerde kullanılır ve multimedya verilerinin yanı sıra diğer veri türleri ile çalışma açısından yeteneklerini büyük ölçüde genişletir.
F16C (16-bit Kayan Nokta dönüştürme), yarı kesinlikli ikili sayılar (16 bit) ve standart tek duyarlıklı ikili kayan noktalı sayılar (32 bit) arasındaki dönüştürmeleri hızlandırmak için x86 mimarisi işlemcilerinde kullanılan bir komut setidir. Aslında, temel 128 bit SSE talimatlarının bir uzantısıdır.
Bilgisayar teknolojisinde farklı doğruluk sayılarının kullanılması, yüksek hız ve çözülecek çok çeşitli görevleri sağlamak için gerekli olan doğruluk ve temsil edilen değerlerin aralığı arasında bir uzlaşmadır.
F16C, çok daha önce geliştirilmiş olmasına ve CVT16 olarak bilinmesine rağmen, ilk olarak 2009 yılında AMD işlemcilerinde kullanıldı. Başlangıçta, CVT16, buna ek olarak XOP ve BMI4 talimatlarını içermesi beklenen, hiç yayınlanmayan SSE5 paketinin bir parçası olarak planlandı.
Bugün, F16C komut seti hem AMD hem de Intel işlemcilerde kullanılmaktadır ve multimedya verileriyle ve diğer veri türleriyle çalışma açısından yeteneklerini büyük ölçüde genişletmektedir.

FMA
Kayan noktalı çarpma ve toplama işlemlerini hızlandıran bir dizi işlemci talimatı. FMA kısaltması İngilizce'den türetilmiştir. Tek bir yuvarlama ile çarpma-toplama olarak çeviren Fused Multiply-Add.
Çarpma-toplama işlemleri çok yaygındır ve bilgisayar teknolojisinin işleyişinde önemli bir rol oynamaktadır. Özellikle analog sinyallerin dijital olarak işlenmesi söz konusu olduğunda (video, ses ve diğer benzer işlemlerin ikili kodlaması). Bu bağlamda, FMA yönergeleri için destek yalnızca merkezi işlemcilerde değil, aynı zamanda birçok modern video kartının grafik işlemcilerinde de uygulanmıştır.

i7-8700 dışında hepsinde bulunmayan talimatlar:
TSX (Transactional Synchronization eXtensions), Intel tarafından geliştirilen, aynı verileri paylaşırken çekirdeklerin birbirleriyle etkileşiminin verimliliğini artıran ve nihayetinde bilgisayarın genel performansını artıran çok çekirdekli bir işlemci komut setidir.

MPX (Bellek Koruma Uzantıları), arabellek taşması mekanizmasını kullanan virüs ve diğer tehditlere karşı gelişmiş bilgisayar koruması sağlayan bir teknolojidir.
İşlemci, belleğe erişmeden önce yığın arabelleklerinin ve yığın arabelleklerinin sınırlarını ek olarak kontrol etme fırsatına sahip olur, böylece belleğe erişen bir uygulama yalnızca kendisine atanan alana erişebilir. Sonuç olarak, bir bilgisayar korsanının veya kötü niyetli bir programın, kodunu işlemcinin yerine bellek yoluyla "değiştirmesi" çok daha zor hale gelir.

SGX (Software Guard Extensions), Intel tarafından geliştirilen ve Skylake mimarisinden başlayarak işlemcilerinde kullanılan bir komut setidir.
SGX, kendileriyle çalışan programlar için kötü amaçlı uygulamalara ve bilgisayar korsanı saldırılarına karşı yüksek düzeyde koruma sağlayan güvenli kod ve veri bölümlerini ("enklavlar" olarak adlandırılır) düzenlemenize olanak tanır.


BMI2 (BMI1'e ek olarak).

MPX ve SGX koruma ile ilgili olduğu için, derleyicinin aktif olarak BMI2 talimatlarını / teknolojilerini kullandığını ve TSX'in daha az olası bir etkisi olduğunu önerme girişiminde bulunurum.

 
Alexey, OpenCL altında kod yazmayı öğrenip bunun için iyi bir kart satın almak bana daha verimli olacak gibi geliyor.
Bir karttaki OpenCL, birden çok işlemciden çok daha verimli olacaktır.
Ve işlemci karşılaştırmalarını ortaya çıkaran bu saçmalığa puan verin.
Ama evet, OpenCL altında nasıl kod yazılacağını bulmanız gerekiyor.
Renat bir yerde bu konuda bir yazı yazmıştı, ben kendim okumadım ve ne kadar bilgilendirici olduğunu söyleyemem, kendim okuyamıyorum.
 
Roman :
Alexey, OpenCL altında kod yazmayı öğrenip bunun için iyi bir kart satın almak bana daha verimli olacak gibi geliyor.
Bir karttaki OpenCL, birden çok işlemciden çok daha verimli olacaktır.
Ve işlemci karşılaştırmalarını ortaya çıkaran bu saçmalığa puan verin.
Ama evet, OpenCL altında nasıl kod yazılacağını bulmanız gerekiyor.
Renat bir yerde bu konuda bir yazı yazmıştı, ben kendim okumadım ve ne kadar bilgilendirici olduğunu söyleyemem, kendim okuyamıyorum.

OpenCL üzerine yazmak o kadar kolay değil, teoriyi biraz inceledim, OpenCL teknolojisi ile ajan yapmak daha kolay ve şimdiki gibi değil, tüketiciler açısından daha kolay.

Ve sonra, OpenCL her zaman etkili değildir, bu yüzden 1060 kartını ve FX-8350 işlemciyi Yandex yazılımıyla karşılaştırdım ( CatBoost ) - işlemcinin iki kat daha hızlı olduğu ortaya çıktı ve eğer trend buysa, o zaman daha fazlası beş 1080i'den daha güçlü bir işlemci satın almak için uygun maliyetli, elbette bir etkisi olacak, ama pahalı ... genel olarak, çözüm açık değil ve herkes için değil.

Ve sonra, derleyicide en son teknolojiler için desteği basitçe devre dışı bırakabileceğinizi ve eski insanlar için devre dışı bırakma seçeneğiyle her şeyin daha hızlı çalışacağını düşünüyorum.
 
Aleksey Vyazmikin :

OpenCL üzerine yazmak o kadar kolay değil, teoriyi biraz inceledim, OpenCL teknolojisi ile ajan yapmak daha kolay ve şimdiki gibi değil, tüketiciler açısından daha kolay.

Ve sonra, OpenCL her zaman etkili değildir, bu yüzden 1060 kartı ve FX-8350 işlemciyi Yandex yazılımı (CatBoost) ile karşılaştırdım - işlemcinin iki kat daha hızlı olduğu ortaya çıktı ve eğer trend buysa, o zaman daha fazlası beş 1080i'den daha güçlü bir işlemci satın almak için uygun maliyetli, elbette bir etkisi olacak, ama pahalı ... genel olarak, çözüm açık değil ve herkes için değil.

Matematiksel hesaplamalar için yeşil özellikle uygun değildir.
Matematik için kırmızı olanlar daha iyidir, standartta resmi uygulama aracılığıyla yapılandırılan bir matematiksel hesaplama modu bile vardır.
Hala madenciliği çeken eski bir radeon 7970 referansım var. Bu, bir kartta madencilik yaptığım için değil, hayır, bu karlı değil, hesaplamaları sürüklediği gerçeğiyle ilgili.
Haritadaki matematiksel hesaplamalar için gölgelendiricilerin sayısına bakmanız gerekir, ne kadar çok olursa o kadar iyi, FPS'nin geri kalanı vb. Önemli değil, ana gölgelendirici blokları.


 
Roman :

Matematiksel hesaplamalar için yeşil özellikle uygun değildir.
Matematik için kırmızı olanlar daha iyidir, standartta resmi uygulama aracılığıyla yapılandırılan bir matematiksel hesaplama modu bile vardır.
Hala madenciliği çeken eski bir radeon 7970 referansım var. Bu, bir kartta madencilik yaptığım için değil, hayır, bu karlı değil, hesaplamaları sürüklediği gerçeğiyle ilgili.
Haritadaki matematiksel hesaplamalar için gölgelendiricilerin sayısına bakmanız gerekir, ne kadar çok olursa o kadar iyi, FPS'nin geri kalanı vb. Önemli değil, ana gölgelendirici blokları.


Bildiğim kadarıyla, kırmızı olanlar double ile nasıl çalışılacağını biliyorlar ama yeşil olanlar bilmiyor - bunu biliyorum. Ancak, makine öğreniminde (CatBoost), fikre göre kırmızı ve yeşil olanlar kadar hızlı çalışması gereken karşılaştırma işlemleri için keskinleştirme vardır. Ve kırmızı olanlar ne yazık ki CatBoost tarafından desteklenmiyor.

Her durumda, bunu kendim yapamayacağım ve yeterli bir fiyat ve konunun anlaşılması için sanatçılar bulmak o kadar kolay olmadığı ortaya çıktı.

 

Anahtar enum kullanılarak kodun hızlandırılabileceği söylendi.

Şöyleydi:

         if (Type_Poisk_Tree==Tree_Buy_Filter || Type_Poisk_Tree==Tree_Sell_Filter || Type_Poisk_Tree==Tree_Buy || Type_Poisk_Tree==Tree_Sell)
           {
             if (Test_P>= 1000 && Test_P< 5000 )
              {
               if (Test_P< 2500 )
                 {
                   if (Test_P== 1000 ) if (DonProc< 5.5 && Levl_Down_DC<- 7.5 ) CalcTest=CalcTest+ 1 ; //(0.4810127 0.3037975 0.2151899)
                   if (Test_P== 1001 ) if (DonProc< 5.5 && Levl_Down_DC>=- 7.5 && TimeH< 21.5 && TimeH>= 16.5 && TimeH< 19.5 && Levl_Close_H1s1N< 2.5 ) CalcTest=CalcTest+ 1 ; //(0.4400657 0.4072250 0.1527094)
                   if (Test_P== 1002 ) if (DonProc< 5.5 && Levl_Down_DC>=- 7.5 && TimeH< 21.5 && TimeH>= 16.5 && TimeH< 19.5 && Levl_Close_H1s1N>= 2.5 ) CalcTest=CalcTest+ 1 ; //(0.3739837 0.5121951 0.1138211)
                   if (Test_P== 1003 ) if (DonProc< 5.5 && Levl_Down_DC>=- 7.5 && TimeH< 21.5 && TimeH>= 16.5 && TimeH>= 19.5 ) CalcTest=CalcTest+ 1 ; //(0.3390706 0.4647160 0.1962134)
                 //Ещё 70к сравнений
                }

Ve şimdi şöyle:

         if (Type_Poisk_Tree==Tree_Buy_Filter || Type_Poisk_Tree==Tree_Sell_Filter || Type_Poisk_Tree==Tree_Buy || Type_Poisk_Tree==Tree_Sell)
           {
                   switch (Test_P)
                    {
                     case 1000 : if (DonProc< 5.5 && Levl_Down_DC<- 7.5 ) CalcTest=CalcTest+ 1 ; break ; //(0.4810127 0.3037975 0.2151899)
                     case 1001 : if (DonProc< 5.5 && Levl_Down_DC>=- 7.5 && TimeH< 21.5 && TimeH>= 16.5 && TimeH< 19.5 && Levl_Close_H1s1N< 2.5 ) CalcTest=CalcTest+ 1 ; break ; //(0.4400657 0.4072250 0.1527094)
                     case 1002 : if (DonProc< 5.5 && Levl_Down_DC>=- 7.5 && TimeH< 21.5 && TimeH>= 16.5 && TimeH< 19.5 && Levl_Close_H1s1N>= 2.5 ) CalcTest=CalcTest+ 1 ; break ; //(0.3739837 0.5121951 0.1138211)
                     case 1003 : if (DonProc< 5.5 && Levl_Down_DC>=- 7.5 && TimeH< 21.5 && TimeH>= 16.5 && TimeH>= 19.5 ) CalcTest=CalcTest+ 1 ; break ; //(0.3390706 0.4647160 0.1962134)
                     //ещё 70к сравнений
                   }

İlk tahminlere göre FX-8350 yüzde 30 daha hızlı çalışmaya başladı ancak Phenom II hattının işlemcileri yaklaşık 3 kat daha hızlı çalışmaya başladı! Biraz sonra, makineler optimizasyondan kurtulduğunda, karşılaştırma için testler yapacağım.

Tree_Brut_TestPL Expert Advisor'ın yeni bir sürümünü ekliyorum, başlığa "_Fast" ekledim, sizden de test etmenizi rica ediyorum - hangi mimarilerde büyüme olacağı çok ilginç. Bu çalışmaların ME derleyicisini geliştirmeye yardımcı olacağı umulmaktadır.

Dosyalar:
 

Forum üyesi Fast528'den ek veriler aldım (şu anda forumda gönderi paylaşamıyor)

Hız aşırtmasız Ryzen 2700, 3333 bellek

Tree_Brut_TestPL 8 çekirdek 16 iş parçacığı

2019.08.13 10:24:14.813 Tester optimization finished, total passes 11
2019.08.13 10:24:14.824 Statistics optimization done in 1 minutes 56 seconds
2019.08.13 10:24:14.824 Statistics shortest pass 0:01:13.337, longest pass 0:01:20.403, average pass 0:01:15.853
2019.08.13 10:24:14.824 Statistics 8731 frames (3.43 Mb total, 412 bytes per frame) received
2019.08.13 10:24:14.824 Statistics local 11 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
2019.08.13 10:24:14.864 Tester 11 new records saved to cache file 'tester\cache\Tree_Brut_TestPL.30.E415F787BBBCE67C438526613B41CB4F.opt'

Tree_Brut_TestPL_F 8 çekirdek 16 iş parçacığı

2019.08.13 10:24:14.824 Statistics 8731 frames (3.43 Mb total, 412 bytes per frame) received
2019.08.13 10:31:30.562 Tester optimization finished, total passes 11
2019.08.13 10:31:30.573 Statistics optimization done in 2 minutes 32 seconds
2019.08.13 10:31:30.573 Statistics shortest pass 0:02:12.689, longest pass 0:02:31.529, average pass 0:02:21.243
2019.08.13 10:31:30.573 Statistics 11000 frames (4.32 Mb total, 412 bytes per frame) received
2019.08.13 10:31:30.573 Statistics local 11 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
2019.08.13 10:31:30.626 Tester 11 new records saved to cache file 'tester\cache\Tree_Brut_TestPL_F.30.E415F787BBBCE67C438526613B41CB4F.opt'

8 aracının etkinleştirilmesi nedeniyle 8 çekirdekli ve 8 iş parçacıklı bir varyanta ihtiyacınız olduğundan ve ek olarak, "Optimizasyon" sekmesinde, iş parçacığı sayısına göre 16 geçiş belirtmelisiniz (Başlangıç 0 , Adım 1, Durdur 15).

İkinci bir test yaparken, ..\Tester\cache içinde bulunan önbelleği temizlemeyi unutmayın.

Ara sonuçları şimdilik 8 çekirdek / 8 ajan olarak tabloya ekleyeceğim.

 

İlk mesajı düzenleyemediğim için buraya yazıyorum.

 

İşte sonuç fx8320e frekansı 4GHz, bellek 1866 2 kanal, 2. sıra.

Tree_Brut_TestPL_F_Hızlı

4 ajan 8 geçiş

DF       0        13 : 27 : 26.728     Core 4   pass 6 returned result 1001000.00 in 0 : 00 : 28.342
HL       0        13 : 27 : 26.732     Core 1   pass 2 returned result 1001000.00 in 0 : 00 : 28.414
PE       0        13 : 27 : 26.844     Core 3   pass 4 returned result 1001000.00 in 0 : 00 : 28.476
PJ       0        13 : 27 : 26.936     Core 2   pass 0 returned result 1001000.00 in 0 : 00 : 28.619
QP       0        13 : 27 : 53.132     Core 4   pass 7 returned result 1001000.00 in 0 : 00 : 26.406
KI       0        13 : 27 : 53.219     Core 1   pass 3 returned result 1001000.00 in 0 : 00 : 26.489
MN       0        13 : 27 : 53.337     Core 3   pass 5 returned result 1001000.00 in 0 : 00 : 26.495
ND       0        13 : 27 : 53.571     Core 2   pass 1 returned result 1001000.00 in 0 : 00 : 26.637
OR       0        13 : 27 : 53.571     Tester  optimization finished, total passes 8
OF       0        13 : 27 : 53.582     Statistics      optimization done in 0 minutes 57 seconds
PI       0        13 : 27 : 53.582     Statistics      shortest pass 0 : 00 : 26.406 , longest pass 0 : 00 : 28.619 , average pass 0 : 00 : 27.484
NM       0        13 : 27 : 53.582     Statistics       8000 frames ( 3.14 Mb total, 412 bytes per frame) received
HL       0        13 : 27 : 53.582     Statistics      local 8 tasks ( 100 %), remote 0 tasks ( 0 %), cloud 0 tasks ( 0 %)

8 ajan 8 geçiş

DI       0        13 : 30 : 59.789     Core 2   pass 1 returned result 1001000.00 in 0 : 00 : 33.072
KN       0        13 : 30 : 59.887     Core 1   pass 0 returned result 1001000.00 in 0 : 00 : 33.177
PD       0        13 : 31 : 00.132     Core 3   pass 2 returned result 1001000.00 in 0 : 00 : 33.422
PM       0        13 : 31 : 00.245     Core 4   pass 3 returned result 1001000.00 in 0 : 00 : 33.531
RR       0        13 : 31 : 00.590     Core 8   pass 7 returned result 1001000.00 in 0 : 00 : 32.922
IH       0        13 : 31 : 00.615     Core 5   pass 4 returned result 1001000.00 in 0 : 00 : 33.197
CQ       0        13 : 31 : 00.981     Core 6   pass 5 returned result 1001000.00 in 0 : 00 : 33.506
GF       0        13 : 31 : 01.111     Core 7   pass 6 returned result 1001000.00 in 0 : 00 : 33.614
CS       0        13 : 31 : 01.111     Tester  optimization finished, total passes 8
KG       0        13 : 31 : 01.122     Statistics      optimization done in 0 minutes 35 seconds
RN       0        13 : 31 : 01.122     Statistics      shortest pass 0 : 00 : 32.922 , longest pass 0 : 00 : 33.614 , average pass 0 : 00 : 33.305
NO       0        13 : 31 : 01.122     Statistics       8000 frames ( 3.14 Mb total, 412 bytes per frame) received
HJ       0        13 : 31 : 01.122     Statistics      local 8 tasks ( 100 %), remote 0 tasks ( 0 %), cloud 0 tasks ( 0 %)

8 ajanda neredeyse 2 kat daha hızlı

 
Maxim Romanov :

İşte sonuç fx8320e frekansı 4GHz, bellek 1866 2 kanal, 2. sıra.

Tree_Brut_TestPL_F_Hızlı

4 ajan 8 geçiş

8 ajan 8 geçiş

8 ajanda neredeyse 2 kat daha hızlı

Teşekkürler, ancak değerlendirme için Tree_Brut_TestPL_F ve Tree_Brut_TestPL sonuçlarını ekleyin!

Neden: