文章 "如何安装并使用 OpenCL 计算" - 页 5

 

关于交易、自动交易系统和交易策略测试的论坛

关于文章 "如何在计算中安装和使用 OpenCL "的讨论

MetaDriver, 2013.11.27 23:23

...

有些评级对你来说很疯狂,或者算错了。 这是我今天的评级:

2013.11.28 00:04:42     OpenCL  Device #1:  CPU AuthenticAMD AMD Phenom(tm) II X6 1100 T Processor with OpenCL 1.1 (6 units, 3840 MHz, 16345 Mb, version 2.0, rating 17)
2013.11.28 00:04:42     OpenCL  Device #0:  GPU Advanced Micro Devices, Inc. Cayman with OpenCL 1.1 (20 units, 750 MHz, 1024 Mb, version CAL 1.4.1703 (VM), rating 171)

我不相信评分会有如此大的差异,一定是出了什么问题。

我重新安装了驱动程序,现在差别更大了。在终端日志中,CPU 评级高达130 (显卡也差不多)。但在 "代理"部分的配置文件中(连接到云的代理),所有内核的平均额定值为~170(最大值为183)。

我不知道为什么会有这样的差异...

 
tol64:

重新安装了驱动程序,现在差别更大了。在终端日志中,CPU 评级高达130 (显卡上也差不多)。但在 "代理"部分的配置文件中(连接到云的代理),所有内核的平均额定值为~170(最大值为183)。

我不知道为什么会有这样的差异...

不,代理是另一首歌,普通(非 OpenCL)计算的评级是在那里计算的,也就是说,它们一般是以其他相对单位计算的。

我明白驱动程序的问题,但我还是迟迟没有重装驱动程序--去年重装驱动程序时我就遇到过问题。 在没有重装系统的情况下,我勉强成功了。

 

Intel® SDK for OpenCL* Applications 2013 - 未安装在我的电脑上:

请告诉我点击哪里 :)- Win 7 x64

 
MigVRN:

Intel® SDK for OpenCL* Applications 2013 - 未安装在我的电脑上:

请告诉我点击哪里 :)- Win 7 x64

首先从英特尔 网站下载,然后安装以下文件:intel_sdk_for_ocl_applications_2013_r2_runtime_x64_setup.msi
 
tol64:
首先从英特尔 网站下载,然后安装以下文件:intel_sdk_for_ocl_applications_2013_r2_runtime_x64_setup.msi
非常感谢 - 它帮了我大忙!
 
您能告诉我如何使用 GPU 作为测试代理吗?因为一切都已安装(OpenCL 驱动程序),终端也能找到 GPU,但在测试仪的代理列表中却找不到,只有 2 个 CPU 内核。
 

我仍然不太了解 MetaTrader 和 OpenCL 功能.......。
据我所知,OpenCL 功能 是将PC 处理器与 VGA GPU 处理器共享。(主要用于游戏/图片编辑)....,目的是让 PC 处理器不至于工作得太辛苦。

我读了一些关于 OpenCL 和 MetaTrader 5 的参考资料,但大多包含脚本,
,不幸的是,我对 coding,,,,, 一无所知,而且读得越多,我就越头晕。


我的问题:....
1.我不使用任何 EA,只使用布林线和随机指标.....
,如果我的 MetaTrader 5 激活了 OpenCL 功能,是否能够将电脑处理器的使用率降低到 50% 左右?

2. 如果运行 8 个不同的 "MetaTrader 5"(激活了 OpenCL),是否真的感觉更轻便且不会降低电脑速度?

如果有人知道答案,请用简单的英语解释一下。

 
stivy007:
您能告诉我如何使用 GPU 作为测试代理吗?因为一切都已安装(OpenCL 驱动程序),终端也能找到 GPU,但在测试仪的代理列表中却找不到它,只有 2 个 CPU 内核?
不可能。应该是专门编写的顾问 提供支持。
 

有谁知道为什么 OpenCL 的简单代码在处理器上能正常工作,而视频驱动程序在显卡上却会崩溃?

如果去掉内循环,在显卡上就能正常运行。

#property link      "http://www.mql5.com"
#property version   "1.00"
#property script_show_inputs;

input int _device = 0;        /// OpenCL 设备编号 

string d2s( double arg, int dig )         { return DoubleToString( arg, dig ); }
//+------------------------------------------------------------------+

string i2s( int arg )                     { return IntegerToString( arg ); }
//+------------------------------------------------------------------+

const string clSrc =
      "#pragma  OPENCL EXTENSION cl_khr_fp64 : enable                      \r\n"
      "                                                                    \r\n"
      "__kernel void test( __global double *out )                          \r\n"                 
      "{                                                                   \r\n"                  
      "  double x = 0.0;  double x1 = 0.0;                                 \r\n"                      
      "  for( long j = 0; j < 1000000; j ++ )                              \r\n"
      "  {                                                                 \r\n"
      "     x =x+0.01;                                                     \r\n"     
      "     for( long n = 1; n < 10000; n ++ ) x1=x1+0.01;                 \r\n"
      "  }                                                                 \r\n"
      "  out[ 0 ] = x;                                                     \r\n"
      "}                                                                   \r\n";
      

int OnStart()
{
   int clCtx = CLContextCreate( _device );
   
   int clPrg = CLProgramCreate( clCtx, clSrc );
   int clKrn = CLKernelCreate( clPrg, "test" );

   uint st = GetTickCount( );

   int clMem = CLBufferCreate( clCtx,  sizeof( double ), CL_MEM_READ_WRITE );            
   CLSetKernelArgMem( clKrn, 0, clMem );
   Print (i2s(clCtx)+";"+i2s(clPrg)+";"+i2s(clKrn));
   bool ex = CLExecute( clKrn ); 
                       
   double buf[1];                                                
   uint read = CLBufferRead( clMem, buf );                                                 
   
   Print( "out = " + d2s( buf[0], 12 ) );
      
   CLBufferFree( clMem );
   CLKernelFree( clKrn );
   CLProgramFree( clPrg );
   CLContextFree( clCtx );
   
   double gone = ( GetTickCount( ) - st ) / 1000.;
   Print( "OpenCl: gone = " + d2s( gone, 3 ) + " sec." );
   Print( "________________________" );
   
   return( 0 );
}//+------------------------------------------------------------------+
 

能否将指标、蜡烛或图表中的任何属性 传递到 GPU?

例如,获取 RSI 或随机指标或一目均衡图或烛光 OHLC?