OpenCL: pruebas de implementación interna en MQL5 - página 40

 
joo:

1. los juegos de ordenador no se preocupan por la temperatura de la GPU y la cargan al máximo, y no pasa nada: las tarjetas gráficas funcionan.

2. en este caso, la función MQL que devuelve la temperatura de la CPU también es necesaria. :), de lo contrario el procesador podría quemarse.

3. - Claro, no estaría mal.

1. ¿cómo sabes que no les importa? No es un hecho. A algunos les da igual. Y hay mucha gente en los foros que quemó tarjetas en juguetes.

Los entusiastas suecos tuvieron que descubrir que la versión 267.52 del controlador de la GeForce GTX 590 puede dañar la GeForce GTX 590 de gama alta. La primera tarjeta 3D de doble procesador se quemó al intentar hacer overclocking. Dado que el voltaje de la GPU estaba overclockeado, los experimentadores decidieron ver cómo se comportaría la segunda, y sufrió el mismo destino. Consiguiendo la ayuda de NVIDIA, los implacables suecos consiguieron averiguar que el motivo del fallo es un error en el controlador, que impide que se active la protección contra sobrecargas.

El proceso del fallo de la tarjeta se recoge en un vídeo instructivo:


Para descargar archivos de nuestro servidor, regístrese.

La prueba se repitió con una nueva versión del controlador, la 267.71. Se ha confirmado que el fallo está solucionado y que el mecanismo de protección funciona. Por desgracia, las tarjetas venían con el controlador con el error. Hay que tener en cuenta que el mecanismo de protección no es sólo para aquellos casos en los que el usuario está experimentando con frecuencias y tensiones. Durante el uso normal, también puede surgir una situación anormal en la que la única esperanza para el usuario es el remedio establecido por los desarrolladores.

Se aconseja a

los entusiastas que no instalen nunca el controlador incluido, sino que descarguen una versión más reciente del sitio web de NVIDIA. Además, los entusiastas del overclocking deben asegurarse de que haya una buena ventilación en la caja del PC.

2. No lo discuto. Pero no es tan crítico: cuando el procesador se sobrecalienta, el Windows se cuelga en una pantalla azul. Es desagradable, pero no se puede comparar. :)

3. es definitivamente realizable - hay un montón de programas que controlan la temperatura y otros parámetros de la tarjeta. (Ya tengo cuatro.) De alguna manera consiguen esa información, ¿no?

Zy. Además, se rumorea que a altas temperaturas las tarjetas empiezan a fallar. En los juguetes no es crítico, pero de alguna manera no es deseable.

 

Las tarjetas se quemaron por errores en el controlador de la tarjeta de vídeo, que tienen mecanismos de protección contra la sobrecarga incorporados, y no porque el software que se ejecuta en la GPU no controle la temperatura.

No es que nadie sea inmune a los errores de los controladores y es posible que incluso si no hay aplicaciones que se ejecutan en la GPU, la tarjeta se queme debido a un error del controlador.

No tienes que preocuparte por ello: carga tu hardware al máximo, no puede pasar nada malo aunque te esfuerces. El hardware moderno está repleto de sistemas de protección contra las sobrecargas, tanto de la CPU como de la GPU. Atrás quedaron los días en los que al retirar el refrigerador de la CPU podías literalmente provocar un incendio.

 

joo 2012.03.21 09:06

Las tarjetas se queman por errores en el controlador de la tarjeta de vídeo, que lleva incorporados mecanismos de protección contra la sobrecarga, y no porque el software que se ejecuta en la GPU no controle la temperatura.

No es que nadie sea inmune a los errores de los controladores y es posible que incluso si no hay aplicaciones que se ejecutan en la GPU la tarjeta se queme debido a un error del controlador.

No tienes que preocuparte por ello: carga tu hardware al máximo, no puede pasar nada malo aunque te esfuerces. El hardware moderno está repleto de sistemas de protección contra las sobrecargas, tanto de la CPU como de la GPU. Atrás quedaron los días en los que retirar un refrigerador de la CPU podía provocar literalmente un incendio.

Estoy de acuerdo, el control de la temperatura es una tarea de utilidad de bajo nivel (tal vez incluso una tarea de hardware),

controlar la temperatura desde un software escrito en un lenguaje de alto nivel es una forma suicida de actuar.

 

Que alguien pruebe esta novatada de la GPU.

Se ejecuta en bucles paralelos, cada uno de los cuales 100000000 (cien millones) de iteraciones.

¿Cuáles son sus impresiones?

//+------------------------------------------------------------------+
//|                                                   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 Tast Mand_ (EURUSD,H1) 5741 mseg

2012.03.21 18:15:53 CPU del terminal: GenuineIntel Intel(R) Core(TM) i5-2500 CPU @ 3.30GHz con OpenCL 1.1 (4 unidades, 3311 MHz, 8174 Mb, versión 2.0)

2012.03.21 18:15:53 Terminal GPU: NVIDIA Corporation GeForce GTX 570 con OpenCL 1.1 (15 unidades, 1464 MHz, 1280 Mb, versión 296.10)

Archivos adjuntos:
 
MetaDriver: Además, existía el rumor de que a temperaturas más altas las tarjetas empiezan a dar error.
¿Es por la muerte masiva de moscas o algo así?
 
Mathemat:
¿Es la muerte de las moscas o algo así?
Intenta realizar la prueba (ver mi post anterior). ¿Se congela la pantalla, se mueve el cursor del ratón?
 
Mathemat:
¿Es porque las moscas están muriendo o algo así?

Esto es poco probable, ya que la mayor parte del proceso es reversible. Fluctuaciones del plasma de agujeros de electrones... (¡oh, cómo!). Los bits individuales hacen clic de vez en cuando. Tú y yo estamos fuera de nuestro camino. :)

Pero sí me asusta cuando la tarjeta llega a los 90 Celsius. Un par de miles de milisegundos entre series de ejecuciones en este caso mantiene la temperatura al menos a 82C.

Yo lo he puesto, pero lo bueno es que hay que tener la flexibilidad de ponerlo según las necesidades y el umbral de temperatura se puede establecer programáticamente.

 
joo: Intenta realizar la prueba (ver mi post anterior). ¿Se congela la pantalla, se mueve el cursor del ratón?

Bueno, yo no tengo un hardware tan potente como el tuyo.

Lo probaré ahora, pero volveré a poner el driver de AMD.

 
Mathemat:

No tengo un hardware tan potente como el tuyo.

Lo probaré ahora, pero volveré a poner el driver de AMD.

Por cierto, tengo un controlador OpenCL para mi procesador AMD - tuve que ponerlo, ya que el de Intel se instala sin errores, pero el procesador no se detecta como dispositivo OpenCL.
 
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)
No he notado ningún esfuerzo en la tarjeta de vídeo, corre y hace clic. Abrí el despachador durante la prueba, también está bien, no hay retrasos, sólo el tiempo de la prueba se convirtió en 17 segundos.
Razón de la queja: