AMGX运行时segmentation violation错误解决及example的运行问题

一  AMGX环境搭配好之后,按照网页上readme.txt 编译example时会出现错误,因为最后一个运行选项 -c ../configs/FGMRES_AGGREGATION在configs目录下是没有的 可以加上后缀名 如-c../configs/FGMRES_AGGREGATION.json  运行即可。

二 由于example比较复杂 ,想自己写一个小程序 将AMGX的求解过程理一下,自己写了一个小矩阵,对照manual文档和example程序 编译没有问题,运行时出现segmentation violation( __libc_start_main()+0xf5)错误,后来定位在矩阵读取造成的, 矩阵读取使用命令,AMGX_matrix_upload_all_global,完全根据manual文档写的(value用double,col及row用int),检查了很多遍,卡了好几天,由于example能运行 ,所以排除改命令本身的问题,然后怀疑是config或者resource的问题,于是将自己的矩阵数据写入到example中segmentation violation.c中,将里面的AMGX_matrix_upload_all_global语句中的数组换成包含自己的矩阵数据的数组,结果同样出现segmentation violation错误,所以基本判断是自己的数据存储有问题,但是数据的存储的结构按照manual来看肯定是没有问题的。最后实在没办法,决定将example程序中的矩阵读入的各个数组打印出来(value强制转换为double row及col强制转换成int),对照网上的下载的矩阵看,其中values及row数组均没有问题,但是col数组与矩阵文件中数据不一致,如本来应为0 1 3 8的数据 变成了 0 0 1 0 3 0 8 0 这样子,相信大家能看出来了,和正确的数据相比,后者每个中间都多一个0,于是马上知道是数据类型不对,原来AMGX_matrix_upload_all_global语句中的col数组默认使用长整形的数据 long int 将数据修改后程序顺利运行

其实在manual里提到过用于索引的数据为32位的整型,但是自己计算机基础不牢,没有意识到这其实是长整形,惭愧。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值