关闭

-CGAL_IA_MUL(-1.1, 10.1) != CGAL_IA_MUL(1.1, 10.1)

标签: gccnvcccgal
310人阅读 评论(0) 收藏 举报
分类:

这两天编译的时候由于用到了CGAL库,在用GCC或者其他编译器的时候遇到了问题:
*Expr: -CGAL_IA_MUL(-1.1, 10.1) != CGAL_IA_MUL(1.1, 10.1)
File: /usr/include/CGAL/Interval_nt.h
Line: 209
Explanation: Wrong rounding: did you forget the -frounding-math option if you use GCC (or -fp-model strict for Intel)*

上网搜了很久,有两个资料讲的比较详细,CGAL官网的discussion也讨论过这个,在下面也列出来了.具体的原因没看明白,解决办法可以归结为:
如果在源代码里面包含了CGAL库里的头文件(也就是调用了它实现的某个函数),这是在编译的时候需要使用GCC的参数 -frounding-math 选项.
如果使用的nvcc编译.cu文件,由于nvcc不是别上面的参数,此时在nvcc编译选项后添加宏-DCGAL_DISABLE_ROUNDING_MATH_CHECK应该就没问题了.

我是在调试修改后的caffe的时候遇到的这个问题,在正常情况下编译和运行caffe都没有问题,在debug模式下,编译没有问题,但是运行就会出现上面的错误,后来在reference里面找到了这个办法.如果有对这个问题更深入的解释或者更好的办法,欢迎交流~

Reference
[1]http://cgal-discuss.949826.n4.nabble.com/CGAL-Assertion-exception-CGAL-IA-MUL-1-1-10-1-CGAL-IA-MUL-1-1-10-1-td4655241.html
[2]http://cgal-discuss.949826.n4.nabble.com/frounding-math-trouble-with-GCC-4-0-1-td952635.html

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:74625次
    • 积分:1167
    • 等级:
    • 排名:千里之外
    • 原创:37篇
    • 转载:9篇
    • 译文:1篇
    • 评论:40条
    最新评论