我想用gdb调试从核程序,我按照调试手册里的步骤写了个gdbinit文件
但是gdb运行的时候提示没有载入我要调试的程序
请问这种情况如何解决?
T
Tashkent
@Tashkent
0
声望
34
帖子
4644
资料浏览
1
粉丝
0
关注
Tashkent 发布的帖子
-
RE: collide函数的循环中一个奇怪的错误
@popo 举个例子,以上面Real cc = 1.5 * tmp_u为例。C语言默认实型常量1.5是双精度(如果要定义成单精度要写成1.5f),tmp_u是单精度。双精度乘单精度C语言会将其自动转换成双精度(参考https://blog.csdn.net/cherish_2012/article/details/21243047),然后我把双精度的1.5 * tmp_u赋值给单精度的cc导致结果出错。
把我上面所说的推广一下,你们的程序在collide函数中有很多运算是双精度与单精度混合运算。
我没有说不存在不能向量化,我目前做向量化的时候碰到了精度损失的现象,上面是我找到的原因。 -
RE: collide函数的循环中一个奇怪的错误
我找到原因了,我把双精度浮点数赋值给单精度导致精度出现损失。
话说这个程序本来就写得不好吧,单精度和双精度的浮点数放在一起混合运算。
如果不区分单精度和双精度,别说自动向量化了,手动向量化都会出问题 -
collide函数的循环中一个奇怪的错误
上面是collide函数的一个循环,这个循环我放在从核中运行。这个循环奇怪的地方是如果我将中间结果保存在临时变量中,结果就会报错。如上图所示,example1是正确的结果,example2和example3是错误的结果,错误的原因是用cc变量保存了一部分计算结果。下图是example3的err.log文件。
请问这种情况是什么原因造成的,是编译器优化选项造成的吗?应该如何解决这个问题?