GPU Management Platform

GPU-XXX-Project for Cryptography

这个项目的背景是这样,写一个小小的GPU计算调度系统,它要求管理和调度机房里的N台GPU计算服务器,以实现大规模的并行计算处理。主要的计算内容是密码学方面的计算(密钥穷举什么的估计也能用得上)。如下图所示的结构,系统中分为三个部分: 计算节点,管理节点和调度节点。

GPU Management Platform_第1张图片

 

计算节点

每个计算节点上拥有一个到多个GPU,可以实现并行计算逻辑无关的数据(密码学中是很适合这种密集型计算的方法)。每个计算节点的计算性能和能力都各有不同,这使得调度节点在分配任务时需要有算法针对每个计算服务器“量力而行”的分配计算任务。GPU 部分的软件大概运行方式图如下:

Created with Raphaël 2.1.2 启动 CPU接受任务 子任务分解器 插入任务管理队列 未接受完? 结束 yes no

GPU软件负责从任务队列中获取子任务并计算出结果,将结果返回到给CPU的监控软件,由监控软件将结果返回到调度节点。
 

调度节点

调度节点的主要工作是对任务的分解,先将任务分解成若干子任务,并将子任务送入到任务调度器中,节点调度器实际上主要是管理子任务,包括子任务的分发,子任务执行状态监控,子任务结果处理等。任务调度器的宗旨就是将大任务顺利、可靠的分布在多个GPU服务器上快速计算完成。参考别人的图,任务调度节点的结构如下所示:

GPU Management Platform_第2张图片

 

管理节点

管理节点的主要作用就是GPU集群计算的用户管理端,它负责系统与用户交互,包括用户提交计算任务、更新、修改、删除计算任务或者查看计算任务状态等。按照需求,应该是一个以web方式体现的方法。
 

summary

纵观整个Project,任务调度器是一个比较难啃的骨头,至少负责的工作内容是最多的,其次是计算节点,计算节点负责二级子任务分解,运算结果返回等等。这两个部分的优先级高,其中任务调度器的优先级为最高。由于系统之前已经有了一个prototype , 因此打算在这个基础上实现一步一步替换。计划如下:
1. 了解计算节点和调度节点之间的通信规则和通信报文方式,在该通信报文的基础上实现一个简单版本的节点调度器。
2. 实现任务调度器上的任务分解功能,用最简单地方式对任务进进行分解和管理。再逐步完善。
3. 在前两者的基础上,做一个简单地管理端,负责用户与系统之间的交互。


你可能感兴趣的:(杂文随文,网络编程,platform,调度,服务器)