CN102446100A - 用于数据类型的类型和长度抽象 - Google Patents

用于数据类型的类型和长度抽象 Download PDF

Info

Publication number
CN102446100A
CN102446100A CN2011104366738A CN201110436673A CN102446100A CN 102446100 A CN102446100 A CN 102446100A CN 2011104366738 A CN2011104366738 A CN 2011104366738A CN 201110436673 A CN201110436673 A CN 201110436673A CN 102446100 A CN102446100 A CN 102446100A
Authority
CN
China
Prior art keywords
data type
generic
processor
simd data
type
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.)
Granted
Application number
CN2011104366738A
Other languages
English (en)
Other versions
CN102446100B (zh
Inventor
C·T·艾特
D·L·德特勒夫斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN102446100A publication Critical patent/CN102446100A/zh
Application granted granted Critical
Publication of CN102446100B publication Critical patent/CN102446100B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Stored Programmes (AREA)

Abstract

提供了用于数据类型的类型和长度抽象。各实施例针对在软件代码中实现类属SIMD数据类型。在一实施例中,计算机系统访问软件代码的一部分,该部分包括具有类属SIMD数据类型的算法,所述类属SIMD数据类型包括可变数量的元素。具有该类属SIMD数据类型的该算法要由包括各种专用硬件特征的专用处理器处理。计算机系统在运行时基于该类属SIMD数据类型来确定要供指定的处理器使用的定制的处理器专用代码的一部分,其中运行时确定解析出要供该指定的处理器使用的元素的数量。计算机系统还使用确定的、定制的处理器专用代码来处理包括具有该类属SIMD数据类型的该算法的该软件代码。

Description

用于数据类型的类型和长度抽象
技术领域
本发明针对在软件代码中实现类属SIMD数据类型,尤其涉及用于数据类型的类型和长度抽象。
背景技术
计算机已变得高度集成于工作、家庭、移动设备以及许多其他地方中。计算机可快速且有效地处理巨大量信息。被设计成在计算机系统上运行的软件应用允许用户执行包括商业应用、学校作业、娱乐等等在内的各种各样的功能。软件应用通常被设计成执行专门任务,诸如用于草拟文档的文字处理器应用或者用于发送、接收和组织电子邮件的电子邮件程序。
在某些情况下,软件应用被设计成在专用处理器或处理系统上执行。例如,用于某一应用的软件代码可包括一次在不止一个数据项上运算(单指令多数据指令,即SIMD指令)且专用于特定类型的处理器的指令。这些专门指令通常用于包括整型、浮点型、双精度型的面向数字的数据类型。在某些情况下,软件编译器可被配置成执行自动向量化,该自动向量化改变软件代码供专用处理器使用。然而,自动向量化并不对全部类型的软件代码都适用。
发明内容
本文所述的实施例针对在软件代码中实现类属SIMD数据类型。在一个实施例中,计算机系统访问软件代码的一部分,该部分包括具有类属SIMD数据类型的算法,所述类属SIMD数据类型包括可变数量的元素。元素的数量直到运行时才被确定,但是可供该算法用作该类属SIMD数据类型的特性。具有该类属SIMD数据类型的该算法要由包括各种专用硬件特征的专用处理器处理。计算机系统在运行时基于该类属SIMD数据类型来确定要供指定的处理器使用的定制的处理器专用代码的一部分,其中运行时确定解析出要供该指定的处理器使用的元素的数量。计算机系统还使用确定的、定制的处理器专用代码来处理包括具有该类属SIMD数据类型的该算法的该软件代码。
提供本发明内容以便以简化形式介绍将在以下的具体实施方式中进一步描述的一些概念。本发明内容并非旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
另外的特征和优点将在以下的描述中阐述,并且部分可从该描述中显而易见,或者可以从此处的教示实践中习得。本发明的各特征和优点可以通过在所附的权利要求书中特别指出的手段和组合来实现和获得。本发明的特征将从以下描述和所附权利要求书中变得完全显而易见,或者可通过如下所述对本发明的实践而获知。
附图说明
为了进一步阐明本发明的各实施例的以上和其他优点和特征,将参考附图来呈现本发明的各实施例的更具体的描述。可以理解,这些附图只描绘本发明的典型实施例,因此将不被认为是对其范围的限制。本发明将通过使用附图用附加特征和细节来描述和解释,附图中:
图1示出本发明的各实施例可在其中操作的计算机架构,包括在软件代码中实现类属类型。
图2示出用于在软件代码中实现类属SIMD类型的示例方法的流程图。
图3示出用于在软件代码中实现类属SIMD类型的替代架构。
具体实施方式
本文所述的实施例针对在软件代码中实现类属SIMD数据类型。在一个实施例中,计算机系统访问软件代码的一部分,该部分包括具有类属SIMD数据类型的算法,所述类属SIMD数据类型包括可变数量的元素。具有该类属SIMD数据类型的该算法要由包括各种专用硬件特征的专用处理器处理。计算机系统在运行时基于该类属SIMD数据类型来确定要供指定的处理器使用的定制的处理器专用代码的一部分,其中运行时确定解析出要供该指定的处理器使用的元素的数量。计算机系统还使用确定的、定制的处理器专用代码来处理包括具有该类属SIMD数据类型的该算法的该软件代码。
以下讨论现涉及可以执行的多种方法以及方法动作。应当注意,虽然这些方法动作可能是按一定次序讨论的,或者是在流程图中被描绘为是按照特定顺序进行的,然而并非必然需要特定的次序,除非特别声明,或者是因为一个动作依赖于另一动作在该动作被执行之前完成而需要的。
本发明的各实施例可包括或利用专用或通用计算机,该专用或通用计算机包括诸如例如一个或多个处理器和系统存储器等计算机硬件,如以下更详细讨论的。本发明范围内的各实施例还包括用于携带或存储计算机可执行指令和/或数据结构的物理介质和其他计算机可读介质。这些计算机可读介质可以是通用或专用计算机系统能够访问的任何可用介质。存储计算机可执行指令的计算机可读介质是计算机存储介质。携带计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限制,本发明的各实施例可包括至少两种完全不同类型的计算机可读介质:计算机存储介质和传输介质。
计算机存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。
“网络”被定义为允许在计算机系统和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链路。当信息通过网络或另一个通信连接(硬连线、无线、或者硬连线或无线的组合)传输或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可包括可用于携带计算机可执行指令或数据结构形式的数据或所需程序代码装置且可由通用或专用计算机访问的网络和/或数据链路。上述的组合也应被包括在计算机可读介质的范围内。
此外,在到达各种计算机系统组件之后,计算机可执行指令或数据结构形式的程序代码装置可从传输介质自动传输到计算机存储介质(或反之亦然)。例如,通过网络或数据链路接收到的计算机可执行指令或数据结构可被缓存在网络接口模块(例如,“NIC”)内的RAM中,然后最终被传输到计算机系统RAM和/或计算机系统处的较不易失性的计算机存储介质。因而,应当理解,计算机存储介质可被包括在还利用(或甚至主要利用)传输介质的计算机系统组件中。
计算机可执行指令包括,例如使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。计算机可执行指令可以是例如二进制代码、诸如汇编语言之类的中间格式指令、或甚至源代码。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特征或动作。相反,上述特征和动作是作为实现权利要求的示例形式而公开的。
本领域的技术人员将理解,本发明可以在具有许多类型的计算机系统配置的网络计算环境中实践,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机等等。本发明也可在其中通过网络链路(或者通过硬连线数据链路、无线数据链路,或者通过硬连线和无线数据链路的组合)的本地和远程计算机系统两者都执行任务的分布式系统环境(例如,云计算、云服务等)中实施。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备中。
图1示出了可在其中采用本发明的原理的计算机体系结构100。计算机体系结构100包括计算机系统110。计算机系统110可以是任何类型的本地或分布式计算系统,包括云计算系统。计算机系统可被配置成访问来自各种不同的源的软件代码107。这些源可包括计算机用户(如用户105)、计算机系统(如系统106)、软件应用、数据存储(本地或远程)或其他源。软件代码可用各种不同的格式来编写,且可由计算机系统110处理。代码可包括在不同数据部分上运算的算法。数据可包括单个类型的多个元素。在某些情况下,某一算法可在数据的包括单个类型的多个元素的多个部分上运算。软件代码可由软件代码访问模块115访问,并可包括一个或多个算法108。每个算法可包括一个或多个类属SIMD数据类型。
由代码访问模块访问的软件代码可被处理、格式化或以其他方式被改变,或可被代码确定模块125直接传递。模块125可接收软件代码及其算法和类属SIMD数据类型。类属SIMD数据类型可按大小、数据类型或两者来被抽象。因此,类属SIMD数据类型可用各种不同的变化大小的数据类型来例示。在某些情况下,数据类型可以是诸如整型、短型、长型、浮点型、双精度型以及字节型之类的数字原语,以及整体数据类型的有符号和无符号的变型。数据可以可定制的大小的数组来被结构化。从而,类属类型可包括各种不同的数据类型中的任一种,并可以是取决于该数据类型的不同大小的。
类属SIMD数据类型121可包括类型参数122,类型参数指定关于实际上要在对数据输入的处理中被使用的类型的信息。因此,类型参数122可指定该数据类型要为整型、或浮点型、或双精度型、或实质上任何其他数据类型。类型参数还可包括提供和要被使用的数据类型有关的额外细节的元数据或其他上下文信息。应注意,如本文中所使用的,类型参数122可指的是“形式”参数(如下面的示例中的VectorBase<T>中的“T”)或指的是“实际参数”(如当使用VectorBase的代码例示它(例如为VectorBase<float>),“float”(浮点型)是实际参数)。下文中可假设在使用“VectorBase<T>”的示例中,类型参数指的是形式参数“T”,而在其他情况下,类型参数指的是实际参数。
包括类属SIMD数据类型121的软件代码以及类型参数122可被传递给代码确定模块125,代码确定模块基于哪种类型的处理器要被用于处理该数据以及该类型参数122中指定了哪种数据类型来确定要使用代码的哪个特定部分。代码确定模块可具有它每次使用的指定的处理器,可具有一列可用处理器,以及可从那些处理器中进行选择,或者至少在某些情况下,可允许用户105能够指定哪个处理器要被用于处理被输入的数据107。代码确定模块125可将其代码确定126发送到代码处理模块130,代码处理模块中代码被该指定的处理器处理。处理的结果(如程序输出131)可被发送给用户,或发送到另一计算机系统或存储系统。
在某些情况下,计算机系统110的处理器可提供单指令多数据(SIMD)能力。通过提供能够同时保持若干数据项的特殊“向量寄存器”,以及这些寄存器上的对寄存器中的每个数据项并行执行的特殊向量运算,这些能力提供增加的性能。不同处理器可提供不同的SIMD能力。例如,处理器可提供可被包含在向量寄存器中的不同数据类型、不同集合的支持的运算、不同指令编码、以及不同向量寄存器宽度。
例如,在某些情况下,某些SIMD扩展可允许对四个浮点值进行并行运算,而其他处理器可允许16个。使用计算机110的各种模块,开发者可通过高级抽象在对他们的应用的处理中使用SIMD特征,而不用明确地输入目标处理器的细节(如数据宽度、提供的专门功能、编码等等)。开发者可将向量寄存器抽象为类属SIMD数据类型121(在至少某些实施例中可被称为VectorBase<T>)。该类属SIMD数据类型121可以是按大小和/或类型抽象的一种较高级的类属SIMD数据类型,在SIMD实现中,这对应于可被包含在向量寄存器中的值的数量和类型。该类属SIMD数据类型的大小可以程序性方式来被查询。而且,该类属类型可在实质上所有当前存在的原语数字类型上被例示。该类属SIMD数据类型提供标准算术运算,该标准算术运算可由编译器映射到目标指令集。运算可包括加、乘、移位以及其他运算。
在某些实施例中,类属类型VectorBase<T>可在一个或多个原语类型(整型、浮点等等)上被例示。该类属SIMD数据类型提供某一范围的运算,使得用户能够开发他们的算法的单个实现,同时将其应用于一定范围的数字类型或精度。该类属SIMD数据类型允许转换到目标架构,因为在知道公共SIMD指令集的情况下已选择了VectorBase<T>上的运算,因此它们通常直接转换成短序列的SIMD处理器指令,通常仅仅是单个指令。该类属类型还提供高级编程模型,该高级编程模型允许开发者或其他用户能够编写既是目标独立的也能在某一范围的元素类型上被例示的代码。在某些情况下,目标处理器可在开发时被固定。上述的概念将在下面关于图2的方法200更详细地解释。
鉴于上述系统和架构,参考图2的流程图将更好地理解可根据所公开的主题实现的方法。为了解释简明起见,这些方法被示出和描述为一系列框。然而,应该理解和了解,所要求保护的主题不受框的次序的限制,因为一些框可按不同的次序进行和/或与此处所描绘和描述的其他框同时进行。此外,并非全部所示的框都是实现下面所述的方法所必需的。
图2示出用于在软件代码中实现类属SIMD数据类型的方法200的流程图。现在将分别频繁参照图1和图3的环境100和300的组件和数据来描述方法200。
方法200包括访问包括具有类属SIMD数据类型的算法的软件代码的一部分的动作,该类属SIMD数据类型包括可变数量的元素,其中具有该类属SIMD数据类型的该算法要由包括一个或多个专用硬件特征的专用处理器处理(动作210)。例如,软件代码访问模块115可访问要由专用处理器处理的软件代码107。处理器可支持SIMD指令集,其向量寄存器具有各种宽度。因此,某些处理器可能够执行更多或更少的同时运算。
例如,在向量寄存器是128位宽的处理器上,类属SIMD数据类型可用32位浮点数据类型来例示。该处理器上的该例示的宽度将是4个元素,该数量可由一SIMD指令同时处理。在其他情况中,该类属类型可用双精度数据类型来例示,其中由一SIMD指令一次处理两个元素。许多其他组合是可能的。
在某些情况下,软件代码107的要被处理的该部分可包括具有多个不同的SIMD指令的算法。例如,如果输入是算法或软件函数,该函数可包括不同的SIMD指令。在确定哪个代码(即处理器专用代码)要供当前选择的处理器使用时,这些指令可被考虑。该数据部分可以数组或其他数据结构来被结构化。数组的元素可以是任意的数据类型,该任意的数据类型可在类属类型121中用类型参数122来指定。
如图3所示,在运行时317的运行时编译316期间,计算系统使用原语类属参数类型和当前硬件平台上向量寄存器的宽度来确定被例示的类属在该平台上包含的原语类型的元素的数量。该类属SIMD数据类型可在设计时305被例示310,其中实现该类属类型的算法306被用于应用307中。该类属类型可被用于确定要使用哪个处理器专用代码,从而数字输入数据320可被处理和输出321。
在一个实施例中,算法306可以是在VectorBase<T>值上运算的高级算法。由于这些值将被存储在向量寄存器中,且VectorBase<T>值上的运算映射到硬件的并行向量运算,以此方式编写该算法可使得速度增加。该算法可取类型T的输入数组,并将它们考虑为VectorBase<T>值的序列。为此,可使用VectorBase<T>.Length来表示VectorBase<T>中的类型T的值的数量(即适合于当前硬件平台上的向量寄存器的数量)。该算法可因此将每个序列的VectorBase<T>.Length T输入到一数组中作为不同的VectorBase<T>。从而,该高级算法在向量寄存器的宽度上保持为类属的。
应用307可以是对特定数字类型T实现高级算法的应用。该类属类型可被例示310并用在运行时316中以确定用于类型T的处理器专用SIMD代码(315)。数字输入320可包括应用307中使用的原语类型T的一个或多个数组。确定的处理器专用SIMD代码可使用对该指定的类型参数122适用的原语来处理这些数组。数字输出321可包括原语类型T的一个或多个数组。因此,可实现在类型和大小上被抽象的某一类属类型。
如上所述,类属SIMD数据类型可被配置成实现至少包括以下数据类型的许多不同的数据类型:整型、短型、长型、浮点型、双精度型、以及字节型、以及整体数据类型的有符号和无符号的变型。在某些情况下,类属SIMD数据类型可用浮点数据类型来例示。在此,对于能够包含四个浮点值的向量寄存器上运行的特定SIMD指令集,可在一SIMD指令中一次处理四个元素。在其他情况下,该类属类型可用双精度数据类型来例示。在此,将由一SIMD指令(对于该相同SIMD指令集)一次处理两个元素。该类属类型可用于单个处理器或多个处理器,并可用于位于一个或多个计算系统上的多个不同处理线程。
方法200包括在运行时基于该类属SIMD数据类型来确定要供指定的处理器使用的定制的处理器专用代码的一部分的动作,其中运行时确定解析出要供该指定的处理器使用的元素的数量(动作220)。例如,代码确定模块125可基于类属SIMD数据类型121在运行时317确定要供指定的处理器使用的定制的处理器专用代码126/315的一部分。处理器专用代码的正确类型可在运行时被计算机系统110的代码确定模块125动态确定。处理器专用代码可由代码处理模块130在运行时或在目标处理器被已知的时间来选择。在某些情况下,这可以是在设计时之后但在运行时之前,但是将由包括代码确定模块125的运行时系统来执行。
方法200包括使用确定的、定制的处理器专用代码来处理包括具有该类属SIMD数据类型的该算法的该软件代码的动作(动作230)。例如,代码处理模块130可使用确定的、定制的处理器专用代码126处理包括具有类属SIMD数据类型121的算法108的处理器专用代码。代码可在运行时317被选择和运行。
在某些情况下,数字输入数据320可包括不同类型的数组。因此,输入数据中可存在不止一个数据类型。因此,代码处理模块130可对每个不同的数据类型选择不同的处理器专用代码。该选择可被动态地以及无需用户干预来执行。计算机系统110可查询选择的或指定的处理器来确定其向量寄存器的宽度。
因此,提供了在软件代码中实现类属SIMD数据类型的系统、方法和计算机程序产品。该类属类型可按大小和/或数据类型来抽象。而且,提供了提供类属SIMD数据类型的系统、方法和计算机程序产品,该类属SIMD数据类型包括在其上它被例示的该数据类型的隐式类属数量的元素。
本发明可具体化为其它具体形式而不背离其精神或本质特征。所描述的实施例在所有方面都应被认为仅是说明性而非限制性的。因此,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变被权利要求书的范围所涵盖。

Claims (10)

1.一种在包括多个计算系统的计算机联网环境中在包括至少一个处理器和存储器的计算机系统处用于在软件代码中实现类属单指令多数据SIMD类型的计算机实现的方法,所述方法包括:
访问包括具有类属SIMD数据类型(121)的算法(108)的软件代码(107)的一部分,该类属SIMD数据类型包括可变数量的元素,其中具有该类属SIMD数据类型的该算法要由包括一个或多个专用硬件特征的专用处理器处理;
在运行时基于该类属SIMD数据类型(121)来确定要供指定的处理器使用的定制的处理器专用代码(126)的一部分,其中运行时确定解析出要供该指定的处理器使用的元素的数量;以及
使用确定的、定制的处理器专用代码(126)来处理包括具有该类属SIMD数据类型(121)的该算法(108)的该软件代码。
2.如权利要求1所述的方法,其特征在于,所述专用硬件特征包括寄存器,所述寄存器可被配置成包括一个或多个类型的特定数量的元素以及在这些元素上并行运行的相关联的指令。
3.如权利要求1所述的方法,其特征在于,所述类属SIMD数据类型按照元素类型来抽象,使得所述类属SIMD数据类型具有可变数据类型。
4.如权利要求2所述的方法,其特征在于,所述类属SIMD数据类型在原语类型上被例示。
5.如权利要求4所述的方法,其特征在于,所述类属SIMD数据类型是可查询的以确定所述类属SIMD数据类型包括多少原语类型的元素。
6.如权利要求3所述的方法,其特征在于,所述类属SIMD数据类型被配置成至少实现以下数据类型:整型、短型、长型、浮点型、双精度型和字节型。
7.一种用于实现一种用于提供包括类属SIMD数据类型方法的计算机程序产品,所述类属SIMD数据类型包括类属SIMD数据类型的隐式类属数量的元素,所述计算机程序产品包括存储有计算机可执行指令的一个或多个计算机可读存储介质,所述指令在由计算系统的一个或多个处理器执行时使得所述计算系统执行所述方法,所述方法包括:
访问包括具有类属SIMD数据类型(121)的算法(108)的软件代码(107)的一部分,该类属SIMD数据类型包括可变数量的元素,其中具有该类属SIMD数据类型的该算法要由包括一个或多个专用硬件特征的专用处理器处理;
在运行时基于该类属SIMD数据类型(121)来确定要供指定的处理器使用的定制的处理器专用代码(126)的一部分,其中运行时确定解析出要供该指定的处理器使用的元素的数量;以及
使用确定的、定制的处理器专用代码(126)来处理包括具有该类属SIMD数据类型(121)的该算法(108)的该软件代码(107)。
8.如权利要求7所述的计算机程序产品,其特征在于,所述类属SIMD数据类型按照元素大小以及元素类型两者被抽象,使得所述类属SIMD数据类型具有可变大小,以及所述类属SIMD数据类型具有可变数据类型。
9.如权利要求7所述的计算机程序产品,其特征在于,还包括查询指定的处理器以确定被存储在其寄存器中且使用其寄存器被处理的元素的数量。
10.一种计算机系统,包括:
一个或多个处理器;
系统存储器;
存储有计算机可执行指令的一个或多个计算机可读存储介质,所述计算机可执行指令在由所述一个或多个处理器执行时使得所述计算系统执行一种用于提供具有可变数据类型的类属SIMD数据类型的方法,所述方法包括:
访问包括具有类属SIMD数据类型(121)的算法(108)的软件代码(107)的一部分,该类属SIMD数据类型包括可变数量的元素,其中具有该类属SIMD数据类型的该算法要由包括一个或多个专用硬件特征的专用处理器处理;
在运行时基于该类属SIMD数据类型(121)来确定要供指定的处理器使用的定制的处理器专用代码(126)的一部分,其中运行时确定解析出要供该指定的处理器使用的元素的数量;以及
使用确定的、定制的处理器专用代码(126)来处理包括具有该类属SIMD数据类型(121)的该算法(108)的该软件代码(107)。
CN201110436673.8A 2010-12-14 2011-12-13 用于数据类型的类型和长度抽象的系统和方法 Active CN102446100B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/968,148 US8959501B2 (en) 2010-12-14 2010-12-14 Type and length abstraction for data types
US12/968,148 2010-12-14

Publications (2)

Publication Number Publication Date
CN102446100A true CN102446100A (zh) 2012-05-09
CN102446100B CN102446100B (zh) 2016-04-06

Family

ID=46008617

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110436673.8A Active CN102446100B (zh) 2010-12-14 2011-12-13 用于数据类型的类型和长度抽象的系统和方法

Country Status (2)

Country Link
US (1) US8959501B2 (zh)
CN (1) CN102446100B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109074281A (zh) * 2016-04-28 2018-12-21 华为技术有限公司 图形处理器任务的分配方法和装置
CN110968315A (zh) * 2018-09-30 2020-04-07 北京国双科技有限公司 元素数据结构的更改方法及装置、存储介质、处理器
WO2020125182A1 (zh) * 2018-12-19 2020-06-25 Oppo广东移动通信有限公司 算法处理方法、装置、存储介质及终端设备

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140359250A1 (en) * 2013-05-28 2014-12-04 Advanced Micro Devices, Inc. Type inference for inferring scalar/vector components
US9772828B2 (en) * 2014-04-22 2017-09-26 Oracle International Corporation Structural identification of dynamically generated, pattern-instantiation, generated classes
US11544214B2 (en) 2015-02-02 2023-01-03 Optimum Semiconductor Technologies, Inc. Monolithic vector processor configured to operate on variable length vectors using a vector length register
US10289416B2 (en) * 2015-12-30 2019-05-14 Intel Corporation Systems, apparatuses, and methods for lane-based strided gather

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6113650A (en) * 1997-02-14 2000-09-05 Nec Corporation Compiler for optimization in generating instruction sequence and compiling method
US6425054B1 (en) * 1996-08-19 2002-07-23 Samsung Electronics Co., Ltd. Multiprocessor operation in a multimedia signal processor
CN1688966A (zh) * 2002-08-09 2005-10-26 英特尔公司 包括对准或者广播指令的多媒体协处理器控制机制
US7168069B1 (en) * 2000-07-12 2007-01-23 Stmicroelectronics, Inc. Dynamic generation of multimedia code for image processing

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5764787A (en) * 1996-03-27 1998-06-09 Intel Corporation Multi-byte processing of byte-based image data
US6202077B1 (en) * 1998-02-24 2001-03-13 Motorola, Inc. SIMD data processing extended precision arithmetic operand format
JP3779602B2 (ja) * 2001-11-28 2006-05-31 松下電器産業株式会社 Simd演算方法およびsimd演算装置
US7003542B2 (en) * 2002-01-02 2006-02-21 Intel Corporation Apparatus and method for inverting a 4×4 matrix
US6944744B2 (en) * 2002-08-27 2005-09-13 Advanced Micro Devices, Inc. Apparatus and method for independently schedulable functional units with issue lock mechanism in a processor
US7367019B2 (en) * 2004-09-16 2008-04-29 International Business Machines Corporation Parameter management using compiler directives
US9038040B2 (en) * 2006-01-25 2015-05-19 International Business Machines Corporation Method for partitioning programs between a general purpose core and one or more accelerators
US8171461B1 (en) * 2006-02-24 2012-05-01 Nvidia Coporation Primitive program compilation for flat attributes with provoking vertex independence
GB2443277B (en) * 2006-10-24 2011-05-18 Advanced Risc Mach Ltd Performing diagnostics operations upon an asymmetric multiprocessor apparatus
US8904366B2 (en) * 2009-05-15 2014-12-02 International Business Machines Corporation Use of vectorization instruction sets

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6425054B1 (en) * 1996-08-19 2002-07-23 Samsung Electronics Co., Ltd. Multiprocessor operation in a multimedia signal processor
US6113650A (en) * 1997-02-14 2000-09-05 Nec Corporation Compiler for optimization in generating instruction sequence and compiling method
US7168069B1 (en) * 2000-07-12 2007-01-23 Stmicroelectronics, Inc. Dynamic generation of multimedia code for image processing
CN1688966A (zh) * 2002-08-09 2005-10-26 英特尔公司 包括对准或者广播指令的多媒体协处理器控制机制

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109074281A (zh) * 2016-04-28 2018-12-21 华为技术有限公司 图形处理器任务的分配方法和装置
CN109074281B (zh) * 2016-04-28 2022-05-24 华为技术有限公司 图形处理器任务的分配方法和装置
CN110968315A (zh) * 2018-09-30 2020-04-07 北京国双科技有限公司 元素数据结构的更改方法及装置、存储介质、处理器
CN110968315B (zh) * 2018-09-30 2023-12-26 北京国双科技有限公司 元素数据结构的更改方法及装置、存储介质、处理器
WO2020125182A1 (zh) * 2018-12-19 2020-06-25 Oppo广东移动通信有限公司 算法处理方法、装置、存储介质及终端设备

Also Published As

Publication number Publication date
US8959501B2 (en) 2015-02-17
US20120151188A1 (en) 2012-06-14
CN102446100B (zh) 2016-04-06

Similar Documents

Publication Publication Date Title
CN102446100B (zh) 用于数据类型的类型和长度抽象的系统和方法
KR102310187B1 (ko) 복수의 엣지와 클라우드를 포함하는 분산 컴퓨팅 시스템 및 이의 적응적 지능 활용을 위한 분석 모델 제공 방법
US9830303B1 (en) Optimized matrix multiplication using vector multiplication of interleaved matrix values
CN101652746B (zh) 浮点操作的改善以及相关的改善
CN101187861B (zh) 用于执行点积运算的指令和逻辑
JP2020531976A (ja) ブロックチェーンのリンクの暗号保護され且つフィルタリングされ且つソートされたトランザクションデータセットの集合を提供する装置
JP2024026273A (ja) 行列処理装置
EP3886000A1 (en) Methods, systems, articles of manufacture, and apparatus to decode zero-value-compression data vectors
CN102609243B (zh) 仿真指针
CN103688250A (zh) 使用动态方案来优化数据处理
CN103959236A (zh) 用于提供向量横向多数表决功能的指令和逻辑
CN104049953A (zh) 用于合并操作掩码的未经掩码元素的处理器、方法、系统和指令
CN102844747A (zh) 将rdma语义映射到高速存储
CN104025033A (zh) 利用控制操纵的simd可变移位和循环
CN103118140A (zh) 将文件分享给关系圈外其他用户终端的方法、系统及装置
Wan et al. Efficient large language models: A survey
WO2013030436A1 (en) Method and apparatus for information clustering based on predictive social graphs
CN102999545A (zh) 高效提供相同类型的多个元数据表示
CN105095414A (zh) 用于预测网络搜索量的方法和装置
CN1853164B (zh) 用于开发dsp编译器构件块的组合方法
CN103988173A (zh) 用于提供掩码寄存器与通用寄存器或存储器之间的转换的指令和逻辑
Astrid et al. Deep compression of convolutional neural networks with low‐rank approximation
US8707013B2 (en) On-demand predicate registers
Zori et al. Computer Engineering And Artificial Intelligence Textbook 1
CN108334325A (zh) 一种编译方法、计算机及计算机可读存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150721

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150721

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant