0%

摘要

在以太网这样的有损网络中,如果一个数据包到达了一个交换机,发现它的输出端口排队极长,已经把buffer都排满了,那么这个包就会被丢弃。但是在InfiniBand这样的无损网络中,是不允许丢包的(除非超时),所以就需要buffered flow control来对数据包的发送进行严格的管理:当且仅当接收方有空闲buffer的时候,才能发送数据包。但是在进行这样的buffered flow control时,有可能会产生死锁(deadlock),会导致网络性能降低。而实现buffered flow control和避免deadlock,都需要Virtual Channel的帮助。

本文讲详细介绍Virtual Channel与Flow Control与Deadlock。

Read more »

简介

CMake是一款在大型项目中常用的跨平台编译构建工具,如果只是使用别人项目中已经部署好的CMake,其实很容易。但是如果想要在自己的项目中使用CMake,说实话我并没有找到讲得非常贴合我的需求的教程,因为它们大多都讲得比较浅(因为我之所以想使用CMake就是因为我的项目有一点点复杂,简单的教程并不能覆盖我的需求)。本文假设你已经有非常扎实的编译链库基础,并且了解CMake的简单使用,主要讲解CMake中一些常用的函数及变量。

Read more »

简介

Doxygen是一款非常好用的代码文档工具,在大部分情况下,你只需要在写代码的时候顺便按照指定格式写上一些注释,随后使用doxygen就能自动帮你生成一套文档。本文将简单讲解如何使用Doxygen这一工具。

Read more »

摘要

在使用Win10远程桌面的时候经常会提示如下图的“安全证书存在问题”,这代表当前连接确实可能是不安全的,特别是在非私有网络中。本文介绍如何为Win10远程桌面添加SSL证书。

Read more »

摘要

一直知道MPI有好几种Send:MPI_SendMPI_BsendMPI_SsendMPI_RsendMPI_IsendMPI_IbsendMPI_IssendMPI_Irsend

MPI_Send_init之类的,但是一直没搞明白它们有什么区别,本文介绍这些东西之间有啥区别。

Read more »

简介

CODES是一个大规模网络并行模拟器,可以利用它进行多种网络拓扑、路由、调度方式、通信模式的研究。但是我在实际使用过程中踩了很多很多坑(手动捂脸),因为这个东西的文档实在是不怎么完善(也有可能是我没找到),通过大量的阅读源码总算搞明白了一些,本文将介绍如何使用CODES模拟器。

后记:然后使用过程中还发现还有一些bug,还修了很久的bug……猛男落泪

Read more »

摘要

Allreduce是MPI中重要的collective操作,有研究工作显示MPI_Allreduce是使用率以及花费时间最多的MPI操作。本文归纳整理当前领域内一些关于Allreduce算法已有的研究工作。

Read more »

摘要

经常在各种地方看到SST,也听别人提起过SST,于是我上了一下SST的官网,我看了一下首页,emmmm……是我太菜了,我看不懂它想表达什么,经过一番研究,终于大致搞明白这是个什么玩意了。本文将按照我的思路介绍一下SST究竟是个啥~

Read more »

简介

Dragonfly是一种现在比较时髦的拓扑结构,它由John Kim等人在2008年的论文Technology-Driven, Highly-Scalable Dragonfly Topology中提出,它的特点是网络直径小、成本较低,对于高性能计算有着非常大的优势。现在已经被运用在使用Cray XC系列网络的各种超算中[1],如2017年11月排名第3的超算PIZ DAINT2018年11月排名第6的超算TRINITY2016年11月排名第5的超算CORI。未来也将要被应用在使用Slingshot网络的许多超算中,如:最新一期2021年6月排名第5的Perlmutter超算。

Read more »