1 测试
龙测试
ta
oblas使用-g选项正确性 特征值部分还是有个函数不能过。
原版blas配合-g选项正确性可以过
原版BLAS配合-O2选项正确性可以过 性能?
验收 TB LO编译器 确定一下 正确性和性能ok
TC gforran编译器??
2 天体
(1)使用8路8核机器上 earth20120418-format目录下文件
串行 并行2线程 并行4线程对比精度
22文件差别很大 串并行 有错误
今天调试的结果是发现进行omp并行的时候三个输出文件中例如22,22d,22p。
并行的22文件跟穿行的差别非常大。卡在这了。不知道作何解释。
1 不知道是不是以前的结果就是这样,还是因为我没有弄好。这次这样的结果。
2 如果确实是这样的结果,那麻烦就大了
截取部分文件如下:
穿行的22:
4.000000
4.9960060E-04 4.9961155E-04 4.9976038E-04 4.9981714E-04 4.9988757E-04
4.9990788E-04 4.9986731E-04 4.9982639E-04 4.9984490E-04 4.9985270E-04
4.9990293E-04 4.9991067E-04 4.9995241E-04 4.9996743E-04 4.9994991E-04
4.9993611E-04 4.9989828E-04 4.9992820E-04 4.9993151E-04 4.9994548E-04
4.9994781E-04 4.9991917E-04 4.9990905E-04 4.9993640E-04 5.0000916E-04
5.0002674E-04 4.9998611E-04 4.9991749E-04 4.9991690E-04 4.9995194E-04
4.9996126E-04 4.9996562E-04 4.9996708E-04 4.9996882E-04 4.9997057E-04
4.9998239E-04 4.9998763E-04 4.9998140E-04 4.9997389E-04 4.9997307E-04
4.9998262E-04 4.9998547E-04 4.9997290E-04 4.9995224E-04 4.9995136E-04
4.9995858E-04 4.9997802E-04 4.9999251E-04 4.9999217E-04 4.9997610E-04
4.9995346E-04 4.9995346E-04 4.9997197E-04 4.9998332E-04 4.9998332E-04
4.9998204E-04 4.9998099E-04 5.0000375E-04 5.0003733E-04 5.0004222E-04
5.0003314E-04 4.9998693E-04 4.9997121E-04 4.9996923E-04 4.9996894E-04
4.9996795E-04 4.9996725E-04 4.9996434E-04 4.9996329E-04 4.9996848E-04
4.9998431E-04 4.9999903E-04 5.0000683E-04 5.0001411E-04 5.0001417E-04
5.0001184E-04 5.0000288E-04 4.9999903E-04 4.9999927E-04 5.0000608E-04
5.0001498E-04 5.0001789E-04 5.0001900E-04 5.0002098E-04 5.0002494E-04
5.0002919E-04 5.0002889E-04 5.0001283E-04 4.9997336E-04 4.9994822E-04
4.9993949E-04 4.9993087E-04 4.9993052E-04 4.9994804E-04 4.9997889E-04
4.9998745E-04 4.9998844E-04 4.9998821E-04 4.9998594E-04 4.9998588E-04
并行的22:
160 160 160
-300.0002 -283.9657 -268.7968 -254.4468 -240.8716
-228.0292 -215.8802 -204.3870 -193.5143 -183.2286
-173.4982 -164.2931 -155.5849 -147.3469 -139.5536
-132.1810 -125.2065 -118.6085 -112.3667 -106.4619
-100.8758 -95.59135 -90.59217 -85.86288 -81.38890
-77.15646 -73.15250 -69.36472 -65.78142 -62.39156
-59.18472 -56.15100 -53.28107 -50.56607 -47.99764
-45.56787 -43.26928 -41.09478 -39.03768 -37.09163
-35.25064 -33.50904 -31.86146 -30.30283 -28.82835
-27.43346 -26.11388 -24.86555 -23.68460 -22.56741
-21.51053 -20.51072 -19.56487 -18.67009 -17.82362
-17.02284 -16.26530 -15.54865 -14.87069 -14.22934
-13.62260 -13.04863 -12.50564 -11.99196 -11.50601
-11.04630 -10.61141 -10.20000 -9.800000 -9.400001
-9.000001 -8.600001 -8.200002 -7.800002 -7.400002
-7.000002 -6.600002 -6.200002 -5.800002 -5.400002
-5.000001 -4.600001 -4.200001 -3.800001 -3.400001
-3.000001 -2.600001 -2.200001 -1.800000 -1.400000
-1.000000 -0.6000006 -0.2000005 0.1999995 0.5999995
0.9999995 1.399999 1.799999 2.199999 2.599999
3.000000 3.400000 3.800000 4.200000 4.599999
5.000000 5.400000 5.800000 6.200000 6.600000
这是因为 多输出了数据,无所谓去掉前面的97行就可以了。
使用文件:/projectearth/earth20120418-format/earthserial/earth.for
/projectearth/earth20120418-format/earthomp4/ earth4_omp.allloop.zone3seep3.for
(2)
/projectearth/earth20120418-format/earthomp/ earth4_omp.allloop.zone3oseep3o.for不行,只计算了一步。导致事件很短。
头文件.zone3oseep3o 换成zone3 sweep3 即可
多测试即便openmp的数据 对比精度:
如果出现不一样 说明是顺序不一致引起的
如果一致,说明openmp改变的顺序没有变或者没有改变顺序
(3)测试结果
关于精度:
1 对omp程序多次测试
结果如下:
(1)固定线程数目,多次测试,结果不会改变,数值精度保持稳定。
(2)改变线程数目,结果不会改变,数值精度保持稳定。
2 openmp结果与串行精度是不一样的。
结论:
1 我们的结果精度可以达到10^-11或者10^12. 与串行结果相减后的误差达到10^-9或者10^-10。基本上是后两位数字有差别。
2 如果是并行导致的计算顺序的不一样引起的误差,那么2线程与4,8线程的结果应该是不一样的。现在是一样的。何解?
omp打乱循环的数序, 所以截断误差会导致最后几位不同(如前面几个数据).
除了这个原因,应该不可能是别的原因了。
但是实验结果似乎不支持。
(4)是否对程序做了修改?上次的测试结果是否还有效?
1
今天在226上把测试结果和以前的对比一下。是一样的。
上次的应该有效。
2不过因为上次226的测试时间序列我没有保存,所以时间没有对比。
时间上2线程是超线性加速的。
时间:
OMP线程数:
1 4687.83
2 860.10
4 1160.84
8 951.78
上次好像在226上测试时间序列也是超线性的。
3 更改:改变了头文件的引用。
使用zone3.h seep3.h 而不是zone3o.h seep3o.h。
zone3o.h seep3o.h设置了公共区私有数据。导致不会正确运行足够的步数。
不知道上次测试用的是哪个头文件。
3 网络
1修改推荐服务API文档(等待雷完成数据库的修改,然后我在测试)
2修改配置中心代码 使之支持多条规则(主要问题:读入多条规则,存起来,以前是只能一条规则。)
数据结构定义在 breservice.h
对应文件代码 /home/xuanji.xiao/trunk/Recommend/cpp/src/BREConf/ConfManager.cpp
1)修改了breservice.cpp 和breservice.h,应该是把存储那一块搞定了。用find rules_查找排查一遍.智勇添加grouprules变量即可. done
2)开始修改abtest调用那一块