## ISC20 Students Cluster Competition 国际超算比赛参赛心得

• 内容
• 评论
• 相关

ISC20 Student Cluster Competition结束了，冠军是中国科大，亚军是南非超算，第三名是清华，第四名是南阳理工，我们爱丁堡大学(TeamEPCC)得到了第五名，结果差强人意，我负责的项目Elmer/Ice也是第五名，西班牙小哥负责的BERT得到第四，另外一个西班牙小哥负责的coding challenge和tinker也是第四，其他两位同学成绩不是很理想，那就简单写一下本次比赛的一些心得吧。先上一张我们的团队图片以及疫情期间在家打比赛的照片。

    module load scotch


    source  /app/intel/xe2019/compilers_and_libraries_2019.0.117/linux/bin/compilervars.sh -arch intel64 -platform linux


-Ofast -fPIC -ipo -finline -align -xCORE-AVX2 -axAVX,SSE4.2 -mtune=haswell -L/opmpath/lib -lipmf -lipm


!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
! You are allowed to change any EXISTING parameter entry
! in this file to tune your run
! just leave the residual output numbers as they are in
! order that log-file remains readable
!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
! tolerance of block solutions (if you choose iterative)
$blocktol = 0.001 ! max amount of block iterations (if you choose iterative)$blockiter = 2000
! pre-conditioner of block matrices
$preblock = "ILU0" ! Nonlinear system settings Nonlinear System Max Iterations = 50 Nonlinear System Newton After Iterations = 5 Nonlinear System Newton After Tolerance = 1.0e-02 !Nonlinear System Relaxation Factor = #2.0/3.0 ! Default is [1 2 3 4] ! Block Structure(4) = Integer 1 1 1 2 ! Block Order(4) = Integer 1 2 3 4 ! Linear System Scaling = False ! Linear system solver for outer loop !----------------------------------------- Outer: Linear System Solver = "Iterative" Outer: Linear System Iterative Method = GCR Outer: Linear System GCR Restart = 250 Outer: Linear System Residual Output = 10 ! please, leave that one to keep output readable Outer: Linear System Max Iterations = 500 Outer: Linear System Abort Not Converged = True Outer: Linear System Convergence Tolerance = 1e-05 block 11: Linear System Convergence Tolerance =$blocktol
block 11: Linear System Solver = "iterative"
block 11: Linear System Scaling = false
block 11: Linear System Preconditioning = $preblock block 11: Linear System Residual Output = 100 ! please, leave that one to keep output readable block 11: Linear System Max Iterations =$blockiter
block 11: Linear System Iterative Method = idrs

block 22: Linear System Convergence Tolerance = $blocktol block 22: Linear System Solver = "iterative" block 22: Linear System Scaling = false block 22: Linear System Preconditioning =$preblock
block 22: Linear System Residual Output = 100 ! please, leave that one to keep output readable
block 22: Linear System Max Iterations = $blockiter block 22: Linear System Iterative Method = idrs block 33: Linear System Convergence Tolerance =$blocktol
block 33: Linear System Solver = "iterative"
block 33: Linear System Scaling = false
block 33: Linear System Preconditioning = $preblock block 33: Linear System Residual Output = 100 ! please, leave that one to keep output readable block 33: Linear System Max Iterations =$blockiter
block 33: Linear System Iterative Method = idrs

block 44: Linear System Convergence Tolerance = $blocktol block 44: Linear System Solver = "iterative" block 44: Linear System Scaling = true block 44: Linear System Preconditioning =$preblock
block 44: Linear System Residual Output = 100 ! please, leave that one to keep output readable
block 44: Linear System Max Iterations = \$blockiter
block 44: Linear System Iterative Method = idrs


ILU(0)分解预处理技术，对原系数矩阵做无任何额外非零元填充的ILU的分解，预处理速度较快。大规模的数矩阵一般具有稀疏性，ILU(0)分解不注入非零元， 能够有效保持系数矩阵的稀疏性，因此这一预处理方法适用于系统系数矩阵。而不完全LU分解中的其他两类方法 ILU(1)和 ILU(2)，虽然相较于 ILU(0)能够一定程度上提高预处理效果、减少方程求解的迭代次数，但是这两种预处理方法速度较慢，且均需要注入非零元，破坏系数矩阵的稀疏性，在稀疏矩阵的乘法、内积等运算中显著加大计算量，降低计算的效率。

* CG
* Jacobi
* IDR(s)

IDR(1) ≈ IDR is equally fast but preferable to the closely related Bi-CGSTAB, and that IDR(s) with s > 1 may be much faster than Bi-CGSTAB. It also turned out that when s > 1, IDR(s) is related to ML(s)BiCGSTAB of Yeung and Chan, and that there is quite some flexibility in the IDR approach

We can see from the graph that MPI_Recv took a lot of time. First, it is a blocking method and receive a message in a blocking fashion.Also, for the the cross-node communication, it would bring the addtional costs.
In this case, MPI_Irecv could be employed to reduce the waiting time. It does not blocked until the message is received.
As for the sending message, the MPI_Bsend had been used, which is is the asynchronous blocking send. For a performance perspective, we could consider using non-blocking communication methods such as MPI_Ibsend, it is the asynchronous non-blocking send.

### 评论

2条评论
1. 回复

可不是南阳理工，南阳理工在河南 :((