mpi程序bug系列-1

本文探讨了在并行编程中遇到的问题,包括编译链接错误、指针使用不当导致的段错误以及进程间变量赋值的误区。通过具体案例分析,提供了调试和解决这些问题的思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 段错误

第二次遇见这种提示

  1. 没有链接end()函数:end()是自己重新定义的一个函数,其实很简单就调用了一下MPI_Finalize(),然后开始的时候只重新定义了begin,所以在写makefile的时候就没有把end.o加进去,写了这个之后倒是在最后加了end.o的编译语句,可是忘记了在最上面一句加end.o,但是make的时候并没有报错,只是运行时提示什么大概就是上图进程已经存在的意思,而且注意第一次运行时并不会报错。
  2. 不敢轻易用指针啊:今天是在做习题的时候。题目"假设矩阵A和向量b是按行分块存储在p个处理机中的,请给出并行计算x^{+}=Ax+b的方法",然后我就把这些什么A,x,b全设成了指针,emmm,就又遇到了上面的错误。
  • 想打印数组但是只打出来一个数

      这个操作也是很迷,因为我把for循环后面加了分号...就是酱紫。然后因为上面i使用过,值是2,但是m值也是2,所以打出来的是xp[2],但是xp我定义的长度就是2,不知道为什么没有提示数组越界,反而就随便打了个数。

       

  • 对于不同的进程想根据进程号给一个变量赋不同值

       辣么一定要先调用begin()函数,这样iam才会是你想要的值,否则可能就是一个随机的数比如0,而且所有的进程中都是这个,那么你想用它来赋值的那个变量的值所有的进程中都会是一样的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值