CN112394986A - 半精度浮点转浮点指令处理装置、方法及相关产品 - Google Patents
半精度浮点转浮点指令处理装置、方法及相关产品 Download PDFInfo
- Publication number
- CN112394986A CN112394986A CN201910742230.8A CN201910742230A CN112394986A CN 112394986 A CN112394986 A CN 112394986A CN 201910742230 A CN201910742230 A CN 201910742230A CN 112394986 A CN112394986 A CN 112394986A
- Authority
- CN
- China
- Prior art keywords
- point
- floating point
- floating
- precision floating
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
- 238000007667 floating Methods 0.000 title claims abstract description 494
- 238000012545 processing Methods 0.000 title claims abstract description 176
- 238000000034 method Methods 0.000 title claims abstract description 50
- 238000010801 machine learning Methods 0.000 claims abstract description 94
- 238000006243 chemical reaction Methods 0.000 claims description 90
- 230000015654 memory Effects 0.000 claims description 34
- 230000002093 peripheral effect Effects 0.000 claims description 5
- 230000005540 biological transmission Effects 0.000 claims description 4
- 238000012544 monitoring process Methods 0.000 claims description 3
- 238000000605 extraction Methods 0.000 description 24
- 238000010586 diagram Methods 0.000 description 18
- 239000000284 extract Substances 0.000 description 10
- 210000004027 cell Anatomy 0.000 description 7
- 230000007704 transition Effects 0.000 description 7
- 238000013528 artificial neural network Methods 0.000 description 6
- 210000002364 input neuron Anatomy 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000004806 packaging method and process Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000005481 NMR spectroscopy Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000005406 washing Methods 0.000 description 2
- 241000699666 Mus <mouse, genus> Species 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 240000007594 Oryza sativa Species 0.000 description 1
- 235000007164 Oryza sativa Nutrition 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 235000009566 rice Nutrition 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000002604 ultrasonography Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Advance Control (AREA)
Abstract
本申请涉及一种半精度浮点转浮点指令处理装置、方法及相关产品,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置。本申请实施例所提供的半精度浮点转浮点指令处理装置、方法及相关产品的适用范围广,对半精度浮点转浮点指令的处理效率高、处理速度快。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种半精度浮点转浮点指令处理装置、方法及相关产品。
背景技术
随着科技的不断发展,机器学习,尤其是神经网络算法的使用越来越广泛。其在图像识别、语音识别、自然语言处理等领域中都得到了良好的应用。但由于神经网络算法的复杂度越来越高,需要将张量等数据进行数据类型转换的需求不断增多。但是现有的半精度浮点转浮点指令和相关
技术当中,无法高效的支持数据半精度浮点转浮点指令的灵活运行,执行效率低、执行速度慢。
发明内容
有鉴于此,本申请提出了一种半精度浮点转浮点指令处理装置、方法及相关产品,以提高半精度浮点转浮点指令的处理的效率和速度。
根据本申请的第一方面,提供了一种半精度浮点转浮点指令处理装置,所述装置包括:
控制模块,用于对获取到的半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作域中的源地址和目的地址;
执行模块,用于在所述源地址提取半精度浮点型张量,转换为浮点型张量后存储在所述目的地址。
根据本申请的第二方面,提供了一种机器学习运算装置,所述装置包括:
一个或多个如第一方面所述的半精度浮点转浮点指令处理装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述半精度浮点转浮点指令处理装置时,所述多个所述半精度浮点转浮点指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述半精度浮点转浮点指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述半精度浮点转浮点指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述半精度浮点转浮点指令处理装置共享内存或者拥有各自的内存;多个所述半精度浮点转浮点指令处理装置的互联方式是任意互联拓扑。
根据本申请的第三方面,提供了一种组合处理装置,所述组合处理装置包括:
如上述第二方面的机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的操作,
其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
根据本申请的第四方面,提供了一种机器学习芯片,所述机器学习芯片包括上述第二方面所述的机器学习络运算装置或上述第三方面所述的组合处理装置。
根据本申请的第五方面,提供了一种机器学习芯片封装结构,该机器学习芯片封装结构包括上述第四方面所述的机器学习芯片。
根据本申请的第六方面,提供了一种板卡,该板卡包括上述第五方面所述的机器学习芯片封装结构。
根据本申请的第七方面,提供了一种电子设备,所述电子设备包括上述第四方面所述的机器学习芯片或上述第六方面所述的板卡。
根据本申请的第八方面,提供了一种半精度浮点转浮点指令处理方法,所述方法应用于半精度浮点转浮点指令处理装置,所述方法包括:
对获取到的半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作域中的源地址和目的地址;
在所述源地址提取半精度浮点型张量,转换为浮点型张量后存储在所述目的地址。
在一些实施例中,所述电子设备包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
在一些实施例中,所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
本申请实施例所提供的半精度浮点转浮点指令处理装置,该装置包括控制模块和执行模块,控制模块,用于对获取到的半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作域中的源地址和目的地址;执行模块,用于在所述源地址提取半精度浮点型张量,转换为浮点型张量后存储在目的地址。本申请实施例所提供的半精度浮点转浮点指令处理装置的适用范围广,对半精度浮点转浮点指令的处理效率高、处理速度快。
根据下面参考附图对示例性实施例的详细说明,本申请的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本申请的示例性实施例、特征和方面,并且用于解释本申请的原理。
图1示出根据本申请一实施例的半精度浮点转浮点指令处理装置的框图。
图1a、图1b示出了根据本申请一实施例的半精度浮点转浮点指令处理装置的框图。
图2a-图2e示出根据本申请一实施例的半精度浮点转浮点指令处理装置的框图。
图3示出根据本申请一实施例的半精度浮点转浮点指令处理装置的应用场景的示意图。
图4a、图4b示出根据本申请一实施例的组合处理装置的框图。
图5示出根据本申请一实施例的板卡的结构示意图。
图6示出根据本申请一实施例的半精度浮点转浮点指令处理方法的流程图。
具体实施方式
以下将参考附图详细说明本申请的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本申请,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本申请同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本申请的主旨。
图1示出根据本申请一实施例的半精度浮点转浮点指令处理装置的框图。如图1所示,该装置包括控制模块11和执行模块12。
控制模块11,用于对获取到的半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作域中的源地址和目的地址;
执行模块12,用于在所述源地址提取半精度浮点型张量,转换为浮点型张量后存储在所述目的地址。
在本实施例中,指令可以包括操作码和操作域。操作码和操作域可以根据需求,按照预设的组成顺序及格式组成指令。其中,操作码可以用于指示指令所要执行的操作。操作码可以有字符、代码或数字等各种形式表现形式,本申请对此不做限定。操作域可以包括执行指令所需数据的参数(例如来源、类型、地址等)及指令执行所需的其他参数等。
在一种可能的实现方式中,半精度浮点转浮点指令的操作码可以用于指示将半精度浮点型数据(张量)转换为浮点型数据(张量)。半精度浮点转浮点指令的操作域可以包括源地址和目的地址。其中源地址为待转换张量的存储地址,待转换张量的数据类型为半精度浮点型,目的地址为转换后张量的存储地址,转换后张量的数据类型为浮点型。其中,半精度浮点型张量中各元素的数据类型为半精度浮点型,即半精度浮点型张量中各元素为16bit的浮点数。浮点型张量中各元素的数据类型为浮点型,即浮点型张量中各元素为32bit的浮点数。
在一种可能的实现方式中,当所述半精度浮点转浮点指令处理装置位于片上(包括通用处理器和/或人工智能处理器所在的芯片)时,存储地址可以为片上存储器的地址(以下简称片上地址)或片外存储器的地址(以下简称片外地址),目的地址也可以为片上地址或片外地址。可以理解的是,当存储地址和目的地址均为片上地址时,半精度浮点转浮点指令处理装置的转换效率最高。
在一种可能的实现方式中,控制模块解析半精度浮点转浮点指令的操作域,得到源地址和目的地址后,将源地址和目的地址发送至执行模块。以使执行模块可以根据源地址提取待转换的半精度浮点型张量,并将提取到的半精度浮点型张量转换为浮点型张量,再将转换后的浮点型张量存储在目的地址。执行模块可以利用传统的数据类型转换方法,将半精度浮点型张量转换为浮点型张量,本申请对数据类型转换方法不做限定。
应当理解的是,本领域技术人员可以根据需要对半精度浮点转浮点指令的指令格式以及所包含的操作码和操作域进行设置,本申请对此不作限制。
在本实施例中,该装置可以包括一个或多个控制模块,以及一个或多个执行模块,可以根据实际需要对控制模块和执行模块的数量进行设置。也可以根据需求,利用多个控制模块中的任一控制模块执行对于获取到的半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作域中的源地址和目的地址;并利用多个执行模块中的任一执行模块(或由控制模块执行的执行模块)在所述源地址提取半精度浮点型张量,转换为浮点型张量后存储在所述目的地址。本申请对此不作限制。
本申请实施例所提供的半精度浮点转浮点指令处理装置,该装置包括控制模块和执行模块,控制模块,用于对获取到的半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作域中的源地址和目的地址;执行模块,用于在所述源地址提取半精度浮点型张量,转换为浮点型张量后存储在目的地址。本申请实施例所提供的半精度浮点转浮点指令处理装置的适用范围广,对半精度浮点转浮点指令的处理效率高、处理速度快。
在一种可能的实现方式中,所述控制模块,还用于得到所述半精度浮点转浮点指令的操作域中的元素数量;所述执行模块,还用于根据所述元素数量在所述源地址提取半精度浮点型张量中的待转换元素,将所述待转换元素转换为浮点型元素后存储在所述目的地址。
在一种可能的实现方式中,半精度浮点型张量可以包括多个元素,半精度浮点转浮点指令可以用于转换半精度浮点型张量中的部分元素。可以根据转换后运算的需求,确定需要转换的半精度浮点型张量中的部分元素,也可以根据半精度浮点转浮点指令处理装置的处理效率,确定需要转换的半精度浮点型张量中的部分元素。例如,当半精度浮点转浮点指令处理装置的处理效率较低时,在半精度浮点型张量中确定较少的部分元素作为待转换元素,当效率较高时,确定较多的部分元素作为待转换元素。
半精度浮点转浮点指令的操作域中还可以包括半精度浮点型张量中的待转换元素的元素数量。控制模块解析半精度浮点转浮点指令后,可以得到操作域中的元素数量;执行模块,还用于根据所述元素数量在所述源地址提取半精度浮点型张量中的待转换元素,待转换元素的数量根据操作域中解析得到的元素数量确定,执行模块可以将待转换元素转换为浮点型元素后存储在目的地址,完成半精度浮点型张量的部分元素的转换。
在一种可能的实现方式中,在神经网络的卷积运算中,输入神经元数据可以为半精度浮点型张量,当输入神经元数据与卷积核进行卷积运算时,是输入神经元数据中的部分元素与卷积核依次进行卷积运算。可以将半精度浮点型的输入神经元数据转换为浮点型的输入神经元数据后,再与卷积核进行卷积运算。此时,可以根据半精度浮点转浮点指令的操作域中的元素数量,确定输入神经元数据中的部分元素为待转换元素,可以根据卷积核确定半精度浮点转浮点指令的操作域中的元素数量,得到与卷积核对应的待转换元素,将待转换元素转换为浮点型张量后,即可与卷积核进行卷积运算。
在本实施例中,控制模块还用于得到半精度浮点转浮点指令的操作域中的元素数量;执行模块还用于根据元素数量在源地址提取半精度浮点型张量中的待转换元素,将待转换元素转换为浮点型元素后存储在目的地址。元素数量可以使得半精度浮点转浮点指令将待转换张量中的部分元素进行转换,使得数据类型转换更加灵活,转换效率更高。
在一种可能的实现方式中,所述控制模块,还用于得到所述半精度浮点转浮点指令的操作域中的转换次数;所述执行模块,还用于根据所述元素数量在所述源地址提取半精度浮点型张量中的待转换元素,将所述待转换元素转换为浮点型元素后存储在所述目的地址,所述执行模块根据所述转换次数重复执行上述步骤,且每次提取的待转换元素不重叠。
在一种可能的实现方式中,可以根据半精度浮点转浮点指令的操作域中的转换次数,将待转换的半精度浮点型张量中的元素执行多次转换后完成张量整体的数据类型转换,每次转换其中的部分元素。例如,转换次数为N次,半精度浮点型张量中的元素数量为M,则每次转换的元素数量为M/N。利用转换次数,可以使得半精度浮点转浮点指令将待转换张量中的部分元素进行转换,使得数据类型转换更加灵活,转换效率更高。
在一种可能的实现方式中,所述元素数量和所述转换次数的乘积等于所述张量中的元素总数量。
在一种可能的实现方式中,半精度浮点转浮点指令的操作域中可以同时包括元素数量和转换次数。半精度浮点转浮点指令可以每次根据元素数量提取待转换的元素进行转换,并根据转换次数确定执行的次数后,完成半精度浮点张量的整体转换。半精度浮点转浮点指令的操作域中同时包括元素数量和转换次数,可以使得半精度浮点转浮点指令不用去计算每次需要提取的元素的数量,或去计算需要执行的次数,可以提高半精度浮点转浮点指令的执行效率。
在一种可能的实现方式中,所述控制模块,还用于得到所述半精度浮点转浮点指令的操作域中的提取步长;所述执行模块,还用于根据所述元素数量和所述提取步长,在所述源地址提取半精度浮点型张量中的待转换元素,将所述待转换元素转换为浮点型元素后存储在所述目的地址。
在一种可能的实现方式中,半精度浮点转浮点指令的操作域中可以包括提取步长。提取步长可以为将半精度浮点型张量进行多次转换时,每次转换的待转换元素之间的间隔步长。通过提取步长,可以实现将半精度浮点型张量中的部分元素而不是全部元素进行数据类型转换。
在一种可能的实现方式中,当半精度浮点转浮点指令的操作域中包括元素数量和提取步长时,除第一次根据元素数量提取待转换元素,每次提取待转换元素时,都根据提取步长确定与上一次提取的待转换元素之间的间隔。
在一种可能的实现方式中,提取步长可以为行数、列数、间隔元素的数量等。本申请对此不做限定。
在本实施例中,半精度浮点转浮点指令操作域中的提取步长,可以实现将半精度浮点张量中的部分张量进行数据类型转换,可以提高半精度浮点转浮点指令的转换灵活度。
在一种可能的实现方式中,所述控制模块,还用于得到所述半精度浮点转浮点指令的操作域中的存储步长;所述执行模块,还用于根据所述元素数量,在所述源地址提取半精度浮点型张量中的待转换元素,将所述待转换元素转换为浮点型元素后,根据所述存储步长存储在所述目的地址。
在一种可能的实现方式中,半精度浮点转浮点指令操作域中还可以包括存储步长。存储步长可以用于将转换后的浮点型元素,按照一定的间隔存储在目的地址中。
在本实施例中,半精度浮点转浮点指令操作域中的存储步长,实现转换后的浮点型元素在目的地址上的不连续存储,可以提高半精度浮点转浮点指令的执行灵活度。
在一种可能的实现方式中,所述执行模块包括多个执行子模块,
所述控制模块,还用于对获取到的半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作域中的源地址和目的地址,并根据所述源地址和所述目的地址确定多个源子地址和多个所述目的子地址,并将各所述源子地址和各所述目的子地址分配至执行子模块;
目标执行子模块,用于在对应的所述源子地址提取半精度浮点型张量,转换为浮点型张量后存储在对应的所述目的子地址,所述目标执行子模块为任一所述执行子模块。
在一种可能的实现方式中,执行模块可以包括多个执行子模块。控制模块可以将操作域中的源地址和目的地址划分为多个源子地址和多个所述目的子地址。源子地址的数量可以小于或等于执行子模块的数量,目的子地址的数量也可以小于或等于执行子模块的数量。当源子地址和目的子地址的数量小于执行子模块的数量时,部分执行子模块可以处于空闲状态,不参与数据类型转换。当源子地址和目的子地址的数量等于执行子模块的数量时,所有执行子模块均参与数据类型转换。
在一种可能的实现方式中,对于参与数据类型转换的任一执行子模块,可以根据控制模块分配的与之对应的源子地址,提取到待转换的半精度浮点型张量后,进行数据类型转换得到浮点型张量,并将浮点型张量存储在与之对应的目的子地址。
在本实施例中,执行模块包括多个执行子模块,控制模块可以根据所述源地址和所述目的地址确定多个源子地址和多个所述目的子地址,并将各所述源子地址和各所述目的子地址分配至执行子模块,执行子模块可以根据对应的源子地址提取半精度浮点型张量后,进行数据类型转换得到浮点型张量,并将浮点型张量存储在对应的目的子地址。多个执行子模块可以实现并行的数据类型转换,提高了半精度浮点型张量的转换效率。
在一种可能的实现方式中,所述执行模块包括主执行子模块和多个从执行子模块,
所述控制模块,还用于对获取到的半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作域中的源地址和目的地址;
所述主执行子模块,用于根据所述源地址和所述目的地址确定多个源子地址和多个所述目的子地址,并将各所述源子地址和各所述目的子地址分配至从执行子模块;
所述目标从执行子模块,用于在对应的所述源子地址提取半精度浮点型张量,转换为浮点型张量后存储在对应的所述目的子地址,所述目标执行子模块为任一所述从执行子模块。
在一种可能的实现方式中,执行模块可以包括一个或多个主执行子模块以及多个从执行子模块,其中,一个主执行子模块可以连接多个从执行子模块。其中,主执行子模块与控制模块连接,用于接收控制模块发送的源地址和目的地址。主执行子模块可以将源地址和目的地址按进行划分得到多个源子地址和多个所述目的子地址。源子地址或目的子地址的数量可以与主执行子模块连接的从执行子模块的数量相等,或小于与主执行子模块连接的从执行子模块的数量。主执行子模块可以确定进行转换的从执行子模块,并按照确定进行转换的从执行子模块的数量划分源地址和目的地址。
在一种可能的实现方式中,主执行子模块可以只将源地址进行划分,得到多个源子地址。各从执行子模块可以在对应的源子地址提取半精度浮点型张量后进行转换,并将转换得到的浮点型张量发送至主执行子模块,由主执行子模块统一发送至目的地址。
在本实施例中,多个从执行子模块可以并行进行数据类型转换,提高了半精度浮点型张量的转换效率。主执行子模块和从执行子模块的设置,也可以提高执行模块的执行效率。
在一种可能的实现方式中,所述装置还包括:存储模块,用于存储所述半精度浮点型张量和/或所述浮点型张量。
在一种可能的实现方式中,半精度浮点转浮点指令处理装置还可以包括存储模块,用于存储半精度浮点型张量和/或所述浮点型张量。将待转换的半精度浮点型张量和/或转换后的浮点型张量,存储于本地,半精度浮点转浮点指令处理装置可以提前将需要转换的数据传输与本地的存储模块后,待需要转换时直接从本地提取数据。也可以将转换后的数据存储本地,不用受到与外部存储装置之间的IO数据量的限制,可以提高半精度浮点转浮点指令处理装置的处理效率。
在一种可能的实现方式中,所述元素数量为所述张量的任一维度上的元素数量。
在一种可能的实现方式中,张量为二维张量时,元素数量可以为二维张量X维度上的元素数量,也可以为Y维度上的元素数量。例如,当二维张量存储在存储器中时,张量的X维度可以为存储器中的行,张量的Y维度可以为存储器中的列。当元素数量为X维度时,即为存储器中的张量在行方向上的元素的数量。假设一行为200个元素,当元素数量为1000时,需要提取1000÷200=5行的数据。本申请不限制张量的维度的数量,其他数量维度的张量,可参照上述二维张量中的描述,不再赘述。
在本实施例中,元素数量为所述张量的任一维度上的元素数量,可以使得半精度浮点转浮点指令能够根据需求准确的给出需要提取的原始的数量,且能够在设定好的维度提取,可以提高半精度浮点转浮点指令执行时待转换数据的提取效率,从而提高半精度浮点转浮点指令的执行效率。
在一种可能的实现方式中,所述提取步长和所述存储步长的比特数为所述张量中任一维度的比特数的倍数。
在一种可能的实现方式中,提取步长和所述存储步长的比特数为张量中任一维度的比特数的倍数。例如,存储器中存储的半精度浮点型张量为二维张量,提取步长和存储步长的比特数可以为存储器中的行的比特数的整数倍,使得半精度浮点转浮点指令处理装置在进行数据提取和数据存储时,能够整行的提取和存储。
在本实施例中,提取步长和所述存储步长的比特数为张量中任一维度的比特数的倍数,可以避免执行过程中需要计算数据的提取位置或存储位置,可以提高半精度浮点转浮点指令处理的执行效率。
在一种可能的实现方式中,所述存储步长的比特数大于需要存储的所述浮点型元素的比特数。
在一种可能的实现方式中,存储步长可以为两次存储首地址之间的间隔。此时,存储步长的比特数大于需要存储的所述浮点型元素的比特数,避免出现两次存储数据的地址有重叠。
在一种可能的实现方式中,所述控制模块,包括:
指令存储子模块,用于存储指令,包括所述半精度浮点转浮点指令;
指令处理子模块,用于对所述半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个指令,包括半精度浮点转浮点指令。
在一种可能的实现方式中,所述控制模块,还包括:
依赖关系处理子模块,用于在确定所述多个指令中的半精度浮点转浮点指令与所述半精度浮点转浮点指令之前的第零指令存在关联关系时,将所述半精度浮点转浮点指令缓存在所述指令存储子模块中,在所述第零指令执行完毕后,从所述指令存储子模块中提取所述半精度浮点转浮点指令发送至所述执行模块,
其中,所述半精度浮点转浮点指令与所述半精度浮点转浮点指令之前的第零指令存在关联关系包括:
存储所述半精度浮点转浮点指令所需数据的第一存储地址区间与存储所述第零指令所需数据的第零存储地址区间具有重叠的区域。
图1a示出了根据本申请一实施例的半精度浮点转浮点指令处理装置的框图。在一种可能的实现方式中,如图1a所示,存储模块13用于存储半精度浮点转浮点指令、待转换的张量和转换后的张量。控制模块11包括指令存储子模块111,指令处理子模块112,依赖关系处理子模块114和队列存储子模块113。其中,指令存储子模块111可以用于存储提取到的半精度浮点转浮点指令。指令处理子模块112,可以用于对半精度浮点转浮点指令进行解析,得到半精度浮点转浮点指令的操作码和操作域,并得到操作域中的源地址和目的地址等参数。依赖关系处理子模块114可以用于确定半精度浮点转浮点指令与之前的第零指令之间的关联关系。队列存储子模块113可以用于存储指令队列,指令队列包括按照执行顺序依次排列的多个指令,包括半精度浮点转浮点指令。
执行模块12可以用于在源地址提取半精度浮点型张量,转换为浮点型张量后存储在目的地址。
图1b示出了根据本申请一实施例的半精度浮点转浮点指令处理装置的框图。与图1a不同的是,图1b示出的半精度浮点转浮点指令处理装置中,执行模块12包括多个执行子模块120。
如图1b所示,执行模块12可以包括多个执行子模块120。控制模块11中的指令处理子模块112可以用于对获取到的半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作域中的源地址和目的地址,并根据所述源地址和所述目的地址确定多个源子地址和多个所述目的子地址,并将各所述源子地址和各所述目的子地址分配至执行子模块。执行子模块120,可以用于在对应的所述源子地址提取半精度浮点型张量,转换为浮点型张量后存储在对应的所述目的子地址。
图2a示出根据本申请一实施例的半精度浮点转浮点指令处理装置的框图。与图1a不同的是,图2a示出的半精度浮点转浮点指令处理装置中,执行模块12包括一个主执行子模块121和多个从执行子模块122。其中,主执行子模块121,用于根据源地址和目的地址确定多个源子地址和多个所述目的子地址,并将各源子地址和各目的子地址分配至从执行子模块;从执行子模块122,用于在对应的源子地址提取半精度浮点型张量,转换为浮点型张量后存储在对应的所述目的子地址。
需要说明的是,本领域技术人员可以根据实际需要对主执行子模块和多个从执行子模块之间的连接方式进行设置,以实现对执行模块的架构设置,例如,执行模块的架构可以是“H”型架构、阵列型架构、树型架构等,本申请对此不作限制。
图2b示出根据本申请一实施例的半精度浮点转浮点指令处理装置的框图。在一种可能的实现方式中,如图2b所示,执行模块12还可以包括一个或多个分支执行子模块123,该分支执行子模块123用于转发主执行子模块121和从执行子模块122之间的数据和/或运算指令。其中,主执行子模块121与一个或多个分支执行子模块123连接。这样,执行模块中的主执行子模块、分支执行子模块和从执行子模块之间采用“H”型架构连接,通过分支执行子模块转发数据和/或运算指令,节省了对主执行子模块的资源占用,进而提高指令的处理速度。
图2c示出根据本申请一实施例的半精度浮点转浮点指令处理装置的框图。在一种可能的实现方式中,如图2c所示,多个从执行子模块122呈阵列分布。
每个从执行子模块122与相邻的其他从执行子模块122连接,主执行子模块121连接多个从执行子模块122中的k个从执行子模块122,k个从执行子模块122为:第1行的n个从执行子模块122、第m行的n个从执行子模块122以及第1列的m个从执行子模块122。
其中,如图2c所示,k个从执行子模块仅包括第1行的n个从执行子模块、第m行的n个从执行子模块以及第1列的m个从执行子模块,即该k个从执行子模块为多个从执行子模块中直接与主执行子模块连接的从执行子模块。其中,k个从执行子模块,用于在主执行子模块以及多个从执行子模块之间的数据以及指令的转发。这样,多个从执行子模块呈阵列分布,可以提高主执行子模块向从执行子模块发送数据和/或运算指令速度,进而提高指令的处理速度。
图2d示出根据本申请一实施例的半精度浮点转浮点指令处理装置的框图。在一种可能的实现方式中,如图2d所示,执行模块还可以包括树型子模块124。该树型子模块124包括一个根端口401和多个支端口402。根端口401与主执行子模块121连接,多个支端口402与多个从执行子模块122分别连接。其中,树型子模块124具有收发功能,用于转发主执行子模块121和从执行子模块122之间的数据和/或运算指令。这样,通过树型子模块的作用使得执行模块呈树型架构连接,并利用树型子模块的转发功能,可以提高主执行子模块向从执行子模块发送数据和/或运算指令速度,进而提高指令的处理速度。
在一种可能的实现方式中,树型子模块124可以为该装置的可选结果,其可以包括至少一层节点。节点为具有转发功能的线结构,节点本身不具备运算功能。最下层的节点与从执行子模块连接,以转发主执行子模块121和从执行子模块122之间的数据和/或运算指令。特殊地,如树型子模块具有零层节点,该装置则无需树型子模块。
在一种可能的实现方式中,树型子模块124可以包括n叉树结构的多个节点,n叉树结构的多个节点可以具有多个层。
举例来说,图2e示出根据本申请一实施例的半精度浮点转浮点指令处理装置的框图。如图2e所示,n叉树结构可以是二叉树结构,树型子模块包括2层节点01。最下层节点01与从执行子模块122连接,以转发主执行子模块121和从执行子模块122之间的数据和/或运算指令。
在该实现方式中,n叉树结构还可以是三叉树结构等,n为大于或等于2的正整数。本领域技术人员可以根据需要对n叉树结构中的n以及n叉树结构中节点的层数进行设置,本申请对此不作限制。
在一种可能的实现方式中,如图1、图1a、图1b和图2a-图2e所示,该装置还可以包括存储模块13。该实现方式中,存储模块可以包括内存、缓存和寄存器中的一种或多种,缓存可以包括高速暂存缓存。可以根据需要将半精度浮点型张量和浮点型张量存储在存储模块的内存、缓存和/或寄存器中,本申请对此不作限制。
在一种可能的实现方式中,半精度浮点转浮点指令的指令格式可以是:
half2float(float*dst,half*src)
其中,half2float是半精度浮点转浮点指令的操作码。(float*dst,half*
src)是半精度浮点转浮点指令的操作域。其中,dst是目的地址,float表示目的地址存储张量为浮点型张量,src是源地址,half表示源地址存储张量为半精度浮点型张量。
在一种可能的实现方式中,半精度浮点转浮点指令的指令格式可以是:half2float(float*dst,half*src,int32_NumOfEle,int32_dststride,int32_srcstride,int32_NumOfSection)
其中,NumOfEle为元素数量,dststride为存储步长,srcstride为提取步长,NumOfSection为转换次数,int32表示各参数的数值类型为32位整数。NumOfEle、dststride、srcstride、NumOfSection均为可选参数。
应当理解的是,本领域技术人员可以根据需要对半精度浮点转浮点指令的操作码、指令格式中操作码和操作域的位置进行设置,本申请对此不作限制。
在一种可能的实现方式中,该装置可以设置于图形处理器(Graphics ProcessingUnit,简称GPU)、中央处理器(Central Processing Unit,简称CPU)和嵌入式神经网络处理器(Neural-network Processing Unit,简称NPU)的一种或多种之中。
需要说明的是,尽管以上述实施例作为示例介绍了半精度浮点转浮点指令处理装置如上,但本领域技术人员能够理解,本申请应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各模块,只要符合本申请的技术方案即可。
应用示例
以下结合“利用半精度浮点转浮点指令处理装置进行数据类型转换操作”作为一个示例性应用场景,给出根据本申请实施例的应用示例,以便于理解半精度浮点转浮点指令处理装置的流程。本领域技术人员应理解,以下应用示例仅仅是出于便于理解本申请实施例的目的,不应视为对本申请实施例的限制
图3示出根据本申请一实施例的半精度浮点转浮点指令处理装置的应用场景的示意图。如图3所示,半精度浮点转浮点指令处理装置对半精度浮点转浮点指令进行处理的过程如下:
在一种可能的实现方式中,控制模块解析对获取到的半精度浮点转浮点指令进行,得到所述半精度浮点转浮点指令的操作域中的源地址(图中的source)、目的地址(图中的destination)、元素数量(图中的NumofEle)、转换次数(图中未示出)、提取步长(图中的srcstride)和存储步长(图中的dststride)。源地址中存储的是半精度浮点型张量(图中的half),目的地址中存储的是浮点型张量(float)。执行模块,用于在所述源地址提取半精度浮点型张量,每次提取的元素根据元素数量和提取步长确定,转换为浮点型张量后,根据存储步长存储在目的地址。
以上各模块的工作过程可参考上文的相关描述。
这样,半精度浮点转浮点指令处理装置可以高效、快速地对半精度浮点转浮点指令进行处理。
本申请提供一种机器学习运算装置,该机器学习运算装置可以包括一个或多个上述半精度浮点转浮点指令处理装置,用于从其他处理装置中获取待运算数据和控制信息,执行指定的机器学习运算。该机器学习运算装置可以从其他机器学习运算装置或非机器学习运算装置中获得半精度浮点转浮点指令,并将执行结果通过I/O接口传递给外围设备(也可称其他处理装置)。外围设备譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口,服务器。当包含一个以上半精度浮点转浮点指令处理装置时,半精度浮点转浮点指令处理装置间可以通过特定的结构进行链接并传输数据,譬如,通过PCIE总线进行互联并传输数据,以支持更大规模的神经网络的运算。此时,可以共享同一控制系统,也可以有各自独立的控制系统;可以共享内存,也可以每个加速器有各自的内存。此外,其互联方式可以是任意互联拓扑。
该机器学习运算装置具有较高的兼容性,可通过PCIE接口与各种类型的服务器相连接。
图4a示出根据本申请一实施例的组合处理装置的框图。如图4a所示,该组合处理装置包括上述机器学习运算装置、通用互联接口和其他处理装置。机器学习运算装置与其他处理装置进行交互,共同完成用户指定的操作。
其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、停止等基本控制;其他处理装置也可以和机器学习运算装置协作共同完成运算任务。
通用互联接口,用于在机器学习运算装置与其他处理装置间传输数据和控制指令。该机器学习运算装置从其他处理装置中获取所需的输入数据,写入机器学习运算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入机器学习运算装置片上的控制缓存;也可以读取机器学习运算装置的存储模块中的数据并传输给其他处理装置。
图4b示出根据本申请一实施例的组合处理装置的框图。在一种可能的实现方式中,如图4b所示,该组合处理装置还可以包括存储装置,存储装置分别与机器学习运算装置和所述其他处理装置连接。存储装置用于保存在机器学习运算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本机器学习运算装置或其他处理装置的内部存储中无法全部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
本申请提供一种机器学习芯片,该芯片包括上述机器学习运算装置或组合处理装置。
本申请提供一种机器学习芯片封装结构,该机器学习芯片封装结构包括上述机器学习芯片。
本申请提供一种板卡,图5示出根据本申请一实施例的板卡的结构示意图。如图5所示,该板卡包括上述机器学习芯片封装结构或者上述机器学习芯片。板卡除了包括机器学习芯片389以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件390、接口装置391和控制器件392。
存储器件390与机器学习芯片389(或者机器学习芯片封装结构内的机器学习芯片)通过总线连接,用于存储数据。存储器件390可以包括多组存储单元393。每一组存储单元393与机器学习芯片389通过总线连接。可以理解,每一组存储单元393可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。
在一个实施例中,存储器件390可以包括4组存储单元393。每一组存储单元393可以包括多个DDR4颗粒(芯片)。在一个实施例中,机器学习芯片389内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。
在一个实施例中,每一组存储单元393包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在机器学习芯片389中设置控制DDR的控制器,用于对每个存储单元393的数据传输与数据存储的控制。
接口装置391与机器学习芯片389(或者机器学习芯片封装结构内的机器学习芯片)电连接。接口装置391用于实现机器学习芯片389与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,接口装置391可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至机器学习芯片289,实现数据转移。在另一个实施例中,接口装置391还可以是其他的接口,本申请并不限制上述其他的接口的具体表现形式,接口装置能够实现转接功能即可。另外,机器学习芯片的计算结果仍由接口装置传送回外部设备(例如服务器)。
控制器件392与机器学习芯片389电连接。控制器件392用于对机器学习芯片389的状态进行监控。具体的,机器学习芯片389与控制器件392可以通过SPI接口电连接。控制器件392可以包括单片机(Micro Controller Unit,MCU)。如机器学习芯片389可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,机器学习芯片389可以处于多负载和轻负载等不同的工作状态。通过控制器件可以实现对机器学习芯片中多个处理芯片、多个处理和/或多个处理电路的工作状态的调控。
本申请提供一种电子设备,该电子设备包括上述机器学习芯片或板卡。
电子设备可以包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
交通工具可以包括飞机、轮船和/或车辆。家用电器可以包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机。医疗设备可以包括核磁共振仪、B超仪和/或心电图仪。
图6示出根据本申请一实施例的半精度浮点转浮点指令处理方法的流程图。如图6所示,该方法应用于上述半精度浮点转浮点指令处理装置,该方法包括步骤S51和步骤S52。
在步骤S51中,对获取到的半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作域中的源地址和目的地址;
步骤S52,在所述源地址提取半精度浮点型张量,转换为浮点型张量后存储在所述目的地址。
在一种可能的实现方式中,所述对获取到的半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作域中的源地址和目的地址,还包括:
得到所述半精度浮点转浮点指令的操作域中的元素数量;
所述在所述源地址提取半精度浮点型张量,转换为浮点型张量后存储在所述目的地址,还包括:
根据所述元素数量在所述源地址提取半精度浮点型张量中的待转换元素,将所述待转换元素转换为浮点型元素后存储在所述目的地址。
在一种可能的实现方式中,所述对获取到的半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作域中的源地址和目的地址,还包括:
得到所述半精度浮点转浮点指令的操作域中的转换次数;
所述在所述源地址提取半精度浮点型张量,转换为浮点型张量后存储在所述目的地址,还包括:
根据所述元素数量在所述源地址提取半精度浮点型张量中的待转换元素,将所述待转换元素转换为浮点型元素后存储在所述目的地址,所述执行模块根据所述转换次数重复执行上述步骤,且每次提取的待转换元素不重叠。
在一种可能的实现方式中,所述对获取到的半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作域中的源地址和目的地址,还包括:
得到所述半精度浮点转浮点指令的操作域中的提取步长;
所述在所述源地址提取半精度浮点型张量,转换为浮点型张量后存储在所述目的地址,还包括:
根据所述元素数量和所述提取步长,在所述源地址提取半精度浮点型张量中的待转换元素,将所述待转换元素转换为浮点型元素后存储在所述目的地址。
在一种可能的实现方式中,所述对获取到的半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作域中的源地址和目的地址,还包括:
得到所述半精度浮点转浮点指令的操作域中的存储步长;
所述在所述源地址提取半精度浮点型张量,转换为浮点型张量后存储在所述目的地址,还包括:
根据所述元素数量,在所述源地址提取半精度浮点型张量中的待转换元素,将所述待转换元素转换为浮点型元素后,根据所述存储步长存储在所述目的地址。
在一种可能的实现方式中,所述方法应用于半精度浮点转浮点指令处理装置,所述半精度浮点转浮点指令处理装置包括控制模块和执行模块,所述执行模块包括多个执行子模块,所述方法还包括:
控制模块根据所述源地址和所述目的地址确定多个源子地址和多个所述目的子地址,并将各所述源子地址和各所述目的子地址分配至执行子模块;
目标执行子模块在对应的所述源子地址提取半精度浮点型张量,转换为浮点型张量后存储在对应的所述目的子地址,所述目标执行子模块为任意执行子模块。
在一种可能的实现方式中,所述方法应用于半精度浮点转浮点指令处理装置,所述半精度浮点转浮点指令处理装置包括控制模块和执行模块,所述执行模块包括主执行子模块和多个从执行子模块,所述方法还包括:
由主执行子模块根据所述源地址和所述目的地址确定多个源子地址和多个所述目的子地址,并将各所述源子地址和各所述目的子地址分配至从执行子模块;
目标从执行子模块在对应的所述源子地址提取半精度浮点型张量,转换为浮点型张量后存储在对应的所述目的子地址,所述目标执行子模块为任一所述从执行子模块。
在一种可能的实现方式中,所述方法还包括:
存储所述半精度浮点型张量和/或所述浮点型张量。
在一种可能的实现方式中,所述元素数量为所述张量的任一维度上的元素数量。
在一种可能的实现方式中,所述元素数量和所述转换次数的乘积等于所述张量中的元素总数量。
在一种可能的实现方式中,所述提取步长和所述存储步长的比特数为所述张量中任一维度的比特数的倍数。
在一种可能的实现方式中,所述存储步长的比特数大于需要存储的所述浮点型元素的比特数。
在一种可能的实现方式中,所述对获取到的半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作域中的源地址和目的地址,包括:
存储指令,包括所述半精度浮点转浮点指令;
对所述半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个指令,包括半精度浮点转浮点指令。
在一种可能的实现方式中,所述对获取到的半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作域中的源地址和目的地址,还包括:
在确定所述多个指令中的半精度浮点转浮点指令与所述半精度浮点转浮点指令之前的第零指令存在关联关系时,将所述半精度浮点转浮点指令缓存在所述指令存储子模块中,在所述第零指令执行完毕后,从所述指令存储子模块中提取所述半精度浮点转浮点指令发送至所述执行模块,
其中,所述半精度浮点转浮点指令与所述半精度浮点转浮点指令之前的第零指令存在关联关系包括:
存储所述半精度浮点转浮点指令所需数据的第一存储地址区间与存储所述第零指令所需数据的第零存储地址区间具有重叠的区域。
需要说明的是,尽管以上述实施例作为示例介绍了半精度浮点转浮点指令处理方法如上,但本领域技术人员能够理解,本申请应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各步骤,只要符合本申请的技术方案即可。
本申请实施例所提供的半精度浮点转浮点指令处理方法的适用范围广,对半精度浮点转浮点指令的处理效率高、处理速度快。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的实施例中,应该理解到,所揭露的系统、装置,可通过其它的方式实现。例如,以上所描述的系统、装置实施例仅仅是示意性的,例如设备、装置、模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统或装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,设备、装置或模块的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
集成的模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
依据以下条款可更好地理解前述内容:
A1、一种半精度浮点转浮点指令处理装置,所述装置包括:
控制模块,用于对获取到的半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作域中的源地址和目的地址;
执行模块,用于在所述源地址提取半精度浮点型张量,转换为浮点型张量后存储在所述目的地址。
A 2、根据条款A 1所述的装置,所述控制模块,还用于得到所述半精度浮点转浮点指令的操作域中的元素数量;
所述执行模块,还用于根据所述元素数量在所述源地址提取半精度浮点型张量中的待转换元素,将所述待转换元素转换为浮点型元素后存储在所述目的地址。
A 3、根据条款A 2所述的装置,
所述控制模块,还用于得到所述半精度浮点转浮点指令的操作域中的转换次数;
所述执行模块,还用于根据所述元素数量在所述源地址提取半精度浮点型张量中的待转换元素,将所述待转换元素转换为浮点型元素后存储在所述目的地址,所述执行模块根据所述转换次数重复执行上述步骤,且每次提取的待转换元素不重叠。
A 4、根据条款A 2所述的装置,所述控制模块,还用于得到所述半精度浮点转浮点指令的操作域中的提取步长;
所述执行模块,还用于根据所述元素数量和所述提取步长,在所述源地址提取半精度浮点型张量中的待转换元素,将所述待转换元素转换为浮点型元素后存储在所述目的地址。
A 5、根据条款A 2至A 4中任一项所述的装置,所述控制模块,还用于得到所述半精度浮点转浮点指令的操作域中的存储步长;
所述执行模块,还用于根据所述元素数量,在所述源地址提取半精度浮点型张量中的待转换元素,将所述待转换元素转换为浮点型元素后,根据所述存储步长存储在所述目的地址。
A 6、根据条款A 1所述的装置,所述执行模块包括多个执行子模块,
所述控制模块,还用于对获取到的半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作域中的源地址和目的地址,并根据所述源地址和所述目的地址确定多个源子地址和多个所述目的子地址,并将各所述源子地址和各所述目的子地址分配至执行子模块;
目标执行子模块,用于在对应的所述源子地址提取半精度浮点型张量,转换为浮点型张量后存储在对应的所述目的子地址,所述目标执行子模块为任一所述执行子模块。
A 7、根据条款A 1所述的装置,所述执行模块包括主执行子模块和多个从执行子模块,
所述控制模块,还用于对获取到的半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作域中的源地址和目的地址;
所述主执行子模块,用于根据所述源地址和所述目的地址确定多个源子地址和多个所述目的子地址,并将各所述源子地址和各所述目的子地址分配至从执行子模块;
所述目标从执行子模块,用于在对应的所述源子地址提取半精度浮点型张量,转换为浮点型张量后存储在对应的所述目的子地址,所述目标执行子模块为任一所述从执行子模块。
A 8、根据条款A 1至A 7中任一项所述的装置,所述装置还包括:
存储模块,用于存储所述半精度浮点型张量和/或所述浮点型张量。
A 9、根据条款A 2所述的装置,所述元素数量为所述张量的任一维度上的元素数量。
A 10、根据条款A 3所述的装置,
所述元素数量和所述转换次数的乘积等于所述张量中的元素总数量。
A 11、根据条款A 5所述的装置,所述提取步长和所述存储步长的比特数为所述张量中任一维度的比特数的倍数。
A 12、根据条款A 5所述的装置,所述存储步长的比特数大于需要存储的所述浮点型元素的比特数。
A 13、根据条款A 1所述的装置,所述控制模块,包括:
指令存储子模块,用于存储指令,包括所述半精度浮点转浮点指令;
指令处理子模块,用于对所述半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作码和操作域;
队列存储子模块,用于存储指令队列,所述指令队列包括按照执行顺序依次排列的多个指令,包括半精度浮点转浮点指令。
A 14、根据条款A 11所述的装置,所述控制模块,还包括:
依赖关系处理子模块,用于在确定所述多个指令中的半精度浮点转浮点指令与所述半精度浮点转浮点指令之前的第零指令存在关联关系时,将所述半精度浮点转浮点指令缓存在所述指令存储子模块中,在所述第零指令执行完毕后,从所述指令存储子模块中提取所述半精度浮点转浮点指令发送至所述执行模块,
其中,所述半精度浮点转浮点指令与所述半精度浮点转浮点指令之前的第零指令存在关联关系包括:
存储所述半精度浮点转浮点指令所需数据的第一存储地址区间与存储所述第零指令所需数据的第零存储地址区间具有重叠的区域。
A 15、一种机器学习运算装置,所述装置包括:
一个或多个如条款A 1-A 14任一项所述的半精度浮点转浮点指令处理装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述半精度浮点转浮点指令处理装置时,所述多个所述半精度浮点转浮点指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述半精度浮点转浮点指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述半精度浮点转浮点指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述半精度浮点转浮点指令处理装置共享内存或者拥有各自的内存;多个所述半精度浮点转浮点指令处理装置的互联方式是任意互联拓扑。
A 16、一种组合处理装置,所述组合处理装置包括:
如条款5所述的机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的操作,
其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
A 17、一种机器学习芯片,所述机器学习芯片包括:
如条款A 15所述的机器学习运算装置或如条款A 16所述的组合处理装置。
A 18、一种电子设备,所述电子设备包括:
如条款A 17所述的机器学习芯片。
A 19、一种板卡,所述板卡包括:存储器件、接口装置和控制器件以及如条款A 17所述的机器学习芯片;
其中,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述机器学习芯片与外部设备之间的数据传输;
所述控制器件,用于对所述机器学习芯片的状态进行监控。
A 20、一种半精度浮点转浮点指令处理处理方法,所述方法应用于半精度浮点转浮点指令处理装置,所述方法包括:
对获取到的半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作域中的源地址和目的地址;
在所述源地址提取半精度浮点型张量,转换为浮点型张量后存储在所述目的地址。
A 21、根据条款A 20所述的方法,所述对获取到的半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作域中的源地址和目的地址,还包括:
得到所述半精度浮点转浮点指令的操作域中的元素数量;
所述在所述源地址提取半精度浮点型张量,转换为浮点型张量后存储在所述目的地址,还包括:
根据所述元素数量在所述源地址提取半精度浮点型张量中的待转换元素,将所述待转换元素转换为浮点型元素后存储在所述目的地址。
22、根据条款21所述的方法,所述对获取到的半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作域中的源地址和目的地址,还包括:
得到所述半精度浮点转浮点指令的操作域中的转换次数;
所述在所述源地址提取半精度浮点型张量,转换为浮点型张量后存储在所述目的地址,还包括:
根据所述元素数量在所述源地址提取半精度浮点型张量中的待转换元素,将所述待转换元素转换为浮点型元素后存储在所述目的地址,所述执行模块根据所述转换次数重复执行上述步骤,且每次提取的待转换元素不重叠。
A 23、根据条款A 21所述的方法,所述对获取到的半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作域中的源地址和目的地址,还包括:
得到所述半精度浮点转浮点指令的操作域中的提取步长;
所述在所述源地址提取半精度浮点型张量,转换为浮点型张量后存储在所述目的地址,还包括:
根据所述元素数量和所述提取步长,在所述源地址提取半精度浮点型张量中的待转换元素,将所述待转换元素转换为浮点型元素后存储在所述目的地址。
A 24、根据条款A 21至A 23中任一项所述的方法,所述对获取到的半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作域中的源地址和目的地址,还包括:
得到所述半精度浮点转浮点指令的操作域中的存储步长;
所述在所述源地址提取半精度浮点型张量,转换为浮点型张量后存储在所述目的地址,还包括:
根据所述元素数量,在所述源地址提取半精度浮点型张量中的待转换元素,将所述待转换元素转换为浮点型元素后,根据所述存储步长存储在所述目的地址。
A 25、根据条款A 20所述的方法,所述方法应用于半精度浮点转浮点指令处理装置,所述半精度浮点转浮点指令处理装置包括控制模块和执行模块,所述执行模块包括多个执行子模块,所述方法还包括:
控制模块根据所述源地址和所述目的地址确定多个源子地址和多个所述目的子地址,并将各所述源子地址和各所述目的子地址分配至执行子模块;
目标执行子模块在对应的所述源子地址提取半精度浮点型张量,转换为浮点型张量后存储在对应的所述目的子地址,所述目标执行子模块为任意执行子模块。
A 26、根据条款A 20所述的方法,所述方法应用于半精度浮点转浮点指令处理装置,所述半精度浮点转浮点指令处理装置包括控制模块和执行模块,所述执行模块包括主执行子模块和多个从执行子模块,所述方法还包括:
由主执行子模块根据所述源地址和所述目的地址确定多个源子地址和多个所述目的子地址,并将各所述源子地址和各所述目的子地址分配至从执行子模块;
目标从执行子模块在对应的所述源子地址提取半精度浮点型张量,转换为浮点型张量后存储在对应的所述目的子地址,所述目标执行子模块为任一所述从执行子模块。
A 27、根据条款A 20至A 26中任一项所述的方法,所述方法还包括:
存储所述半精度浮点型张量和/或所述浮点型张量。
A 28、根据权利要求A 21所述的方法,所述元素数量为所述张量的任一维度上的元素数量。
A 29、根据条款A 22所述的方法,
所述元素数量和所述转换次数的乘积等于所述张量中的元素总数量。
A 30、根据条款A 24所述的方法,所述提取步长和所述存储步长的比特数为所述张量中任一维度的比特数的倍数。
A 31、根据条款A 24所述的方法,所述存储步长的比特数大于需要存储的所述浮点型元素的比特数。
A 32、根据条款A 30所述的方法,所述对获取到的半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作域中的源地址和目的地址,包括:
存储指令,包括所述半精度浮点转浮点指令;
对所述半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作码和操作域;
存储指令队列,所述指令队列包括按照执行顺序依次排列的多个指令,包括半精度浮点转浮点指令。
A 33、根据条款A 30所述的方法,所述对获取到的半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作域中的源地址和目的地址,还包括:
在确定所述多个指令中的半精度浮点转浮点指令与所述半精度浮点转浮点指令之前的第零指令存在关联关系时,将所述半精度浮点转浮点指令缓存在所述指令存储子模块中,在所述第零指令执行完毕后,从所述指令存储子模块中提取所述半精度浮点转浮点指令发送至所述执行模块,
其中,所述半精度浮点转浮点指令与所述半精度浮点转浮点指令之前的第零指令存在关联关系包括:
存储所述半精度浮点转浮点指令所需数据的第一存储地址区间与存储所述第零指令所需数据的第零存储地址区间具有重叠的区域。
以上已经描述了本申请的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (10)
1.一种半精度浮点转浮点指令处理装置,其特征在于,所述装置包括:
控制模块,用于对获取到的半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作域中的源地址和目的地址;
执行模块,用于在所述源地址提取半精度浮点型张量,转换为浮点型张量后存储在所述目的地址。
2.根据权利要求1所述的装置,其特征在于,
所述控制模块,还用于得到所述半精度浮点转浮点指令的操作域中的元素数量;
所述执行模块,还用于根据所述元素数量在所述源地址提取半精度浮点型张量中的待转换元素,将所述待转换元素转换为浮点型元素后存储在所述目的地址。
3.根据权利要求2所述的装置,其特征在于,
所述控制模块,还用于得到所述半精度浮点转浮点指令的操作域中的转换次数;
所述执行模块,还用于根据所述元素数量在所述源地址提取半精度浮点型张量中的待转换元素,将所述待转换元素转换为浮点型元素后存储在所述目的地址,所述执行模块根据所述转换次数重复执行上述步骤,且每次提取的待转换元素不重叠。
4.一种机器学习运算装置,其特征在于,所述装置包括:
一个或多个如权利要求1-3任一项所述的半精度浮点转浮点指令处理装置,用于从其他处理装置中获取待运算数据和控制信息,并执行指定的机器学习运算,将执行结果通过I/O接口传递给其他处理装置;
当所述机器学习运算装置包含多个所述半精度浮点转浮点指令处理装置时,所述多个所述半精度浮点转浮点指令处理装置间可以通过特定的结构进行连接并传输数据;
其中,多个所述半精度浮点转浮点指令处理装置通过快速外部设备互连总线PCIE总线进行互联并传输数据,以支持更大规模的机器学习的运算;多个所述半精度浮点转浮点指令处理装置共享同一控制系统或拥有各自的控制系统;多个所述半精度浮点转浮点指令处理装置共享内存或者拥有各自的内存;多个所述半精度浮点转浮点指令处理装置的互联方式是任意互联拓扑。
5.一种组合处理装置,其特征在于,所述组合处理装置包括:
如权利要求4所述的机器学习运算装置、通用互联接口和其他处理装置;
所述机器学习运算装置与所述其他处理装置进行交互,共同完成用户指定的操作,
其中,所述组合处理装置还包括:存储装置,该存储装置分别与所述机器学习运算装置和所述其他处理装置连接,用于保存所述机器学习运算装置和所述其他处理装置的数据。
6.一种机器学习芯片,其特征在于,所述机器学习芯片包括:
如权利要求4所述的机器学习运算装置或如权利要求5所述的组合处理装置。
7.一种电子设备,其特征在于,所述电子设备包括:
如权利要求6所述的机器学习芯片。
8.一种板卡,其特征在于,所述板卡包括:存储器件、接口装置和控制器件以及如权利要求6所述的机器学习芯片;
其中,所述机器学习芯片与所述存储器件、所述控制器件以及所述接口装置分别连接;
所述存储器件,用于存储数据;
所述接口装置,用于实现所述机器学习芯片与外部设备之间的数据传输;
所述控制器件,用于对所述机器学习芯片的状态进行监控。
9.一种半精度浮点转浮点指令处理处理方法,其特征在于,所述方法应用于半精度浮点转浮点指令处理装置,所述方法包括:
对获取到的半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作域中的源地址和目的地址;
在所述源地址提取半精度浮点型张量,转换为浮点型张量后存储在所述目的地址。
10.根据权利要求9所述的方法,其特征在于,所述对获取到的半精度浮点转浮点指令进行解析,得到所述半精度浮点转浮点指令的操作域中的源地址和目的地址,还包括:
得到所述半精度浮点转浮点指令的操作域中的元素数量;
所述在所述源地址提取半精度浮点型张量,转换为浮点型张量后存储在所述目的地址,还包括:
根据所述元素数量在所述源地址提取半精度浮点型张量中的待转换元素,将所述待转换元素转换为浮点型元素后存储在所述目的地址。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910742230.8A CN112394986A (zh) | 2019-08-13 | 2019-08-13 | 半精度浮点转浮点指令处理装置、方法及相关产品 |
PCT/CN2020/088248 WO2020233387A1 (zh) | 2019-05-17 | 2020-04-30 | 指令处理方法、装置及相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910742230.8A CN112394986A (zh) | 2019-08-13 | 2019-08-13 | 半精度浮点转浮点指令处理装置、方法及相关产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112394986A true CN112394986A (zh) | 2021-02-23 |
Family
ID=74602429
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910742230.8A Withdrawn CN112394986A (zh) | 2019-05-17 | 2019-08-13 | 半精度浮点转浮点指令处理装置、方法及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112394986A (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108804137A (zh) * | 2017-05-03 | 2018-11-13 | 英特尔公司 | 用于双目的地类型转换、累加和原子存储器操作的指令 |
CN110096283A (zh) * | 2018-10-12 | 2019-08-06 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
-
2019
- 2019-08-13 CN CN201910742230.8A patent/CN112394986A/zh not_active Withdrawn
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108804137A (zh) * | 2017-05-03 | 2018-11-13 | 英特尔公司 | 用于双目的地类型转换、累加和原子存储器操作的指令 |
CN110096283A (zh) * | 2018-10-12 | 2019-08-06 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110119807B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111079909B (zh) | 运算方法、系统及相关产品 | |
CN111949317B (zh) | 指令处理方法、装置及相关产品 | |
CN112394986A (zh) | 半精度浮点转浮点指令处理装置、方法及相关产品 | |
CN112394990A (zh) | 浮点转半精度浮点指令处理装置、方法及相关产品 | |
CN112394993A (zh) | 半精度浮点转短整形指令处理装置、方法及相关产品 | |
CN112394903A (zh) | 短整形转半精度浮点指令处理装置、方法及相关产品 | |
CN112394902A (zh) | 半精度浮点转浮点指令处理装置、方法及相关产品 | |
CN111047030A (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111949318A (zh) | 指令处理方法、装置及相关产品 | |
CN112394989A (zh) | 无符号转半精度浮点指令处理装置、方法及相关产品 | |
CN112394987A (zh) | 短整形转半精度浮点指令处理装置、方法及相关产品 | |
CN112394991A (zh) | 浮点转半精度浮点指令处理装置、方法及相关产品 | |
CN112394995A (zh) | 半精度浮点转短整形指令处理装置、方法及相关产品 | |
CN111353595A (zh) | 运算方法、装置及相关产品 | |
CN112394988A (zh) | 无符号转半精度浮点指令处理装置、方法及相关产品 | |
CN112394996A (zh) | 八位整形转半精度浮点指令处理装置、方法及相关产品 | |
CN112394992A (zh) | 半精度浮点转八位整形指令处理装置、方法及相关产品 | |
CN112394997A (zh) | 八位整形转半精度浮点指令处理装置、方法及相关产品 | |
CN112394994A (zh) | 半精度浮点转八位整形指令处理装置、方法及相关产品 | |
CN111078125B (zh) | 运算方法、装置及相关产品 | |
CN111338694B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111079914B (zh) | 运算方法、系统及相关产品 | |
CN111079915B (zh) | 运算方法、装置及相关产品 | |
CN111078285B (zh) | 运算方法、系统及相关产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20210223 |