计算;推算;计数设备的制造及其应用技术减少i/o开销的混洗归约任务技术领域::1.本技术涉及大规模数据处理系统,特别是涉及用于在减少对硬盘驱动器(hdd)的随机访问i/o请求的数量的同时减少数据的读取和写入从而在复杂数据处理操作期间减少总执行时间的系统和方法。背景技术:::2.sparktm、hadooptm、tensorflowtm和dryadtm等大型数据分析系统通常用于执行复杂的数据分析操作。此类系统将数据分区保存在存储器中以用于流水线算子(pipelinedoperators),并且跨越具有宽依赖的各阶段将数据保存在硬盘驱动器上以用于容错。在这样的系统中,当运行为了多阶段数据分析将各作业划分成的许多小任务时,全对全数据传送——所谓的混洗操作——成为扩展瓶颈。zhang等人在“riffle:optimizedshufflereduceserviceforlarge-scaledataanalytics”,acm,第十三届eurosys会议论文集,第43页,2018年4月23-26日,评论到这个瓶颈是由于随着数据量的增大磁盘i/o操作超线性增加。为了解决磁盘i/o操作的增加,zhang等人建议有效地将碎片化的中间混洗文件合并成大块文件,以如此将小的随机磁盘i/o请求转换成大的顺序请求。3.不幸的是,这样的方案伴随着相当大的成本。例如,riffletm系统需要对所有数据执行两次读取和写入,这会导致较大的i/o开销。仍然期望建立额外的方法,在减少对硬盘驱动器(hdd)的随机访问i/o请求的数量的同时,减少数据的读取和写入,以进一步减少诸如数据分析的复杂数据处理操作期间的总执行时间。技术实现要素:4.现在描述各种示例来以简化形式介绍一组概念,这些概念将在下面的详细描述中进一步描述。本发明内容并非意在识别所要求保护的主题的关键或基本特征,也不意在用于限制所要求保护的主题的范围。5.在样例实施例中,混洗归约(shufflereduce)任务被设计并集成到数据分析框架中。数据分析框架中的驱动器模块决定是否使用混洗归约任务以及使用多少混洗归约任务。本文描述的混洗归约任务进行顺序读取i/o请求,而不是传统方法中执行的大量随机访问i/o请求(减少i/o开销)。与riffletm系统相比,本文描述的混洗归约任务读取的数据大小显著降低,使得i/o开销较少并改进总执行时间。6.在样例实施例中,混洗归约模块可以被包括在数据分析框架驱动器中,该数据分析框架驱动器决定是为作业调用混洗归约任务(调用多少等)还是维护现有执行计划。如果调用混洗归约任务,则将其作为作业执行计划的部分进行调用。该方案可以应用于任何数据流执行平台。7.根据本公开的第一方面,提供了一种执行混洗归约操作的方法,该混洗归约操作在数据分析过程期间在映射和归约阶段之间对数据进行分组和连结以进行数据转换。该方法包括接收来自第一存储器的至少两个输入文件作为输入,其中每个输入文件已被不同的映射任务分类和写入;获取来自每个输入文件的批次数据;对第二存储器中的批次数据进行合并和分类以形成统一的数据段。对统一的数据段应用混洗归约操作以产生输出数据。在样例实施例中,混洗归约操作包括提供小于输入数据量的输出数据量的可交换归约操作。输出数据被写入第三存储器,重复这些步骤直到来自每个输入文件的数据被完全消耗,并且数据分析过程的分析数据输出已完全形成。8.根据本公开的第二方面,提供了一种数据分析系统,包括:至少一个处理器;第一存储器,其储存至少两个输入文件,每个输入文件由数据分析过程的不同映射任务分类和写入;第二存储器;第三存储器;和指令存储器,其储存指令,所述指令当由所述至少一个处理器执行时执行数据分析过程,所述数据分析过程包括在所述数据分析过程期间在映射和归约阶段之间对数据进行分组和连结以进行数据转换的混洗归约操作。在样例实施例中,混洗归约操作包括:(1)接收来自第一存储器的至少两个输入文件作为输入;(2)获取来自每个输入文件的批次数据;(3)对第二存储器中的批次数据进行合并和分类以形成统一的数据段;(4)对统一的数据段应用混洗归约操作以产生输出数据,其中混洗归约操作包括提供小于输入数据量的输出数据量的可交换归约操作;(5)将输出数据写入到第三存储器;以及(6)重复(2)-(5)直到来自每个输入文件的数据被完全消耗并且数据分析过程的分析数据输出已完全形成。9.根据本公开的第三方面,提供了一种非暂态计算机可读储存介质,包括指令,所述指令在由至少一个处理器执行时使所述处理器执行混洗归约操作,所述混洗归约操作通过执行操作在数据分析过程期间在映射和归约阶段之间对数据进行分组和连结以进行数据转换,所述操作包括:(1)接收来自第一存储器的至少两个输入文件作为输入,其中每个输入文件已由不同的映射任务分类和写入;(2)获取来自每个输入文件的批次数据;(3)对第二存储器中的批次数据进行合并和分类以形成统一的数据段;(4)对统一的数据段应用混洗归约操作以产生输出数据,其中混洗归约操作包括提供小于输入数据量的输出数据量的可交换归约操作;(5)将输出数据写入到第三存储器;以及(6)重复(2)-(5)直到来自每个输入文件的数据被完全消耗并且数据分析过程的分析数据输出已完全形成。10.在任一前述方面的第一实现方式中,所述第一存储器和所述第三存储器包括硬盘驱动器,并且所述第二存储器包括动态随机访问存储器(dram)。11.在任一前述方面的第二实现方式中,第一存储器可以包括至少一个硬盘驱动器,并且第三存储器可以包括固态盘和永久存储器中的至少一者。12.在任一前述方面的第三实现方式中,获取来自每个输入文件的批次数据包括获取不超过为所述混洗归约操作分配的存储器容量的数据总量。13.在前述任一方面的第四种实现方式中,所述驱动器模块基于下述确定是否对所述数据分析过程中的特定作业执行所述混洗归约操作:所述作业是否包括混洗操作,所述作业的工作负载是否足够大以获得性能增益,所述作业是否包括在输出文件中提供小于输入数据量的输出数据量的所述可交换归约操作,要开始多少个任务以实施所述混洗归约操作,以及何时开始和停止所述混洗归约操作。14.在任一前述方面的第五实现方式中,所述数据分析过程在数据分析平台上实施,并且应用所述混洗归约操作包括应用按键聚合操作、按键分组操作和按键归约操作中的至少一者作为所述可交换归约操作。15.在任一前述方面的第六实现方式中,第一任务运行下述步骤:接收输入文件、获取来自每个输入文件的批次数据、以及对批次数据合并和分类,而第二任务运行下述步骤:应用混洗归约操作、以及写入输出。在样例实施例中,第一任务和第二任务独立于第一存储器和第三存储器彼此直接通信。16.在任一前述方面的第七实现方式中,将所述混洗归约操作应用于统一的数据段以产生输出数据包括应用多个任务以实施所述混洗归约操作。17.该方法可以被执行并且计算机可读介质上的指令可以由该装置处理,并且该方法的另外特征和计算机可读介质上的指令由该装置的功能性产生。此外,为每个方面及其实现方式提供的解释同样适用于其他方面和对应的实现方式。不同的实施例可以以硬件、软件或其任何组合来实施。此外,前述示例中的任何一个可以与其他前述示例中的任何一个或更多个组合以在本公开的范围内创建新的实施例。附图说明18.在不一定按比例绘制的附图中,相似的数字可以在不同的视图中描述相似的部件。附图通常通过示例但不限制地例示本文件中讨论的各个实施例。19.图1示出了sparktm作业的逻辑视图,该作业对来自两个分开的表的数据应用转换(映射和过滤器),使用按键分组(groupbykey)函数对每个键(项目的某个字段)进行项目连结和聚合。20.图2示出了图1中所示的作业的sparktm执行计划。21.图3示出了在混洗期映射和归约任务之间的映射。22.图4示出了riffletm数据分析系统,该数据分析系统由于任务数量减少,需要较少的读取和写入i/o开销,但需要对整个混洗数据运行两次读取和写入。23.图5示出了用于减少i/o开销的混洗归约方法的样例实施例。24.图6示出了样例实施例中由混洗归约操作执行的步骤。25.图7示出了在样例实施例中混洗归约操作的流程图。26.图8示出示了在样例实施例中对指定的输入文件进行混洗归约操作的示例。27.图9是示出用于执行根据样例实施例的方法的电路的框图。具体实施方式28.首先应该理解的是,尽管下面提供了一个或更多个实施例的示例性实现方式,但关于图1至图9所描述的被公开的系统和/或方法可以使用任何数量的、无论是目前已知的还是存在的技术来实施。本公开绝不应限于以下示出的示例性实现方式、附图和技术,包括本文中示出和描述的范例性设计和实现方式,而是可以在所附权利要求的范围内连同它们的全部等同物的范围进行修改。29.在一实施例中,本文描述的功能或算法可以软件实现。该软件可以包括储存在计算机可读介质或计算机可读储存设备诸如一个或更多个非暂态存储器或其他类型的本地或网络的基于硬件的储存设备上的计算机可执行指令。此外,这样的功能对应于模块,这些模块可以是软件、硬件、固件或其任意组合。可以根据期望在一个或更多个模块中运行多种功能,并且所描述的实施例仅是示例。该软件可以在数字信号处理器、asic、微处理器或在计算机系统诸如个人计算机、服务器或其他计算机系统上操作的其他类型的处理器上执行,以将这种计算机系统变成专门程控的机器。30.sparktm、hadooptm、tensorflowtm和dryadtm等大型数据分析平台通常使用有向非循环图(dag)模型来限定用户作业。例如,图1示出了sparktm作业的逻辑视图,该作业对输入数据130应用映射转换110和过滤器转换120,对输入数据150应用映射转换140,其中输入数据130和150来自两个分开的表。使用例如连结函数160连结和聚合每个键(项目的某个字段)上的项目。在由过滤器任务170过滤之后,输出数据180被储存在结果表中。31.图2示出了图1中所示的作业的sparktm执行计划。如图所示,dag执行平台(例如spark)决定如何将这些操作映射到物理资源。由于操作可能跨分区发生,因此需要跨分区通信以进行处理。对于窄依赖(映射和过滤器操作210和220),sparktm系统在每个分区230和240上将转换流水线化并在单个状态下执行算子。在内部,sparktm系统试图在映射阶段期间将单个任务的中间数据保存在存储器中,以便可以有效地执行流水线算子(例如,在第一阶段中过滤器算子220跟随映射算子210)。然而,像映射210、过滤器220等等的操作会导致任务之间的窄依赖(一对一的通信模式)。通常,这些操作捆绑在一起并由同一过程执行。另一方面,像连结250、按键归约(reducebykey)、按键分组(groupbykey)等等的操作会导致在过滤器任务260过滤之前的归约阶段不同任务之间的宽依赖(多对多通信模式)。传统上,映射阶段和归约阶段之间的数据交换被表示为混洗期,如图2所示。32.如本文所使用的,混洗期包括用于阶段1(映射阶段)和阶段2(归约阶段)之间的宽依赖的全对全通信。每个映射任务210从数据分区(例如,大表的若干行)读取,使用映射任务算子将数据转换成中间格式,通过归约阶段的分区功能(例如,键范围)分类和聚合项目以产生项目块,并将块保存到在磁盘上的中间文件。映射任务210还写分开的索引文件,该索引文件示出对应于归约阶段的每个归约任务的块的偏移。每个归约任务使指定的数据块在一起并执行归约任务操作。通过查找索引文件中的偏移,每个归约任务都会对来自所有映射输出文件的目标块发出获取请求。因此,最初根据各表行(tablerows)分区的数据被处理并混洗到根据归约键范围分区的数据。在具有宽依赖的阶段之间,每个归约任务都需要从所有映射任务输出中读取数据块。如果中间混洗文件没有永久化,即使单个归约任务失败也可能导致重新计算整个映射阶段。因此,为了强大的容错能力,永久化混洗数据非常重要。33.因此,混洗期的混洗操作是一个资源极其密集的操作。从映射任务传送到归约任务的每个数据块都需要经过数据序列化、磁盘和网络i/o以及数据反序列化。尽管如此,混洗操作在各种类型的作业中被大量使用。例如,需要按键对数据进行分区、分组、或归约、或连结的作业都涉及混洗操作。混洗期可用于诸如确定特定单词在文本中出现多少次的操作,其中每个映射任务的单独结果被组合以获得最终结果。34.以前的方案让映射任务将它们的输出数据写入永久储存以用于容错(如果一个归约任务失败,则无需重新运行任何映射任务)。对于大型工作负载,硬盘驱动器(hdd)比其他类型的永久存储器更受欢迎,因为它们便宜且易于扩展。但是,随着映射和归约任务数量的增大,这种初始设计不能很好地扩展。归约任务需要对hdd执行m·r次随机访问输入/输出(i/o)请求,其中m是映射任务的数量,r是归约任务的数量。因此,混洗期会导致大量i/o开销。35.这种方法总结为错误!引用源未找到,它示出了在混洗期期间映射任务310和相应的归约任务360、370和380之间的映射。如图3所示,每个映射任务310产生相应的数据集330、340和350,如所示的,这些数据集被引导到相应的归约任务360、370和380。如所示出的,数据集330由归约任务360处理,数据集340由归约任务370处理,数据集350由归约任务380处理。36.随着作业数据大小的增大,映射任务和归约任务的数量也成比例地增长。因为每个归约任务r都需要从所有映射任务m中获取,所以混洗i/o请求的数量m·r呈二次方增大,每次获取的平均块大小s/(m·r)呈二次方减小。使用较少的归约任务r减少了混洗获取的总数,因此改进了混洗性能。然而,使用较少的任务不可避免地会扩大输入数据的平均大小,并创建非常庞大、缓慢的任务,这些任务必须将中间数据溢出到永久储存中,因此增大开销。37.因此,混洗操作(例如,连结)是分布式数据分析平台最难执行的操作。大型工作负载的混洗操作将数据写入到永久储存,从而在归约任务失败的情况下,无需重新运行整个映射阶段。然而,作为最具有成本效益的方案,大量数据临时存留在硬盘驱动器(hdd)中。随机访问i/o请求会导致hdd的显著开销。38.前面提到的riffletm系统提供了一种混洗服务,该混洗服务采用不同的方法来解决由混洗操作的全对全数据传送引起的扩展瓶颈。riffletm系统在混洗期的中间引入了合并任务。riffletm系统不是将映射任务写入的数据直接提供给归约任务,而是分配合并任务以读取并将由映射任务产生的碎片中间混洗文件合并到较大的块文件中,从而将小的、随机磁盘i/o请求转换成大的、顺序的请求。因此,归约任务执行的对hdd的i/o随机访问请求要少得多。在这种情况下,riffletm系统执行m·r/n次随机访问i/o请求,其中n是与每个合并任务相关的映射任务的平均数量。39.然而,riffletm系统提供的性能改进带来了可观的成本。如图4所示,虽然riffletm系统由于任务数量减少(按系数n)而需要较少的写入和读取i/o开销,但riffletm系统对整个混洗数据执行两次读取和写入——一次用于读取由映射任务310创建的数据集330、340和350,一次用于读取由合并任务410创建的合并数据集420、430和440。对整个混洗数据的读取和写入加倍仍然会导致较大的i/o开销,特别是对于在合并操作410期间创建的较大块文件。40.本文所述的系统和方法通过为数据分析系统实施混洗期而以具有成本效益的方式进一步降低i/o开销,该混洗期主要避免两次读取和写入整个混洗数据(如riffletm系统),同时还减少了对hdd的随机访问i/o请求的数量(如riffletm系统)。与诸如riffletm系统中的常规实现方式相比,本文提供的系统和方法减少了混洗期的总执行时间,并通过利用用户工作负载经常表现出的两个特征来减少对hdd的i/o请求的数量,上述两个特征即:41.1.归约操作是可交换的。42.2.归约操作减少数据量(输出数据大小比输入数据大小小得多)。43.基于这两个特点,提供了一种将合并文件操作与归约操作相结合的混洗归约操作。在样例实施例中,混洗归约操作是在混洗期实施的可交换归约操作,其提供的输出数据量小于输入数据量。由于归约操作是可交换的,因此最终结果是正确的,因为最终结果与以前的方法相同。此外,混洗归约操作最终会向hdd发出与riffletm系统中相同数量的i/o请求。但是,对显著较少的数据执行第二批次的读取和写入,因为只储存聚合操作产生的数据。44.图5示出了用于减少i/o开销的混洗归约方法的样例实施例。如图所示,图4的合并操作410由混洗归约任务510代替,该混洗归约任务合并来自相应映射任务310的相应数据集330、340和350,并通过实施归约操作而减少数据集以产生大小减小的分别对应于数据集330、340和350的数据集520、530和540。如所示的,为了容错,数据集330、340和350以及大小减小的数据集520、530和540被储存在hdd中。然后,将归约任务360、370和380分别应用于大小减小的数据集520、530和540。由于数据集520、530和540的大小减小,所得混洗期的总执行时间显著减少。45.图6示出了由混洗归约操作执行的步骤,而图7示出了样例实施例中的混洗归约操作的流程图。如图6和图7所示,通过在步骤(1)从外部hdd接收多个输入文件610(图7中的操作710)来实施混洗归约任务。在样例实施例中,每个输入文件610由不同分区中的不同映射任务写入。然后,在步骤(2)从所有输入文件610获取小批次数据620,如图6中的箭头630所示(图7中的操作720)。在样例实施例中,获取的数据的总大小不应超过混洗归约任务的过程的动态随机访问存储器(dram)容量。然后,在步骤(3)将小批次数据合并和分类在一起(根据它们的键),以形成统一的数据640(图7中的操作730)。46.在步骤(4),将混洗归约操作应用于统一的数据640以产生归约数据集650(图7中的操作740)。在样例实施例中,当归约操作是可交换的并且减少数据量使得输出数据大小与输入数据大小相比小得多时,应用混洗归约操作。例如,在sparktm系统中,这样的归约操作包括按键聚合操作、按键归约操作和按键分组操作。sparktm系统中的按键聚合(aggregatebykey)操作使用给定的组合函数和中性“零值”相对于公共键将值分组,以为键返回不同类型的值。例如,aggregatebykey操作允许针对学科将学生、学科和多个分数的元组处理到包括学生和最高分数或百分比的输出数据集中。sparktm系统中的reducebykey操作使用关联归约函数针对每个键对值进行合并,该关联归约函数接受两个参数并返回单个元素并且在数学性质上是可交换和关联的。换言之,当重复应用于具有多个分区的同一数据集时,无论元素的顺序如何,reducebykey函数产生相同的结果。sparktm系统中的groupbykey函数与reducebykey函数非常相似。groupbykey函数将键值对(k,v)作为输入,并以迭代器的形式收集每个键的值,以产生包括键和值列表的输出。因此,groupbykey函数相对于单个键将所有值分组并以迭代器的形式返回。减少数据量的多个流水线操作也可以用于混洗归约操作。对于本领域技术人员来说,其他数据分析系统的类似功能将是明显的。47.然后,在步骤(5)将归约的数据集650写入外部hdd,如箭头660所示(图7中的操作750)。当有来自输入文件610的更多数据要处理时,在步骤(6)重复步骤(2)-(5),直到所有输入数据已被处理(图7中的步骤760)。当没有更多输入数据要处理时,该过程在操作770处结束。48.因此,混洗归约操作减少了归约任务读取的数据大小(比较步骤(6)之后的数据大小相比于图6中初始大小(1)),这显著降低了i/o开销并减少了混洗期的总执行时间。由于数据大小减小,hdd可用于具有成本效益的方案以用于容错。49.除了本文描述的混洗归约任务之外,样例实施例可以包括包含在数据分析框架驱动器中的混洗归约模块。数据分析框架驱动器是数据分析应用中的主节点,它将数据分析应用拆分成任务并安排这些任务在执行器上运行。驱动器模块可以跨多个分区生成任务。在样例实施例中,在客户端侧提供驱动器模块以决定是为作业调用本文所述的混洗归约任务(调用多少等)还是维持现有执行计划。在样例实施例中,传统数据分析框架驱动器的驱动器模块被修改成通过检查下述来确定何时调用混洗归约任务:50.1.是否有混洗期;51.2.是否工作负载大到足以让混洗归约方法获得收益;和52.3.是否已知(或确定)归约操作是可交换的并会减少数据量(输出数据大小与输入数据大小相比要小得多)。53.当满足这些条件时,调用本文描述的混洗归约任务。54.上述实施例的第一替代方案将混洗归约期划分为两个不同的任务(合并、p归约)。该实施例将具有与上述实施例相似的特征。合并操作之前的所有操作都将由合并任务执行,其余的将由p归约任务执行。合并任务将直接与p归约任务通信,而不是通过hdd。55.第一替代方案的益处是,数据分析框架用户/操作者可以独立地扩大/缩小混洗期中的合并和归约操作,这提供了更大的灵活性和更好的资源利用率。缺点是该实施例增加了额外的网络通信层,因为它摆脱了第一实施例的局部性方面。56.上述实施例的第二替代方案将使用不同的储存介质代替hdd。出于成本目的,hdd通常较适合用于大量数据,因为hdd比其他方案便宜。然而,由于混洗归约任务显著减少了由归约任务处理的数据量,一个可能的方案是将数据储存在更高效的介质中(如固态磁盘(ssd)或不同的永久存储器技术),以便为混洗归约期获得更好的性能(因为由于储存较少的数据,这些方案的成本现在降低)。因此,第二替代方案以整个架构的总成本为代价提供了更好的i/o性能。57.图8示出了在样例实施例中,对指定的输入文件进行混洗归约操作的示例。在该示例中,包括不同类型水果(苹果、蓝莓、葡萄、甜瓜、橙子、芒果)的若干输入文件810在合并操作820处合并以产生储存在dram中的相应文件830和840。p归约任务850对相应的文件830和840执行reducebykey(总计)操作以产生相应的输出文件860和870。本领域技术人员将理解,reducebykey是可交换的操作,并且得到的文件860和870小于文件830和840。如所示的,输出键值对包括水果以及在合并的输入文件830和840中的出现次数。在这个示例中,通过将重复元素组合成元素和元素计数键值对,键值对的数量已经从12个减少到8个,因此节省存储器空间。应当理解,对于其他可交换归约操作诸如aggregatebykey操作或groupbykey操作,可以实现存储器空间的类似减少。58.混洗归约期降低了hddi/o开销,因为它显著减少了随机访问i/o请求的数量。本文描述的混洗归约任务也大大减少了需要由归约任务读取的数据大小。结果,i/o开销以及混洗期的总执行时间大大降低。59.下表比较了包括sparktm系统、riffletm系统的传统数据分析框架和本文实施的混洗归约方法的性能。[0060][0061]其中:[0062]m是映射任务的数量;[0063]r是归约任务的数量;[0064]n是每个合并或混洗归约任务的映射任务的数量;[0065]s是总的混洗数据大小;以及[0066]r是一个归约因子(0<r≤1,取决于工作负载、操作和n)。在样例实施例中,r<0.1,但因工作负载而变化。在最坏的情况下,r=1并且总读/写大小仍然至少与riffletm系统的读/写大小一样好。[0067]图9示出了一种通用计算机900,它适合于实施本文所公开的方法的一个或更多个实施例。例如,图9中的计算机900可以在本文所述类型的数据分析框架(例如,sparktm、hadooptm、tensorflowtm和dryadtm)上实施。上述部件可以在任何通用网络部件上实施,通用网络部件诸如具有足够处理能力、存储器资源和网络吞吐量能力以处理置于其上的必要工作负载的计算机900。计算机900包括处理器910(其可称为中央处理器单元或cpu),其与存储器设备通信,存储器设备包括辅助储存器920、只读存储器(rom)930、随机访问存储器(ram)940、输入/输出(i/o)设备950和网络连接设备960。在样例实施例中,网络连接设备960进一步将处理器910连接到客户端侧数据分析驱动器970,该客户端侧数据分析驱动器管理数据分析过程并确定何时调用如本文所述的混洗归约任务。处理器910可以被实现为的一个或更多个cpu芯片,或者可以是一个或更多个专用集成电路(asic)的部分。[0068]辅助储存器920通常由一个或更多个磁盘驱动器或磁带驱动器构成,并且用于数据的非易失性储存,并且如果ram940不足够大以容纳所有工作数据,则用作溢出数据储存设备。辅助储存器920可以用于储存当程序被选择执行时装载到ram940中的该程序。rom930用于储存在程序执行期间读取的指令和可能的数据。rom930是一种非易失性存储器设备,其相对于辅助储存器920的较大存储器容量通常具有较小的存储器容量。ram940用于储存易失性数据并且可能用于储存指令。对rom930和ram940两者的访问通常比对辅助储存器920的访问快。[0069]应当理解,计算机900可以执行来自储存计算机可读指令的计算机可读非暂态介质和耦合到存储器的一个或更多个处理器的指令,并且当执行计算机可读指令时,计算机900被配置为执行在本公开中参考图1至图8描述的方法步骤和操作。计算机可读非暂态介质包括所有类型的计算机可读介质,包括磁储存介质、光储存介质、闪存介质和固态储存介质。[0070]还应理解,包括一个或更多个计算机可执行指令的软件可以安装在一个或更多个服务器或数据库中并与一个或更多个服务器或数据库一起出售,上述计算机可执行指令有助于如以上参考本公开的任何一个步骤或所有步骤所描述的处理和操作。替代性地,可以以与本公开一致的方式获取软件并将其加载到一个或更多个服务器或一个或更多个数据库中,包括通过物理介质或分发系统获取软件,包括例如从软件创建者拥有的服务器或者从软件创建者不拥有但使用的服务器获取。例如,软件可以储存在服务器上以在互联网上分发。[0071]此外,本领域的技术人员将理解,本公开不限于其应用到的在以下描述中阐述或在附图中示出的构造的细节和部件的布置。本文的实施例可以是其他实施例,并且能够以各种方式实践或执行。此外,应当理解,本文使用的措辞和术语是出于描述的目的,不应被视为限制性的。本文使用的“包括”、“包含”或“具有”及其变体意在涵盖其后列出的项目及其等同物以及附加项目。[0072]根据所示实施例采用的示例性设备、系统和方法的部件可以至少部分地在数字电子电路、模拟电子电路中实施或者在计算机硬件、固件、软件或它们的组合中实施。例如,这些部件还可以实施为计算机程序产品诸如在信息载体或机器可读储存设备中有形体现的计算机程序、程序代码或计算机指令,以用于由数据处理设备执行或控制数据处理设备的操作,数据处理设备诸如可编程处理器、计算机或多台计算机。[0073]计算机程序可以以任何形式的编程语言编写,上述编程语言包括编译或解释语言,并且可以以任何形式部署,上述形式包括作为独立程序或作为模块、部件、子程序或适合在计算环境中使用的其他单元。计算机程序可以被部署成在一台计算机上或在一个站点的多台计算机上执行或分布在多个站点上并通过通信网络互连。此外,用于完成本文描述的系统和方法的功能程序、代码和代码段可以由具有本公开所属领域技术的程序员容易地解释为在本公开的范围内。与示例性实施例相关联的方法步骤可以通过一个或更多个可编程处理器执行计算机程序、代码或指令以执行功能(例如,通过对输入数据进行操作并生成输出)而执行。例如,方法步骤也可以由下述执行并且装置可以被实施为下述:专用逻辑电路,例如fpga(现场可编程门阵列)或asic(专用集成电路)。[0074]结合本文公开的实施例描述的各种示例性逻辑块、模块和电路可以使用下述实施或执行:通用处理器、数字信号处理器(dsp)、asic、fpga或其他可编程逻辑设备、分立门或晶体管逻辑、分立硬件部件或其设计用于执行本文描述的功能任何组合。通用处理器可以是微处理器,但在替代方案中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器也可以实施为计算设备的组合,例如dsp和微处理器的组合,多个微处理器,一个或更多个微处理器与dsp核的结合,或任何其他这样的配置。[0075]适合于执行计算机程序的处理器包括,例如,通用和专用微处理器两者,以及任何类型的数字计算机的任何一个或更多个处理器。通常,处理器将从只读存储器或随机访问存储器或者从上述两者接收指令和数据。计算机的基本元件是用于执行指令的处理器和用于储存指令和数据的一个或更多个存储器设备。通常,计算机还将包括用于储存数据的一个或更多个大容量储存设备,或可操作地耦合用于储存数据的一个或更多个大容量储存设备以从其接收数据或向其传输数据,或者从其接收数据并向其传输数据,该一个或更多个大容量储存设备例如磁盘、磁光盘或光盘。适用于包含计算机程序指令和数据的信息载体包括所有形式的非易失性存储器,包括例如半导体存储器设备,例如电可编程只读存储器或rom(eprom)、电可擦可编程rom(eeprom)、闪存存储器设备和数据储存盘(例如磁盘、内部硬盘或可移动盘、磁光盘、cd-rom盘,或dvd-rom盘)。处理器和存储器可以由专用逻辑电路补充或包含在专用逻辑电路中。[0076]本领域技术人员理解可以使用各种不同技术和技巧中的任何一种来表示信息和信号。例如,在整个以上描述中可能引用的数据、指令、命令、信息、信号、位、符号和芯片可以由电压、电流、电磁波、磁场或粒子、光场或粒子或任何的组合表示。[0077]本领域技术人员还可以理解,结合本文公开的实施例描述的各种示例性逻辑块、模块、电路和算法步骤可以实施为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,各种示例性部件、块、模块、电路和步骤已经在上面大体上根据它们的功能进行了描述。这种功能是作为硬件还是软件实施取决于特定应用和施加在整个系统上的设计约束。熟练的技术人员可以针对每个特定应用以不同的方式实施所描述的功能,但是这样的实施决策不应被解释为导致脱离本公开的范围。软件模块可以驻留在随机访问存储器(ram)、闪存存储器、rom、eprom、eeprom、寄存器、硬盘、可移动磁盘、cd-rom或本领域已知的任何其他形式的储存介质中。样例储存介质耦合到处理器,使得处理器可以从储存介质读取信息以及将信息写入储存介质。或者,储存介质可以集成到处理器。换言之,处理器和储存介质可以驻留在集成电路中或实施为分立部件。[0078]如本文所用,“机器可读介质”是指能够临时或永久储存指令和数据的设备,并且可以包括但不限于随机访问存储器(ram)、只读存储器(rom)、缓冲存储器、闪存存储器、光学介质、磁介质、高速缓存存储器、其他类型的储存器(例如可擦除可编程只读存储器(eeprom)),以及它们的任何适合的组合。术语“机器可读介质”应理解为包括能够储存处理器指令的单个介质或多个介质(例如集中式或分布式数据库,或关联的高速缓存和服务器)。术语“机器可读介质”还应理解为包括能够储存指令以用于由一个或更多个处理器执行的任何介质或多种介质的组合,使得指令在由一个或更多个处理器执行时引起一个或更多个处理器执行本文所述的任何一种或多种方法。因此,“机器可读介质”是指单个储存装置或设备,以及包括多个储存装置或设备的“基于云”的储存系统或储存网络。如本文所用,术语“机器可读介质”不包括信号本身。[0079]尽管上面已经详细描述了几个实施例,但其他修改也是可能的。例如,图中描绘的逻辑流程不需要所示的特定排序或顺序排序来获得期望的结果。可以从所描述的流程中提供其他步骤,或者可以消除步骤,并且其他部件可以添加到所描述的系统中或从所描述的系统中移除。其他实施例可以在所附权利要求的范围内。当前第1页12当前第1页12
图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!
内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!
减少I/O开销的混洗归约任务的制作方法
作者:admin
2022-08-27 09:16:46
775
关键词:
计算;推算;计数设备的制造及其应用技术
专利技术
- 下一篇: MSC细胞的大规模组合CAR转导和CRISPR基因编辑
- 上一篇: 喷墨印刷电路板的制作方法