摘要:
在本章中,我们来看一个不同类型的调度程序——比例份额(proportional share)调度程序,有时也称为公平份额(fair share)调度程序。比例份额算法认为,调度程序的最终目标是确保每个工作获得一定比例的CPU时间,而不是优化周转时间和响应时间。它的基本思想很简单:每隔一段时间,都会举 阅读全文
摘要:
多级反馈队列(Multi level Feedback Queue,简称MLFQ)需要解决两方面的问题。首先它要优化周转时间,这可以通过优先执行较短的工作来实现。然而,操作系统常常不知道工作要运行多久,而这又是SJF等算法所必需的。其次,MLFQ希望给用户提供较好的交互体验,因此需要降低响应时间。然 阅读全文
摘要:
探讨可能的调度策略之前,我们先做一些简化假设。这些假设与系统中运行的进程有关,有时候统称为工作负载(workload)。确定工作负载是构建调度策略的关键部分。这里做的工作负载假设是不切实际的,但我们会逐渐放宽这些假定,并最终开发出一个完全可操作的调度准则。 我们对操作系统中运行的进程(有时也叫工作任 阅读全文
摘要:
本章描述了一些实现CPU虚拟化的关键底层机制,并将其统称为受限直接执行(limited direct execution)。其基本思路很简单:让程序在CPU上运行,但首先确保设置好硬件,以便在没有操作系统帮助的情况下限制进程可以执行的操作。 直接执行 为了虚拟化CPU,操作系统需要以某种方式让许多任 阅读全文
摘要:
本章主要讨论UNIX系统中的进程创建。UNIX系统采用了一种非常有趣的创建新进程的方式,即通过一对系统调用: 和`exec() wait()`,来等待其创建的子进程执行完成。 系统调用 在上面的例子中,wc的输出结果被重定向到文件newfile.txt中。shell实现结果重定向的方式也很简单,当完 阅读全文
摘要:
操作系统为正在运行的程序提供的抽象,就是所谓的进程(process),一个进程就是一个正在运行的程序。为了理解进程的构成,我们必须理解它的机器状态:程序在运行时可以读取或更新的内容。一个明显的机器状态就是内存。指令、正在运行的程序读取和写入的数据都在内存中。因此进程可以访问的内存(地址空间,addr 阅读全文
摘要:
本文主要研究HPC上进行数据并行训练的可行性。作者首先在HPC上实现了两种通信量化算法( "1 Bit SGD" 以及 "阈值量化" ),然后提出了自适应量化算法以解决它们的缺点。此外,发挥出量化算法的性能,作者还自己实现了一个Allreduce算法。 1 Bit SGD可以实现良好的重构和较低的误 阅读全文
摘要:
一般来说,全连接层的前向和后向传递所需的计算量与权重的数量成正比。此外,数据并行训练中所需的带宽与可训练权重的数量成比例。因此,随着每个节点计算速度的提高,所需的网络带宽也随之增加。这篇文章主要是根据阈值进行梯度的稀疏化和量化操作,从而降低分布式训练中的通信开销。稀疏化指的是只传输那些比较重要的梯度 阅读全文
摘要:
这篇文章之前也读过,不过读的不太仔细,论文中的一些细节并没有注意到。最近为了写开题报告,又把这篇论文细读了一遍。据笔者了解,这篇论文应该是梯度量化领域的开山之作,首次使用了梯度量化技术来降低分布式神经网络训练的通信开销。除此之外,这篇文章还提出了误差补偿机制,这种机制可以缓解梯度量化的负面影响,降低 阅读全文