1. vi src/cuda/Makefile

enable verbose print

38 DEFINES += -DVERBOSE_PRINT

添加printf打印MPI_Send/MPI_Recv模式

Idea: 在每个MPI_Send / MPI_Recv之前,打印sender/receiver的MPI rank

./src/pgesv/HPL_spreadN.c

159    MPI_Group                 g1, basegroup;
160    int                       ranks[1], ranks_out[1];
161    char                      hostname[50];
203                   if( ierr == MPI_SUCCESS ) {
204 //                   MPI_Comm_rank(comm,&rank);
205                      MPI_Comm_rank(MPI_COMM_WORLD, &rank);
206                      gethostname(hostname, 50);
207                      ranks[0]=IPMAP[npm1-partner];
208                      MPI_Comm_group( comm, &g1 );
209                      MPI_Comm_group( MPI_COMM_WORLD, &basegroup );
210                      MPI_Group_translate_ranks(g1, 1, ranks, basegroup, ranks_out);
211                      printf("<HPL_spreadN> [%s]rank[%d] receives from left rank[%d]\n", hostname, rank, ranks_out[0]);
212                      ierr =   MPI_Recv( Mptr( U, ibuf, 0, LDU ), 1, type,
213                                         IPMAP[npm1-partner], Cmsgid, comm,
214                                         &status );
215                   }
228                      MPI_Comm_rank(MPI_COMM_WORLD, &rank);
229                      gethostname(hostname, 50);
230                      ranks[0]=IPMAP[npm1-partner];
231                      MPI_Comm_group( comm, &g1 );
232                      MPI_Comm_group( MPI_COMM_WORLD, &basegroup );
233                      MPI_Group_translate_ranks(g1, 1, ranks, basegroup, ranks_out);
234                      printf("<HPL_spreadN> [%s]rank[%d] sends to left rank[%d]\n", hostname, rank, ranks_out[0]);
286                   if( ierr == MPI_SUCCESS ) {
288                      MPI_Comm_rank(MPI_COMM_WORLD, &rank);
289                      gethostname(hostname, 50);
290                      ranks[0]=IPMAP[SRCDIST+partner];
291                      MPI_Comm_group( comm, &g1 );
292                      MPI_Comm_group( MPI_COMM_WORLD, &basegroup );
293                      MPI_Group_translate_ranks(g1, 1, ranks, basegroup, ranks_out);
294                      printf("<HPL_spreadN> [%s]rank[%d] receives from right rank[%d]\n", hostname, rank, ranks_out[0]);
311                   if( ierr == MPI_SUCCESS ) {
313                      MPI_Comm_rank(MPI_COMM_WORLD, &rank);
314                      gethostname(hostname, 50);
315                      ranks[0]=IPMAP[SRCDIST+partner];
316                      MPI_Comm_group( comm, &g1 );
317                      MPI_Comm_group( MPI_COMM_WORLD, &basegroup );
318                      MPI_Group_translate_ranks(g1, 1, ranks, basegroup, ranks_out);
319                      printf("<HPL_spreadN> [%s]rank[%d] sends to right rank[%d]\n", hostname, rank, ranks_out[0]);
322                      ierr =   MPI_Send( Mptr( U, ibuf, 0, LDU ), 1, type, IPMAP[SRCDIST+partner], Cmsgid, comm );

./src/pgesv/HPL_rollN.c

申请变量

MPI_Group          g1, basegroup;
int                        ranks[1], ranks_out[1];
char                     hostname[50];

计算local group g1和global group  basegroup

comm = PANEL->grid->col_comm;
MPI_Comm_group( comm, &g1 );
MPI_Comm_group( MPI_COMM_WORLD, &basegroup );

在MPI_Send/MPI_Recv之前计算local rank相对应的global rank

if( ierr == MPI_SUCCESS ){
   MPI_Comm_rank(comm,&rank);
   MPI_Comm_rank(MPI_COMM_WORLD, &rank);
   gethostname(hostname, 50);
   MPI_Group_translate_ranks(g1, 1, ranks, basegroup, ranks_out);
   printf("<HPL_rollN-Irecv> [%s]rank[%d] receives from rank[%d]\n", hostname, rank, ranks_out[0]);
   ierr =   MPI_Irecv( Mptr( U, ibufR, 0, LDU ), 1, type[I_RECV], partner, Cmsgid, comm, &request );
}

if( ierr == MPI_SUCCESS ){
   MPI_Comm_rank(comm,&rank);
   MPI_Comm_rank(MPI_COMM_WORLD, &rank);
   gethostname(hostname, 50);
   MPI_Group_translate_ranks(g1, 1, ranks, basegroup, ranks_out);
   printf("<HPL_rollN-Send> [%s]rank[%d] sends to rank[%d]\n", hostname, rank, ranks_out[0]);  //print global rank
//   printf("<HPL_rollN-Irecv> [%s]rank[%d] sends to rank[%d]\n", hostname, rank, partner);  //only print local rank
   ierr =   MPI_Send( Mptr( U, ibufS, 0, LDU ), 1, type[I_SEND],
                      partner, Cmsgid, comm );
}

./src/comm/HPL_1ring.c

MPI_Group    g1, basegroup;
int                 ranks[1], ranks_out[1], glo_rank,loc_rank;  //glo_rank很重要,之前直接取到局部rank变量,引起计算错误
char              hostname[50];
153    if( rank == root )
154    {
155         gethostname(hostname, 50);
156         MPI_Comm_group( comm, &g1 );
157         MPI_Comm_rank(MPI_COMM_WORLD, &glo_rank);
158         ranks[0]=MModAdd1(rank, size);
159         MPI_Comm_group( MPI_COMM_WORLD, &basegroup );
160         MPI_Group_translate_ranks(g1, 1, ranks, basegroup, ranks_out);
161         printf("<HPL_1ring> rank[%d] sends to rank[%d]\n", glo_rank, ranks_out[0]);
162         ierr = MPI_Send( _M_BUFF, _M_COUNT, _M_TYPE, MModAdd1( rank,
163                        size ), msgid, comm );
173          if( go != 0 )
174          {
175             MPI_Comm_rank(MPI_COMM_WORLD, &glo_rank);
176             MPI_Comm_group( comm, &g1 );
177             MPI_Comm_group( MPI_COMM_WORLD, &basegroup );
178             ranks[0]=prev;
179             MPI_Group_translate_ranks(g1, 1, ranks, basegroup, ranks_out);
180             printf("<HPL_1ring> rank[%d] receives from rank[%d]\n", glo_rank, ranks_out[0]);
181             ierr = MPI_Recv( _M_BUFF, _M_COUNT, _M_TYPE, prev, msgid,
182                              comm, &PANEL->status[0] );
183             next = MModAdd1( rank, size );
184             if( ( ierr == MPI_SUCCESS ) && ( next != root ) )
185             {
186             ranks[0]=next;
187             MPI_Group_translate_ranks(g1, 1, ranks, basegroup, ranks_out);
188             printf("<HPL_1ring> rank[%d] sends to rank[%d]\n", glo_rank, ranks_out[0]);
189                ierr = MPI_Send( _M_BUFF, _M_COUNT, _M_TYPE, next,
190                                 msgid, comm );

hyd.modify相关推荐

  1. java.lang.IllegalStateException: Cannot modify managed objects outside of a write transaction. in /U

    错误内容如下 java.lang.IllegalStateException: Cannot modify managed objects outside of a write transaction ...

  2. Linux下stat + 文件名后, Access,Modify,Change的含义

    我们首先在一个目录下创建了一个文件使用命令touch file 然后输入命令:stat file,这个时候会输出一系列信息 大家注意红色框中的三个时间 Access : 文件最近一次被访问的时间 Mo ...

  3. excel html modify,在Excel 2010中修改Series对象上的Z-index(Modify Z-index on Series object in Excel 2010)...

    在Excel 2010中修改Series对象上的Z-index(Modify Z-index on Series object in Excel 2010) 我正在使用excel 2010. 我有一个 ...

  4. R语言可视化包ggplot2包改变边距(margin)实战(Modify the Margins)

    R语言可视化ggplot2包改变边距(margin)实战(Modify the Margins) 目录 R语言可视化ggplot2包改变边距(margin)实战(Modify the Margins)

  5. T-SQL操作XML 数据类型方法 modify 的参数 1 必须是字符串文字。

    ----删除关键字的同时也清理AP表中所有关联这个ID的数据 create trigger Trg_UpdateAppWordOnDelKeyWord on [dbo].[tbl_KeyWord] f ...

  6. (转)PHP5使用cookie时报错 cannot modify header information - headers already sent by (......)

    转自:http://blog.csdn.net/buyingfei8888/article/details/8899797 运行有警告Warning: Cannot modify header inf ...

  7. python安装modify setup选哪-python 之禅 import this

    dongweiming的博客 前言 我这个博客一直都是一些技术分享,show code的地方,我从来没有写过个人生活或者情感杂谈,当然我也从来没有谈论过我对什么东西的喜恶. 很多人喜欢喷XX语言,喜欢 ...

  8. PB的setfilter()和modify()一些不为人知的技巧

      1. Setfilter(string ls_filter) 如果用到多个like来过滤数据,记得一定要为每一个like加上"( )"括起来,如: dw_1.setfilter ...

  9. ABAP modify screen:修改屏幕,实现隐藏、禁止输入字段

    Loop at screen会loop处理屏幕上的每一个组件,并对其做相应的处理. SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME. PARAMETERS ...

  10. mysql之ALTER COLUMN、CHANGE COLUMN、MODIFY COLUMN的区别

    ALTER COLUMN:设置或删除列的默认值(操作速度非常快) 例子: alter table film alter column rental_duration set default 5; al ...

最新文章

  1. python二分查找
  2. 送你一份 Kubernetes 实用命令速查表
  3. BZOJ 2959: 长跑 解题报告
  4. CAMWorks ShopFloor 2020中文版
  5. 基于jquery.ajax的进一步封装
  6. 【转】SharePoint Content Database简介
  7. swift文档_Swift 正式进入 Windows 平台
  8. 人才认证+奖金,智能分拣挑战赛baseline助力最后冲刺
  9. 纯惯导卡尔曼滤波器代码实例解读01
  10. 超简单的ubuntu下安装teamview教程
  11. GNS3+GNS3 VM
  12. 如何区分abcd类地址_ip地址abc类怎么区分
  13. 自动驾驶仿真(一)—— 基于CarSim与Simulink的ABS系统仿真
  14. MyEclipse断点无效
  15. java实现树形菜单
  16. Oracle WebLogic Server 12c: Node Manager配置与使用
  17. 大数据时代下的小公益
  18. Halcon九点及旋转标定流程
  19. 微信小程序优惠券到期提醒功能设定指引
  20. openssl心脏滴血漏洞

热门文章

  1. 补点C#基础_022_json校验和json在线编辑器-bejson
  2. mysql 只读_MySQL设置只读模式
  3. 对机器学习中鲁棒性的理解
  4. 笔记本 GTX1050ti 安装win10 Ubuntu18.04 显卡问题
  5. WIN10 EXCEL 快捷键
  6. 【MySQL从入门到精通】【高级篇】(二十五)EXPLAIN中ref、rows、filtered、Extra字段的剖析
  7. iOS实现两个APP之间共享文件(从一个App拷贝文件至另一个App)
  8. 【详细教程·本人亲测】解决win10家庭版系统C:\Users用户名中有中文,更改为英文的问题
  9. flink Too many fields referenced from an atomic type
  10. 用手机打开exe文件