以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  金字塔软件问题提交  (http://weistock.com/bbs/list.asp?boardid=2)
----  请教ADMIN 关于复杂模型 多核优化测试时的一点疑难杂症  (http://weistock.com/bbs/dispbbs.asp?boardid=2&id=15366)

--  作者:ackvz
--  发布时间:2012/8/21 15:40:57
--  请教ADMIN 关于复杂模型 多核优化测试时的一点疑难杂症

 

金字塔一直用得挺好的,最近写完复杂点的模型,有个参数要优化下,看看表现怎么样,结果出了疑难杂症。

下列情况在我所用的2个版本中出现。2.88和2.91.

1, 一个模型,1个参数,2年的3分钟数据,进行多核优化时,始终出错。

症状: A:很快完成25%进度, 然后停住不动,CPU使用率降为0, 但是优化出的结果都是0,等于什么都没有算。

B:或者很快直接完成100%, 结果还是0.

C: 有部分计算,但是显示的结果一行正常,下一行为0,依次往下。一行正常 一行为0.

ABC 3种错误症状的出现是随机的,AB症状偏多。

2,如果该模型只选取半年的数据进行优化,用单核或多核进行 所得结果都正常。

3,排除各种设置的差错, 用一般简单的模型做优化,全部正常。再说老用户也不会阴沟里翻船。

4,排除数据问题,数据全,无引用。 用该复杂模型直接测试,所得结果正常。

5,排除模型逻辑错误。将该模型所优化的参数限定在很少的几步, 每步单独直接测试,所得结果正常。

6,排除电脑问题,I7 CPU,关了超线程,正宗4核心。 多台电脑不同配置都重现ABC症状。


 

推测:

1 模型复杂导致的问题。 模型直接进行策略测试 2年数据需要150秒。用单核优化10步的话应该是1500秒完成。  单核优化是不是第一个参数值算出结果了,再安排算第二个参数值呢? 多核出错的比例高,单核优化稍微正常。 但是单核的时候也会出现(出现比例很低)第一个参数计算正确,第二个计算全部为0,第三个又正确,第四个又全部为0,依次往下。

2 多核 只要数据超过一定量,单步计算需要的时间长一些,基本就不正确了。始终ABC症状。

3 推测是模型的复杂度导致优化计算时电脑资源分配不够。多核尤其明显。 感觉第一个参数值没算完,电脑就去算下一个参数值。 结果都没算。

4,所以 请ADMIN帮忙看看, 能不能重新调整优化时的电脑资源分配。 无论是用单核还是多核, 不急,慢慢算 算好一个再算下一个。


 

[此贴子已经被作者于2012-8-21 15:44:42编辑过]

--  作者:董小球
--  发布时间:2012/8/21 16:41:38
--  
楼主
1你看看内存的使用情况如何?
2是不是你指标里调用了DLL,如果是的话请保证DLL如果是逐K模式的,那么公式也要用逐K模式
3检查你指标的算法,是不是由于循环 条件判断等较为复杂的算法造成的
4如果以上都不是,请简化出来一个能够重新这个问题的指标来,我们这边来测测看,看能否查出问题。

--  作者:王锋
--  发布时间:2012/8/21 17:01:49
--  

如果你在优化时单核可以正常工作,那就基本可以说明在多核同步优化时你的策略使用了某些公用的变量。

比如全局变量数据库,数据库,等等这些变量,在多核工作时他会相互干扰,最后造成紊乱。


--  作者:ackvz
--  发布时间:2012/8/21 18:24:34
--  

回2楼3楼

内存使用没问题,8G 还剩下4G至少3G  64位系统.

模型是逐K的  没有用DLL  VB什么的都没有用 就是简单的PEL

逻辑没问题, 单独测试的时候 是好的  单核测试也是好的,  开4个金字塔 各自同时单核优化 也是好的。

 

模型没法简化, 数据只用半年的  就什么都好了,  用2年就没法多核优化了

 

回3楼, 没有用全局变量, 没有用数据库。

 

现在一台机 开4个金字塔, 各自用单核优化,没有问题。 唉,只能手动变相用到多核了。


--  作者:王锋
--  发布时间:2012/8/21 18:43:23
--  

如果你无法找到问题,那么可否能给出一个能体现此问题的公式,我们本地测试,然后帮助你查找原因


--  作者:saveric
--  发布时间:2012/12/27 18:44:53
--  
多核时候是会出现问题,现在也只能用单核了.
--  作者:saveric
--  发布时间:2012/12/29 22:45:06
--  
 这种情况我也遇到,最后的解决办法是,用排除法,剔除那些导致结果为0的模型.

--  作者:ackvz
--  发布时间:2012/12/30 13:20:46
--  

剔除那些导致结果为0的模型.?

 

怎么会结果为0呢

 

我是同一个模型 一个参数取10个值  明显都该有结果的

 

 


--  作者:ackvz
--  发布时间:2012/12/30 13:21:21
--  

多核的时候 不是算错 

而是某些参数 根本就不去计算

从测试时间上能看出来


--  作者:独孤求败
--  发布时间:2012/12/30 13:23:21
--  
仔细想想3楼的版主给你的回复.