服务类别属性在运行时的初始化和管理的制作方法

文档序号:25543382发布日期:2021-06-18 20:40
服务类别属性在运行时的初始化和管理的制作方法

实施例总体上涉及服务类别(clos)属性。更具体地,实施例涉及在运行时初始化和管理clos属性以优化分布式环境中的深度学习训练。



背景技术:

一些图形处理单元(gpu)可以允许应用开发者在缓冲区分配期间静态地设置将在应用的执行期间使用的存储器的页面的服务类别(clos)。clos然后可以用于在每页面的基础上控制信息的缓存能力。在缓冲区分配期间以页面级别静态地设置clos可能是低效的。实际上,常规解决方案可能导致次优的性能,特别是当应用涉及训练具有相对密集的通信工作负荷的深度神经网络时。



技术实现要素:

根据本公开的第一方面,提供了一种计算系统,包括:网络控制器;处理器,所述处理器耦合至所述网络控制器;以及存储器,所述存储器耦合至所述处理器,其中,所述存储器包括可执行程序指令集,所述可执行程序指令集在由所述处理器执行时,使得所述计算系统执行以下操作:检测对通信库的运行时调用,其中,所述运行时调用标识存储器缓冲区,确定服务类别(clos)属性与所述存储器缓冲区相关联,以及响应于所述运行时调用而发出驱动程序指令以修改所述clos属性。

根据本公开的第二方面,提供了一种半导体装置,包括:一个或多个衬底;以及逻辑单元,所述逻辑单元耦合到所述一个或多个衬底,其中,所述逻辑单元至少部分地在可配置逻辑单元或固定功能硬件逻辑单元中的一个或多个中实现,耦合到所述一个或多个衬底的所述逻辑单元用于:检测对通信库的运行时调用,其中,所述运行时调用标识存储器缓冲区,确定服务类别(clos)属性与所述存储器缓冲区相关联,以及响应于所述运行时调用而发出驱动程序指令以修改所述clos属性。

根据本公开的第三方面,提供了一种方法,包括:检测对通信库的运行时调用,其中,所述运行时调用标识存储器缓冲区;确定服务类别(clos)属性与所述存储器缓冲区相关联;以及响应于所述运行时调用而发出驱动程序指令以修改所述clos属性。

根据本公开的第四方面,提供了至少一种计算机可读存储介质,包括指令集,所述指令集在由计算系统执行时,使得所述计算系统执行根据权利要求19至23中任一项所述的方法。

附图说明

通过阅读以下说明书和所附权利要求书,并且通过参考以下附图,实施例的各种优点对于本领域技术人员而言将变得显而易见,在附图中:

图1是根据实施例的在子页面级别管理的可重新配置的服务类别属性的示例的图示;

图2是根据实施例的初始化服务类别属性的方法的示例的流程图;

图3是根据实施例的调整服务类别属性的方法的示例的流程图;

图4是根据实施例的调整服务类别属性的另一方法的示例的流程图;

图5是根据实施例的深度学习(dl)框架、通信库和驱动程序之间的通信的示例的信令图;

图6是根据实施例的软件栈的示例的框图;

图7是根据实施例的性能增强型计算系统的示例的框图;

图8是根据实施例的半导体装置的示例的图示;

图9是根据实施例的处理器的示例的框图;以及

图10是根据实施例的基于多处理器的计算系统的示例的框图。

具体实施方式

现在转向图1,示出了存储器页面20(例如,虚拟存储器的固定长度连续块,由页面表中的单个条目描述),其中存储器页面20包括第一地址范围22、第二地址范围24等。在所示的示例中,第一服务类别(clos)属性26与第一地址范围22相关联,并且第二clos28与第二地址范围24相关联。在实施例中,第一地址范围22用作第一存储器缓冲区,并且第二地址范围24用作第二存储器缓冲区。当诸如深度学习(dl)应用之类的应用将第一存储器缓冲区分配给第一工作负荷时,该应用还可以基于工作负荷的类型将第一clos属性26关联、专用和/或分配给第一地址范围22。

例如,如果在分配时确定第一工作负荷预期是计算内核(例如,专用于矩阵-矩阵乘法操作或卷积操作的软件例程),则dl应用可以为第一clos属性26选择相对低的值。类似地,如果在分配时确定第二工作负荷预期是通信内核(例如,专用于在分布式环境中在多层次gpu封装内的层次之间、经由按比例放大链路在gpu封装之间等进行通信的软件例程),则dl应用可以为第二clos属性28选择相对高的值。如果clos属性26、28与缓存能力成比例,则所选择的值将使得为第一地址范围22中的信息分配的缓存存储器比为第二地址范围24中的信息分配的缓存存储器少。在这方面,已经确定例如“全减少(allreduce)”通信操作(例如,其计算每个gpu上的损失函数的梯度、通过内部gpu通信计算梯度的平均值、以及更新网络模型),与计算内核在相同资源方面竞争激烈。因此,所示clos属性26、28可以为应用提供管理性能方面的更多灵活性和更好的可缩放性。

实际上,所示clos属性26、28是可重新配置的,这可以进一步增强效率、性能和/或可扩展性。在这方面,在应用的执行期间,地址范围22、24可以被重新用于不同的工作负荷(例如,在迭代训练期间)。因此,如果第一地址范围22(例如,第一存储器缓冲区)随后被分配给作为通信内核的第三工作负荷,则第一clos属性26可以在运行时被设置(例如,经由从通信库发出的指令)为相对高的值。因此,可以实现关于性能的甚至更大的灵活性。此外,将clos属性26、28设置在小于页面20的粒度级别进一步使得所示出的解决方案适应于应用的操作,其在缓冲区级别分配存储器。

图2示出了初始化clos属性的方法30。方法30可以在一个或多个模块中实现为存储在以下各项中的逻辑指令集:机器或计算机可读存储介质(例如,随机存取存储器(ram)、只读存储器(rom)、可编程rom(prom)、固件、闪存等),诸如可配置逻辑单元(例如,可编程逻辑阵列(pla)、现场可编程门阵列(fpga)、复杂可编程逻辑器件(cpld)等),使用诸如电路技术(例如,专用集成电路(asic)、互补金属氧化物半导体(cmos)或晶体管-晶体管逻辑(ttl)技术)的固定功能逻辑硬件、或者前述的任何组合。

例如,用于执行方法30中所示操作的计算机程序代码可以以一种或多种编程语言(包括面向对象的编程语言,例如java、smalltalk、c++等,以及常规程序化编程语言,例如“c”编程语言或类似的编程语言)的任何组合来编写。另外,逻辑指令可以包括汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、状态设置数据、集成电路的配置数据、使得电子电路和/或硬件本地的其他结构组件(例如,主机处理器、中央处理单元/cpu、微控制器等)个性化的状态信息。

所示处理块32提供了对分配请求的检测,其中,分配请求标识存储器缓冲区。在实施例中,分配请求通过地址范围(例如,在虚拟存储器中)来标识存储器缓冲区。块34响应于分配请求而将与存储器缓冲区相关联的clos属性设置为初始级别。块34可以将clos属性设置为默认级别或与存储器缓冲区的工作负荷的预期类型相对应的级别。因此,方法30通过基于每个存储器缓冲区(例如,而不是基于每个页面)初始化clos属性来提高性能。

图3示出了调整clos属性的方法40。方法40可以在方法30(图2)之后在一个或多个模块中实现为存储在以下各项中的逻辑指令集:机器或计算机可读存储介质(例如,ram、rom、prom、固件、闪存等),诸如可配置逻辑单元(例如,pla、fpga、cpld等),使用诸如电路技术(例如,asic、cmos或ttl技术)的固定功能逻辑硬件、或者前述的任何组合。

所示处理块42检测对通信库的运行时调用(例如,在训练迭代期间的ccl_allreduce),其中运行时调用标识存储器缓冲区。在一个示例中,存储器缓冲区由地址范围标识。块44确定clos属性与存储器缓冲区相关联。在实施例中,块44包括针对与存储器缓冲区相对应的地址范围搜索数据结构(例如,映射)。如已经示出的,地址范围可以小于存储器页面的大小。块46响应于运行时调用而发出驱动程序指令以修改clos属性。在一个示例中,如果运行时调用与通信内核相关联,则驱动程序指令请求clos属性的级别的增加。在另一示例中,如果运行时调用与计算内核相关联,则驱动程序指令请求clos属性的级别的降低。块46还可以包括将clos属性的先前值存储到合适的存储器位置(例如,寄存器)。因此,所示方法40至少通过以下各项来增强性能和/或可缩放性:1)使用驱动程序指令来修改clos属性,2)在运行时,以及3)基于每个存储器缓冲区。

图4示出了调整clos属性的另一方法50。方法50可以在方法40(图3,例如,在增加clos属性以支持通信内核之后)之后在一个或多个模块中实现为存储在以下各项中的逻辑指令集:机器或计算机可读存储介质(例如,ram、rom、prom、固件、闪存等),诸如可配置逻辑单元(例如,pla、fpga、cpld等),使用诸如电路技术(例如,asic、cmos或ttl技术)的固定功能逻辑硬件、或者前述的任何组合。

所示处理块52提供了用于确定通信内核是否完整。如果不是,则所示方法50进入等待状态。一旦通信内核完成,块54响应于工作负荷的完成而将clos属性返回到初始级别。在实施例中,块54包括从合适的存储器位置(例如,寄存器)检索初始级别的值。因此,所示方法50通过提供基于运行时状况而临时调整clos属性的能力,进一步增强了性能和/或可缩放性。

图5示出了用于dl框架62、通信库64(例如,oneapi集体通信库/oneccl)和驱动程序66之间的通信的信令图60。在所示示例中,dl框架62向通信库64发出运行时调用68(例如,ccl_allreduce)。运行时调用68可以包括缓冲区地址、大小等。在实施例中,通信库64发出驱动程序指令(例如,通过附加中间件和/或应用编程接口/api),该驱动程序指令请求改变感兴趣的存储器区域的clos属性。如已经指出的,改变可以是计算内核的相对低的clos值、通信内核的相对高的clos值等。通信库64也可以存储存储器区域的先前clos值,并且开始通信操作。一旦通信完成,所示通信库64就经由另一驱动程序指令72来恢复存储器区域的先前clos值。在实施例中,通信库64然后向dl框架62发送通信已经完成的通知74。在接收到通知74时,dl框架62可以开始使用存储器缓冲区用于其他目的。

图6示出了统一软件栈110,该统一软件栈110包括0级别接口112、0级别接口112之下的系统软件114、0级别接口112之上的系统软件116、以及开发者接口118。0级别接口112之下的系统软件114与诸如硬件(例如,cpu(例如,其可以支持标量运算)、gpu(例如,其可以支持矢量运算)、ai(人工智能)加速器(例如,其可以支持矩阵运算)和fpga(例如,其可以支持空间运算))通信。另外,开发者接口118与经优化的中间件和相关联的框架交互,该经优化的中间件和相关联的框架进而支持一个或多个经优化的应用。在实施例中,例如,诸如(oneapi集体通信库/oneccl)之类的库120包括已经讨论的方法30(图2)、方法40(图3)和/或方法50(图4)的功能。

现在转到图7,示出了性能增强型计算系统151。系统151通常可以是具有以下功能的电子设备/平台的一部分:计算功能(例如,个人数字助理/pda、笔记本计算机、平板计算机、可转换平板、服务器)、通信功能(例如,智能电话)、成像功能(例如,相机、可携式摄像机)、媒体播放功能(例如,智能电视/tv)、可穿戴功能(例如,手表、眼镜、头饰、鞋类、珠宝)、车辆功能(例如,汽车、卡车、摩托车)、机器人功能(例如,自主机器人)等或前述的任何组合。在所示的示例中,系统151包括主机处理器153(例如,具有多个核心的cpu),该主机处理器153具有末级别缓存(llc,例如,3/l3级别缓存)154以及耦合到系统存储器157的集成存储器控制器(imc)155。

所示系统151还包括与主机处理器153和图形处理器161一起在半导体管芯163上实现为片上系统(soc)的输入输出(io)模块159。所示io模块159与例如以下各项进行通信:显示器165(例如,触摸屏、液晶显示器/lcd、发光二极管/led显示器)、网络控制器167(例如,有线和/或无线)以及大容量存储装置169(例如,硬盘驱动器/hdd、光盘、固态驱动器/ssd、闪存)。

在实施例中,主机处理器153、图形处理器161和/或io模块159执行从系统存储器157和/或大容量存储装置169检索的程序指令171以执行已经讨论的方法30(图2)、方法40(图3)和/或方法50(图4)的一个或多个方面。因此,所示指令的执行可以使得计算系统检测对通信库的运行时调用,其中运行时调用标识存储器缓冲区,确定clos属性与存储器缓冲区相关联,以及响应于运行时调用而发出驱动程序指令以修改clos属性。在实施例中,为了确定clos属性与存储器缓冲区相关联,指令171在被执行时使得计算系统151针对与存储器缓冲区相对应的地址范围搜索数据结构。在一个示例中,地址范围小于存储器页面。因此,计算系统151的性能至少增强到在运行时和在每个存储器缓冲区的基础上使用驱动程序指令来修改clos属性的程度。

图8示出了半导体封装装置173。所示装置173包括一个或多个衬底174(例如,硅、蓝宝石、砷化镓)和耦合到(一个或多个)衬底174的逻辑单元177(例如,晶体管阵列和其他集成电路/ic组件)。逻辑单元177可以至少部分地在可配置逻辑单元或固定功能逻辑硬件中实现。在一个示例中,逻辑单元177实现已经讨论的方法30(图2)、方法40(图3)和/或方法50(图4)的一个或多个方面。因此,逻辑单元177可以检测对通信库的运行时调用,其中运行时调用标识存储器缓冲区,确定clos属性与存储器缓冲区相关联,以及响应于运行时调用而发出驱动程序指令以修改clos属性。在实施例中,为了确定clos属性与存储器缓冲区相关联,逻辑单元177针对与存储器缓冲区相对应的地址范围搜索数据结构。在一个示例中,地址范围小于存储器页面。因此,装置17的性能至少增强到在运行时和在每个存储器缓冲区的基础上使用驱动程序指令来修改clos属性的程度。

在一个示例中,逻辑单元177包括位于(例如,嵌入)(一个或多个)衬底174内的晶体管沟道区域。因此,逻辑单元177和(一个或多个)衬底174之间的界面可以不是突变结。逻辑单元177也可以被认为包括在(一个或多个)衬底174的初始晶圆上生长的外延层。

图9示出了根据一个实施例的处理器核心200。处理器核心200可以是用于任何类型的处理器(例如,微处理器、嵌入式处理器、数字信号处理器(dsp)、网络处理器或执行代码的其他设备)的核心。尽管图9中仅示出了一个处理器核心200,但是处理元件可以替代地包括多于一个的图9所示的处理器核心200。处理器核心200可以是单线程核心,或者针对至少一个实施例,处理器核心200可以是多线程的,因为它可以包括每个核心多于一个的硬件线程上下文(或“逻辑处理器”)。

图9还示出了耦合到处理器核心200的存储器270。存储器270可以是本领域技术人员已知的或以其他方式可用的各种存储器(包括存储器层次结构的各种层)中的任何一种。存储器270可以包括将由处理器核心200执行的一个或多个代码213指令,其中代码213可以实现已经讨论的方法30(图2)、方法40(图3)和/或方法50(图4)的一个或多个方面。处理器核心200遵循由代码213指示的指令程序序列。每个指令可以进入前端部分210,并且由一个或多个解码器220处理。解码器220可以生成作为其输出的微操作,例如预定格式的固定宽度微操作,或者可以生成反映原始代码指令的其他指令、微指令或控制信号。所示前端部分210还包括寄存器重命名逻辑单元225和调度逻辑单元230,其通常分配资源并且将与转换指令相对应的操作进行排队以供执行。

处理器核心200被示出为包括具有一组执行单元255-1至255-n的执行逻辑单元250。一些实施例可以包括专用于特定功能或功能组的多个执行单元。其他实施例可以仅包括一个执行单元或者可以执行特定功能的一个执行单元。所示执行逻辑单元250执行由代码指令指定的操作。

在完成由代码指令指定的操作的执行之后,后端逻辑单元260引退代码213的指令。在一个实施例中,处理器核心200允许指令的乱序执行,但要求指令的有序引退。引退逻辑单元265可以采用本领域技术人员已知的各种形式(例如,重排序缓冲区等)。以此方式,处理器核心200在代码213的执行期间至少在由解码器生成的输出、由寄存器重命名逻辑单元225利用的硬件寄存器和表、以及由执行逻辑单元250修改的任何寄存器(未示出)方面被转换。

尽管图9中未示出,但是处理元件可以包括与处理器核心200一起在芯片上的其他元件。例如,处理元件可以包括存储器控制逻辑单元以及处理器核心200。处理元件可以包括i/o控制逻辑单元和/或可以包括与存储器控制逻辑单元集成的i/o控制逻辑单元。处理元件还可以包括一个或多个缓存。

现在参考图10,示出了根据实施例的计算系统1000实施例的框图。图10中示出了多处理器系统1000,多处理器系统1000包括第一处理元件1070和第二处理元件1080。虽然示出了两个处理元件1070和1080,但是应当理解,系统1000的实施例还可以仅包括一个这样的处理元件。

系统1000被示出为点对点互连系统,其中第一处理元件1070和第二处理元件1080经由点对点互连件1050耦合。应当理解,图10中所示的任何或所有互连件可以被实现为多点分支总线而不是点对点互连件。

如图10所示,处理元件1070和1080中的每一个可以是多核心处理器,包括第一和第二处理器核心(即,处理器核心1074a和1074b以及处理器核心1084a和1084b)。这样的核心1074a、1074b、1084a、1084b可以被配置为以与上面结合图9所讨论的方式类似的方式执行指令代码。

每个处理元件1070、1080可以包括至少一个共享缓存1896a、1896b。共享缓存1896a、1896b可以存储分别由处理器的一个或多个组件(例如,核心1074a、1074b和1084a、1084b)利用的数据(例如,指令)。例如,共享缓存1896a、1896b可以将存储在存储器1032、1034中的数据进行本地缓存,以供处理器的组件更快地访问。在一个或多个实施例中,共享缓存1896a、1896b可以包括一个或多个中间级别缓存,例如2级别(l2)、3级别(l3)、4级别(l4)或其他级别的缓存、末级别缓存(llc)和/或前述的组合。

虽然仅示出了两个处理元件1070、1080,但是应当理解,实施例的范围不限于此。在其他实施例中,一个或多个附加处理元件可以存在于给定处理器中。或者,处理元件1070、1080中的一个或多个可以是除了处理器以外的元件,例如加速器或现场可编程门阵列。例如,(一个或多个)附加处理元件可以包括与第一处理器1070相同的(一个或多个)附加处理器、与第一处理器1070异构或不对称的(一个或多个)附加处理器、加速器(例如,诸如图形加速器或数字信号处理(dsp)单元)、现场可编程门阵列或任何其他处理元件。在处理元件1070、1080之间在包括架构、微架构、热、功耗特性等的品质度量的频谱方面可以存在各种差异。这些差异可以有效地将它们自身表现为处理元件1070、1080之间的不对称性和异构性。针对至少一个实施例,各种处理元件1070、1080可以驻留在同一管芯封装中。

第一处理元件1070还可以包括存储器控制器逻辑单元(mc)1072和点对点(p-p)接口1076和1078。类似地,第二处理元件1080可以包括mc1082以及p-p接口1086和1088。如图10所示,mc1072和1082将处理器耦合到相应存储器,即存储器1032和存储器1034,它们可以是本地附接到相应处理器的主存储器的部分。虽然mc1072和1082被示出为集成到处理元件1070、1080中,但是针对替代实施例,mc逻辑单元可以是处理元件1070、1080外部的分立逻辑单元而不是集成在其中。

第一处理元件1070和第二处理元件1080可以分别经由p-p互连件1076、1086耦合到i/o子系统1090。如图10所示,i/o子系统1090包括p-p接口1094和1098。此外,i/o子系统1090包括接口1092,以将i/o子系统1090与高性能图形引擎1038耦合。在一个实施例中,总线1049可以用于将图形引擎1038耦合到i/o子系统1090。或者,点对点互连件可以耦合这些组件。

i/o子系统1090又可以经由接口1096耦合到第一总线1016。在一个实施例中,第一总线1016可以是外围组件互连(pci)总线,或者诸如pciexpress总线或其他第三代i/o互连总线之类的总线,但是实施例的范围不限于此。

如图10所示,各种i/o设备1014(例如,生物测定扫描仪、扬声器、相机、传感器)和总线桥1018可以耦合到第一总线1016,总线桥1018可以将第一总线1016耦合到第二总线1020。在一个实施例中,第二总线1020可以是低引脚数(lpc)总线。在一个实施例中,各种设备可以耦合到第二总线1020,包括例如键盘/鼠标1012、(一个或多个)通信设备1026和数据存储单元1019,例如盘驱动器或可以包括代码1030的其他大容量存储设备。所示代码1030可以实施已经讨论的方法30(图2)、方法40(图3)和/或方法50(图4)的一个或一个以上方面。此外,音频i/o1024可以耦合到第二总线1020,并且电池1010可以向计算系统1000供电。

注意,可以考虑其他实施例。例如,代替图10的点对点架构,系统可以实现多点总线或其他这样的通信拓扑结构。此外,图10的元件可以替代地使用比图10所示的更多或更少的集成芯片来划分。

其他注释和示例:

示例1包括一种性能增强型计算系统,包括:网络控制器;处理器,该处理器耦合至网络控制器;以及存储器,该存储器耦合至处理器,其中,存储器包括可执行程序指令集,可执行程序指令集在由处理器执行时,使得计算系统检测对通信库的运行时调用,其中,运行时调用标识存储器缓冲区,确定服务类别(clos)属性与存储器缓冲区相关联,以及响应于运行时调用而发出驱动程序指令以修改clos属性。

示例2包括示例1的计算系统,其中,为了确定clos属性与存储器缓冲区相关联,指令在被执行时使得计算系统针对与存储器缓冲区相对应的地址范围搜索数据结构,并且其中,地址范围小于存储器页面。

示例3包括示例1的计算系统,其中,如果运行时调用与通信内核相关联,则驱动程序指令请求clos属性的级别的增加。

示例4包括示例3的计算系统,其中,指令在被执行时进一步使得计算系统响应于通信内核的完成而将clos属性返回到初始级别。

示例5包括示例1的计算系统,其中,如果运行时调用与计算内核相关联,则驱动程序指令请求clos属性的级别的降低。

示例6包括示例1至5中任一项所述的计算系统,其中,指令在被执行时进一步使得计算系统检测分配请求,其中,分配请求标识存储器缓冲区,以及响应于分配请求而将clos属性设置为初始级别。

示例7包括一种半导体装置,包括:一个或多个衬底;以及逻辑单元,该逻辑单元耦合到一个或多个衬底,其中,逻辑单元至少部分地在可配置逻辑单元或固定功能硬件逻辑单元中的一个或多个中实现,耦合到一个或多个衬底的逻辑单元用于检测对通信库的运行时调用,其中,运行时调用标识存储器缓冲区,确定服务类别(clos)属性与存储器缓冲区相关联,以及响应于运行时调用而发出驱动程序指令以修改clos属性。

示例8包括示例7的半导体装置,其中,为了确定clos属性与存储器缓冲区相关联,耦合到一个或多个衬底的逻辑单元用于针对与存储器缓冲区相对应的地址范围搜索数据结构,并且其中,地址范围小于存储器页面。

示例9包括示例7的半导体装置,其中,如果运行时调用与通信内核相关联,则驱动程序指令请求clos属性的级别的增加。

示例10包括示例9的半导体装置,其中,耦合到一个或多个衬底的逻辑单元用于响应于通信内核的完成而将clos属性返回到初始级别。

示例11包括示例7的半导体装置,其中,如果运行时调用与计算内核相关联,则驱动程序指令请求clos属性的级别的降低。

示例12包括示例7至11中任一项所述的半导体装置,其中,耦合到一个或多个衬底的逻辑单元用于检测分配请求,其中,分配请求标识存储器缓冲区,以及响应于分配请求而将clos属性设置为初始级别。

示例13包括至少一种计算机可读存储介质,包括:可执行程序指令集,可执行程序指令集在由计算系统执行时,使得计算系统检测对通信库的运行时调用,其中,运行时调用标识存储器缓冲区,确定服务类别(clos)属性与存储器缓冲区相关联,以及响应于运行时调用而发出驱动程序指令以修改clos属性。

示例14包括示例13的至少一种计算机可读存储介质,其中,为了确定clos属性与存储器缓冲区相关联,指令在被执行时使得计算系统针对与存储器缓冲区相对应的地址范围搜索数据结构,并且其中,地址范围小于存储器页面。

示例15包括示例13的至少一种计算机可读存储介质,其中,如果运行时调用与通信内核相关联,则驱动程序指令请求clos属性的级别的增加。

示例16包括示例15的至少一种计算机可读存储介质,其中,指令在被执行时进一步使得计算系统响应于通信内核的完成而将clos属性返回到初始级别。

示例17包括示例13的至少一种计算机可读存储介质,其中,如果运行时调用与计算内核相关联,则驱动程序指令请求clos属性的级别的降低。

示例18包括示例13至17中任一项所述的至少一种计算机可读存储介质,其中,指令在被执行时进一步使得计算系统检测分配请求,其中,分配请求标识存储器缓冲区,以及响应于分配请求而将clos属性设置为初始级别。

示例19包括一种操作性能增强型计算系统的方法,该方法包括:检测对通信库的运行时调用,其中,运行时调用标识存储器缓冲区,确定服务类别(clos)属性与存储器缓冲区相关联,以及响应于运行时调用而发出驱动程序指令以修改clos属性。

示例20包括示例19的方法,其中,确定clos属性与存储器缓冲区相关联包括针对与存储器缓冲区相对应的地址范围搜索数据结构,并且其中,地址范围小于存储器页面。

示例21包括示例19的方法,其中,如果运行时调用与通信内核相关联,则驱动程序指令请求clos属性的级别的增加。

示例22包括示例21的方法,还包括响应于通信内核的完成而将clos属性返回到初始级别。

示例23包括示例19的方法,其中,如果运行时调用与计算内核相关联,则驱动程序指令请求clos属性的级别的降低。

示例24包括示例19至23中任一项所述的方法,还包括检测分配请求,其中,分配请求标识存储器缓冲区,以及响应于分配请求而将clos属性设置为初始级别。

示例25包括用于执行示例19至24中任一项的方法的装置。

因此,本文描述的技术使用clos属性的基于指令的设置来使得通信库能够选择哪些缓冲区将具有这些属性。该技术还使得库能够基于运行时行为来增加或降低clos优先级。因此,实现了在计算和通信性能之间进行权衡的机制。实际上,微调dl工作负荷的训练的能力可能是特别有利的。

实施例适用于与所有类型的半导体集成电路(“ic”)芯片一起使用。这些ic芯片的示例包括但不限于处理器、控制器、芯片组组件、可编程逻辑阵列(pla)、存储器芯片、网络芯片、片上系统(soc)、ssd/nand控制器asic等。另外,在一些附图中,信号导线用线表示。一些可以是不同的,以指示更多的组成信号路径,具有数字标签以指示组成信号路径的数量,和/或在一个或多个端部处具有箭头,以指示主要信息流方向。然而,这不应以限制性方式来解释。相反,这些增加的细节可以与一个或多个示例性实施例结合使用,以便于更容易地理解电路。任何表示的信号线,无论是否具有附加信息,实际上可以包括可以在多个方向上行进的一个或多个信号,并且可以利用任何合适类型的信号方案来实现,例如,利用差分对实现的数字或模拟线、光纤线和/或单端线。

可能已经给出了示例尺寸/模型/值/范围,但是实施例不限于此。随着制造技术(例如,光刻)随着时间的推移而成熟,期望可以制造更小尺寸的器件。另外,为了说明和讨论的简单,并且为了不使实施例的某些方面模糊,可以在附图中示出或者可以不在附图中示出到ic芯片和其他组件的公知的电源/接地连接。此外,可以以框图形式示出布置,以避免使实施例模糊,并且还鉴于关于这样的框图布置的实现方式的细节高度依赖于实施例将在其中实现的计算系统的事实,即这样的细节应当在本领域技术人员的知识范围内。在阐述具体细节(例如,电路)以便描述示例实施例的情况下,对于本领域技术人员而言应当显而易见的是,可以在没有这些具体细节的情况下或者利用这些具体细节的变型来实践实施例。因此,本说明书应当被认为是说明性的而非限制性的。

术语“耦合”在本文中可以用于指代所讨论的组件之间的任何类型的直接或间接关系,并且可以应用于电气、机械、流体、光学、电磁、机电或其他连接。此外,术语“第一”、“第二”等在本文中仅用于方便讨论,并且除非另外指出,否则不带有特定的时间或先后意义。

如本申请和权利要求中所使用的,由术语“…中的一个或多个”连接的项目列表可以表示所列出的项目的任何组合。例如,短语“a、b或c中的一个或多个”可以表示a;b;c;a和b;a和c;b和c;或a、b和c。

本领域技术人员将从前面的描述中理解,可以以各种形式实现实施例的广泛技术。因此,虽然已经结合其特定示例描述了实施例,但是实施例的真实范围不应当如此限制,因为在研究附图、说明书和所附权利要求书之后,其他修改对于本领域技术人员而言将变得显而易见。

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