OpenCL: MQL5'te dahili uygulama testleri - sayfa 52

 
joo :
Anladığım kadarıyla iki boyutlu/çok boyutlu veri içeren bir diziyi GPU'ya aktarmak istiyorsak, veri gösterimini yapı olarak kullanabilir ve yapıyı aktarabilir miyiz?

Yapıyı denedim - işe yaradı! Ben kendim çok boyutlu dizileri bu şekilde transfer etmeyi tahmin edemezdim :) Teşekkürler!

İki boyutlu diziler kullanılarak küçük bir örnek eklendi - onu tatlı bir ruh olarak görüyor. Bir eğri örneği küçüktür - ancak genel olarak, böyle bir sapma olasılığı iyi gösterir :)

Not: UGA + OpenCL'niz herhangi bir duygudan yoksun. :) Eskiden nasıl yaşadığımızı hatırlamak korkunç...

Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Основы языка / Переменные - Документация по MQL5
Dosyalar:
 
MigVRN :

Not: UGA + OpenCL'niz herhangi bir duygudan yoksun. :) Eskiden nasıl yaşadığımızı hatırlamak korkunç...

Teşekkürler, beğenmene sevindim. Ve bir şey için, bu fırsatı merhaba demek için kullanıyorum ve İlyas Sharapov'a ( mql5 ) çok teşekkür ediyorum.
 

CL_DEVICE_ANY ve CL_DEVICE_GPU zaten eski mi?

CL_USE_ANY ve CL_USE_GPU_ONLY şimdi alakalı mı?

 
joo :

CL_DEVICE_ANY ve CL_DEVICE_GPU zaten eski mi?

CL_USE_ANY ve CL_USE_GPU_ONLY şimdi alakalı mı?

Evet.
 
MetaDriver :
Evet.

Profesör Tychkov'un yöntemini kullanarak, bilgisayarımda 1 CL_USE_ANY'den daha hızlı ve hatta CL_USE_GPU_ONLY'den daha hızlı çalışan gizemli bir aygıt buldum .

Bu ne? :Ö

 
joo :

Profesör Tychkov'un yöntemini kullanarak, bilgisayarımda 1 CL_USE_ANY'den daha hızlı ve hatta CL_USE_GPU_ONLY'den daha hızlı çalışan gizemli bir aygıt buldum .

Bu ne? :Ö

Stüdyodaki durumlar. Tüm cihazlar için. :)
 
MetaDriver :
Stüdyodaki durumlar. Tüm cihazlar için. :)
 CL_USE_ANY

2012.04.12 23:27:29 Struct_OpenCL (GBPUSD,H1) GPY ve CPY arasındaki hesaplama farkı: 0.0
2012.04.12 23:27:28 Struct_OpenCL (GBPUSD,H1) CPY/GPU= 1.326
2012.04.12 23:27:28 Struct_OpenCL (GBPUSD,H1) GPU süresi = 141 ms

2012.04.12 23:27:28 Struct_OpenCL (GBPUSD,H1) CPU zamanı = 187 ms


 CL_USE_GPU_ONLY

2012.04.12 23:29:11 Struct_OpenCL (GBPUSD,H1) GPY ve CPY arasındaki hesaplama farkı: 0.0
2012.04.12 23:29:11 Struct_OpenCL (GBPUSD,H1) CPY/GPU= 1.376
2012.04.12 23:29:11 Struct_OpenCL(GBPUSD,H1) GPU süresi = 125 ms

2012.04.12 23:29:11 Struct_OpenCL (GBPUSD,H1) CPU zamanı = 172 ms


 1

2012.04.12 23:30:12 Struct_OpenCL (GBPUSD,H1) GPY ve CPY arasındaki hesaplama farkı: 0.0
2012.04.12 23:30:12 Struct_OpenCL (GBPUSD,H1) CPY/GPU= 2.397
2012.04.12 23:30:12 Struct_OpenCL (GBPUSD,H1) GPU süresi = 78 ms

2012.04.12 23:30:12 Struct_OpenCL (GBPUSD,H1) CPU zamanı = 187 ms


Herkese benim gibi hile yapmasını tavsiye ediyorum, kendiliğinden olmayan ayrık grafiklerden daha hızlı bir cihaz bulmanız oldukça olası. :D


not. CL_USE_ANY ve CL_USE_GPU_ONLY'nin aynı olduğundan şüpheleniyorum - hesaplama CPU'da, ancak cihaz 1 benim GPU'm. Bu, standart sabitlerde basit bir karışıklıktır.

 
joo :

Herkese benim gibi hile yapmasını tavsiye ediyorum, kendiliğinden olmayan ayrık grafiklerden daha hızlı bir cihaz bulmanız oldukça olası. :D

not. CL_USE_ANY ve CL_USE_GPU_ONLY'nin aynı olduğundan şüpheleniyorum - hesaplama CPU'da, ancak cihaz 1 benim GPU'm. Bu, standart sabitlerde basit bir karışıklıktır.

İşte okuduklarım ! Terminal yardımı yoktu! Kodu bu değişiklikleri yansıtacak şekilde güncelledim. Ne yapabileceğini gör. bende şöyle var:

23:17:00 CPU zamanı = 1155 ms
23:17:01 OpenCL özelliklerine sahip toplam cihaz: 2
23:17:02 GPU süresi #0 = 249 ms
23:17:02 CPY/GPU #0= 4.639
23:17:03 GPU Süresi #1 = 265ms
23:17:03 CPY/GPU #1= 4.358

GPU: Advanced Micro Devices, Inc. OpenCL 1.1 ile Türkler (6 birim, 725 MHz, 1024 Mb, sürüm CAL 1.4.1703 (VM))
CPU: OrijinalIntel Intel(R) Core(TM) i3-2310M CPU @ 2.10GHz, OpenCL 1.1 (4 birim, 2095 MHz, 5990 Mb, sürüm 2.0)
Dosyalar:
 
2012.04.12 22:37:07     OpenCL  GPU: NVIDIA Corporation GeForce GT 440 with OpenCL 1.1 (2 units, 1660 MHz, 1024 Mb, version 296.10)
2012.04.12 22:37:07     OpenCL  CPU: AuthenticAMD AMD Athlon(tm) II X4 630 Processor with OpenCL 1.1 (4 units, 2998 MHz, 2048 Mb, version 2.0)
2012.04.12 22:39:46     Struct_OpenCL__1 (EURUSD,H1)    Время СPU = 686 ms
2012.04.12 22:39:47     Struct_OpenCL__1 (EURUSD,H1)    Всего устройств c возможностями OpenCL: 2
2012.04.12 22:39:50     Struct_OpenCL__1 (EURUSD,H1)    Время GPU №0 = 172 ms
2012.04.12 22:39:50     Struct_OpenCL__1 (EURUSD,H1)    CPY/GPU №0= 3.988
2012.04.12 22:39:51     Struct_OpenCL__1 (EURUSD,H1)    Время GPU №1 = 406 ms
2012.04.12 22:39:51     Struct_OpenCL__1 (EURUSD,H1)    CPY/GPU №1= 1.690
 
MigVRN :

Bu yapıyı kullanmayı deneyin, benim için işe yaramadı (ikinci boyutun sabit bir boyut olması gerektiğinden şüpheleniyorum, bu yüzden benim için işe yaramadı):

 struct Array2dFloat
{
   float Column[];
   int LineCount( int lineCount)
  {
     int size = ArrayResize (Column,lineCount);
     ArrayInitialize (Column, 0.0 );
     return (size);
  }
};

Ve kolaylık olması açısından, her iki boyutu da yeniden boyutlandırmak için bu işlev:

 void ArrayResize2DArrayFloat(Array2dFloat &ArrayOfArray[], int columnCount, int lineCount)
{
   // разбивка по вертикали
   ArrayResize (ArrayOfArray,columnCount);
   // разбивка по горизонтали
   for ( int i= 0 ;i<columnCount;i++)
    ArrayOfArray[i].LineCount(lineCount);
}