MetaDriver: Ich habe es auch auf meinem Gerät installiert. Der Treiber wurde aktualisiert (die Installation verlief reibungslos), aber das ControlCenter fehlt jetzt komplett in der Taskleiste und kann nicht einmal manuell gestartet werden. Ist bei Ihnen alles in Ordnung?
Ich hatte das gleiche Problem, als ich die Vista-Treibersoftware von Win7 heruntergeladen habe und das ControlCenter in der Taskleiste auftauchte
Können Sie mir sagen, wenn es OpenCL-Emulator http://developer.amd.com/zones/opensource/pages/ocl-emu.aspx , ist es bequem, Code auf Laptop während eines Tages zu ändern und dann verwenden Sie es auf PC für die Optimierung. Ich nehme an, dass MT5 wird nicht mit OpenCL-Emulator arbeiten?
If you want faster apps, you’ll want to use heterogeneous computing technologies. We’re here to make that happen, with plenty of tools and resources. And if you’re thinking about architecture, HSA is going to rock your world—learn more.
dass MT5 nicht mit dem OpenCL-Emulator funktioniert?
Renat: Während das Terminal OpenCL starr nur auf der GPU verwendet, werden wir im nächsten Build die automatische Verwendung der CPU hinzufügen, wenn keine GPU vorhanden ist.
Ich hatte das gleiche Problem, als ich die Vista-Treibersoftware von Win7 heruntergeladen habe und das ControlCenter in der Taskleiste auftauchte
Können Sie mir sagen, es ist ein OpenCL-Emulator http://developer.amd.com/zones/opensource/pages/ocl-emu.aspx, ist es bequem, den Code auf dem Laptop während des Tages zu ändern, und dann verwenden Sie es auf dem PC für die Optimierung Zwecke, ich nehme an, dass MT5 wird nicht mit OpenCL-Emulator arbeiten ?
2. natürlich MT5 wird nicht mit Emulator arbeiten. Aber es kann zum Debuggen verwendet werden und fertige (debuggte) Programme können in mql5-Code eingefügt werden.
Ich habe den Emulator auch heruntergeladen. Ich habe es noch nicht benutzen können.
Advanced Micro Devices (NYSE: AMD) — это инновационная технологическая компания, ориентированная на сотрудничество с заказчиками и партнерами с целью разработки вычислительных и графических решений нового поколения для офиса, дома и игр.
Es gab eine Panne, da stimme ich zu. Aber es verschwand nach einem Neustart... Jetzt, wo ich das Symbol habe, benutze ich es immer, um die Temperatur und die Geschwindigkeit des Kühlers zu überprüfen, so dass ich ohne es nirgendwo hingehen kann.
1. Es gab eine Panne, da stimme ich zu. Aber es verschwand nach einem Neustart... Jetzt, wo ich das Symbol habe, benutze ich es immer, um die Temperatur und die Geschwindigkeit des Kühlers zu überprüfen, so dass ich ohne es nirgendwo hingehen kann.
Renat, wie sieht es mit Multithreading aus? Ich habe mehrere Testskripte auf verschiedenen Diagrammen laufen lassen, und sie fingen an, ihre Messwerte zu vermischen und sich gegenseitig die Puffer zu klauen. Das ist allerdings problematisch.
// Ich habe den Monitor gelöscht, die Systemeinheit ausgeschaltet - nichts hilft.
Renat, wie sieht es mit Multithreading aus? Ich habe mehrere Testskripte auf verschiedenen Charts laufen lassen, und sie fingen an, ihre Messwerte zu vermischen und sich gegenseitig die Puffer zu stehlen. Das ist allerdings problematisch.
// Ich habe den Monitor gelöscht, ich habe die Systemeinheit ausgeschaltet - nichts funktioniert.
Wenn es sich um das Beispiel des Mandelbrot-Tests handelt, ist zu beachten, dass das Bild in dieselbe Datei geschrieben wird. Deshalb kommt es vor, dass verschiedene Threads die BMP-Datei des jeweils anderen beschädigen.
Versuchen Sie dieses Skript - es funktioniert (rand) mit jedem Thread mit seinem eigenen Bild und nicht mehr Konflikte:
//+------------------------------------------------------------------+//| 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"//+------------------------------------------------------------------+//| Код функции OpenCL |//+------------------------------------------------------------------+conststring cl_src=
"__kernel void MFractal( \r\n"" float x0, \r\n"" float y0, \r\n"" float x1, \r\n"" float y1, \r\n"" uint max, \r\n"" __global uint *out) \r\n"" { \r\n"" size_t w = get_global_size(0); \r\n"" size_t h = get_global_size(1); \r\n"" size_t gx = get_global_id(0); \r\n"" size_t gy = get_global_id(1); \r\n"" float dx = x0 + gx * (x1-x0) / (float) w; \r\n"" float dy = y0 + gy * (y1-y0) / (float)h; \r\n"" float x = 0; \r\n"" float y = 0; \r\n"" float xx = 0; \r\n"" float yy = 0; \r\n"" float xy = 0; \r\n"" uint i = 0; \r\n"" while ((xx+yy)<4 && i<max) \r\n"" { \r\n"" xx = x*x; \r\n"" yy = y*y; \r\n"" xy = x*y; \r\n"" y = xy+xy+dy; \r\n"" x = xx-yy+dx; \r\n"" i++; \r\n"" } \r\n"" if(i==max) \r\n"" out[w*gy+gx] = 0; \r\n"" else \r\n"" out[w*gy+gx] = (uint)((float)0xFFFFFF/(float)max)*i; \r\n"" } \r\n";
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+#define SIZE_X 512#define SIZE_Y 512//+------------------------------------------------------------------+//| Заголовок BMP файла |//+------------------------------------------------------------------+struct BitmapHeader
{
ushort type;
uint size;
uint reserv;
uint offbits;
uint imgSSize;
uint imgWidth;
uint imgHeight;
ushort imgPlanes;
ushort imgBitCount;
uint imgCompression;
uint imgSizeImage;
uint imgXPelsPerMeter;
uint imgYPelsPerMeter;
uint imgClrUsed;
uint imgClrImportant;
};
//+------------------------------------------------------------------+//| Запись битмапа в файл |//+------------------------------------------------------------------+bool SaveBitmapToFile(conststring filename,uint &bitmap[],const BitmapHeader &info)
{
//--- откроем файлint file=FileOpen(filename,FILE_WRITE|FILE_BIN);
if(file==INVALID_HANDLE)
{
Print(__FUNCTION__," error opening '",filename,"'");
return(false);
}
//--- запишем заголовок и само телоif(FileWriteStruct(file,info)==sizeof(info))
{
if(FileWriteArray(file,bitmap)==ArraySize(bitmap))
{
FileClose(file);
return(true);
}
}
//--- неудачно получилось, удалим файл от греха подальшеFileClose(file);
FileDelete(filename);
Print(__FUNCTION__," error writting '",filename,"'");
//--- вернем ошибкуreturn(false);
}
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
int cl_ctx;
int cl_prg;
int cl_krn;
int cl_mem;
int fileidx=MathRand()&255;
//--- инициализируем OpenCL объектыif((cl_ctx=CLContextCreate())==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,SIZE_X*SIZE_Y*sizeof(float),CL_MEM_READ_WRITE))==0)
{
CLKernelFree(cl_krn);
CLProgramFree(cl_prg);
CLContextFree(cl_ctx);
Print("OpenCL buffer create failed");
return;
}
//--- подготовимся к выполнениюfloat x0 =-2;
float y0 =-0.5;
float x1 =-1;
float y1 = 0.5;
uint max = 20000;
uint offset[2]={0,0};
uint work [2]={SIZE_X,SIZE_Y};
//--- выставляем неизменяемые параметры функции OpenCL
CLSetKernelArg(cl_krn,4,max);
CLSetKernelArgMem(cl_krn,5,cl_mem);
//--- подготовим буфер для вывода пикселейuint buf[];
ArrayResize(buf,SIZE_X*SIZE_Y);
//--- подготовим заголовок
BitmapHeader info;
ZeroMemory(info);
info.type =0x4d42;
info.size =sizeof(info)+SIZE_X*SIZE_Y*4;
info.offbits =sizeof(info);
info.imgSSize =40;
info.imgWidth =SIZE_X;
info.imgHeight =SIZE_Y;
info.imgPlanes =1;
info.imgBitCount =32;
info.imgCompression=0; // BI_RGB
info.imgSizeImage =SIZE_X*SIZE_Y*4;
//--- создаём объект для вывода графикиObjectCreate(0,"x",OBJ_BITMAP_LABEL,0,0,0);
ObjectSetInteger(0,"x",OBJPROP_XDISTANCE,4);
ObjectSetInteger(0,"x",OBJPROP_YDISTANCE,26);
//--- рендерим пока не остоновят снаружиwhile(!IsStopped())
{
uint x=GetTickCount();
//--- выставляем плавающие параметры
CLSetKernelArg(cl_krn,0,x0);
CLSetKernelArg(cl_krn,1,y0);
CLSetKernelArg(cl_krn,2,x1);
CLSetKernelArg(cl_krn,3,y1);
//--- рендерим кадр
CLExecute(cl_krn,2,offset,work);
//--- забираем данные кадра
CLBufferRead(cl_mem,buf);
//--- выведем время рендераComment(IntegerToString(GetTickCount()-x)+" msec per frame");
//--- сохраняем кадр в памяти и рисуем его
SaveBitmapToFile("Mandelbrot"+IntegerToString(fileidx)+".bmp",buf,info);
ObjectSetString(0,"x",OBJPROP_BMPFILE,NULL);
ObjectSetString(0,"x",OBJPROP_BMPFILE,"\\Files\\Mandelbrot"+IntegerToString(fileidx)+".bmp");
ChartRedraw();
//--- небольшая задержка и обновление параметров для следующего кадраSleep(10);
x0+=0.001 f;
x1-=0.001 f;
y0+=0.001 f;
y1-=0.001 f;
}
//--- удаляем объекты OpenCL
CLBufferFree(cl_mem);
CLKernelFree(cl_krn);
CLProgramFree(cl_prg);
CLContextFree(cl_ctx);
}
//+------------------------------------------------------------------+
Bitte beachten Sie, dass mehrere Skripte, die gleichzeitig OpenCL verwenden, zu einem nicht-linearen Verlust der GPU-Leistung führen.
1. wenn es sich um das Beispiel des Mandelbrot-Tests handelt, ist zu beachten, dass das Bild in dieselbe Datei geschrieben wird. Deshalb verderben verschiedene Threads die BMP-Datei des jeweils anderen.
Versuchen Sie dieses Skript - es funktioniert mit jedem Thread (Rand) mit seinem eigenen Bild und nicht mehr Konflikte:
2. Beachten Sie jedoch, dass mehrere Skripte, die gleichzeitig OpenCL verwenden, zu einem nicht linearen Verlust der GPU-Leistung führen.
1. Mist! Das hätte ich mir denken können. Entschuldigung für den übermäßigen Lärm.
Er sah den Skeptiker an. Das ist richtig, ja. Nur besser.
int fileidx=ChartID();
Was auch immer es wert ist...
2. das wollte ich sehen, nur um zu überlegen... :)
Ich habe es auch auf meinem Gerät installiert. Der Treiber wurde aktualisiert (die Installation verlief reibungslos), aber das ControlCenter fehlt jetzt komplett in der Taskleiste und kann nicht einmal manuell gestartet werden. Ist bei Ihnen alles in Ordnung?
Ich hatte das gleiche Problem, als ich die Vista-Treibersoftware von Win7 heruntergeladen habe und das ControlCenter in der Taskleiste auftauchte
Können Sie mir sagen, wenn es OpenCL-Emulator http://developer.amd.com/zones/opensource/pages/ocl-emu.aspx , ist es bequem, Code auf Laptop während eines Tages zu ändern und dann verwenden Sie es auf PC für die Optimierung. Ich nehme an, dass MT5 wird nicht mit OpenCL-Emulator arbeiten?
IgorM:
dass MT5 nicht mit dem OpenCL-Emulator funktioniert?
Während das Terminal OpenCL starr nur auf der GPU verwendet, werden wir im nächsten Build die automatische Verwendung der CPU hinzufügen, wenn keine GPU vorhanden ist.
Ich hatte das gleiche Problem, als ich die Vista-Treibersoftware von Win7 heruntergeladen habe und das ControlCenter in der Taskleiste auftauchte
Können Sie mir sagen, es ist ein OpenCL-Emulator http://developer.amd.com/zones/opensource/pages/ocl-emu.aspx, ist es bequem, den Code auf dem Laptop während des Tages zu ändern, und dann verwenden Sie es auf dem PC für die Optimierung Zwecke, ich nehme an, dass MT5 wird nicht mit OpenCL-Emulator arbeiten ?
1. Ich glaube, ich habe die richtige Version. Ich habe es von hier: http: //developer.amd.com/Downloads/AMD-APP-SDK-v2.6-Windows-64.exe
2. natürlich MT5 wird nicht mit Emulator arbeiten. Aber es kann zum Debuggen verwendet werden und fertige (debuggte) Programme können in mql5-Code eingefügt werden.
Ich habe den Emulator auch heruntergeladen. Ich habe es noch nicht benutzen können.
1. Es scheint die richtige Version zu sein. Ich habe es von hier: http: //developer.amd.com/Downloads/AMD-APP-SDK-v2.6-Windows-64.exe
Es gab eine Panne, da stimme ich zu. Aber es verschwand nach einem Neustart... Jetzt, wo ich das Symbol habe, benutze ich es immer, um die Temperatur und die Geschwindigkeit des Kühlers zu überprüfen, so dass ich ohne es nirgendwo hingehen kann.
Ich stimme mit IgorM überein, dass ich die Treiber immer von http://sites.amd.com/us/game/downloads/Pages/radeon_win7-64.aspx herunterlade ( Link zur HD 6xxx WIN7 x64 Seite).
Und das Catalyst-Zentrum selbst für dieselbe Version: http://www2.ati.com/drivers/12-1_vista_win7_64_dd_ccc.exe
1. Es gab eine Panne, da stimme ich zu. Aber es verschwand nach einem Neustart... Jetzt, wo ich das Symbol habe, benutze ich es immer, um die Temperatur und die Geschwindigkeit des Kühlers zu überprüfen, so dass ich ohne es nirgendwo hingehen kann.
2. ich stimme mit IgorM überein, ich lade die Treiber immer von http://sites.amd.com/us/game/downloads/Pages/radeon_win7-64.aspx herunter ( Link zur Seite für HD 6xxx WIN7 x64).
3. und das Catalyst-Center selbst für dieselbe Version: http://www2.ati.com/drivers/12-1_vista_win7_64_dd_ccc.exe
1. ich habe nichts, ein Neustart hilft nicht.
Es scheint etwas zu fehlen, damit es glücklich ist. Ich werde Sie fragen, ob ich es herausfinden kann. :) // wenn yandex nicht helfen kann.
// Was die Kühlboxen angeht, so behalte ich sie im Auge. AI Suite II ist lebendig und läuft, nur Catalist Control Center ist tot.
2. ich suche dort auch alles. Alles funktioniert, und Catalist hat auch funktioniert, bis ich die neue Version rübergeschoben habe.
3. ich habe die gleiche Datei. 151765KB auf meiner Festplatte, falls Sie sie brauchen. :)
Vielen Dank für die Antworten.
Renat, wie sieht es mit Multithreading aus? Ich habe mehrere Testskripte auf verschiedenen Diagrammen laufen lassen, und sie fingen an, ihre Messwerte zu vermischen und sich gegenseitig die Puffer zu klauen. Das ist allerdings problematisch.
// Ich habe den Monitor gelöscht, die Systemeinheit ausgeschaltet - nichts hilft.
Renat, wie sieht es mit Multithreading aus? Ich habe mehrere Testskripte auf verschiedenen Charts laufen lassen, und sie fingen an, ihre Messwerte zu vermischen und sich gegenseitig die Puffer zu stehlen. Das ist allerdings problematisch.
// Ich habe den Monitor gelöscht, ich habe die Systemeinheit ausgeschaltet - nichts funktioniert.
Wenn es sich um das Beispiel des Mandelbrot-Tests handelt, ist zu beachten, dass das Bild in dieselbe Datei geschrieben wird. Deshalb kommt es vor, dass verschiedene Threads die BMP-Datei des jeweils anderen beschädigen.
Versuchen Sie dieses Skript - es funktioniert (rand) mit jedem Thread mit seinem eigenen Bild und nicht mehr Konflikte:
Bitte beachten Sie, dass mehrere Skripte, die gleichzeitig OpenCL verwenden, zu einem nicht-linearen Verlust der GPU-Leistung führen.
1. wenn es sich um das Beispiel des Mandelbrot-Tests handelt, ist zu beachten, dass das Bild in dieselbe Datei geschrieben wird. Deshalb verderben verschiedene Threads die BMP-Datei des jeweils anderen.
Versuchen Sie dieses Skript - es funktioniert mit jedem Thread (Rand) mit seinem eigenen Bild und nicht mehr Konflikte:
2. Beachten Sie jedoch, dass mehrere Skripte, die gleichzeitig OpenCL verwenden, zu einem nicht linearen Verlust der GPU-Leistung führen.
1. Mist! Das hätte ich mir denken können. Entschuldigung für den übermäßigen Lärm.
Er sah den Skeptiker an. Das ist richtig, ja. Nur besser.
Was auch immer es wert ist...
2. das wollte ich sehen, nur um zu überlegen... :)
MetaDriver:
...3 Nun, es ist dieselbe Datei, die ich habe. 151765KB auf der Festplatte, wenn überhaupt. :)
...
Die obere Datei ist ein Download von mir, die untere Datei von Ihrem Link. Völlig andere Größe.... )