基于掩码的稀疏矩阵压缩的方法、系统以及程序产品与流程

文档序号:16990299发布日期:2019-03-02 00:54阅读:368来源:国知局
基于掩码的稀疏矩阵压缩的方法、系统以及程序产品与流程

不适用

政府资助研究与开发

不适用

序列表、表格或计算机列表附录引用

不适用

版权声明

本专利文件的公开内容的一部分包含受其作者的版权保护的材料。一旦专利文件或专利公开内容出现在专利商标局、专利文件或记录中,除其他所有保留版权的情况外,版权所有者不反对任何人以引用为目的将其作为现有技术进行传真复制。



背景技术:

本发明的一个或多个实施例一般涉及数据压缩。更具体地来说,本发明的某些实施例涉及基于掩码的压缩方案。

以下背景信息可以呈现先前技术的特定方面的示例(例如,但不限于,方法、事实或常识),尽管预期有助于进一步教育读者关于先前的其他方面。本领域技术人员不应将本发明或其任何实施例限制于其中陈述或暗示或推断的任何内容。

典型的神经网络可以使用输入数据和权重来对对象进行分类,权重和特征映像通常可能很大。在数值分析中,稀疏矩阵是大多数元素为零的矩阵。相反地,如果大多数元素不等于零,那幺矩阵被认为是密集的。零数值元素的数量除以元素的总数称为矩阵的稀疏度。当在计算器上存储和操作稀疏矩阵时,利用矩阵的稀疏结构的专用算法和数据结构可能是有益的并且通常是必要的。当应用于大型稀疏矩阵时,使用标准密集矩阵结构和算法的操作被认为是缓慢且低效的,因为处理器和存储器被浪费在零上。稀疏数据本质上更容易压缩,因此需要的存储量会显着地减少。

以下是先前技术中的特定方面的示例,尽管预期有助于进一步教育读者关于先前技术的其他方面,但是不应将其中陈述或暗示或推断的任何事情作为限制本发明或本发明任何实施例的限制。压缩稀疏行(csr)或压缩行存储(crs)格式表示三个(一维)数组的矩阵,它们分别包含非零数值、行的范围和列的索引。压缩稀疏列(csc)与压缩稀疏行类似,其中它们的不同之处在于,首先按列读取数值,为每个数值存储行的索引,并且存储列的指针。一般而言这些技术不是非常有效,需要对矩阵矢量的积或预处理器求解中的每个单一标量运算进行间接寻址步骤。

鉴于前述内容,显然这些先前技术有些缺点,并且为更优化的方法留出了许多可供改善的空间。

附图说明

附图说明通过示例而非限制的方式在附图中举例说明了本发明,并且其中相同的附图标记表示类似的组件,并且其中:

图1a、1b和1c举例说明一个压缩稀疏矩阵格式的实施例。

图2a、2b和2c举例说明一个根据本发明实施例的压缩格式。

图3举例说明一个根据本发明实施例的用于压缩的方法。

图4a、4b和4c举例说明一个根据本发明实施例的压缩格式。

图5a和5b举例说明一个根据本发明实施例的两个级别的金字塔掩码压缩格式。

图6举例说明一个根据本发明实施例的两个级别的金字塔掩码压缩格式。

图7a-7d举例说明一个根据本发明实施例的卷积运算。

图8举例说明一个根据本发明实施例的混合两个级别的金字塔掩码压缩格式。

图9举例说明一个根据本发明实施例的程序结构。

图10举例说明一个根据本发明实施例的处理器结构。

图11举例说明一个标准乘法过程。

图12举例说明一个根据本发明实施例的乘法过程。

图13举例说明一个根据本发明实施例的神经网络。

图14举例说明一个乘法过程。

图15举例说明一个根据本发明实施例的乘法过程。

图16-18举例说明一个根据本发明实施例的架构。

图19举例说明一个根据本发明实施例的用于压缩的方法。

图20举例说明一个根据本发明实施例的用于压缩的方法。

图21举例说明一个根据本发明实施例的用于压缩的方法。

除非另有说明,本附图并未按比例绘制。

具体实施方式

通过参考本发明阐述的详细附图和描述可以最好地理解本发明。

下面请参考附图讨论本发明的实施例。然而,本领域技术人员将容易理解,本发明关于这些附图给出的详细描述是出于解释的目的,因为本发明的涵盖范围可以超越这些有限的实施例。举例来说,本领域技术人员应当理解根据本发明的教导,本领域技术人员可以根据特定应用的需要来确认多种替代和合适的方法,以实现本发明描述的任何给定细节的功能,其中本发明描述的任何给定细节的可以超出所描述和示出的以下实施例中的特定实现选择。也就是说,本发明的不同变形模式和变化太多而无法全数列出,但这些都属于本发明的范围。此外,在适当的情况下,单数词应该被理解为复数,反之亦然;而阳性应该被理解为阴性,反之亦然,并且替代实施例不一定意味着两者是相互排斥的。

应进一步理解,本发明不限于本发明所述的特定方法,化合物,材料,制造技术,用途和应用,因为这些可以变化。还应理解,本发明使用的术语仅用于描述特定实施方案的目的,并不意图限制本发明的范围。必须注意的是,如本发明和权利要求中所使用的,单数形式“一”,“一个”和“该”包括复数参考,除非上下文另有明确说明。因此,例如,对“一个元素”的引用是对一个或多个元素的引用,并且包括本领域技术人员已知的其等同物。类似地,对于另一个例子,对“一个步骤”或“一个装置”的引用是对一个或多个步骤或装置的引用,并且可以包括子步骤和从属装置。所有使用的连词都应以最具包容性的意义理解。因此,除非上下文另有明确规定,否则词语“或”应理解为具有逻辑“或”的定义而不是逻辑“排他或”的定义。本发明描述的结构也应理解为指代此类结构的功能等同物。除非上下文另有明确规定,否则应该理解可以用来表达近似的语言。

本发明说明书和权利要求中使用的所有近似的文字应该被解释为表示“近似的”而不是“完美的”,并且因此可以用作任何其他文字、特定参数、数量、质量或概念的有意义的修饰词,其中该些近似的文字包括但不限于诸如“实质性地”、“差不多”、“几乎”、“大约”、“一般地”、“大部分地”、“本质上地”、“非常地近似”等术语,等等。

如下面将详细描述的那样,早在1939年,即使在说明书中没有定义或指定这样的限制时,近似词在权利要求中也不是不确定的。

因此,至少出于前述原因,申请人认为,任何审查员如果认为使用任何近似词语的本专利的任何权利要求都是不确定的,这是不适当的。

除非另外定义,否则本发明使用的所有技术和科学术语具有与本发明所属领域的一般技术人员通常理解的含义相同的含义。虽然本发明描述了优选的方法、技术、装置和材料,但是与本发明描述的那些类似或等同的任何方法,技术,装置或材料都可以用于本发明的实践或测试。本发明描述的结构还应理解为指代这种结构的功能等同物。下面将参考附图中所示的实施例来详细描述本发明的具体实施方式。

在权利要求的前序部分中对“设备”、“装置”、“系统”等的引用应当被广义地解释为表示“满足权利要求条款的任何结构”免除任何特定结构/已经明确否认或排除或承认/暗示为本说明书中的先前技术或不能实现本发明的目的/方面/目标的类型/类型。此外,在本说明书公开了本发明的目的、方面、功能、目标、结果或优点的情况下,特定的先前技术结构和/或方法步骤类似地能够以非常不同的方式执行,本发明的公开内容旨在将隐含地包括和覆盖除了它们排除这种现有技术结构/步骤之外的其他相应的替代实施例,除非它们排除这种先前技术结构/步骤,否则应被视为提供足够的公开以支持在要求保护这种替代实施例的权利要求中的相应的否定限制,其排除了这种非常不同的先前技术结构/步骤的方式。

通过阅读本发明说明书,其他变化和修改对于本领域技术人员而言将是显而易见的。这些变化和修改可能涉及等同和本领域中已知的其他特征,并且可以代替或补充本发明已经描述的特征。

尽管在本发明说明书中将权利要求公式化为特征的特定组合,但应理解,本发明的公开内容的范围另包括本发明公开的任何新颖特征或任何新颖特征的组合,无论是明示还是暗示或任何其概括,无论它是否与任何权利要求中目前要求保护的相同发明有关,以及无论它是否减轻了与本发明相同的任何或所有相同的技术问题。

在单独的实施方案的上下文中描述的特征也可以在单个实施方案中组合提供。相反地,为简洁起见,在单个实施例的上下文中描述的各种特征也可以单独提供或以任何合适的子组合提供。申请人在此通知,在本申请或由此衍生的任何其他申请的审查期间,可以对这些特征和/或这些特征的组合制定新的权利要求。

对“一个实施例”、“实施例”、“示例实施例”、“各种实施例”、“一些实施例”、“本发明的实施例”等的引用可以指示实施例的一个或多个如此描述的本发明可以包括特定的特征,结构或特征,但是并非本发明的每个可能的实施例都必须包括特定的特征,结构或特性。此外,关于重复使用短语“在一个实施例中”或“在示例性实施例中”、“实施例”,尽管它们可以指代相同的实施例,但不一定是指代相同的实施例。此外,与“本发明”相关的诸如“实施例”之类的短语的任何使用从不意味着表征本发明的所有实施例必须包括特定特征、结构或特性,而应该被理解为“至少一些”本发明的实施例“包括该特定特征、结构或特征。

如本发明所使用的对“用户”或任何类似术语的引用可以指其人类或非人类用户。此外,除非另有明确规定,否则本发明所使用的“用户”或任何类似术语被认为是指在使用过程的任何阶段的用户,包括但不限于直接用户、中间用户、间接用户和终端用户。本文所使用的“用户”或任何类似术语的含义不应由可能(或可能不)提供的任何描述,实施例,示例或参考现有技术的模式来推断或诱发。

如本发明所使用的对“终端用户”或任何类似术语的引用通常旨在表示与早期用户相对的晚期用户。因此,预期在使用过程的最后阶段附近可能存在多种不同类型的“终端用户”。在适用的情况下,特别是关于包括消费零售产品/服务的本发明实施例的分销渠道(与卖方/供货商或原始设备制造商相对),“终端用户”的示例可包括但不限于“消费者”、“买方”、“顾客”、“购买者”、“购物者”、“享受者”、“观众”、或直接或间接以任何方式从使用中受益的个人或非人类物品,或者与本发明的某些方面的相互作用。

在一些情况下,本发明的一些实施例可以为前述使用过程中的多于一个阶段或类型的使用提供有益的用途。在描述针对使用过程的各个阶段的多个实施例的这种情况下,在前述用法中从其中的终端用户开始,对“终端用户”或其中使用的任何类似术语的引用通常旨在不包括从本发明的一个实施例的终端用户中最远移除的用户。

在适用的情况下,尤其是关于本发明实施例的零售分销渠道,中间用户可以包括但不限于任何个人或非人类物品,以任何方式直接或间接地从使用中受益,关于其销售、自动售货、原始设备制造、营销、销售、分发、服务提供等,本发明的某些方面或与之相互作用。

如本发明所使用的,对“人”、“个人”、“人”、“一方”、“动物”、“生物”或任何类似术语的引用,即使上下文或特定实施例暗示活着的用户,制造者或参与者,应该理解的是,这样的特征仅仅是作为示例而非限制,因为预期生物实体与制作,使用和/或相关的任何此类使用,制造或参与。或者以任何方式参与本发明的实施例可以由适当配置的非生物实体执行的类似替代,包括但不限于自动机器、机器人、人形机器人、计算系统、信息处理系统、人工地智能系统等。进一步预期本领域技术人员将容易认识到这种情况的实际情况中,具有本发明实施例的生物、用户和/或参与者可以在整体或部分地用这些非生物的制造者、用户和/或参与者代替本发明的实施例。同样地,当本领域技术人员识别出这样的实际情况,其中具有本发明实施例的这样的生物者、用户和/或参与者可以全部或部分地被这样的非生物者替换,它将是容易的根据本发明的教导,如何使所描述的实施例适合于具有本发明实施例的这种非生物制造者、用户和/或参与者。因此,本发明也至少部分地涵盖落入这些改编和修改的精神和范围内的所有这些修改,等同物和替代物,用于这样的非生物实体。

本发明提供的标题是为了方便,不应以任何方式限制本公开。

除非另有明确说明,否则所列举的项目列表并不暗示任何或所有项目是互斥的。

应理解,特定组件、装置和/或参数名称的使用仅是示例性的,并不意味着暗示对本发明的任何限制。因此,本发明可以用不同的术语/术语来实现,这些术语/术语用于描述本发明中的机制/单元/结构/组件/设备/参数,但不限于此。鉴于使用该术语的上下文,本发明中使用的每个术语将给出其最宽泛的解释。

术语。以下段落提供了在本公开(包括所附权利要求)中找到的术语的定义和/或上下文:

“包含”。这个词是开放式的。如所附权利要求中所使用的,该术语不排除其他结构或步骤。考虑一个声明:“包括系统高速缓存的存储器控制器......”这样的权利要求并未排除存储器控制器包括附加组件(例如,存储器信道单元、开关)。

“配置为”。各种单元、电路或其他组件可以被描述或声明为“被配置为”执行一个或多个任务。在这种情况下,“配置为”或“可操作”用于通过指示机制/单元/电路/组件来表示结构,其中包括在操作期间执行任务的结构(例如,电路和/或机制)。如此一来,即使当指定的机构/单元/电路/组件当前不可操作时(例如,不是),也可以说机构/单元/电路/组件被配置为(或可操作)用于执行任务上。与“配置为”或“可操作”语言一起使用的机制/单元/电路/组件包括硬件-例如,机制、结构、电子设备、电路、存储可执行以实现操作的程序设备的存储器等。对于该机制/单元/电路/组件,机制/单元/电路/组件被“配置为”或“可操作地”执行(一个或多个)任务明确地不会引发35u.s.c..sctn.112的第六段。“配置为”还可以包括调整制造过程以制造适于实现或执行一个或多个任务的设备或组件。

“基于”。如本发明所用,该术语用于描述影响确定的一个或多个因素。该术语不排除可能影响确定的其他因素。也就是说,确定可以仅基于那些因素或至少部分地基于那些因素。关于短语“基于b判断a”。虽然b可能是影响a的判断的因素,但是这样的短语不排除a的判断也基于c,在其他情况下,a可以仅基于b来判断。

除非另有明确说明,否则术语“一”、“一个”和“该”意味着“一个或多个”。

除非另有说明,否则在说明书和权利要求中使用的表示条件、浓度、尺寸等的所有数字应理解为在所有情况下均由术语“约”修饰。因此,除非有相反的指示,否则在以下说明书和所附权利要求书中列出的数数值参数是近似数值,其可以至少取决于具体的分析技术而变化。

与“包括”、“含有”或“特征在于”同义的术语“包含”是包含性的或开放式的,并且不排除另外的,未列举的元素或方法步骤。“包含”是在权利要求语言中使用的术语,这意味着所指定的权利要求元素是必要的,但是可以添加其他权利要求元素并且仍然形成权利要求范围内的结构。

如本文所用,“由...组成”的阶段不包括权利要求中未指定的任何要素,步骤或成分。当短语“由...组成”(或其变体)出现在权利要求主体的条款中时,而不是立即在序言之后,它仅限制该条款中规定的要素;其他要素作为整体不排除在权利要求之外。如本文所用,“基本上由...组成”和“由...组成”的阶段将权利要求的范围限制于指定的要素或方法步骤,加上不会实质上影响基础和新颖特征的那些要求保护的主题(参见noriancorp.诉strykercorp.,363f.3d1321,1331-32,70uspq2d1508,fed.cir.2004)。此外,对于本发明的任何权利要求,其要求保护实施例“基本上由...组成”或“由...组成”某组元素在本文所述的任何实施方案中,本领域技术人员应该显而易见地理解,本发明还涵盖任何所述实施例的所有可能的变化范围变体,其各自排他地(即,“基本上由......组成”)功能子集或其功能组合,使得这些独特变化范围变体中的每一个各自基本上包括任何所述实施方案的任何组件组的任何功能子集和/或功能组合的任何一个或多个功能组合,以排除未在其中阐述的任何其他组件。也就是说,预期本领域技术人员将显而易见地明白如何创建本发明的多个替代实施例,其基本上仅由任何所述实施例的组件的某些功能组合组成,而不排除任何其他实施例。因此,本发明并未在其中阐述,因此本发明涵盖了所有这些专有实施例,如同它们在本文中的描述。

关于术语“包含”、“由......组成”和“基本上由......组成”,其中本发明使用这三个术语之一,本发明公开和要求保护的主题可包括使用另两个中的任一个。因此,在未另外明确叙述的一些实施例中,“包括”的任何实例可以由“由...组成”或者“基本上由...组成”代替,因此,对于为了“由...组成”格式的权利要求的支持以及结构,这样的替换操作以产生其他替代实施例,“基本上由...组成”仅包括在原始“包括”实施例中所述的组件,以排除所有其他组件。

除非另有明确说明,否则彼此至少一般通信的设备或系统模块不需要彼此连续通信。此外,至少彼此通用通信的设备或系统模块可以直接或间接地通过一个或多个中间者通信。

具有彼此通信的若干组件的实施例的描述并不意味着所有这些组件都是必需的,相反地,本发明描述了各种可选组件以说明本发明的各种可能的实施例。

如本领域技术人员所熟知的,在设计任何系统,特别是本发明的实施例的商业实现的最佳制造时,通常必须进行许多仔细的考虑和妥协。根据本发明的精神和教导的商业实现可以根据特定应用的需要来配置,其中相关教导的任何方面、特征、功能、结果、组件、方法或步骤,本领域技术人员可以使用他们的平均技能和已知技术适当地省略、包括、改编、混合和匹配、或者改进和/或优化本发明的所述实施例,以实现满足所需实现特定的应用程序。

“计算器”可以指代一个或多个装置和/或一个或多个系统,其能够接受结构化输入,根据规定的传动处理结构化输入,并产生处理结果作为输出。计算器的示例可包括:计算器;固定和/或便携式计算器;具有单个处理器,多个处理器或多核处理器的计算器,其可以并行和/或不并行操作;通用计算器;一台超级计算器;大型机;一台超级迷你计算机;一台迷你计算机;工作站;一台微电脑;服务器;一个客户;互动电视;网络设备;具有互联网接入的电信设备;计算器和互动电视的混合组合;便携式计算器;平板计算机(pc);个人数字助理(pda);便携式电话;用于模拟计算器和/或软件的专用硬件,例如数字信号处理器(dsp),现场可编程门数组(fpga),专用集成电路(asic),专用指令-集处理器(asip),芯片,芯片,片上系统或芯片组;数据采集设备;光学计算器;量子计算器;生物计算器;通常,可以接受数据,根据一个或多个存储的软件程序处理数据,生成结果,并且通常包括输入,输出,存储,算术,逻辑和控制单元的装置。

本领域技术人员将理解,在适当的情况下,本公开的一些实施例可以在具有许多类型的计算器系统配置的网络计算环境中实践,包括个人计算器、手持设备、多处理器系统、基于微处理器或可编程的消费电子产品、网络pcs、小型计算器、大型计算器等。在适当的情况下,实施例还可以在分布式计算环境中实践,其中任务由通过通信网络链接(通过硬联机链路,无线链路或其组合)的本地和远程处理设备来执行。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。

“软件”可以指用于操作计算器的规定规则。软件的示例可以包括:一种或多种计算器可读语言中的代码段;图形和/或文本指示;小程序;预编码;解释代码;编译代码;和计算器程序。

本发明描述的示例实施例可以在包括安装在计算器上的计算器可执行的指令(例如,软件),硬件或软件和硬件的组合的操作环境中实现。计算器可执行的指令可以用计算器编程语言编写,或者可以用固件逻辑实现。如果用符合公认标准的编程语言编写,则可以在各种硬件平台上执行这种指令,并且可以在各种操作系统的接口上执行。虽然不限于此,但是用于执行本发明各方面的操作的计算器软件程序代码可以用一种或多种合适的编程语言的任何组合来编写,包括面向对象的编程语言和/或传统的过程编程语言,和/或编程语言,例如超文本标记语言(html)、动态html、可扩展标记语言(xml)、可扩展样式表单语言(xsl)、文文件样式语义和规范语言(dsssl)、层迭样式表单(css)、同步多媒体集成语言(smil)、无线标记语言(wml)、java.tm.、jini.tm.、c、c++、smalltalk、perl、unixshell、visualbasic或visualbasic脚本、虚拟现实标记语言(vrml)、coldfusion、tm或其他编译程序、汇编程序、口译员或其他计算器语言或平台。

用于执行本发明的各方面的操作的计算器程序代码可以用一种或多种编程语言的任何组合来编写,包括诸如java、smalltalk、c++等的面向对象的编程语言和传统的流程编程语言,例如“c”编程语言或类似的编程语言。程序代码可以完全在用户的计算器上执行,部分在用户的计算器上执行,作为独立的软件包,部分在用户的计算器上执行,部分在远程执行计算器或完全在远程计算器或服务器上。在后一种情况下,远程计算器可以通过任何类型的网络连接到用户的计算器,包括局域网(lan)或广域网(wan),或者可以连接到外部计算器(用于例如,通过互联网使用互联网服务提供商)。

网络是链路和节点(例如,连接在一起的多个计算器和/或其他设备)的集合,其被布置成使得信息可以从一个部分传递,通过多个链路和各种节点连接到另一个网络。网络的示例包括因特网,公共交换电话网络,全球电传网络,计算器网络(例如,内部网络,外联网,局域网或广域网),有线网络和无线网络。

因特网是计算器和计算器网络的全球网络,其被布置成允许计算器用户之间的信息的简单且稳健的交换。全世界有数亿人可以通过互联网服务提供商(isps)访问连接到互联网的计算器。内容提供商(例如,网站所有者或运营商)放置多媒体互联网上特定位置的信息(例如,文本、图形、音频、视频、动画和其他形式的数据)称为网页。网站包括一组连接的或相关的网页。互联网上所有网站及其相应网页的组合通常称为万维网(www)或简称为网络。

下面请参考根据本发明实施例的方法,装置(系统)和计算器程序产品的流程图和/或框图来描述本发明的各方面。应当理解,流程图图示和/或框图的每个框以及流程图图示和/或框图中的框的组合可以由计算器程序指令实现。这些计算机程序指令可以被提供给通用计算机,专用计算机或其他可编程数据处理装置的处理器以产生机器,使得指令通过计算机的处理器或其他可编程数据处理装置执行,并且创建用于实现流程图和/或框图块中指定的功能/动作的装置。

附图中的流程图和框图显示了根据各种实施例的系统,方法和计算机程序产品的可能实现的架构,功能和操作。在这方面,流程图或框图中的每个框可以表示代码的模块,片段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。还应注意,在一些替代实施方式中,框中提到的功能可以不按图中所示的顺序发生。例如,连续示出的两个方框实际上可以基本上同时执行,或者这些方框有时可以以相反的顺序执行,这取决于所涉及的功能。还应注意,框图和/或流程图图示中的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作的基于专用硬件的系统来实现,或专用硬件和计算机指令的组合。

这些计算器程序设备还可以存储在计算器可读媒体中,该计算器可读媒体可以指示计算器,其他可编程数据处理设备或其他设备以特定方式运行,使得存储在计算器可读媒体中的指令产生包括实现流程图和/或框图块中指定的功能/动作的指令的制品。

此外,尽管可以按顺序描述处理步骤,方法步骤,算法等,但是这样的处理,方法和算法可以被配置为以交替顺序工作。换句话说,可以描述的任何顺序或步骤顺序不一定表示要求以该顺序执行步骤,并且这里描述的过程的步骤可以用任何实际的顺序执行。此外,有一些步骤可以同时被执行。

显而易见的是,本发明描述的各种方法和算法可以通过例如适当编程的通用计算器和计算设备来实现。一般而言,处理器(例如,微处理器)将从存储器或类似设备接收指令,并执行那些指令,从而执行由那些指令定义的处理。此外,可以使用各种已知媒体来存储和发送实现这些方法和算法的程序。

当在此描述单个设备或物品时,显而易见的是,可以使用一个以上的设备/物品(无论它们是否一起协作)来代替单个设备/物品。类似地,在本发明中描述了不止一个设备或物品(无论它们是否一起协作)的情况下,显而易见的是,可以使用单个设备/物品来代替一个以上的设备或物品。

设备的功能和/或特征可替代地由一个或多个其他设备实现,这些设备未明确地描述为具有这样的功能/特征。因此,本发明的其他实施例不需要包括设备本身。

这里使用的术语“计算器可读媒体”是指参与提供可以由计算器,处理器或类似设备读取的数据(例如,指令)的任何媒体。这种媒体可以采用许多形式,包括但不限于非易失性媒体,易失性媒体和传输媒体。非易失性媒体包括例如光盘或磁盘和其他永久存储器。易失性媒体包括动态随机存取存储器(dram),其通常构成主存储器。传输媒体包括同轴电缆,铜线和光纤,包括耦合到处理器的系统总线的导线。传输媒体可以包括或传送声波,光波和电磁发射,例如在射频(rf)和红外线(ir)数据通信期间产生的那些传输媒体。计算器可读媒体的常见形式包括,例如,软盘、软盘、硬盘、磁带、任何其他磁性媒体、cd-rom、dvd、任何其他光学媒体、穿孔卡、纸带、任何具有孔图案的其他物理媒体、ram、prom、eprom、flash-eeprom、可移动媒体、闪存、“记忆棒”、任何其他存储芯片或盒、下文所述的载波、或任何计算器可以读取的其他媒介。

各种形式的计算器可读媒体可以涉及将进程列传送到处理器。例如,指令序列(i)可以从ram传送到处理器,(ii)可以通过无线传输媒体传送,和/或(iii)可以根据许多格式、标准或协议来格式化,例如蓝牙、tdma、cdma、3g等。

在描述数据库的情况下,本领域的一般技术人员将可以理解,(i)可以容易地采用对所描述的那些的替代数据库结构,(ii)可以容易地采用除数据库之外的其他存储器结构。本发明呈现的任何样本数据库的任何示意图和随附描述是用于存储的信息表示的示例性布置。除了所示表格所建议的那些之外,还可以采用任何数量的其他布置。类似地,数据库的任何所示条目仅表示示例性信息;本领域的一般技术人员将可以理解,条目的数量和内容可以与这里所示的不同。此外,尽管用表格来描述数据库,但是基于对象的模型也可以用于存储和操作本发明的数据类型,同样地,对象方法或行为也可以用于实现本发明的过程。

“计算器系统”可以指具有一个或多个计算器的系统,其中每个计算器可以包括体现用于操作计算器或其一个或多个组件的软件的计算器可读媒体。计算器系统的示例可以包括:分布式计算器系统,用于通过网络链接的计算器系统处理信息;两个或多个计算器系统通过网络连接在一起,用于在计算器系统之间发送和/或接收信息;计算器系统,包括一台计算器内的两个或多个处理器;可以接受数据的一个或多个装置和/或一个或多个系统可以根据一个或多个存储的软件程序处理数据,可以生成结果,并且通常可以包括输入、输出、存储、算术、逻辑和控制单位。

“网络”可以指可以通过通信设施连接的多个计算器和相关设备。网络可以涉及永久连接,例如电缆或临时连接,例如通过电话或其他通信链路进行的连接。网络还可以包括硬线连接(例如,同轴电缆、双绞线、光纤、波导等)和/或无线连接(例如,射频波形、自由空间光波形、声波形等)。网络的示例可以包括:互联网,例如因特网;内部网络;局域网(lan);广域网(wan);以及网络的组合,例如互联网和内部网络。

如这里所使用的,“客户端”应用程序应该被广泛地构造为指代应用程序,与该应用程序相关联的页面,或者由对应用程序的客户端请求调用的一些其他资源或功能。这里使用的“浏览器”并不旨在指代任何特定的浏览器(例如,internetexplorer、safari、firefox等),而是应该被广泛地构造为指代可以访问和显示可上网的资源的任何客户端呈现引擎。“富”客户端通常是指基于非http的客户端应用程序,例如ssh或cfis客户端。此外,虽然通常使用http进行客户端-服务器交互,但这也不是限制。客户端服务器交互可以被格式化以符合简单对象访问协议(soap)并通过http(通过公共因特网),ftp或任何其他可靠的传输机制(例如ibm.rtm.mqseries.rtm技术和corba,用于在企业内部网上传输)。通过将机制用作插件,通过链接到机制等,将钩子提供到另一个应用程序中,可以将本文描述的任何应用程序或功能实现为本机代码。

示例性网络可以与多种协议中的任何协议一起操作,例如因特网协议(ip)、异步传输模式(atm)和/或同步光网络(sonet)、用户数据报协议(udp)、ieee802.x等。

本发明的实施例可以包括用于执行本发明公开的操作的装置。装置可以为所需目的而专门构造,或者它可以包括由存储在装置中的程序选择性地激活或重新配置的通用装置。

本发明的实施例还可以在硬件、固件和软件中的一个或组合中实现。它们可以被实现为存储在机器可读媒体上的存储器,其可以由计算平台读取和执行以执行本发明描述的操作。

更具体地,如本领域技术人员将理解的,本发明的各方面可以体现为系统,方法或计算器程序产品。因此,本发明的各方面可以采取完全硬件实施例,完全软件实施例(包括固件,常驻软件,微代码等)的形式或者组合软件和硬件方面的实施例,这些实施例通常可以被称为这里,作为“电路”,“模块”或“系统”。此外,本发明的各方面可以采取体现在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读媒体具有包含在其上的计算机可读程序代码。

在以下描述和权利要求中,术语“计算器程序媒体”和“计算器可读媒体”可以用于通常指代媒体,例如但不限于可移动存储驱动器,安装在硬盘驱动中的硬盘。这些计算器程序产品可以向计算器系统提供软件。本发明的实施例可以涉及这样的计算器程序产品。

这里的算法通常被认为是导致期望结果的自相一致的动作或操作序列。这些包括物理量的物理操纵。一般而言,尽管不是必须的,这些量采用能够被存储、传输、组合、比较和以其他方式操纵的电信号或磁信号的形式。有时,主要出于通用的原因,已经证明将这些信号称为比特、值、元素、符号、字符、术语、数字等是方便的。然而,应该理解,所有这些和类似术语都与适当的物理量相关联,并且仅仅是应用于这些量的方便标签。

除非另有明确说明,并且从以下描述和权利要求中可以明显看出,应当理解,在整个说明书描述中,利用诸如“处理”、“用计算机计算”、“计算”、“确定”等术语,指的是计算器或计算系统或类似电子计算设备的动作和/或过程,其将计算系统的寄存器和/或存储器中的物理(例如电子)数量表示的数据操纵和/或转换成其他数据,其中可以类似地表示为计算系统的存储器、寄存器或其他此类信息存储,传输或显示设备内的物理量。

另外,短语“被配置为”或“可操作用于”可以包括由软件和/或固件(例如,fpga或执行软件的通用处理器)操纵的通用结构(例如,通用电路)。以能够执行有争议任务的方式运作。“配置为”还可以包括调整制造过程(例如,半导体制造设施)以制造适于实现或执行一个或多个任务的设备(例如,集成电路)。

以类似的方式,术语“处理器”可以指代从寄存器和/或存储器处理电子数据以将该电子数据转换成可以存储在寄存器和/或存储器中的其他电子数据。“计算平台”可以包括一个或多个处理器。

本公开范围内的实施例还可以包括用于携带或具有存储在其上的计算器可执行指令或数据结构的有形和/或非暂时性计算器可读存储媒体。这种非暂时性计算器可读存储媒体可以是可由通用或专用计算器访问的任何可用媒体,包括如上所述的任何专用处理器的功能设计。作为示例而非限制,这种非暂时性计算器可读媒体可以包括ram、rom、eeprom、cd-rom或其他光盘存储器,磁盘存储器或其他磁存储设备,或者可以是任何其他媒体用于以计算器可执行的指令,数据结构或处理器芯片设计的形式携带或存储所需程序代码的装置。当通过网络或另一通信连接(硬连线,无线或其组合)向计算机传送或提供信息时,计算机将该连接正确地视为计算机可读介质。因此,任何这种连接都适当地称为计算机可读介质,而上述的组合也应包括在计算机可读介质的范围内。

虽然非暂时性计算器可读媒体包括但不限于硬盘驱动器、光盘、闪存、易失性存储器、随机存取存储器、磁存储器、光存储器、基于半导体的存储器、相变存储器、光存储器、周期性刷新的存储器等;然而,非暂时性计算器可读媒体本身不包括纯瞬态信号,即媒体本身是暂时的。

本发明的许多实施例及其变型提供了一种简单的格式来保存稀疏矩阵并去除冗余计算操作。许多实施例可以使用比特掩码和位置来指示其为零的数值。许多实施例可以使用位掩码和位置来指示其为零的值。一些实施例可以使用该格式来指示不需要计算的位置,例如但不限于值a*0或值a+0。在一些实施例中,如果矩阵非常稀疏,则可以使用金字塔格式来进一步节省存储。一些实施例将掩模和值分开。在一些实施例中,可以加载掩码并执行操作以确定哪些数据对以下操作有用,而另一些实施例可以节省数据加载的带宽。

在许多实施例中,掩码位可用于表示零和非零数值,但不限于数组,矩阵或张量。“数组”、“矩阵”或“张量”的非零数值采用打包格式,并使用掩码指示零和非零位置。存储区域和/或计算操作减少。在一些实施例中,当上层比特掩码不等于零时,可以使用层级金字塔级别的比特掩码来进一步减少和打包非零掩码。一些实施例以不同的格式和表面分离掩码和数值。一些实施例将该概念应用于丢失架构。在一些实施例中,缓冲器/高速缓存或先入先出存储器中的至少一个包含打包格式。在一些实施例中,两个分离的表面可用于表示稀疏格式。一个可用于掩码表面,而另一个用于打包数值表面。在一些实施例中,三个分离的表面可用于表示稀疏格式。一个可用于掩码表面,而另一个用于区块长度表面,以及另一个用于填充数值表面。在一些实施例中,可以基于掩模的数值来跳过操作;而在另一些实施例中,可以基于两组掩码的操作来跳过操作。

图1a、1b和1c举例说明一个压缩稀疏矩阵格式的实施例,其中该压缩稀疏矩阵格式将矩阵行的后续非零元素放在连续的存储器位置中。假设一非对称稀疏矩阵a105,可以创建3个矢量,一个矢量用于浮点数(val)110,另外两个矢量用于整数col_ind115以及行row_ptr120。一个val矢量110存储数值矩阵a105的非零元素,也就是以一个行的方式横列着。一个col_ind矢量115存储该val矢量中的数值的列索引。也就是说,如果val(k)=ai,j,则col_ind(k)=j。一个row_ptr矢量120存储该val矢量中开始一行的位置,也就是说,如果val(k)=ai,j,则row_ptr(i)<=k<row_ptr(i+1)。公约定义row_ptr(n+1)=nnz+1,其中nnz是矩阵a中非零元素的个数,这种方法可以节省非常大的存储空间,因为只需要2nnz+n+1的存储位置,而不需要存储n2个元素。

图2a、2b和2c举例说明一个根据本发明实施例的压缩格式。在本实施例中,举例的矩阵a205可以是非对称的。val矢量210可以存储矩阵a205的非零元素的数值,因为它们以行的方式横列着。在其他实施例中,val矢量210可以存储矩阵a205的非零元素的数值,因为它们以列的方式横列着。矩阵a205的掩码225存储比特掩码的位置可以指示矩阵a205中的数值是否等于零。在本实施例中,如果矩阵a205中的对应数值不等于零,则掩码225的对应位置中的比特可以被指派为1,如果矩阵a205中的对应数值等于零,则掩码225的对应位置中的比特可以被指派为0。在其他实施例中,掩码225中的比特的数值也可以相反过来设定不受限制,如果矩阵a205中的对应数值不等于零,则掩码225的对应位置中的比特可以被指派为0,如果矩阵a205中的对应数值等于零,则掩码225的对应位置中的比特可以被指派为1。

图3举例说明一个根据本发明实施例的用于压缩的方法。在本实施例中,流程300开始,其中可以在步骤302中检查矩阵205的元素的数值。在步骤306中,可以判断被检查元素的数值是否不等于零。如果该数值不等于零,则在步骤310中,元素的数值可以存储在矢量210中,并且在步骤314中,掩码225的对应比特可以被指派为1的数值,然后,该过程可以返回到步骤302。如果被检查元素的数值等于零,掩码225的对应比特可以被指派为0的数值,然后,该过程可以返回到步骤302。在其他实施例中,掩码225的比特的数值也可以相反过来设定,其中不限于,1对应于零元素,0对应于非零元素。

图4a、4b和4c举例说明一个根据本发明实施例的压缩格式。在本实施例中,举例的矩阵b405可以是非对称稀疏矩阵。val矢量410可以存储矩阵b405的非零元素的数值,因为它们以行方式横列着。在其他实施例中,val矢量410可以存储矩阵b405的非零元素的数值,因为它们在以列的方式横列着。矩阵b405的掩码425可以存储比特掩码,其中位置指示矩阵b405中的数值是否等于零。在本实施例中,掩码425中的比特的数值也可以相反过来设定不受限制,如果矩阵b405中的对应数值不等于零,则掩码425的对应位置中的比特可以被指派为1,如果矩阵b405中的对应数值等于零,则掩码425的对应位置中的比特可以被指派为0。在其他实施例中,掩码中比特的数值可以反过来设定不受限制。在本实施例中,可以采用一个级别的掩码图。当矩阵的稀疏度高时,掩码图可以减少为两个级别的掩码图。在一些实施例中,多个级别的掩码映射的使用可取决于但不限于获取和存储的容量,粒度和效率,例如但不限于dram、nand或optane(3dxpoint)的读/写容量和效率。在非限制性的举例说明中,如果从dram读取许多小粒度的16b,则其效率可能与读取64b的相同字节不同。当读取16b时,读取效率可能约为30-40%,而当读取64b时,效率可能约为95%。这些数字可能根据使用的dram类型而有所不同。如果矩阵是非常大的层级结构的掩码图,也就是所谓的金字塔式的掩码图,也同样可以使用上述方式。

图5a和5b举例说明一个根据本发明实施例的两个级别的金字塔掩码压缩格式。在本实施例中,示例性矩阵b405可以是非对称稀疏矩阵。val矢量410可以存储矩阵a405的非零元素的数值,因为它们以行方式横列着。矩阵b405的掩码425存储比特掩码的位置可以指示矩阵b405中的数值是否等于零。在本实施例中,如果矩阵b405中的对应数值不等于零,则掩码425的对应位置中的比特可以被指派为1,如果矩阵b405中的对应数值等于零,则掩码425的对应位置中的比特可以被指派为0。在其他实施例中,在其他实施例中,掩码425的比特的数值也可以相反过来设定,其中不限于,1对应于零元素,0对应于非零元素。本实施例举例说明了两个级别的金字塔,第一级别的掩码425可以使用一个比特来表示零或非零,并且第二级别的掩码535可以使用一个比特来表示4×4的数值。矩阵530可以存储第一级别的掩码425的4×4图块(tile)的打包数值,并且可以如图5b所示来决定打包数值并以hex表示,第二级别的掩码535可以是矩阵530的比特图,而掩码535的打包数值537可以如图5b所示来决定。在其他实施例中,打包可以在卡盘或图块内完成,可以在数据字段中的标题和打包数据中表示掩码。另外,打包数据的长度可以在标题中的字段中指定。

图6举例说明一个根据本发明实施例的两个级别的金字塔掩码压缩格式。在本实施例中,示例性矩阵b405可以是非对称稀疏矩阵。第一级别的掩码625可以使用一个比特来表示矩阵405的零或非零元素。在本实施例中,可以移除或忽略掩码625中等于零的4×4图块。矢量640可以用8×8卡盘存储剩余图块的打包数值。在本实施例中,卡盘是8×8像素的图块区域。在本实施例中,第二级别的掩码535可以是掩码625的比特掩码和包0x592f537,矩阵405中的打包数据可以是val_b_00(第一个8×8)645、val_b_01(第二个8×8)650、val_b_10(第三个8×8)655以及val_b_11(第四个8×8)660。

在非限制性的举例说明中,如果用每个数值大小为16×16和4个字节来存储矩阵405,则所需的存储大小可以是16×16×4字节=1024字节。在本实施例中,金字塔的打包格式的存储可以是:

第一级别的打包掩码640:9×2字节=18字节

第二级别的打包掩码537:1x2字节=2字节

打包数值645、650、655以及660:13×4字节=52字节

总字节数:18字节+2字节+52字节=72字节。

在非限制性的举例说明中,如果将矩阵b405倍数与具有16×1大小的所有非零数值的矢量a相乘,则典型的计算操作可以是:

乘法器操作:16×16=256次操作;以及

加法器操作:16×15=240次操作。

使用本实施例的掩码格式,可以减少计算为:

乘法器操作:13个非零=13次操作;以及

加法器操作:3次操作。

图7a-7d举例说明一个根据本发明实施例的卷积(convolution)运算。在本实施例中,滤波器矩阵701可以具有1×6的滤波器大小,以及数据矩阵703可以具有1×10的大小。

在典型的传统卷积运算中,为了获得尺寸为1×5的结果矩阵c:

c0=3×4+0×(-5)+0×0+(-1)×23+8×0+0×0;

c1=3×(-5)+0×0+0×23+(-1)×0+8×0+0×(-9);

c2=3×0+0×23+0×0+(-1)×0+8×(-9)+0×0;

c3=3×23+0×0+0×0+(-1)×(-9)+8×0+0×2;以及

c4=3×0+0×0+0×(-9)+(-1)×0+8×2+0×0。

所执行的总操作可以是6×5的乘法器操作和5×5的加法器操作。

在本发明的一个实施例中,滤波器矩阵701可以具有3个打包权重707和一个6权重掩码709,以及数据矩阵703可以具有5个打包数据711和一个10数据掩码713,其中对于卷积操作,只有一维卷积可以使用。在其他实施例中,卷积操作可以扩展到2维、3维或n维。权重掩码709与数据掩码713结合“and”的结果可以显示产生在717的列c0上。然后,过滤器向上移动一步,这是因为在本实施例中的步幅(stride)设定为1,然后是另一组掩码的结果可以显示产生在c1列中。继续移动过滤器可以生成c2列、c3列以及c4列。

矩阵c的终端结果:c0=3×4+(-1)×23;

c1=3×(-5);

c2=8×(-9);

c3=3×23+(-1)×(-9);以及

c4=8×2。

通过使用本方法,可以将计算减少到c1、c2以及c4中的1次乘法器操作或c0以及c3中的2次乘法器操作;以及c1、c2以及c4中的0次加法器操作或c0以及c3中的1次加法器操作。

在本实施例中,可以执行掩码操作,并且可以知道比特掩码操作之后的非零元素。然后获取终端非零元素的数据以用于之后的操作,例如乘法器操作或加法器操作。在本实施例中,可以降低操作次数和带宽。

图8举例说明一个根据本发明实施例的混合两个级别的金字塔掩码压缩格式。在本实施例中,举例的矩阵b405可以是非对称稀疏矩阵。第一级别的掩码625可以使用一个比特来表示矩阵405的零或非零元素。在本实施例中,可以移除或忽略掩码625中等于零的4×4图块。矢量640可以用8×8卡盘存储剩余图块的打包数值。在本实施例中,第二级别的掩码535可以是掩码625的比特掩码和数据包0x592f537。矩阵405中的打包数据可以是val_b_00(第一个8×8)645、val_b_01(第二个8×8)650、val_b_10(第三个8×8)655以及val_b_11(第四个8×8)660,并且可以使用csr格式导出矢量865和870。在一些实施例中,可以使用csr或其他稀疏格式,包括但不限于csc、ell、coo、bsr、dia、dok、ul、sky等,并在操作时将其转换为比特掩码操作。需要。在本实施例中,4×4可以作为用于掩码打包的图块。在其他实施例中,可以使用任何尺寸,例如但不限于使用4×1、1×4、4×2、2×4或8×8作为用于掩码打包的图块,以表示层级结构的金字塔掩码级别。在一些实施例中,可以使用比特掩码中的第一级别的掩码,以及第二级别的掩码可以使用csr格式。

图9举例说明一个根据本发明实施例的程序结构。本实施例将掩码比特与相关矩阵的压缩数值分开到不同表面中,其中表面可以是图块或框架的格式的描述。一种格式可以用于掩码,而另一种格式用于数值。在非限制性的举例说明中,掩码可以是1比特格式或2比特格式或者其他格式。该数值可以是1比特、2比特…8比特、l6比特、32比特或者更多比特。本实施例仅举例说明与压缩数值相关联的第一级别的掩码,而区块长度可以表示压缩数值的可变长度。本实施例可以具有三个基地地址:一个是区块长度基地地址,另一个是掩码基地地址,另一个是数值基地地址。区块长度可以记忆每个区块的可变长度,而掩码可以记忆每个区块的掩码,以及数值可以记忆每个区块的打包数值。每掩码字节可以表示与每个掩码相关联的n个字节的格式。每个区块的掩码大小可以表示每个区块中有多少个掩码比特。本实施例可以编程每个区块有多大,其中例如该区块可以是一维数组,二维数组或张量,但不限于此。

图10举例说明一个根据本发明实施例的处理器结构。本实施例的处理器结构包括神经处理器单元1021、压缩和打包单元1023以及l1/l2缓冲器或高速缓存1027。本实施例举例说明神经处理器单元1021可以通过训练和预测过程以及权重数据来压缩特征映像,其中数据可以存储在l1/l2高速缓存或缓冲器1027中,而特征映像和权重数据可以存储在相同的缓冲器或不同的缓冲器中。

图11举例说明一个标准乘法过程。图11举例说明标准程序中矩阵w(权重)和矢量x的乘积,不同行的权重进入不同的先入先出存储器,以及矢量共享并且广播到不同的先入先出存储器中。然后,权重w和矢量x将进入不同的乘法器以及加法器,并且累加,直到矩阵w的八行的权重与整列的矢量相乘并且累积到各个不同的累加器中。

图12举例说明一个根据本发明实施例的乘法过程,其中本实施例可以应用压缩格式并改进架构。图12举例说明由压缩区块1227替换的整行权重以及被压缩到另一个区块1229的矢量,本实施例的掩码操作1231可以帮助和跳过实际操作,如本发明所述。

图13举例说明一个根据本发明实施例的神经网络。在本实施例中,输入层位于网络的底部节点-矢量,到第一隐藏层的连接可以是权重矩阵。权重矩阵与矢量(输入层)相乘会产生第一隐藏层。如图中的(b)所示,操作可以减少到只剩下几个连接,此外,当第一隐藏层在丢失中减少时,可以在执行操作之前用打包格式预先打包目的地,接着,可以跳过往第一隐藏层的目的地节点的操作,而那些节点将会被丢失。然后,该方法可以应用于第二隐藏层,然后应用于输出层。

图14举例说明一个乘法过程。

图15举例说明一个根据本发明实施例的乘法过程,其中本实施例举例说明矩阵x与矢量w相乘。在其他实施例中,也可以是图像数据与具有权重的卷积相乘。权重可以是一维滤波器或二维滤波器或具有图像数据或其他数据的n维滤波器卷积。

图16-18举例说明一个根据本发明实施例的架构。

图19举例说明一个根据本发明实施例的用于压缩的方法。在本实施例中,流程1900开始,其中可以在步骤1902中检查矩阵405的元素的数值。在步骤1906中,可以判断是否已经检查了所有元素。如果所有元素尚未全部被检查,则在步骤1910中可以判断所检查的元素是否为非零元素。如果该数值不等于零,则在步骤1914中,元素的数值可以存储在矢量410中,并且在步骤1918中,第一掩码425的对应比特可以被设定为1,然后该流程可以返回步骤1902;如果元素的数值等于零,则第一掩码425的对应比特可以被设定为0,在其他实施例中,掩码比特的数值可以相反过来设定,例如但不限于,1对应于零元素和0对应于非零元素。然后,该过程可以返回到步骤1902。如果在步骤1906中判断已经检查了所有元素,则在步骤1926中,评估第一掩码的比特并将其评估结果存储在第二矩阵530中。在步骤1930中,可以检查第二矩阵530的元素的数据。在步骤1934中,可以判断是否已经检查了所有元素。如果它们还没有被检查过,那幺在步骤1938中可以判断被检查的元素是否为非零元素。如果该数值不等于零,则在步骤1942中第二掩码535的对应比特可以被设定为1。然后,该流程可以返回到步骤1930;如果元素的数值等于零,则可以将第二掩码535的对应比特设定为0,然后返回步骤1930;如果在步骤1934判断已经检查了所有元素,然后在步骤1950中,评估第二掩码的比特并将其评估结果存储在537中。

图20举例说明一个根据本发明实施例的用于压缩的方法。在本实施例中,流程2000开始,其中可以在步骤2002中检查矩阵405的元素的数值。在步骤2006中,可以判断是否已经检查了所有元素。如果所有元素尚未全部被检查,则在步骤2010中可以判断所检查的元素是否为非零元素。如果该数值不等于零,则在步骤2014中,元素的数值可以存储在矢量645、650、655和660之一中,并且在步骤2018中,第一掩码625的对应比特可以被设定为1,然后该流程可以返回到步骤2002;如果该元素的数值等于零,则第一掩码625的对应比特可以被设定为0,在其他实施例中,掩码比特的数值可以相反过来设定,例如但不限于,1对应于零元素和0对应于非零元素。然后,该过程可以返回到步骤2002;如果在步骤2006中判断已经检查了所有元素,则在步骤2026中,评估第一掩码的比特并将其评估结果打包在矢量640中。在步骤2030中,元素为可以检查第一掩码625。在步骤2034中,可以判断是否已经检查了所有元素。如果它们尚未全部检查过,则在步骤2038中可以判断所检查的元素是否为非零元素。如果该数值不等于零,则在步骤2042中,可以为第二掩码535的对应比特可以被设定为1。然后,该过程可以返回到步骤2030。如果该元素的数值等于零,则可以将第二掩码535的对应比特设定为0,然后流程可以返回到步骤2030。如果在步骤2034中判断已经检查了所有元素,则在步骤2050中,评估第二掩码的比特并将其评估结果存储在537中。

图21举例说明一个根据本发明实施例的用于压缩的方法。在本实施例中,流程2100开始于在步骤2160中检查一个或多个掩码的数值。在步骤2164中,判断数值是否等于零。如果该数值等于零,则在步骤2168中跳过操作并且该流程返回到步骤2160。如果该数值不等于零,则执行该操作并且该流程返回到步骤2160。在其他实施例中,该掩码比特的数值可以相反过来,例如但不限于,1对应于零元素,0对应于非零元素。

根据本发明的教导并且根据本发明的教导,本领域技术人员将容易认识到将该方法应用于cpu、gpu、神经处理器单元(npu)、dsp和修复功能逻辑以加速神经网络处理功耗更低。本发明的教导还可以用节能方法应用于诸如智能电话、vr/ar设备无人驾驶汽车、无人机和机器人之类的手持设备。

根据本发明的教导并且根据本发明的教导,本领域技术人员将容易认识到,任何前述步骤和/或系统模块可以根据特定应用的需要插入适当的替换,重新排序,移除和附加的步骤和/或系统模块,并且可以使用各种合适的流程和系统模块中的任何一个来实现前述实施例的系统,并且不限于任何特定的计算器硬件、软件、中间件、固件、微代码等。对于可以在计算器器上执行的本申请中描述的任何方法步骤,典型的计算器系统在适当地配置或设计时可以做为计算器系统来实现本发明的那些实施例。

除非另有明确说明,否则本说明书中公开的所有特征,包括任何所附的摘要和附图,可以由用于相同、等同或类似目的的替代特征代替。因此,除非另有明确说明,否则所公开的每个特征仅是一系列等效或类似特征的一个示例。

已经充分描述了本发明的至少一个实施例,根据本发明实现数据压缩的其他等效或替代方法对于本领域技术人员来说是显而易见的。以上通过说明的方式描述了本发明的各个方面,并且所公开的具体实施方案不是旨在将本发明限制于所公开的特定形式。数据压缩的特定实现可以根据特定上下文或应用而变化。作为示例而非限制,前面描述的数据压缩主要是指向神经网络实现;然而,类似的技术可以替代地应用于处理大数据数组的任何设备来实现本发明的内容被认为是在本发明的范围内。因此,本发明涵盖落入所附权利要求的精神和范围内的所有修改、等同物和替代物。应进一步理解,并非前述说明书中的所有公开实施例都必须满足或实现前述说明书中描述的每个目的、优点或改进。

本发明中的权利要求和步骤可以仅仅作为对可读性和理解的帮助而被编号和/或编符号。任何这样的编号和编符号本身并不意图也不应该用于表示权利要求中的组件和/或步骤的顺序。

以下权利要求中的所有装置或步骤加功能组件的对应结构、材料、动作和等同物旨在包括具体权利要求中用于结合其他权利要求的元素执行该功能的任何结构、材料或动作。

以下权利要求中的所有装置或步骤加功能组件的对应结构、材料、动作和等同物旨在包括用于结合具体权利要求中的其他权利要求的组件执行功能的任何结构,材料或动作。已经出于说明和描述的目的给出了对本发明的描述,但是并不旨在穷举或将本发明限于所公开的形式。在不脱离本发明的范围和精神的情况下,许多修改和变化对于本领域一般技术人员来说是显而易见的。选择和描述实施例是为了最好地解释本发明的原理和实际应用,并且使本领域一般技术人员能够理解本发明的各种实施例,以及适合于预期的特定用途的各种修改版本实施例。

摘要将使读者能够确定技术公开的本质和要点,符合37c.f.r.1.72(b)节的规定。也就是说,提供摘要仅仅是为了介绍某些概念而不是识别权利要求所保护的主题的任何关键或必要特征。提交时的理解是,摘要不会用于限制或解释权利要求的范围或含义。

以下权利要求在此并入具体实施方式中,并且每个权利要求自身可作为个别的实施例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1