融合计算方法及可读存储介质.pdf

上传人:汲墨****o 文档编号:9301998 上传时间:2021-05-12 格式:PDF 页数:31 大小:710.44KB
收藏 版权申诉 举报 下载
融合计算方法及可读存储介质.pdf_第1页
第1页 / 共31页
融合计算方法及可读存储介质.pdf_第2页
第2页 / 共31页
融合计算方法及可读存储介质.pdf_第3页
第3页 / 共31页
文档描述:

《融合计算方法及可读存储介质.pdf》由会员分享,可在线阅读,更多相关《融合计算方法及可读存储介质.pdf(31页完成版)》请在专利查询网上搜索。

1、(19)中华人民共和国国家知识产权局 (12)发明专利申请 (10)申请公布号 (43)申请公布日 (21)申请号 202010038225.1 (22)申请日 2020.01.14 (71)申请人 中科寒武纪科技股份有限公司 地址 100086 北京市海淀区科学院南路6号 科研综合楼644室 (72)发明人 不公告发明人 (74)专利代理机构 北京维昊知识产权代理事务 所(普通合伙) 11804 代理人 李波孙新国 (51)Int.Cl. G06F 9/38(2006.01) (54)发明名称 融合计算方法及可读存储介质 (57)摘要 本申请提供融合计算方法及可读存储介质。 所述融合计算方法。

2、包括: 获取微控制指令序列并 分配给启动的多个线程, 其中, 所述微控制指令 序列包括计算任务的计算类型; 基于所述计算任 务的计算类型, 确定融合计算方式; 根据所述融 合计算方式, 调度所述线程执行所述计算任务。 权利要求书2页 说明书22页 附图6页 CN 111258655 A 2020.06.09 CN 111258655 A 1.一种融合计算方法, 其特征在于, 包括: 获取微控制指令序列并分配给启动的多个线程, 其中, 所述微控制指令序列包括计算 任务的计算类型; 基于所述计算任务的计算类型, 确定融合计算方式; 根据所述融合计算方式, 通过动态资源表调度所述线程执行所述计算任务。

3、。 2.根据权利要求1所述的方法, 其特征在于, 所述方法还包括: 根据计算群中空闲计算单元的数量和功能, 将所述启动的多个线程打包成线程组, 通 过动态资源表调动所述线程组至所述空闲计算单元中执行所述计算任务, 其中, 所述线程组包括至少一个线程。 3.根据权利要求2所述的方法, 其特征在于, 不同计算类型的线程处于不同线程组。 4.根据权利要求1至3之任一项所述的方法, 其特征在于, 所述基于所述计算任务的计 算类型, 确定融合计算方式, 包括: 当所述计算类型相同时, 则确定单指令多线程和单指令多数据流融合的计算方式; 当所述计算类型不同时, 则确定同步多线程和单指令多数据流融合的计算方。

4、式。 5.根据权利要求4所述的方法, 其特征在于, 每条所述线程执行一条单指令多数据指 令。 6.根据权利要求2所述的方法, 其特征在于, 所述通过动态资源表调动所述线程组至所 述空闲计算单元中执行所述计算任务, 包括: 当所述线程组因为访问存储单元而阻塞时, 使阻塞的线程组进入等待队列; 在所述存储单元中的所述阻塞的线程组的输入数据准备好后, 使所述阻塞的线程组进 入准备队列; 通过所述动态资源表, 确定空闲计算单元; 调度所述准备队列中的线程组至所述空闲计算单元去执行所述计算任务。 7.根据权利要求6所述的方法, 其特征在于, 调度所述准备队列中的线程组至所述空闲 计算单元去执行所述计算任。

5、务, 包括: 顺序调度所述准备队列中的线程组去执行所述计算任务; 或者 对线程组进行优先级排序, 先调度优先级高的线程组执行所述计算任务。 8.根据权利要求7所述的方法, 其特征在于, 所述对线程组进行优先级排序, 包括以下 至少一种: 根据线程组的执行时间长短设置线程组的优先级; 基于负载均衡原则, 根据线程组的执行时间评估空闲计算单元的计算负载的执行时 间, 根据所述计算负载的执行时间设置线程组的优先级; 基于防止饥饿原则, 根据线程组等待执行时间的长短设置线程组的优先级。 9.根据权利要求6所述的方法, 其特征在于, 调度所述准备队列中的线程组至所述空闲 计算单元去执行所述计算任务, 包。

6、括: 设置多种调度策略, 每种所述调度策略对应一组调度信息; 将每种所述调度策略对应的所述调度信息和所述空闲计算单元的资源信息输入神经 网络, 得到每种所述调度策略下执行所述计算任务的预测时间; 选择与最短的所述预测时间相对应的调度策略, 去调度所述准备队列中的线程组至所 权利要求书 1/2 页 2 CN 111258655 A 2 述空闲计算单元去执行所述计算任务。 10.根据权利要求6至9之任一项所述的方法, 其特征在于, 所述调度所述准备队列中的 线程组至所述空闲计算单元去执行所述计算任务, 包括: 获取调度至所述空闲计算单元上的线程组所对应的微控制指令; 转化所述微控制指令为控制信号;。

7、 发送所述控制信号到计算群, 使所述计算群的所述空闲计算单元从存储单元提取操作 数执行所述计算任务。 11.一种计算机可读存储介质, 其上存储有处理器程序,其特征在于, 所述处理器程序 用于执行权利要求1至10之任一项所述的融合计算方法。 权利要求书 2/2 页 3 CN 111258655 A 3 融合计算方法及可读存储介质 技术领域 0001 本申请涉及计算技术领域, 具体涉及融合计算方法及可读存储介质。 背景技术 0002 在复杂的长向量计算中, 需要尽可能的发挥计算资源的作用, 增加处理器的吞吐 量。 同时希望数据读取灵活, 提高计算效率, 缩短运算时间, 尽可能高效的满足计算需求。 。

8、0003 现有的单指令多数据流(SIMD)是指处理器对多个数据同时执行单条指令所确定 的相同操作。 SIMD能够用一个指令同时驱动多个计算单元, 并行处理多个数据, 能够实现计 算单元的并行, 缩短运算时间, 增加处理器的吞吐量。 但它需要将数据拼接成短向量存在于 同一个寄存器中, 因此读取时采取连续寻址, 不够灵活。 不能完全满足大规模的向量计算应 用。 发明内容 0004 为解决上述技术问题, 本申请实施例提供一种融合计算方法及计算机可读存储介 质。 0005 本申请实施例提供一种融合计算方法, 包括: 获取微控制指令序列并分配给启动 的多个线程, 其中, 所述微控制指令序列包括计算任务的。

9、计算类型; 基于所述计算任务的计 算类型, 确定融合计算方式; 根据所述融合计算方式, 通过动态资源表调度所述线程执行所 述计算任务。 0006 本申请实施例还提供一种计算机可读存储介质, 其上存储有处理器程序,所述处 理器程序用于执行如上所述的融合计算方法。 0007 本申请实施例提供的技术方案, 提供了一种融合计算的技术方案, 克服了只采用 单指令多数据流(SIMD)、 单指令多线程和同步多线程的其中一种计算方式的各方面的缺 点, 能够根据计算类型确定融合计算方式, 同时控制多个计算单元, 可以节省大量硬件资 源, 而且针对计算类型确定融合计算方式, 开发了线程并行和计算单元并行的能力, 。

10、提高了 计算效率, 并且利用动态资源表对计算资源进行监控和记录, 调度线程执行计算任务, 能够 充分利用计算资源, 进一步提高计算效率。 附图说明 0008 为了更清楚地说明本申请实施例中的技术方案, 下面将对实施例描述中所需要使 用的附图作简单地介绍, 显而易见地, 下面描述中的附图仅仅是本申请的一些实施例, 对于 本领域普通技术人员来讲, 在不付出创造性劳动的前提下, 还可以根据这些附图获得其他 的附图。 0009 图1是本申请一实施例提供的一种融合计算方法流程示意图之一。 0010 图2是本申请一实施例提供的一种融合计算方法流程示意图之二。 0011 图3是本申请一实施例提供的一种融合计。

11、算方法流程示意图之三。 说明书 1/22 页 4 CN 111258655 A 4 0012 图4是本申请一实施例提供的一种融合计算装置功能组成框图之一。 0013 图5是本申请一实施例提供的一种融合计算装置功能组成框图之二。 0014 图6是本申请一实施例提供的一种控制器功能组成框图。 0015 图7是本申请一实施例提供的一种计算单元功能组成框图。 0016 图8为本申请一实施例提供的电子设备示意图。 具体实施方式 0017 下面将结合本申请实施例中的附图, 对本申请实施例中的技术方案进行清楚、 完 整地描述, 显然, 所描述的实施例是本申请一部分实施例, 而不是全部的实施例。 基于本申 请。

12、中的实施例, 本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例, 都属于本申请保护的范围。 0018 应当理解, 本申请的权利要求、 说明书及附图中的术语 “第一” 、“第二” 、“第三” 是 用于区别不同对象, 而不是用于描述特定顺序。 本申请的说明书和权利要求书中使用的术 语 “包括” 和 “包含” 指示所描述特征、 整体、 步骤、 操作、 元素和/或组件的存在, 但并不排除 一个或多个其它特征、 整体、 步骤、 操作、 元素、 组件和/或其集合的存在或添加。 0019 本申请实施例提供的技术方案, 针对单指令多数据流(SIMD)、 单指令多线程和同 步多线程的向量计算方式的。

13、各方面的缺点, 提供了一种融合计算方法及计算机可读存储介 质。 0020 下面, 将参照附图对本申请的实施例进行详细描述。 首先, 对本申请中用到的一些 技术术语进行说明。 0021 指令字: 是一条包含至少两个独立字段的指令, 是将计算量的存储地址信息和所 需的操作信息打包而成, 其中, 该计算量由至少一段信息组成, 可以对每一段信息执行不同 的操作, 也可以执行相同的操作。 可选地, 指令字是多条普通指令拼接而成。 指令字也可以 是超长指令字(VLIW), 包含多个独立字段, 每一个字段可以独立控制一个计算单元, 相当于 一条指令。 其中, 指令字中包括标量指令和/或向量指令。 一个指令字。

14、可以同时控制多个计 算单元, 节省大量硬件资源。 0022 短向量或标量: 计算单元能接受的向量包括短向量或标量, 长度由计算单元的硬 件决定。 0023 长向量: 是与短向量相对的说法, 为多个短向量的合并。 0024 超长向量, 也是一个相对的概念, 比长向量更长或者是多个长向量的合并, 超长向 量的计算更需要融合计算方式的强计算能力和高效率。 0025 线程, 是操作系统能够进行运算调度的最小单位。 它被包含在进程之中, 是进程中 的实际运作单位。 一条线程指的是进程中一个单一顺序的控制流, 一个进程中可以并发多 个线程, 每条线程并行执行不同的任务。 其中, 一个进程可以有很多线程, 。

15、每条线程串行或 并行执行不同的任务。 线程是独立调度和分派的基本单位。 同一进程中的多条线程将共享 该进程中的全部系统资源, 如虚拟地址空间, 文件描述符和信号处理等等。 但同一进程中的 多个线程有各自的调用栈(call stack), 自己的寄存器环境(register context), 自己的 线程本地存储(thread-local storage)。 0026 单指令多数据流(SIMD), 是指处理器执行单条指令, 单条指令对多个数据确定相 说明书 2/22 页 5 CN 111258655 A 5 同的操作。 一条SIMD指令能同时驱动多个计算单元, 但是每个计算单元由硬件结构决定只。

16、 能进行短向量运算或标量计算。 当需要进行两个长向量的加法运算时, 在单指令多数据流 (SIMD)的情景下, 将长向量拆成若干个短向量, 驱动若干个向量加法计算单元, 并行地执行 这些短向量的加法运算。 随后, 将短向量的加法结果合并, 即得到长向量的加法运算结果。 在单指令多数据流(SIMD)中任意时刻指令流都是单一的。 单指令多数据流(SIMD)能够用一 个指令并行处理多个数据, 同时驱动多个计算单元, 实现了计算单元的并行, 缩短了运算时 间, 增加处理器的吞吐量。 但它需要将数据拼接成短向量存在于同一个寄存器中, 因此读取 时采取连续寻址, 不够灵活。 0027 单指令多线程, 是指多。

17、个线程运行同一条单指令。 每个线程只能用一个计算单元, 但不同线程可以有不同的数据。 每个计算单元由硬件结构决定只能进行短向量运算或标量 计算。 单指令多线程也是将长向量拆成短向量, 分配在不同的线程进行计算, 通过多个线程 的并行来执行长向量的相同类型的运算。 单指令多线程实现了多个线程的并行来执行单条 指令, 可以使线程拥有独立的寄存器, 支持独立寻址, 更为灵活。 0028 同步多线程, 是指处理器在同一个时钟周期内可以执行多个不同类型线程的指 令, 计算效率高。 每个线程用到一个计算单元, 每个计算单元由硬件结构决定只能进行短向 量运算或标量计算。 通过多个线程的并行来执行长向量的不同。

18、类型的运算。 同步多线程可 以支持不同指令的多线程运行, 当一个线程被阻塞时, 可以通过上下文切换来运行另一个 线程的指令, 因此存在频繁而复杂的线程切换, 影响计算效率。 0029 图1是本申请一实施例提供的一种融合计算方法流程示意图之一, 示出了融合计 算方法的控制流程。 0030 参见图1, 在S110中, 控制器获取微控制指令序列并分配给启动的多个线程, 其中, 微控制指令序列包括计算任务的计算类型。 0031 微控制指令序列包括一系列微指令、 待计算的向量以及对向量的操作信息, 以特 定的格式提供了执行计算所需要的信息。 其中, 操作信息包括向量计算任务的计算类型、 操 作数或操作数。

19、地址以及其他比如代表指令顺序的ID号等信息, 根据硬件内部的计算单元的 功能决定。 0032 可选地, 控制器可以通过获取指令字, 将指令字译码为微控制指令序列。 具体而 言, 控制器的译码器将接收到的指令字进行译码, 得到硬件计算单元能够识别的微控制指 令序列。 译码包括确定指令种类(算术/分支/访存)和要被使用的寄存器。 例如加法指令可 译码为包括取指微指令、 计算地址微指令、 取操作数微指令、 加法运算微指令。 微指令最简 单的组成形式是将每个控制信号用一个控制位来表示。 当需要这个信号时, 该位为1; 不需 要时, 该位为0。 0033 一个微控制指令序列包括至少一个计算任务, 所述计。

20、算任务可以划分成多个子任 务。 控制器将微控制指令序列分配给启动的多个线程, 多个线程执行一个子任务。 每个线程 有独立的存储空间并且可以独立寻址。 使用多线程可提高程序的执行吞吐率和执行效率。 0034 参见图1, 在S120中, 控制器基于计算任务的计算类型, 确定融合计算方式。 0035 一般计算方式分别为单指令多数据流(SIMD)、 单指令多线程和同步多线程。 根据 单指令多线程、 单指令多数据流(SIMD)、 同步多线程三种方式的特性, 可以根据计算类型实 现其中两者的融合, 但对此并不做限制。 说明书 3/22 页 6 CN 111258655 A 6 0036 可选地, 本申请实。

21、施例的融合计算方式包括但不限于单指令多线程和单指令多数 据流融合的计算方式、 同步多线程和单指令多数据流融合的计算方式的一种。 0037 可选地, 当计算类型相同时, 确定单指令多线程和单指令多数据流融合的计算方 式; 当计算类型不同时, 确定同步多线程和单指令多数据流融合的计算方式。 单指令多数据 流(SIMD)、 单指令多线程和同步多线程三种计算方式各有各的优缺点。 在大规模的超长向 量计算应用中, 就需要融合其优点, 避开其缺点, 以便最大限度的开发并行计算的能力, 以 提高计算效率。 0038 在一个可选地实施例中, 微控制指令序列中计算任务的计算类型包括但不限于超 长向量的加法、 减。

22、法、 乘法等等。 对微控制指令序列中的操作信息进行分析, 如果指令执行 的计算类型相同, 以向量计算为例, 例如都是向量的加法操作和减法操作, 则确定融合计算 方式为单指令多线程和单指令多数据流(SIMD)融合的计算方式。 0039 可选地, 所述融合指的是每个线程运行一条SIMD指令, 其中, 每个SIMD指令驱动至 少一个计算单元。 具体分析如下: 单指令多数据流(SIMD)的计算方式是对多个数据同时执 行单条指令所确定的相同操作。 利用多个计算单元一起进行向量计算, 开发计算单元并行 的能力。 单指令多线程的计算方式是多个线程运行同一条指令, 每一个线程能用一个计算 单元, 可以有不同的。

23、数据。 在单指令多线程和单指令多数据流(SIMD)融合的计算方式中, 每 个线程运行一条SIMD指令, 每个线程就能用多个计算单元, 于是多线程多计算单元, 提高了 计算效率。 0040 在另一个可选地实施例中, 对微控制指令序列中的操作信息进行分析, 如果指令 执行的计算类型不同, 例如一些是向量的加法操作, 另一些是乘法操作, 则确定融合计算方 式为同步多线程和单指令多数据流(SIMD)的融合计算方式。 0041 具体而言, 单指令多数据流(SIMD)的计算方式如上所述, 对多个数据同时执行单 条指令所确定的相同操作。 利用多个计算单元一起进行向量计算, 开发计算单元并行的能 力。 004。

24、2 单指令多线程的计算方式是多个线程同时运行同一条指令。 如果要执行不同类型 的计算操作, 则多个线程需要变为串行操作。 例如, 几轮计算执行加法指令, 几轮计算执行 乘法指令。 如果采用单指令多线程和单指令多数据流(SIMD)融合计算方式来实现不同类型 的计算操作, 需要不同的线程根据条件执行指令序列的不同分支, 即不同的线程根据不同 的输入数据满足的条件, 运行不同的指令。 需要用条件进行判断要运行的指令, 也会较大的 影响计算效率。 因此, 在执行向量的不同类型计算操作时, 不适合采用单指令多线程的计算 方式。 0043 同步多线程的计算方式是指处理器在同一个时钟周期内可以执行不同类型线。

25、程 的指令, 同时就可以进行不同指令操作, 例如加法和乘法计算。 因此, 在执行向量的不同类 型计算操作时, 考虑同步多线程和单指令多数据流(SIMD)的融合计算方式中。 在这种融合 计算方式中, 相比于上述的单指令多线程和单指令多数据流(SIMD)融合的计算方式, 用同 步多线程代替单指令多线程, 可以同时在一轮中既进行加法计算又进行乘法计算, 以进行 向量的不同类型的计算操作, 并同样可以开发多线程并行的能力。 在同步多线程中, 为了实 现多线程, 处理器支持多个硬件上下文(多线程), 并能够在一个时钟周期内从多个上下文 中取出指令并执行。 说明书 4/22 页 7 CN 11125865。

26、5 A 7 0044 融合计算方式为同步多线程和单指令多数据流(SIMD)的融合计算方式的融合方 法与单指令多线程和单指令多数据流(SIMD)融合的计算方式基本类似, 区别就在于同步多 线程中的线程能执行不同的指令, 进行不同类型的计算。 0045 在此, 对于其中的多个涉及向量的不同类型的计算操作, 例如一些是加法和减法 操作, 另一些是加法和乘法操作, 选择同步多线程和单指令多数据流的融合计算方式。 不仅 可以节省硬件资源, 而且同时开发计算单元并行的能力和多线程并行的能力, 提高计算效 率。 0046 参见图1, 在S130中, 根据融合计算方式, 控制器通过动态资源表调度线程执行计 算。

27、任务。 0047 其中, 控制器单元中的调度器可以维护一张动态的资源使用情况表, 我们称为动 态资源表。 可选地, 如用位图实现这样一张表, 位图中的0代表资源空闲, 1代表资源繁忙, 不 同种类的资源可以有不同的资源使用情况表。 计算群以合适的时间间隔向控制器单元发送 资源使用的情况以更新位图。 所述动态资源表用于表示实时的硬件资源使用情况, 以便找 出空闲计算单元来调度线程执行计算任务, 本申请对动态资源表的实现不作任何限制。 0048 其中, 所述计算群是指总的计算资源, 由多个计算子集群构成, 计算子集群包括计 算单元和共享存储器。 例如在一个可能的融合计算硬件设计方式中, 20个乘法。

28、器和50个加 法器共用一个共享存储器和一个局部同步器, 从而这20个乘法器、 50个加法器和共享存储 器被事实上划分为了一个小的计算子集群, 计算群由多个这样的计算子集群构成。 0049 可选地, 根据计算群中空闲计算单元的数量和功能, 将启动的多个线程打包成线 程组, 通过动态资源表调动线程组至空闲计算单元执行计算任务, 其中, 线程组包括至少一 个线程。 0050 调度线程组相比于调度线程, 效率更高, 相对也更有序, 减少线程切换的频率, 能 够提高计算效率。 0051 线程被打包成线程组, 线程组的大小是由硬件资源决定的, 也就是计算群中空闲 计算单元的数量和功能控制的, 功能指的是空。

29、闲计算单元的类型, 例如是加法器还是乘法 器等等。 一般来说, 线程组中线程数量的设置遵循以下两个原则: 第一, 能尽可能地充分使 用硬件的计算资源; 第二, 提供计算通信的便利。 每个线程组的大小与计算类型和总的空闲 计算单元数量有关, 所述线程组的大小不大于所述硬件的计算资源中空闲计算单元的总 数。 0052 根据同类功能的空闲计算单元总数量, 能同时运行的线程数作为一个线程组, 将 至少一个线程打包成线程组。 同步执行的线程组的数目一般由计算子集群的数目决定, 而 一个线程组的线程数目则由一个计算子集群中的空闲计算单元数目决定。 0053 可选地, 不同计算类型的线程处于不同线程组也就是。

30、执行不同功能的线程处于不 同的线程组, 所述不同线程组在不同功能的空闲计算单元上执行。 具体来说, 在单指令多线 程和单指令多数据流(SIMD)融合的计算方式中, 以向量计算为例, 向量的计算类型相同也 就是计算群中空闲计算单元的功能相同时, 例如都是加法器执行加法运算, 线程就都是加 法线程。 每个加法线程需要的加法计算单元数量相同。 根据总的加法计算单元数量, 将至少 一个线程打包成一个加法线程组。 例如, 启动的多个线程中, 每个线程运行一条SIMD指令, SIMD指令一次驱动多个计算单元, 所有空闲计算单元的总数量除以这多个计算单元的数 说明书 5/22 页 8 CN 11125865。

31、5 A 8 量, 就是可同时执行的最大线程数。 将这个最大数量的线程打包成一个线程组同时运行, 最 后可以打包成多个线程组, 充分利用计算单元的资源, 提高计算效率。 0054 在同步多线程和单指令多数据流(SIMD)融合的计算方式中, 以向量计算为例, 向 量的计算类型不同也就是计算群中空闲计算单元的功能不同时, 例如有加法器执行加法运 算也有乘法器执行乘法运算, 线程就有加法线程也有乘法线程。 每个加法线程需要的加法 计算单元数量相同。 根据总的加法计算单元数量, 将至少一个线程打包成一个线程组。 每个 乘法线程需要的乘法计算单元数量相同。 根据总的乘法计算单元数量, 将至少一个线程打 包。

32、成一个线程组。 加法线程和乘法线程不能打包在同一线程组。 0055 一个微控制指令序列包括至少一个计算任务, 计算任务可以划分成多个子任务。 控制器将微控制指令序列分配给启动的多个线程, 多个线程执行一个子任务。 每个线程有 独立的存储空间并且可以独立寻址。 使用多线程可提高程序的执行吞吐率和执行效率。 0056 例如在单指令多线程和单指令多数据流(SIMD)的融合计算方式中, 子任务需要 1000个加法线程执行, 假设总共有20个计算子集群, 每个计算子集群有50个加法器和20个 乘法器。 0057 做加法计算的时候, 例如每个加法线程执行一条加法SIMD指令, 一条SIMD加法指 令驱动5。

33、个加法器(由硬件决定的), 那么一个线程可以同时驱动5个加法器。 每个计算子集 群的50个加法器就可以同时执行10个加法线程, 就将10个加法线程打包为一个线程组, 1000个加法线程则可以打包为100个线程组, 同理每个乘法线程执行一条乘法SIMD指令, 一 条SIMD乘法指令驱动5个乘法器(由硬件决定的), 那么一个线程可以同时驱动5个乘法器, 每个计算子集群的20个乘法器就可以同时执行4个乘法线程。 控制器设置一个线程组包含 10个线程, 就将4个乘法线程和6个非活跃线程打包为一个线程组, 1000个乘法线程则可以 打包为250个乘法线程组。 其中, 非活跃线程是不运行任务的空闲线程。 。

34、0058 20个子集群, 可以同时计算20个加法线程组, 共200个加法线程。 1000个加法线程 总共5轮即可计算完成。 0059 如果总共有998个加法线程, 而不是1000个加法线程, 最后的剩余线程数为8个, 不 足一个线程组, 则用非活跃线程填充。 其中, 非活跃线程是不运行任务的空闲线程。 同一个 线程组中的线程可以通过共享存储器进行通信, 通过局部同步器进行同步。 0060 在此, 也可以直接启动20个线程完成计算, 但是浪费了SIMD同时驱动多个计算单 元的能力, 增加了线程调节的负担。 实际中, 具体启动多少个线程, 需要根据实际的计算资 源和计算任务进行测量, 原则上最大化。

35、并行以便不浪费计算资源。 0061 可选地, 控制器通过动态资源表调度线程组执行计算任务, 具体包括: 当线程组因 为访问存储单元而阻塞时, 使阻塞的线程组进入等待队列; 在存储单元中的阻塞的线程组 的输入数据准备好后, 使阻塞的线程组进入准备队列; 通过动态资源表, 确定空闲计算单 元; 在空闲计算单元调度执行准备队列中的线程组执行计算任务。 0062 具体而言, 当线程组因为访问存储单元而阻塞时, 执行上下文切换后, 使阻塞的线 程组进入等待队列。 通过信号监测, 可以监测输入数据准备状态。 当输入数据准备好后, 可 以通过中断信号进行提醒。 但并不以此为限。 0063 在存储单元中的阻塞。

36、的线程组的输入数据准备好后, 线程组继续运行的条件满足 后, 使阻塞的线程组进入准备队列。 不但能在原本该线程组执行的硬件处理单元上调度该 说明书 6/22 页 9 CN 111258655 A 9 线程组, 还能通过全局调度信息查找空闲的硬件资源对该线程组进行调度。 0064 控制器单元中的调度器中设置动态资源表, 可选地, 如用位图实现这样的动态资 源表, 位图中的0代表资源空闲, 1代表资源繁忙, 不同种类的资源可以有不同的资源使用情 况表。 计算群以合适的时间间隔向控制器单元发送资源使用的情况以更新位图。 基于动态 资源表, 确定空闲计算单元。 在空闲计算单元调度执行准备队列中的线程组。

37、。 在阻塞队列中 被阻塞的线程组的执行条件被满足后, 该线程组被调往准备队列执行计算任务。 0065 可选地, 调度所述准备队列中的线程组至所述空闲计算单元去执行所述计算任 务, 调度器按照顺序调度执行准备队列中的线程组, 也就是先来先服务的原则。 0066 可选地, 在所述空闲计算单元调度执行准备队列中的线程组执行计算任务, 还可 以对线程组进行优先级排序, 优先级高的线程组先调度执行。 0067 其中, 所述优先级可以是按照需要用户确定的, 可选地, 对线程组进行优先级排 序, 还可以是根据线程组的时间设置线程组的优先级。 所述线程组的时间包括线程组的执 行时间和线程组的等待时间。 006。

38、8 具体而言, 调度的目的是充分使用硬件资源, 在一个可能的实施例中, 根据线程组 的执行时间确定时可以遵循两个原则, 一是执行时间较短的线程组有较高的优先级, 二是 负载均衡原则。 0069 为了实现原则一, 可以将执行时间较短的线程组调往准备队列头部, 调度器从准 备队列头部来寻找需要调度的线程组, 也就是执行时间短的线程组有较高的优先级。 0070 为了实现原则二, 根据线程组的执行时间评估空闲计算单元的计算负载的执行时 间, 根据计算负载的执行时间设置线程组的优先级。 在硬件资源较为充足的情况下, 可以将 一个执行时间较长的线程组调往一个空闲硬件单元, 将几个执行时间较短的线程组调往另。

39、 一个空闲硬件单元, 并使几个执行时间较短的线程组的执行时间之和大致等于执行时间较 长的线程组的执行时间, 也就是确定线程组的执行时间和空闲计算单元的匹配程度, 根据 所述匹配程度设置线程组的优先级。 0071 在一个可能的实施例中, 在根据线程组的等待时间确定优先级时, 可以遵照防止 饥饿原则确定其优先级。 也就是在一个线程组长期处于队列尾部时, 为防止其一直不被执 行, 应将其调往准备队列头部, 使其能够先被执行。 0072 调度器根据符合调度原则的调度算法和计算单元空闲情况将准备队列中的线程 组调度至空闲计算单元, 以实现全局调度, 充分利用硬件资源。 0073 可选地, 在调度准备队列。

40、中的线程组至空闲计算单元去执行计算任务时还可以利 用神经网络优化调度策略。 首先设置多种调度策略, 所述多种调度策略包括在当前空闲计 算单元中所有可能的调度方式。 每种调度策略对应一组调度信息, 调度信息包括需要调度 哪些线程组及这些线程组的分配信息。 所述线程组的分配信息是指如何分配线程组, 如哪 些线程在一个线程组内, 一个线程组内有多少个线程, 共有多少个线程组等。 将每种调度策 略对应的调度信息和空闲计算单元的资源信息输入神经网络, 得到在每种调度策略下执行 计算任务的预测时间。 选择与最短的执行计算任务的预测时间相对应的调度策略, 去调度 准备队列中的线程组至空闲计算单元去执行计算任。

41、务。 所述空闲计算单元信息指的是哪些 计算资源是空闲的、 空闲计算单元大小等等。 0074 具体而言, 调度器可以使用机器学习算法优化调度策略, 例如用深度神经网络, 将 说明书 7/22 页 10 CN 111258655 A 10 调度准备队列中的线程组的调度信息和空闲计算单元信息作为输入, 将调度策略运行执行 计算任务的预测时间作为输出, 用这样的输入输出训练深度神经网络, 使该网络有对该硬 件执行计算任务的总体时间具有预测能力, 利用这个深度神经网络可以对各个调度信息对 应的调度策略的任务执行时间进行评估, 选择执行时间最短的调度策略。 0075 可选地, 调度所述准备队列中的线程组至。

42、所述空闲计算单元去执行所述计算任 务, 包括: 获取调度至所述空闲计算单元上的线程组对应的多个微控制指令, 转化微控制指 令为控制信号, 发送控制信号到计算群, 使计算群的空闲计算单元从存储单元提取操作数 执行计算任务。 0076 可选地, 线程组可以只包括一个线程, 也可以包括多个线程, 当线程组只包括一个 线程时, 通过动态资源表调动所述线程执行计算任务。 0077 控制器获取来自多个线程组的多个微控制指令, 线程组中的微控制指令, 被划分 为多个子任务, 多个线程执行一个子任务。 0078 转化多个微控制指令为多个控制信号。 控制器的调度器接收线程组分配信息。 线 程组分配信息指如何分配。

43、线程组, 包括线程总数量, 线程组中的线程数量, 线程所执行的指 令序列和目前需要调度的线程组等信息。 0079 控制器发送多个控制信号到计算群, 使计算群的多个计算类型相同的空闲计算单 元从存储单元提取操作数执行计算任务。 0080 根据一些实施例, 计算群的群控制器接收控制信号, 并根据控制信号会得到线程 组分配信息。 群控制器将控制信号转化为群内控制信号发送到合适的计算单元。 例如将控 制信号转化为群内控制信号后, 根据群内控制信号包含的计算操作的类型, 加法任务发送 到加法计算单元, 乘法任务发送到乘法计算单元等等。 0081 空闲计算单元的单元控制器接收群内控制信号。 利用空闲计算单。

44、元基于群内控制 信号, 从存储单元读取输入数据。 输入数据包括向量操作数。 空闲计算单元读取向量操作数 并进行向量计算, 执行控制信号对应的线程组的计算任务。 输出数据和中间结果可暂存在 计算单元的第二存储器。 0082 本实施例提供的技术方案, 单指令多线程和单指令多数据流(SIMD)的融合计算方 式, 适用于相同的计算类型, 同步多线程和单指令多数据流(SIMD)的融合计算方式, 适用于 不同的计算类型, 可以极大的开发计算单元和线程的并行能力, 可以节省硬件资源, 提高计 算效率。 并且利用动态资源表对计算资源进行监控和记录, 调度线程执行计算任务, 能够充 分利用计算资源, 进一步提高。

45、计算效率。 0083 图2是本申请一实施例提供的一种融合计算方法流程示意图之一, 结合图1, 示出 了单指令多线程和单指令多数据流(SIMD)的融合计算方式的控制流程。 0084 在S210中, 控制器获取微控制指令序列并分配给启动的多个线程, 其中, 微控制指 令序列包括计算任务的计算类型。 0085 具体过程与图1的S110相同, 不再赘述。 0086 在S220中, 控制器确定微控制指令序列中的计算类型相同时, 则确定单指令多线 程和单指令多数据流融合的计算方式。 0087 例如, 以向量计算为例, 微控制指令序列中超长向量的计算类型包括但不限于超 长向量的加法、 减法、 乘法等等。 对。

46、微控制指令序列中的操作信息进行分析, 如果指令执行 说明书 8/22 页 11 CN 111258655 A 11 的计算类型相同, 例如都是向量的加法操作和减法操作, 则确定融合计算方式为单指令多 线程和单指令多数据流(SIMD)融合的计算方式。 0088 单指令多数据流(SIMD)的计算方式是对多个数据同时执行单条指令所确定的相 同操作。 利用多个计算单元一起进行向量计算, 开发计算单元并行的能力。 0089 单指令多线程的计算方式是多个线程运行同一条指令, 每一个线程能用一个计算 单元, 可以有不同的数据。 0090 在单指令多线程和单指令多数据流融合的计算方式中, 每个线程运行一条SI。

47、MD指 令, 每个SIMD指令驱动至少一个计算单元。 每个线程就能用多个计算单元, 于是多线程多计 算单元, 提高了计算效率。 0091 例如获取了一条指令字, 将指令字译码为计算单元硬件可以识别的微控制指令序 列。 微控制指令序列包括一系列指令、 待计算的向量以及对向量的操作信息。 假设微控制指 令序列中, 包括5组加法微指令, 分别执行长向量的加法操作(A1+A2), (A3+A4), (A5+A6), (A7+ A8), (A9+A10)。 假设SIMD能驱动的计算单元的数量为30个, 硬件中总共存在的计算单元数目 为150个。 0092 如果单独采用单指令多数据流(SIMD)的计算方式。

48、, 单指令多数据流。 将长向量A1 拆成计算单元能接受的长度的多个短向量A11、 A12、 A13, 将长向量A2拆成多个短向量A21、 A22、 A23, 多个加法计算单元并行地执行这些短向量的加法运算(A11+A21)、 (A12+A22)、 (A13 +A23)。 随后, 将短向量的加法结果合并, 即得到长向量(A1+A2)的加法运算结果。 假设一 个长向量可以拆成30个短向量, 正好一个长向量可以用完SIMD能驱动的30个计算单元, 因 此, 每一轮计算最多只能完成一次长向量的加法计算。 完成5个长向量的加法计算需要5轮 才能完成。 可选地, 假设所述长向量中一个长向量可以拆分的短向量。

49、数目少于SIMD能驱动 的计算单元数目(例如20个), 那么每一轮计算最多能完成大于一次长向量的加法计算, 完 成5个长向量的加法计算少于5轮就能完成, 同理, 假设长向量中一个长向量可以拆分的短 向量数目大于SIMD能驱动的计算单元数目(例如40个), 那么每一轮计算不能完成一个长向 量的加法计算, 完成5个长向量的加法计算大于5轮才能完成。 为了更好地理解本方案的优 势, 下文中以一个长向量正好拆为30个短向量进行比较, 但不以此作为限制。 0093 如果单独采用单指令多线程的计算方式, 单指令多线程。 通过多个线程运行同一 条指令。 在传统单指令多线程模型中, 每一个线程对标量和短向量进。

50、行运算。 计算长向量的 加法时, 需要多个线程计算, 也要把长向量拆成计算单元能接受的长度的短向量或标量, 以 便多个线程执行短向量加法或标量加法。 例如分别计算多个短向量加法得到该长向量的 值。 假设在单指令多线程的计算方式中有5个线程, 每个线程只能运行一个短向量, 也就是 如果每轮只驱动5个线程, 每个线程一次只能用一个加法计算单元, 这样的话5个线程用5个 计算单元, 每轮只能完成5个短向量加法, 其中所述5个短向量是一个长向量的30个短向量 中的5个短向量。 那么5个长向量的加法总共150个短向量, 需要30轮计算才能完成5个长向 量(A1+A2), (A3+A4), (A5+A6)。

展开阅读全文
内容关键字: 融合 计算方法 可读 存储 介质
关于本文
本文标题:融合计算方法及可读存储介质.pdf
链接地址:https://www.zhuanlichaxun.net/pdf/9301998.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1