MetaDriver: Поставил себе тоже. Драйвер обновился (и вообще установка нормально прошла), зато ControlCenter пропал из трея напроч и даже вручную не запускается. У тебя с этим всё в норме?
у меня так же было когда на Win7 дрова с Vista ставил, потом скачал под Win7 и ControlCenter в трее стал появляться
подскажите, вот есть эмулятор OpenCL http://developer.amd.com/zones/opensource/pages/ocl-emu.aspx , бывает удобно на ноуте править код в течении дня, а затем на ПК уже использовать в части оптимизации, я понимаю так, что MT5 не будет работать с эмулятором OpenCL ?
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.
у меня так же было когда на Win7 дрова с Vista ставил, потом скачал под Win7 и ControlCenter в трее стал появляться
подскажите, вот есть эмулятор OpenCL http://developer.amd.com/zones/opensource/pages/ocl-emu.aspx , бывает удобно на ноуте править код в течении дня, а затем на ПК уже использовать в части оптимизации, я понимаю так, что MT5 не будет работать с эмулятором OpenCL ?
Advanced Micro Devices (NYSE: AMD) — это инновационная технологическая компания, ориентированная на сотрудничество с заказчиками и партнерами с целью разработки вычислительных и графических решений нового поколения для офиса, дома и игр.
Был глючок, согласен. Но толи после перезагрузки исчез... Сейчас иконка есть, постоянно смотрю по ней температуру и скорость куллеров, так что без нее никуда.
1. Был глючок, согласен. Но толи после перезагрузки исчез... Сейчас иконка есть, постоянно смотрю по ней температуру и скорость куллеров, так что без нее никуда.
Ренат! А что у нас с многопоточностью? Я запустил несколько тестовых скриптов на разных чартах - они дружно начали путаться в показаниях, всё время буферы воруют друг у друга. Беда, однако.
// Монитор протирал, системный блок пинал - ничё не помогает.
Ренат! А что у нас с многопоточностью? Я запустил несколько тестовых скриптов на разных чартах - они дружно начали путаться в показаниях, всё время буферы воруют друг у друга. Беда, однако.
// Монитор протирал, системный блок пинал - ничё не помогает.
Если речь идет об тестовом примере с Мандельбротом, то обратите внимание, что картинка пишется в один и тот же файл. Поэтому и получается, что разные потоки портят друг другу BMP файл.
Попробуйте вот этот скрипт - в нем каждый поток работает (ранд) со своей картинкой и больше не конфликтуют:
//+------------------------------------------------------------------+//| 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.001f;
x1-=0.001f;
y0+=0.001f;
y1-=0.001f;
}
//--- удаляем объекты OpenCL
CLBufferFree(cl_mem);
CLKernelFree(cl_krn);
CLProgramFree(cl_prg);
CLContextFree(cl_ctx);
}
//+------------------------------------------------------------------+
Но учтите, что несколько скриптов, одновременно использующих OpenCL, дают нелинейную потерю производительности GPU.
1. Если речь идет об тестовом примере с Мандельбротом, то обратите внимание, что картинка пишется в один и тот же файл. Поэтому и получается, что разные потоки портят друг другу BMP файл.
Попробуйте вот этот скрипт - в нем каждый поток работает (ранд) со своей картинкой и больше не конфликтуют:
2. Но учтите, что несколько скриптов, одновременно использующих OpenCL, дают нелинейную потерю производительности GPU.
1. Тьху, блин! Мог бы и сам догадаться. Извините за лишний шум.
Поставил себе тоже. Драйвер обновился (и вообще установка нормально прошла), зато ControlCenter пропал из трея напроч и даже вручную не запускается. У тебя с этим всё в норме?
у меня так же было когда на Win7 дрова с Vista ставил, потом скачал под Win7 и ControlCenter в трее стал появляться
подскажите, вот есть эмулятор OpenCL http://developer.amd.com/zones/opensource/pages/ocl-emu.aspx , бывает удобно на ноуте править код в течении дня, а затем на ПК уже использовать в части оптимизации, я понимаю так, что MT5 не будет работать с эмулятором OpenCL ?
IgorM:
что MT5 не будет работать с эмулятором OpenCL ?
Пока терминал жестко использует OpenCL только на GPU, в очередном билде добавим автоматическое использование CPU, если нет GPU.
у меня так же было когда на Win7 дрова с Vista ставил, потом скачал под Win7 и ControlCenter в трее стал появляться
подскажите, вот есть эмулятор OpenCL http://developer.amd.com/zones/opensource/pages/ocl-emu.aspx , бывает удобно на ноуте править код в течении дня, а затем на ПК уже использовать в части оптимизации, я понимаю так, что MT5 не будет работать с эмулятором OpenCL ?
1. Да вроде правильная версия. Отсюда брал : http://developer.amd.com/Downloads/AMD-APP-SDK-v2.6-Windows-64.exe
2. MT5 конечно не будет работать с эмулятором. Но им можно пользоваться для отладки, а готовые (отлаженные) программы вставлять в mql5-код.
Я эмулятор тоже скачал. Пока не щупал.
1. Да вроде правильная версия. Отсюда брал : http://developer.amd.com/Downloads/AMD-APP-SDK-v2.6-Windows-64.exe
Был глючок, согласен. Но толи после перезагрузки исчез... Сейчас иконка есть, постоянно смотрю по ней температуру и скорость куллеров, так что без нее никуда.
А дрова, соглашусь с IgorM, качаю всегда с http://sites.amd.com/us/game/downloads/Pages/radeon_win7-64.aspx ( ссылка на страницу для HD 6xxx WIN7 x64)
И сам каталист центр для той же версии: http://www2.ati.com/drivers/12-1_vista_win7_64_dd_ccc.exe
1. Был глючок, согласен. Но толи после перезагрузки исчез... Сейчас иконка есть, постоянно смотрю по ней температуру и скорость куллеров, так что без нее никуда.
2. А дрова, соглашусь с IgorM, качаю всегда с http://sites.amd.com/us/game/downloads/Pages/radeon_win7-64.aspx ( ссылка на страницу для HD 6xxx WIN7 x64)
3. И сам каталист центр для той же версии: http://www2.ati.com/drivers/12-1_vista_win7_64_dd_ccc.exe
1. Чёт у меня глухо. Перезагруз не помогает.
Вроде какой-то dll-ки не хватает ему для щястья. Выясню - у тебя попрошу. :) // если яндекс не поможет
// Нащёт кулеров - я их бдю нормально. AI Suite II жива и работает, умер только Catalist Control Center.
2. Я тоже всё там ищу. Всё работает, да и Catalist работал, пока не переставил новую версию поверх.
3. Ну этот же файл и у меня. 151765 КБ на диске, если чё. :)
Спасибо за ответы.
Ренат! А что у нас с многопоточностью? Я запустил несколько тестовых скриптов на разных чартах - они дружно начали путаться в показаниях, всё время буферы воруют друг у друга. Беда, однако.
// Монитор протирал, системный блок пинал - ничё не помогает.
Ренат! А что у нас с многопоточностью? Я запустил несколько тестовых скриптов на разных чартах - они дружно начали путаться в показаниях, всё время буферы воруют друг у друга. Беда, однако.
// Монитор протирал, системный блок пинал - ничё не помогает.
Если речь идет об тестовом примере с Мандельбротом, то обратите внимание, что картинка пишется в один и тот же файл. Поэтому и получается, что разные потоки портят друг другу BMP файл.
Попробуйте вот этот скрипт - в нем каждый поток работает (ранд) со своей картинкой и больше не конфликтуют:
Но учтите, что несколько скриптов, одновременно использующих OpenCL, дают нелинейную потерю производительности GPU.
1. Если речь идет об тестовом примере с Мандельбротом, то обратите внимание, что картинка пишется в один и тот же файл. Поэтому и получается, что разные потоки портят друг другу BMP файл.
Попробуйте вот этот скрипт - в нем каждый поток работает (ранд) со своей картинкой и больше не конфликтуют:
2. Но учтите, что несколько скриптов, одновременно использующих OpenCL, дают нелинейную потерю производительности GPU.
1. Тьху, блин! Мог бы и сам догадаться. Извините за лишний шум.
Глянул скипт. Ну всё правильно, ага. Только лучше
а то мало ли...
2. Так это я и хотел посмотреть. Дабы учесть.. :)
MetaDriver:
...3. Ну этот же файл и у меня. 151765 КБ на диске, если чё. :)
...
Верхний файл - скачан по моей, нижний по твоей ссылке. Совсем разный размер.... )