OpenCL: MQL5'te dahili uygulama testleri - sayfa 40

 
joo :

1. Bilgisayar oyuncakları GPU'nun sıcaklığını umursamıyor ve en dikkatsiz şekilde yükleniyor ve hiçbir şey - video kartları çalışmıyor.

2. O zaman CPU sıcaklığını döndüren bir MQL işlevine de ihtiyacınız vardır. :), aksi takdirde işlemci yanacaktır.

3. ZY gerçekleştirilebilirse - o zaman neden olmasın? - tabii ki acımayacak.

1. Umursamadıklarını nereden biliyorsun? bir gerçek değil. Bazıları umursamayabilir. Evet ve forumlarda oyuncaklara kart yakan yeterince insan var.

İsveçli meraklılar, GeForce GTX 590 ile sağlanan 267.52 sürücü sürümünün pahalı bir ürünün arızalanmasına neden olabileceğini zor yoldan öğrendiler. İlk çift işlemcili 3D kart hız aşırtma yapmaya çalışırken yandı. GPU voltajının arttığını göz önünde bulundurarak, deneyciler ikinci örneğin nasıl davranacağını kontrol etmeye karar verdiler - ve aynı kaderi yaşadı. Yardım için NVIDIA'ya dönen huzursuz İsveçliler, arızanın nedeninin aşırı yük korumasının çalışmadığı için sürücüdeki bir hata olduğunu bulmayı başardı.

Kart arızası süreci, öğretici bir videoda yakalanır:


Sunucumuzdan dosya indirmek için kayıt olun.

Test, yeni sürücü sürümü olan 267.71 ile tekrarlandı. Hatanın giderildiğini ve koruma mekanizmasının çalıştığını onayladı. Ne yazık ki kartların teslimat paketinde yer alan hataya sahip olan sürücüdür. Koruma mekanizmasının yalnızca kullanıcının frekans ve voltajlarla deney yaptığı durumlar için sağlanmadığına dikkat edilmelidir. Normal çalışma sırasında, kullanıcı için tek umudun geliştiriciler tarafından sağlanan araç olduğu durumlarda acil bir durum da ortaya çıkabilir.

Meraklılar, hiçbir durumda birlikte verilen sürücüyü yüklemeye değil, NVIDIA web sitesinden daha yeni bir sürüm indirmeye teşvik ediyor. Ek olarak, hız aşırtmacılar PC kasasında iyi bir havalandırma olduğundan emin olmalıdır.

2. Tartışmam. Ancak bu o kadar kritik değil - işlemci aşırı ısındığında, Windows mavi ekrana çöküyor. Can sıkıcı, ama kıyaslanamaz. :)

3. Bu kesinlikle gerçekleştirilebilir - kartın sıcaklığını ve diğer parametrelerini izleyen programlarla cehenneme. (Zaten sadece dört parçam var.) Bir şekilde bu bilgiyi alıyorlar, değil mi?

not Ek olarak, kartların yüksek sıcaklıklarda yatmaya başladığına dair bir söylenti vardı. Oyuncaklarda bu kritik değildir, ancak bir şekilde istenmeyen bir durumdur.

 

Kartlar, GPU üzerinde çalışan yazılımın sıcaklığı kontrol etmemesi nedeniyle değil, yerleşik aşırı yük koruma mekanizmalarına sahip ekran kartı sürücüsündeki hatalar nedeniyle yandı.

Hiç kimse sürücü hatalarından korunmaz ve GPU'da hiçbir uygulama çalışmıyor olsa bile, sürücüdeki bir hata nedeniyle kartın yanmaya devam edeceği durumlar olabilir.

Bu nedenle, endişelenmeyin - ütüyü sonuna kadar yükleyin, çok deneseniz bile korkunç bir şey olmayacak. Modern donanım, hem CPU hem de GPU aşırı yük koruma sistemleriyle doludur. Soğutucuyu işlemciden çıkararak kelimenin tam anlamıyla yangın çıkarabileceğiniz günler geride kaldı.

 

joo 2012.03.21 09:06

Kartlar, GPU üzerinde çalışan yazılımın sıcaklığı kontrol etmemesi nedeniyle değil, yerleşik aşırı yük koruma mekanizmalarına sahip ekran kartı sürücüsündeki hatalar nedeniyle yandı.

Hiç kimse sürücü hatalarından korunmaz ve GPU'da hiçbir uygulama çalışmıyor olsa bile, sürücüdeki bir hata nedeniyle kartın yanmaya devam edeceği durumlar olabilir.

Bu nedenle, endişelenmeyin - ütüyü sonuna kadar yükleyin, çok deneseniz bile korkunç bir şey olmayacak. Modern donanım, hem CPU hem de GPU aşırı yük koruma sistemleriyle doludur. Soğutucuyu işlemciden çıkararak kelimenin tam anlamıyla yangın çıkarabileceğiniz günler geride kaldı.

Katılıyorum, sıcaklığı kontrol etmek düşük seviyeli yardımcı programların görevidir (belki bir donanım görevi bile olabilir),

üst düzey bir dilde yazılmış bir yazılımdan sıcaklığı kontrol etmek intihara meyilli bir yoldur.

 

GPU'yu böyle bir alay konusu ktonit deneyin.

Döngüler, her biri 100.000.000 (yüz milyon) yinelemeye sahip paralel olarak başlatılır.

izlenimler nasıl?

 //+------------------------------------------------------------------+
//|                                                   OpenCLTest.mq5 |
//|                        Copyright 2011, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link       "http://www.mql5.com"
#property version   "1.00"

//——————————————————————————————————————————————————————————————————————————————
const string cl_src=
"__kernel void MFractal(                                    \r\n"
"                       __global int *out                   \r\n"
"                      )                                    \r\n"
"  {                                                        \r\n"
"   int i = get_global_id(0);                               \r\n"
"   for(int u=0;u<100000000;u++)                            \r\n"
"   {                                                       \r\n"
"    out[i]+=u;                                             \r\n"
"    if(out[i]>10000)                                       \r\n"
"      out[i]=0;                                            \r\n"
"   }                                                       \r\n"
"   out[i]+= i;                                             \r\n"
"  }                                                        \r\n" ;
//——————————————————————————————————————————————————————————————————————————————


#define BUF_SIZE 480


//——————————————————————————————————————————————————————————————————————————————
void OnStart ()
{
   int cl_ctx; // идентификатор контекста
   int cl_prg; // идентификатор программы
   int cl_krn; // идентификатор ядра
   int cl_mem; // идентификатор буфера


   //----------------------------------------------------------------------------
   //--- инициализируем OpenCL объекты
   if ((cl_ctx=CLContextCreate( false ))== 0 )
  {
     Print ( "OpenCL not found" );
     return ;
  }
   if ((cl_prg=CLProgramCreate(cl_ctx,cl_src))== 0 )
  {
    CLContextFree(cl_ctx);
     Print ( "OpenCL program create failed" );
     return ;
  }
   if ((cl_krn=CLKernelCreate(cl_prg, "MFractal" ))== 0 )
  {
    CLProgramFree(cl_prg);
    CLContextFree(cl_ctx);
     Print ( "OpenCL kernel create failed" );
     return ;
  }
   if ((cl_mem=CLBufferCreate(cl_ctx,BUF_SIZE* sizeof ( float ),CL_MEM_READ_WRITE))== 0 )
  {
    CLKernelFree(cl_krn);
    CLProgramFree(cl_prg);
    CLContextFree(cl_ctx);
     Print ( "OpenCL buffer create failed" );
     return ;
  }
   //----------------------------------------------------------------------------


   //--- подготовимся к выполению
   uint   offset[ 1 ]={ 0 };
   uint   work  [ 1 ]={BUF_SIZE};


   //--- выставляем неизменяемые параметры функции OpenCL
   //CLSetKernelArg   (cl_krn,4,max);
  CLSetKernelArgMem(cl_krn, 0 ,cl_mem);


   //--- подготовим буфер для вывода пикселей
   uint buf[];
   ArrayResize (buf,BUF_SIZE);


   uint x= GetTickCount ();

   //--- выставляем плавающие параметры
   //CLSetKernelArg(cl_krn,0,x0);
   //CLSetKernelArg(cl_krn,1,y0);
   //CLSetKernelArg(cl_krn,2,x1);
   //CLSetKernelArg(cl_krn,3,y1);

   //--- считаем на GPU
  CLExecute(cl_krn, 1 ,offset,work);

   //--- забираем данные из буфера
  CLBufferRead(cl_mem,buf);

   //--- выведем время расчётов
   Print ( IntegerToString ( GetTickCount ()-x)+ " msec" );

  
/*
  //--- посмотрим ка что там насчитал нам GPU
  for(int i=0;i<BUF_SIZE;i++)
  {
    Print(buf[i]);
  }
*/

   //--- удаляем объекты OpenCL
  CLBufferFree (cl_mem);
  CLKernelFree (cl_krn);
  CLProgramFree(cl_prg);
  CLContextFree(cl_ctx);
}
//——————————————————————————————————————————————————————————————————————————————

2012.03.21 18:20:36 Tat Mand_ (EURUSD,H1) 5741 msn

2012.03.21 18:15:53 Terminal CPU: OrijinalIntel Intel(R) Core(TM) i5-2500 CPU @ 3.30GHz, OpenCL 1.1 (4 birim, 3311 MHz, 8174 Mb, sürüm 2.0)

2012.03.21 18:15:53 Terminal GPU: NVIDIA Corporation GeForce GTX 570, OpenCL 1.1 (15 birim, 1464 MHz, 1280 Mb, sürüm 296.10)

Dosyalar:
 
MetaDriver : Ayrıca, kartların yüksek sıcaklıklarda yatmaya başladığına dair bir söylenti vardı.
Sineklerin toplu ölümü yüzünden mi, yoksa ne?
 
Mathemat :
Bunun nedeni sineklerin ölümü mü, yoksa ne?
Testi çalıştırmayı deneyin (yukarıdaki mesajıma bakın). Ekran donuyor mu Fare imleci hareket ediyor mu?
 
Mathemat :
Bunun nedeni sineklerin ölümü mü, yoksa ne?

Bu olası değildir, çünkü çoğu durumda süreç tersine çevrilebilir. Elektron delikli plazmanın dalgalanmaları... (nasıl!). Bireysel bitler bazen ters çevrilir. Onlarla yolda değiliz. :)

Yine de kartın 90 santigrat dereceye kadar ısınması beni hasta ediyor. Çalışmalar arasındaki birkaç bin milisaniye bu durumda sıcaklığı en az 82C tutar.

Yerleştirdim, ancak bunun iyi bir nedeni var - gerektiği gibi yerleştirilmesi ve sıcaklık eşiğinin programlı olarak ayarlanabilmesi için esneklik gerekiyor.

 
joo : Bir test çalıştırmayı deneyin (yukarıdaki mesajıma bakın). Ekran donuyor mu Fare imleci hareket ediyor mu?

Yani bende senin kadar güçlü bir demir parçası yok.

Deneyeceğim ama AMD sürücüsünü tekrar takacağım.

 
Mathemat :

Yani bende senin kadar güçlü bir demir parçası yok.

Deneyeceğim ama AMD sürücüsünü tekrar takacağım.

Bu arada, AMD işlemci için artık bir OpenCL sürücüsüne sahibim - Intel hatasız kurulduğu için onu yüklemek zorunda kaldım, ancak işlemci bir OpenCL aygıtı olarak tanımlanmadı.
 
2012.03 . 21 15 : 45 : 49      Tast_Mand_ (EURUSD,H1)   16801 msec

2012.03 . 21 15 : 42 : 19      Terminal        CPU: AuthenticAMD AMD Athlon(tm) II X4 630 Processor with OpenCL 1.1 ( 4 units, 2998 MHz, 2048 Mb, version 2.0 )
2012.03 . 21 15 : 42 : 19      Terminal        GPU: NVIDIA Corporation GeForce GT 440 with OpenCL 1.1 ( 2 units, 1660 MHz, 1024 Mb, version 295.73 )
Vidyuhi'nin gerginliğini fark etmedim, koşuyor ve basıyor. Gönderici test sırasında açıldı, her şey yolunda, frensiz, sadece test süresi 17 saniyeydi.
Neden: