用于异构数据的可扩展变换处理单元

文档序号:958461 发布日期:2020-10-30 浏览:6次 >En<

阅读说明:本技术 用于异构数据的可扩展变换处理单元 () 是由 帕特里克·圣阿曼特 于 2019-02-27 设计创作,主要内容包括:提供了一种处理单元设备,包括:至少一个控制单元,其用于控制处理单元设备的操作;以及变换逻辑单元,其包括至少一个与至少一个控制单元要执行的变换相关联的变换块,该变换包括要应用于包含在输出域中的输出位置的效果,至少一个变换块中的每一个包括效果块和外场块,效果块包括至少一个第一存储单元,用于在其上存储与效果有关的信息,而外场块包括至少一个第二存储单元,用于在其上存储与输出位置有关的信息。()

用于异构数据的可扩展变换处理单元

技术领域

本发明涉及计算机领域,更具体地说,涉及用于异构数据的处理单元。

背景技术

高性能计算和超级计算已经成为许多重要发现(例如发现希格斯玻色子(CERN)和人类基因组测序(人类基因组计划))的坚实后盾。人们相信,高性能计算(HPC)和超级计算有望对诸如医疗保健和医学、建模和仿真、安全性、金融科技、工程和制造业等领域产生深远影响。

HPC和超级计算社区正面临着必须解决的挑战,以对上述行业产生更深远的影响。一些挑战是在硬件和软件级别上处理可扩展性,表示和处理多级层次结构,实现异构数据融合并解决人类瓶颈问题,这是寻找弥补人类认知弱点的替代方法。现有技术的处理器和计算机系统的能力需要进一步发展,以处理亿亿次计算及更大的计算,并且还需要功能齐全的通用工具,这些工具也应易于使用和理解,以便研究人员和业界充分利用超级计算机的优势。

此外,已经开发了许多系统来执行计算机模型或仿真。这些系统通常仅限于少数几个应用,并且大多数情况下只能用于一个知识领域。因此,除非花费大量的精力进行培训和学***台之间不兼容。一些公司在其产品的生态系统中提供了一定程度的兼容性,但用户通常需要了解每种产品并了解其各自的方法、技术和建模范例,这是一个重要的缺点。

某些仿真软件或解决方案提供软件开发工具包(SDK)或对脚本语言的访问。这些脚本语言通常是文本语言,类似于编程语言,例如C++TM、C#TM、JavaTM或PythonTM。对于这样的软件语言,用户将很快遇到所谓的“编码障碍”,这会极大地限制可以使用该软件的用户类型。为了使软件更易于访问,这些软件的供应商有时会将代码、功能和脚本隐藏在块中,这些块在2D可视界面中以符号形式显示。通过添加多个块并将它们互连,将创建一个框图,该框图表示以2D呈现的仿真模型。运行仿真之后,输出可以2D图形的方式显示,以帮助分析。在这样的系统中,物理模型的表示和与物理模型的相关数据之间存在鸿沟。例如,尽管人们可以访问并绘制作用在汽车车轮上的力,但是没有任何汽车3D模型可以使其车轮转动。在汽车工业中,可以互连并仿真不同的零件,但是在设计汽车时将放弃这些仿真。这种仿真旨在研究有关产品的抽象信息,并且主要依赖于微分方程。由于用户需要物理和数学方面的高级知识,因此此类编程系统只能由经过培训的人员(例如工程师或研究人员)使用。

现在,现代科学和公司项目是多学科的、具有协作性、全球性、高度复杂性。有许多大型的多学科项目计划将大量公司和公共实体重组在一起(虚拟生理人类项目、人脑项目、BRAIN计划)。在此类项目中,只有一小部分参与者具有创建模型和仿真的技能。大多数参与者都是其所在的高度专业领域的专家,他们很难与其他领域的专家交流他们的知识或将他们的知识整合到一个巨大的凝聚力模型中。

因此,需要一种改进的处理单元架构来改善编程方法。

发明内容

根据第一个广泛的方面,提供了一种处理单元设备,包括:至少一个控制单元,其用于控制所述处理单元设备的操作;以及变换逻辑单元,其包括至少一个与所述至少一个控制单元要执行的变换相关联的变换块,所述变换包括要应用于包含在输出域中的输出位置的效果,所述至少一个变换块中的每一个包括效果块和外场块,所述效果块包括至少一个第一存储单元,用于在其上存储与所述效果有关的信息,而所述外场块包括至少一个第二存储单元,用于在其上存储与所述输出位置有关的信息。

在一个实施例中,所述至少一个控制单元被配置为进一步使用包括定义所述变换的参数的变换数据的变换表单指令集来执行所述变换。

在一个实施例中,所述至少一个控制单元被包括在所述变换逻辑单元中。

在一个实施例中,所述至少一个控制单元被包括在所述至少一个变换块之一中。

在一个实施例中,所述至少一个控制单元包括多个控制单元,并且所述至少一个变换块包括多个变换块,所述多个控制单元中的每一个被包括在所述多个变换块中的相应一个中。

在一个实施例中,所述至少一个控制单元包括:被包括在所述效果块中的至少一个第一逻辑单元和被包括在所述外场块中的至少一个第二逻辑单元。

在一个实施例中,所述至少一个第一逻辑单元和所述至少一个第二逻辑单元包括算术逻辑单元和逻辑门之一。

在一个实施例中,所述至少一个控制单元还包括:被包括在所述变换逻辑单元中的中央单元。

在一个实施例中,所述至少一个控制单元可连接到外部存储器。

在一个实施例中,有关所述输出域的信息被存储在所述外部存储器上。

在一个实施例中,所述处理单元设备还包括内部存储器。

在一个实施例中,有关所述输出域的信息被存储在所述内部存储器中。

在一个实施例中,有关所述输出域的信息被存储在一些所述第一存储单元和一些所述第二存储单元中的至少一个上。

在一个实施例中,所述至少一个第一存储单元和所述至少一个第二存储单元包括寄存器。

在一个实施例中,所述至少一个变换块中的每一个还包括内场块,所述内场块包括至少一个第三存储单元,用于在其上存储与包含在输入域中的输入位置有关的信息。

在一个实施例中,所述至少一个控制单元包括多个控制单元,并且所述内场块包括所述多个控制单元中的至少一个。

在一个实施例中,所述至少一个变换块中的每一个还包括:

内场作用域块,其包括至少一个第四存储单元,用于在其上存储与定义所述输入域的子空间的输入作用域有关的信息;以及

外场作用域块,其包括至少一个第五存储单元,用于在其上存储与定义所述输出域的子空间的输出作用域有关的信息。

根据另一广泛的方面,提供了一种处理单元设备,包括至少一个控制单元,其用于控制所述处理单元设备的操作;以及变换逻辑单元,其包括至少一个与所述至少一个控制单元要执行的变换相关联的变换块,所述变换包括通过来自包含在输入域中的输入位置的信息修改后的效果,所述至少一个变换块中的每一个包括效果块和内场块,所述效果块包括至少一个第一存储单元,用于在其上存储与所述效果有关的信息,而所述内场块包括至少一个第二存储单元,用于在其上存储与所述输入位置有关的信息。

在一个实施例中,所述至少一个控制单元被配置为进一步使用包括定义所述变换的参数的变换数据的变换表单指令集来执行所述变换。

在一个实施例中,所述至少一个控制单元被包括在所述变换逻辑单元中。

在一个实施例中,所述至少一个控制单元被包括在所述至少一个变换块之一中。

在一个实施例中,所述至少一个控制单元包括多个控制单元,并且所述至少一个变换块包括多个变换块,所述多个控制单元中的每一个被包括在所述多个变换块中的相应一个中。

在一个实施例中,所述至少一个控制单元包括:被包括在所述效果块中的至少一个第一逻辑单元和被包括在所述内场块中的至少一个第二逻辑单元。

在一个实施例中,所述至少一个第一逻辑单元和所述至少一个第二逻辑单元包括算术逻辑单元和逻辑门之一。

在一个实施例中,所述至少一个控制单元还包括:被包括在所述变换逻辑单元中的中央单元。

在一个实施例中,所述至少一个控制单元可连接到外部存储器。

在一个实施例中,有关所述输入域的信息被存储在所述外部存储器上。

在一个实施例中,所述处理单元设备还包括内部存储器。

在一个实施例中,有关所述输入域的信息被存储在所述内部存储器中。

在一个实施例中,有关所述输入域的信息被存储在一些所述第一存储单元和一些所述第二存储单元中的至少一个上。

在一个实施例中,所述至少一个第一存储单元和所述至少一个第二存储单元包括寄存器。

在一个实施例中,所述至少一个变换块中的每一个还包括外场块,所述外场块包括至少一个第三存储单元,用于在其上存储与包含在输出域中的输出位置有关的信息。

在一个实施例中,所述至少一个控制单元包括多个控制单元,并且所述输出块包括所述多个控制单元中的至少一个。

在一个实施例中,所述至少一个变换块中的每一个还包括:

内场作用域块,其包括至少一个第四存储单元,用于在其上存储与定义所述输入域的子空间的输入作用域有关的信息;以及

外场作用域块,其包括至少一个第五存储单元,用于在其上存储与定义所述输出域的子空间的输出作用域有关的信息。

根据进一步广泛的方面,提供了一种计算机实现的用于编程的方法,包括:接收变换,所述变换至少包括识别包含在输出域中的表单和要应用于所述表单的效果的输出位置;从所述输出域中检索与所述输出位置的输出匹配;将所述效果应用于所检索到的输出匹配,从而获得修改后的输出匹配;以及输出所述修改后的输出匹配。

在一个实施例中,所述输出所述修改后的输出匹配的步骤包括显示所述输出域和所述输出域内的所述修改后的输出匹配的图形表示。

在一个实施例中,所述方法还包括显示用户图形界面,所述用户图形界面包括用于表示输出域的第一部分和用于显示所述变换的图形表示的第二部分,所述输出修改后的输出匹配包括在所述用户图形界面的所述第一部分内显示所述修改后的输出匹配。

在一个实施例中,所述变换还包括:定义所述变换的参数的变换数据;所述将所述效果应用于所检索到的输出匹配是使用所述变换数据来执行的。

在一个实施例中,所述变换还包括输入位置,所述方法还包括:从输入域中检索与所述输入位置的输入匹配,所述将所述效果应用于所检索到的输出匹配是使用与所检索到的输出匹配相关联的信息来执行的。

在一个实施例中,所述方法还包括显示用户图形界面,所述用户图形界面包括用于表示所述输出域的第一部分、用于定义所述效果的第二部分以及用于表示所述输入域的第三部分。

在一个实施例中,所述方法还包括:

在所述图形用户界面的所述第三部分中显示所述输入位置;

在所述图形用户界面的所述第二部分中显示所述效果的图形表示;以及

在所述图形用户界面的所述第一部分中显示所述输出位置。

在一个实施例中,所述方法还包括:接收输入作用域和输出作用域中的至少一个,所述输入作用域定义所述输入域的子空间,并且所述输出作用域定义所述输出域的子空间,所述输入匹配从所述输入域的所述子空间中选择,并且所述输出匹配从所述输出域的所述子空间中选择。

在一个实施例中,所述方法还包括:显示用户图形界面,所述用户图形界面包括用于表示所述输出域的第一部分、用于定义所述效果的第二部分、用于表示所述输入域的第三部分、用于显示所述输出作用域的第四部分,以及用于显示所述输入作用域的第五部分。

在一个实施例中,所述方法还包括:

在所述图形用户界面的所述第三部分中显示所述输入位置;

在所述图形用户界面的所述第二部分中显示所述效果的图形表示;

在所述图形用户界面的所述第一部分中显示所述输出位置;

在所述图形用户界面的所述第四部分中显示所述输出作用域的图形表示;以及

在所述图形用户界面的所述第五部分中显示所述输入作用域的图形表示。

根据又一广泛的方面,提供了一种用于编程的系统,所述系统包括通信装置、存储有的语句和指令的存储器,以及被配置为执行上述方法的步骤的处理单元。

根据又一广泛的方面,提供了一种计算机程序产品,包括上面存储有计算机可执行指令的计算机可读存储器,当被计算机执行时,所述计算机可执行指令执行上述方法的步骤。

根据又一广泛的方面,提供了一种计算机实现的用于编程的方法,包括:接收变换,所述变换至少包括识别表单和要应用于所述表单的效果的输入位置;从所述输入域中检索与所述输入位置的输入匹配;使用与所述输入匹配相关联的信息来修改所述效果,从而获得修改后的效果;以及输出所述修改后的效果。

在一个实施例中,所述输出所述修改后的效果的步骤包括显示所述修改后的效果的图形表示。

在一个实施例中,所述方法还包括显示用户图形界面,所述用户图形界面包括用于表示所述输入域的第一部分和用于显示所述变换的图形表示的第二部分,所述输出所述修改后的效果包括在所述用户图形界面的所述第二部分中显示所述修改后的效果。

在一个实施例中,所述变换还包括定义所述变换的参数的变换数据,所述修改所述效果是使用所述变换数据来执行的。

在一个实施例中,所述变换还包括包含在输出域中的输出位置。

在一个实施例中,所述方法还包括显示用户图形界面,所述用户图形界面包括用于表示所述输出域的第一部分、用于表示所述修改后的效果的第二部分,以及用于表示所述输入域的第三部分。

在一个实施例中,所述方法还包括:在所述图形用户界面的所述第三部分中显示所述输入位置;

在所述图形用户界面的所述第二部分中显示所述修改后的效果的图形表示;以及

在所述图形用户界面的所述第一部分中显示所述输出位置。

在一个实施例中,所述方法还包括:接收输入作用域和输出作用域中的至少一个,所述输入作用域定义所述输入域的子空间,并且所述输出作用域定义所述输出域的子空间,所述输入匹配从所述输入域的所述子空间中选择。

在一个实施例中,所述方法还包括:显示用户图形界面,所述用户图形界面包括用于表示所述输出域的第一部分、用于表示所述修改后的效果的第二部分、用于表示所述输入域的第三部分、用于显示所述输出作用域的第四部分,以及用于显示所述输入作用域的第五部分。

在一个实施例中,所述方法还包括:

在所述图形用户界面的所述第三部分中显示所述输入位置;

在所述图形用户界面的所述第二部分中显示所述修改后的效果的图形表示;

在所述图形用户界面的所述第一部分中显示所述输出位置;

在所述图形用户界面的所述第四部分中显示所述输出作用域的图形表示;以及

在所述图形用户界面的所述第五部分中显示所述输入作用域的图形表示。

根据又一广泛的方面,提供了一种用于编程的系统,所述系统包括通信装置、存储有的语句和指令的存储器,以及被配置为执行上述方法的步骤的处理单元。

根据又一广泛的方面,提供了一种计算机程序产品,包括上面存储有计算机可执行指令的计算机可读存储器,当被计算机执行时,所述计算机可执行指令执行上述方法的方法步骤。

为了本描述的目的,表单应该被理解为可以是以下项的元素或元素的集合:诸如2D对象或3D对象之类的对象、文本、数学方程式、变换、表单的集合、变换的集合、表单和变换的集合、对象表示、集、集的集合、动画序列等。表单的示例包括以下项的表示:汽车、生物有机体猫、分子和原子、树木的集合、符号、变换等。应当理解,表单的集合也是表单。表单的其他示例包括3D或4D坐标系中的3D网格、多维矢量、张量、人工神经网络,以2D或3D呈现的人工神经网络、表格、数组、3D坐标系中的体素、连续结构(诸如形状和实线)的表示、物理对象、符号、由像素构成的符号、单词、脚本、代码、数字、函数、算法、方程、神经网络、任何类型的数据(例如:图形、视觉、声音、数字、图像、文本、距离、度量、时间等)、数据结构、文件名、z缓冲区内容、存储内容、存储地址、拓扑、内存地址、表单对象、表单对象名称、带有变量的标记或表示形式、表单对象集、变换、变换名称、带有其变量的表示以及变换集等。

输入域应当理解为与输入位置关联的表单的集合。输入位置应当理解为在输入域中选择的至少一个表单。输入作用域应当理解为输入域的子空间,变换可以从该子空间中获取数据,即它将信息提取限制到输入域的特定子集/部分。输入域的该子集/部分可以表示为表单,集(具有并、反和交运算符)、集合、区域、区间、不等式和等式。在不等式和等式的情况下,可以理解,它们的解的集合构成了输入域的子集/部分。

输出域应当理解为与输出位置相关联的表单的集合。输出位置应当理解为需要在输出域中选择的至少一个表单。输出位置可以看做有关在输出域的何处应用与变换相关联的效果是指示,或者可以看做应该被替换、被添加到、被添加到其旁边或被修改的输出域的表单的标识。输出作用域应当理解为可以应用变换的输出域的子空间,即,它将变换的应用限制到输出域的特定子集/部分。输出域的该子集/部分可以表示为表单,集(具有并、反和交运算符)、集合、区域、区间、不等式和等式。在不等式和等式的情况下,可以理解,它们的解的集合构成了输入域的子集/部分。

效果应当理解为全新的表单或由输入位置、输出位置或输入和输出位置的一部分的表单构成的表单。例如,一种效果可能会更改在输出位置中定义的表单的属性,例如更改表单的形状。在另一示例中,效果可以将表单添加到在输出位置中定义的表单。

变换数据是指用于与变换相关联的效果的一组信息/参数(次数、名称、表单的集合等)。

变换至少由效果和输出位置(可以选择性地包括输出作用域)和/或输入位置(可以选择性地包括输入作用域)组成。变换可以进一步包括变换数据。在一个实施例中,变换由六个部分组成:输入作用域、输入位置、效果、输出位置、输出作用域和变换数据。

输入位置连接到输入域,而输出位置连接到输出域。在一个实施例中,输入域可以对应于输出域,从而存在单个域,并且输入位置和输出位置都连接到该单个域。

在一个实施例中,本发明的方法和系统可用于创建动态模型,这些动态模型由被应用变换序列和/或并行变换序列的表单组成。可以将静态或动态模型视为应用变换序列的结果。应当理解,可以使用本发明的系统和方法对世界上任何观察到的变化进行建模。

系统应当理解为表单的集合。通常,系统更确切地说是其中向表单应用一系列变换的表单的集合。而且,系统也被认为是表单。

在一个实施例中,系统包括时间线,使得在应用变换之后,系统的时间线推进。应当理解,时间线不一定指时间,也可以理解为在应用变换时采取的步骤。在一个实施例中,时间线可以与现实时钟或虚拟时钟同步。

与诸如冯·诺依曼(Von Neumann)处理设备之类的现有技术处理设备相比,可以在虚拟机上再现的本发明的变换处理单元设备及其架构具有至少一些以下优点。这些优点与处理速度、能耗、存储大小、计算准确性、精度、保真度和/或可扩展性有关。此外,本发明的变换处理单元架构为高性能计算中的多个挑战带来了新颖的解决方案。

有趣的是,本发明的基于变换块的变换处理单元架构可用于模拟不确定的图灵机。例如,对变换块的修改可以触发其他多个变换块(或分支),这些分支接着又触发其他分支。这提供了本发明的变换处理单元架构如何进行多线程,甚至将每个线程进一步拆分为其他线程的示例。

由于其同质化的构造(几乎仅由变换块组成),变换处理单元可以轻松地通过其他多个变换处理单元进行扩展,而不会遇到与异构设备相关的互连问题。在这种变换处理单元架构中,扩展计算机的计算能力相当于将更多的变换处理单元连接在一起。

在一个实施例中,可以使变换块承载基于代理的子处理器的理念,其中每个变换块被理解为行为就像自主代理,其基于所在环境起作用并做出反应以对整体计算结果做出贡献。

在一个实施例中,可以利用内部时钟来实现本发明的变换处理单元设备的架构。

在另一实施例中,例如在异步处理器的情况下,本发明的变换处理单元设备的架构提供了无时钟处理能力,进而实现了功效、响应性和鲁棒性。

本发明的变换处理单元设备的架构可以在机器学习和人工神经网络的上下文中使用。在本发明的变换处理单元的架构的虚拟机实现中已经证明,可以创建人工神经网络和神经网络系统,这些网络和系统可以通过训练进行推理。这意味着机器学习算法可以通过变换和表单进行设计和处理,因此可以直接在处理器上部署(甚至训练)。

处理器上的人工神经网络可用于完成多个内部优化,以提高速度并节省存储空间。特别地,在处理器上,可以使用自动编码器来压缩数据,并且可以部署预训练人工神经网络,该网络通过训练可以表示或逼近复杂功能或操作。变换处理单元的一部分可预留给人工神经网络或机器学习算法表示,该算法表示可用于处理和执行匹配,或用于完成将操作分派到不同计算管道以实现计算加速的分类。此外,这还可以允许变换处理单元通过各种机器学习算法高速处理外部数据,而不仅限于神经网络。

在一个实施例中,可以将表单和变换的系统设计为创建仿真。例如,本发明的变换处理单元设备可用于通过使用以下变换来仿真3D跳动的心脏。

-收缩细胞的变换(效果:收缩的细胞,外场:细胞);以及

-向该细胞的相邻细胞发送信息的变换(效果:收缩的细胞+收缩的相邻细胞,外场:收缩的细胞+相邻细胞)。

在细胞收缩之后,第二变换将收缩连续传播到所有其他连接的细胞,从而导致心跳。将根据心脏磁共振图像产生的3D数据编码到处理器上,并借助按照上述原理编码的变换来运行处理器可以在微芯片上提供3D心脏仿真。

本发明的变换可以为某些问题提供数据异构解决方案。许多现代微处理器通常包含一个或多个算术逻辑单元和浮点单元。它们旨在有效地对数字执行算术计算。本发明的变换处理单元允许直接在处理器上对表单和其他类型的结构化数据执行计算,并且可以并行执行或不并行执行算术运算。这可以允许以处理器速度处理结构化数据,并允许用户或软件定义直接在处理器上运行的新数据类型。

由于其动态和同质结构,可以由本发明的实施例的变换处理单元执行变换和表单的即时和提前编译。特别是,变换-表单指令集的提前编译允许创建可以在目标机器本地运行的机器代码,从而可以提高执行速度,节省磁盘空间等。已经发现,动态语言的提前编译使得速度显著提高(16倍以上)。而且,即时编译可以通过编译到机器代码中经常使用的部分来执行优化。由于变换和表单具有通用结构,因此在执行变换的同时,此类优化机会可能会很多。

由于变换和表单可以表示任何领域中的模型、方法和计算,因此可以将来自不同领域的多个不同模型变换为由表单和变换构成的单个系统。在该系统内,模型之间的信息(例如来自不同科学领域的信息)可以高速交换。如果每个模型是在本发明的架构之外实现的,则在交换信息之前,在每次交换模型之间的信息时需要用于变换信息的变换步骤,这样显著增加了计算时间。另一方面,在使用本发明的变换处理单元架构时可以避免这样的问题。

科学程序执行时间的主要部分通常是花在处理循环上。已知循环变换可提高不同类型循环的执行速度。本发明的变换处理单元变换可用于表示循环。与其他编程语言相比,所编写的变换代码占用较少的内存或磁盘空间。此外,变换本身可以通过其他变换修改,从而将指令集呈现为高阶系统。因此,可以按照与循环变换类似的方式修改变换,其优点在于,允许许多新型优化并提供控制优化的方式。这与常见的现代编译器通常提供的少量循环优化相反。

在一个实施例中,变换提供了通过使用局部变换来执行设计以及基于对真实世界系统的直接观察来设计模型的机会。换句话说,变换允许有效地执行基于代理的仿真,其中局部规则会产生整体效果。这与通过对整体方程求解来确定解以及局部信息和行为的方式形成对比。

例如,当设计虚拟心脏时,本发明的最新技术在于使用高阶有限元方法和复微分方程。寻找整体微分方程的解并使用有限元方法需要昂贵的计算。

实际上,心脏的心肌细胞并不依赖于复方程,而仅在相邻细胞收缩时才收缩。如上所述,可以使用一组变换来表示当相邻细胞收缩时的细胞收缩,从而可以更准确地对现实进行建模并提高仿真精度和速度。因此,变换允许绕过与对整体微分方程求解和应用有限元方法有关的昂贵计算和逼近。

变换块及其与表单数据结构的交互表示本发明的变换处理单元架构的主要组件。数据的所有处理都依赖于可以通过单个命令采用、修改和移动数据的变换。通过单次变换,可以匹配、计算大量数据并将其置于其它地方。由于变换命令自然地收集和处理同质数据结构的数据,因此可以轻松地在虚拟机配置中的GPU、多个GPU、多个CPU和处理核心上并行地处理该数据。特别地,可以并行地通过一个步骤计算被标记为要应用n次的变换。可以将变换发送到处理计算的队列。可以将独立的变换分别发送到不同的队列,从而实现更大的并行计算。

在以虚拟机配置运行本发明架构的机器上,由于所有异构数据可被编写为表单,因此通常在单个线程上处理的数据可以在此处的变换处理单元的实施例使用变换的同时并行地处理。例如,在具有CPU和GPU的计算机上,当在虚拟机配置中使用本发明的架构时,与使用传统架构处理的相同数据相比,通过使用变换处理单元执行变换而处理的数据的处理速度可以快15到100倍。

变换会收集与输入位置的匹配,并且每个匹配可以并行地处理。然后,可以使用每个匹配(可以由多个输入位置组件组成)计算效果和输出位置(每个位置包含多个子组件)。然后,同时收集和修改输出位置匹配。此外,如果需要并行地应用n次变换,则可以并行地应用n个相同的变换。此外,还将同时应用可以并行地应用的多个不同变换。

因此,通过一种方式编写的表单数据和变换命令允许将尽可能多的处理传递到GPU、并行设备或Zetane Machine,从而使速度提高多达1000倍。

本发明的架构允许模块化。被编写为表单和变换的模型都可以保存/导出为模块。然后模块可以在其他更大的模型中使用和重用,从而促进数据交换和协作。可以将模块和模型存储在内存中,其它模块通过使用内存地址而非数据副本来访问这些模块和模型以进行处理。这允许提高访问和处理速度。模块通过其内存地址实现互连可以减少存储空间的使用,还可以降低机器的能耗。

在一个实施例中,能够通过变换将任何领域的概念表示为表单和处理表单(并行或不并行地,作为机器代码)允许精简和加速设计和计算。

表单和变换的可视化表示提供了对数据的更深入的了解,并使构建和设计高级模型更加容易。能够有效地表示变换和数据允许用户与计算和数据进行更深入、更直观的交互。特别是,拥有“人机回圈”可以实现重要的优化,而如果没有变换和表单的可视化表示,就不可能发现这些优化。

附图说明

当结合附图阅读以下详细描述时,本发明的其他特征和优点将变得显而易见,其中:

图1是示出根据实施例的包括变换控制单元和变换逻辑单元并且可连接到外部存储器的变换处理单元的框图;

图2是示出根据实施例的包括变换控制单元、变换逻辑单元和内部存储器的变换处理单元的框图;

图3是示出根据实施例的包括多个变换块的变换逻辑单元的框图;

图4是示出根据实施例的包括多个互连的变换块的变换逻辑单元的框图;

图5是示出根据实施例的包括内场块、效果块和外场块的变换块的框图;

图6是示出根据实施例的包括内场块、内场作用域块、效果块、外场作用域块和外场块的变换块的框图;

图7至11示出来了根据实施例的包括多个互连的变换块的变换逻辑单元对输入的处理;

图12是示出根据实施例的用于执行变换的方法的流程图;

图13是根据实施例的用于执行图12的方法的系统的框图;

图14示出了根据实施例的包括输入位置、输入作用域、效果、输出位置、输出作用域和变换数据的变换;

图15a和图15b示出了根据实施例的在3D环境中跟随定向三角形的矩形框;

图16是在其相关联的变换数据中提供feed(进给)的变换的示例性图形表示;

图17示出了用于创建三个点的示例性变换;

图18示出了用于创建实线的示例性变换;

图19示出了变换的多次应用的一般化的示例;

图20示出了其中进给中具有多个变量的示例性变换;

图21示出了被设计为逐个堆叠点的示例性变换;

图22示出了被设计为创建连续正方形的示例性变换;

图23示出了被设计为创建连续三角形的示例性变换;

图24示出了被设计为创建加速火箭的示例性变换;

图25示出了被设计为实现火箭的相对位移的示例性变换;

图26示出了被设计为使火箭移动七次的示例性变换;

图27示出了被设计为利用插补使火箭移动七次的示例性变换;

图28示出了创建插补的方式的示例性定制;

图29示出了绝对位置的示例性连续变换;

图30示出了相对位置的示例性连续变换;

图31示出了用于创建火箭的连续相对位移的示例性变换;

图32示出了用于创建n个元素的向量的示例性变换;

图33示出了用于创建3×3矩阵的示例性变换;

图34示出了根据第一示例的包括两部分效果的变换;

图35示出了根据第二示例的包括两部分效果的变换;

图36示出了包括进给和两部分效果的示例性变换;

图37示出了示例性离散变换;

图38a、38b和38c示出了根据实例的在四面体的面上添加四面体;

图39、40和41示出了根据示例的被设计为用三角形替换段的变换及其应用;

图42和43示出了根据第二示例的被设计为用三角形替换段的变换的应用;

图44示出了根据实施例的表示两个互连神经元的变换的域;

图45示出了要在图44所示的域内应用的第一示例性变换;

图46示出了要在图44所示的域内应用的第二示例性变换;

图47至49示出了要在图44所示的域内应用的第三示例性变换;

图50示出了要在图44所示的域内应用的第四示例性变换;

图51示出了突触间隙的示例性模型;

图52示出了用于对图51的突触间隙中的10种神经递质的释放进行建模的示例性变换;

图53示出了根据实施例的具有可视地表示输出作用域的矩形框的图51的突触间隙的模型;

图54至57示出了突触间隙中神经递质的释放以及它们被神经受体吸收的情况;

图58和59分别示出了根据实施例的用于创建石墨烯片的变换和该变换的应用结果;

图60、61和62示出了根据实施例的使用变换来创建CO2收集器的情况;

图63和64示出了根据实施例的手动旋转卫星的情况;

图65示出了示例性自动信号查找器变换;

图66示出了键盘激活的示例性卫星旋转;

图67示出了通过按钮执行的示例性卫星旋转;

图68示出了用于移动汽车的第一示例性变换;

图69示出了用于移动汽车的第二示例性变换;

图70和71示出了根据实施例的里程表的创建;

图72和73示出了根据实施例的相同变换的两个不同的视觉表示;

图74示出了根据实施例的用于创建变换的图形用户界面;

图75至79示出了根据实施例的用于创建四面体的图74的图形用户界面的使用;

图80示出了根据实施例的按照图75至79所示的步骤获得的四面体;

图81示出了根据实施例的按照图75至79所示的步骤获得的复合分形;

图82至84示出了根据实施例的具有输入位置、效果和输出位置的变换的使用;

图85至88示出了根据实施例的在连续应用图83所示的变换之后获得的模型;

图89示出了根据实施例的动态地改变输入位置匹配的变换;

图90至91示出了具有不同作用域的示例性变换;

图92示出了根据实施例的通过应用图91的变换获得的四面体;

图93示出了根据实施例的线段;

图94示出了根据实施例的用于旋转图93的线段的变换;

图95示出了根据实施例的在用户图形界面内输入变换将被应用的次数的情况;

图96示出了根据实施例的应用图95的变换的结果;以及

图97示出了根据实施例的呈现一系列记录的变换的界面。

请注意,在所有附图中,相似的特征由相似的参考标号标识。

具体实施方式

本发明的实施例涉及用于处理异构数据的变换处理单元。在一个实施例中,本发明的架构允许实现统一的通用处理器。使变换处理单元直接与输入和输出交互并且直接在变换块中进行存储具有一些优点。寄存器是具有最快响应时间的存储单元,可以直接在变换块内访问。这允许简化性能非常出色的计算管道,子该管道中,输入数据也直接***变换块,该变换块由其他变换块进行高速处理,最终几乎直接将数据输出到输出设备。

在下文中,描述了变换处理单元的计算机架构,该架构可实现视觉编程以及高性能计算和仿真。该计算机架构描述了一种适于高速处理异构数据的处理单元设备。

使用本发明的变换处理单元设备,用户可以将效果应用于域中存在的表单。为了将效果应用于表单,创建了变换。变换至少包括要应用于表单的效果,定义应在何处应用效果的输出位置以及可选的变换数据。备选地,变换至少包括效果、定义该效果可从何处获取信息的输入位置以及可选地包括变换数据。下面描述的具有适合于执行变换的架构的处理单元设备在下文中被称为变换处理单元设备。

图1示出了包括变换处理单元12和变换表单指令集14的变换处理单元设备10的一个实施例。变换处理单元设备10与用于存储数据、语句和/或指令的外部存储器或存储单元16通信。应当理解,变换处理单元10还包括用于接收和发送数据的输入和输出装置。

变换处理单元12包括连接在一起的变换控制单元16和变换逻辑单元18。

变换控制单元16被配置为协调数据序列移入、移出变换处理单元设备10的组件和子组件以及在这些组件和子组件之间的移动。

变换逻辑单元18通过执行由指令指定的基本算术、逻辑、控制和输入/输出(I/O)操作来包括计算机程序的指令。

变换逻辑单元18被配置为存储有关变换的所有信息。在一个实施例中,变换逻辑单元18包括控制电子电路(即控制单元),其通过执行由指令指定的基本算术、逻辑、控制和输入/输出操作来指导与变换相关的指令。

变换表单指令集14包括存储在其上的所有与变换相关的数据,并且可以由变换处理单元12访问。变换表单指令集14包括用于数据处理、变换、控制流程和复杂操作的指令。所描述的一些操作是匹配、比较、变换应用、替换、获取、复制、叠加、添加、命名、变换的并行和串行序列、变换的顺序和应用时间、进给和插补。变换表单指令不需要与变换处理单元12分离,而是可以被编码在保留的变换块中,专用寄存器中,存储单元中,内存中或磁盘上。此外,它也可以由电子电路构建。

尽管变换处理单元设备10可连接到外部存储器20,但是图2示出了包括内部存储器32的变换处理单元设备30的一个实施例。变换处理单元设备30包括变换处理单元34和变换表单指令集14。变换处理单元34包括变换控制单元16、变换逻辑单元18和用于存储数据、语句和/或指令的内部存储器或存储单元32。

如下所述,变换逻辑单元18的架构可以变化,只要它包括与变换相关的所有信息即可。

图3示出了变换逻辑单元40的架构的一个实施例。变换逻辑单元40包括多个变换块42a、42b、......、42n,每个变换块用于存储与各个变换相关的所有信息。

在所示的实施例中,每个变换块42a、42b、......、42n包括相应的效果块44a、44b、......、44n和相应的外场或输出位置块46a、46b、......、46n。每个效果块44a、44b、......、44n包括多个存储单元或寄存器48,用于存储与效果块44a、44b、......、44n相关联的相应效果的相关数据,并且每个外场块46a、46b、......、46n包括多个存储单元或寄存器48,用于存储与外场块46a、46b、......、46n相关联的相应输出位置的相关数据。应当理解,存储单元48被配置为存储数据,并且可以由要存储在其上的多个位定义。

在一个实施例中,仅一些变换块42a、42b、......、42n可以与仅一些其他变换块42a、42b、......、42n通信。在另一实施例中,一些变换块42a、42b、......、42n彼此独立,并且可以不与任何其他变换块42a、42b、......、42n通信。在另一实施例中,变换块42a、42b、......、42n全部互连,以便任何变换块42a、42b、......、42n都可以与任何其他变换块42a、42b、......、42n通信,如图4所示。

图4示出了变换逻辑单元50,其包括多个变换块52a、52b、52c、52d、......、52m、52n,每个变换块包括相应的效果块和相应的外场块。每个变换块52a、52b、52c、52d、......、52m、52n直接连接到所有变换块52a、52b、52c、52d、......、52m、52n,以便任何变换块52a、52b、52c、52d、......、52m、52n的输出可以是任何其他变换块52a、52b、52c、52d、......、52m、52n的输入。

在一实施例中,变换块还可以包括至少一个控制单元,如图5所示。

图5示出了变换块60的一个实施例,其包括内场或输入位置块62、效果块64、外场或输出位置块66,以及基于指令指导操作的控制单元68。内场块62包括多个存储单元70和多个逻辑单元72。效果块64和外场块66具有与内场块62相似的架构:效果块64包括多个存储单元74和多个逻辑单元76,外场块66包括多个存储单元78和多个逻辑单元80。逻辑单元72、76、80可以是算术逻辑单元、变换逻辑单元、对变换逻辑单元的另一部分的引用等。

尽管变换块60既包括内场块62也包括外场块66,但是应当理解,可以省略内场块62,以便变换块60可以仅包括效果块64和外场块66。类似地,可以省略外场块66,以便变换块60可以仅包括效果块64和内场块62。

在一实施例中,可以省略控制单元68。同样在另一实施例中,可以省略逻辑单元72、76和80。

尽管在所示的实施例中,逻辑单元72、76和80分别被包括在内场块62、效果块64和外场块66中,但是本领域技术人员应当理解,逻辑单元72、76和80可以位于变换块60内的内场块、效果块和外场块62、64和66之外。

还应当理解,内场块62、效果块64和外场块66中的至少一个可以不包括逻辑单元,而内场块62、效果块64和外场块66中的至少一个包括逻辑单元。

图6示出了变换块100的一个实施例,其包括:内场或输入位置作用域块102、内场或输入位置块104、效果块106、外场或输出位置作用域块108、外场或输出位置块108、控制单元112,该控制单元基于指令和存储器114来指导操作。内场作用域块102包括多个存储单元120和多个逻辑单元122。内场块104包括多个存储单元124和多个逻辑单元126。效果块106包括多个存储单元128和多个逻辑单元130。外场作用域块108包括多个存储单元132和多个逻辑单元134。外场块110包括多个存储单元136和多个逻辑单元138。存储器114包括多个存储单元140。应当理解,变换块100足以执行包括输入位置、输入作用域、效果、输出位置和输出作用域的变换。

逻辑单元72、122、126、130、134、138可以是算术逻辑单元,变换逻辑单元、对变换逻辑单元的另一部分的引用等。

再次参考图1和2,变换表单指令集14在其上存储有变换数据,例如操作和复杂指令。例如,变换表单指令集14允许数据处理和存储操作,例如读取、写入和复制数据和地址或数据编码。变换表单指令集14还可以允许对变换执行的操作,例如匹配、比较、变换应用、替换、获取、复制、叠加、添加、命名等。变换表单指令集14还允许控制流操作,例如并行和串行变换应用、变换应用程序排序、控制应用次数、变换序列、时间线创建等。变换表单指令集14进一步负责复杂指令,例如进给、插补、变换寿命(其给出了开始应用变换以及停止应用变换的时间或顺序)等。

在变换块包括寄存器或诸如存储单元48之类的存储单元的实施例中,变换处理单元设备可以在变换逻辑单元之外不包括任何存储单元。例如,可以省略图2所示的存储单元32。在这样的实施例中,变换块本身可用于存储数据,例如与输入和输出域相关的所有数据,并且它们可用于快速访问存储器和存储。该方法可用于具有仅由变换块组成的变换逻辑单元,在该变换逻辑单元中,可以将变换块用作存储单元。

如上所述,可以将数据存储在寄存器、外部存储器、内部存储器等上,并且可以以不同的方式设置数据的格式以及对其进行编码。在一个实施例中,数据被编码为表单,表单针对变换处理单元设备10和变换而进行优化。表单可用于表示任何类型的数据,并且可以表示高度分层的结构。例如,包含肝脏和心脏的身体,心脏由心肌细胞组成,而细胞包含DNA,DNA由本身由原子组成的分子组成。连同允许通过变换高效处理表单的数据,可以使表单准确地表示这种分层结构。

在变换表单处理单元不包括存储器的实施例中,诸如表单之类的数据直接存储在变换块的寄存器中。在这种情况下,某些变换块可用于存储,并且具有空的内场块和外场块,而效果块可以包含诸如表单之类的数据。或者,根据访问速度,内场、外场和效果块都可以包含表单的副本。

在一个实施例中,键盘、鼠标和其他输入设备可以连接到保留或预分配的变换块。诸如监视器、VR头戴装置和其他设备之类的输出也可以连接到多个变换块以及变换块的标识号或地址。

在一个实施例中,控制单元或控制单元的一部分可以由一组保留的变换块组成。这允许针对不同类型的优化来修改处理器内部过程。

应当理解,上述变换处理单元设备被配置为执行变换,即,对根据外场位置选择的表单应用效果并使用变换数据,并且如下文更详细描述地,可选地使用包含在输入位置、输入作用域和输出作用域中的信息。

图7至11示出了使用仅包括多个变换块152a、152b、152c、152d、......、152m、152n的变换处理单元设备150来计算和处理数据的示例性过程。每个变换块152a、152b、152c、152d、......、152m、152n具有相应的控制单元154a、154b、154c、154d、......、154m、154n;相应的效果块156a、156b、156c、156d、......、156m、156n和相应的外场块158a、158b、158c、158d、......、158m、158n。变换处理单元设备150的架构是无时钟的,因此设备150对应于异步处理器设备。

变换块152a、152b、152c、152d、......、152m、152n全部互连在一起,使得每个变换块152a、152b、152c、152d、......、152m、152n可以与任何其他变换块152a、152b、152c、152d、......、152m、152n交换数据。

如图7所示,变换处理单元设备150被配置为接收输入信号并输出输出信号。输入信号可以指示例如键盘的按键的按下。

如图8所示,诸如变换块152a之类的一些变换块是空的,而诸如变换块152b、152d和152m之类的其他变换块是预定义的,并且包含有关某些变换的信息。

在本发明的示例中,键1被按下,并且变换块152a从键盘接收到键1已经被按下的信号。变换块152a的控制单元154a根据接收到的输入信号来更新效果块156a和外场块158a。在本发明的示例中,如图9所示,控制单元154a用二进制数1更新效果块156a的寄存器之一,并用表示字母K的二进制数更新外场块168a的寄存器之一。

变换块152a的控制单元154a通过向其他变换块152b、......、152n发送对效果和输出位置的值进行编码的信号来发起匹配协议。在从变换块152a接收到信号后,变换块152b、......、152n的控制单元154b、......、154n开始将外场的输入信号与其存储的值进行比较,如果存在匹配,则将存储的值更改为输入效果值。如果不匹配,则不会替换或修改存储的值。在本发明的示例中,包含在变换块152d的效果块156d中的值对应于包含在变换块152a的外场块156d中的值。因此,如图10所示,包含在效果块156d中的值变为1。应当注意,在数字电路级别上,匹配可以通过使用由多个逻辑门组成的数字比较器来完成,并且可以在没有通常的控制单元、与控制单元对应的逻辑门的情况下直接完成。此外,发送数据,接收数据以及启动指令和操作可以直接在变换块级别完成,无需使用控制单元。

然后,存在匹配的变换块152d的控制单元154d将指示其新效果值的信号发送到其他变换块152a、152b、152c、152n、152m,每个其他变换块都尝试将其外场值(即,存储在其外场块158a、158b、158c、158n、158m中的其输出位置值)与变换块152d的新效果值进行匹配。在本发明的示例中,存在变换块152m的匹配,变换块152m与具有效果2(或二进制格式的10)和外场1的变换相关联。然后,变换块152m将其效果值及其外场值发送到变换块152d,将最近更新的值1替换为2。然后,与变换块152d相关联的变换对应于具有值2的效果和外场的O。例如,新近更新的变换152d然后可以将信号发送到多个变换,这些变换负责更新监视像素值以显示数字2。在另一示例中,新近更新的变换152d也可以触发或参与额外的内部处理器计算。

尽管在上面的示例中,可能在来自变换的每次匹配尝试时只有一个匹配,但是应当理解,在每次匹配尝试时可能会出现多个匹配。如果存在多个匹配,则更新每个匹配的变换,并将继续进行计算过程,例如匹配多个其他变换数据。这允许变换处理单元设备的架构不仅是无时钟的,而且本质上是高度并行的。此外,匹配实例的数量可以呈指数地增加(5个匹配分别触发5个匹配,这些匹配本身又可以匹配5个其他变换,从而产生5、5*5、5*5*5个同时变换事件)。

在一个实施例中,变换块还可以包括内场作用域(用于存储输入作用域)和/或外场作用域(用于存储输出作用域)。在这种情况下,再次参考上面的示例,匹配协议不会将匹配信号发送到所有变换块来尝试匹配,而只会发送到所有变换块的子集。例如,来自具有效果1和外场K的变换块152a的信号只能被发送到变换块152i至152k。如果变换块152a的外场作用域或内场作用域包含要向其发送匹配信号的一系列寄存器/变换块标识(或寄存器的地址),则可以执行上述操作。这样的配置可以通过将搜索匹配的“作用域”限制到预定义的一组变换块来允许计算机架构(或定义变换块的用户)减少匹配时间或能耗。

此外,内场和/或外场作用域可以提供一种区分相似的变换块的方法。在上面的示例中,可能有不止一个变换块与具有效果1和外场K的变换匹配。可能存在具有[效果1和外场O]和[效果K和外场M]的变换,但是外场作用域可以允许将匹配仅限制到其中一个变换,例如[效果1和外场O],因为其标识被包括在外场作用域中。

发送的信号或匹配请求不仅仅保留用于外场匹配,还可以通过其他变换启动。例如,具有内场的变换块可以启动信号(或接收信号)。通过允许对内场作用域中列出的寄存器进行内场匹配,内场匹配与外场的工作方式相似。

在一个实施例中,变换块还可以具有数据部分,该数据部分包含寄存器,该寄存器具有可以被控制单元、变换本身、任何数量的其他变换或任何可能的外部设备读取和写入的数据(例如但不限于任何数量的表单或对寄存器的引用)。这样的数据的示例可以包括变换块发起匹配协议的次数,或者可通过该变换块来完成的匹配次数。

上述变换处理单元设备的架构也可以在虚拟机上再现。可以使用一个或多个GPU、内核、CPU、处理设备、计算设备和/或现场可编程门阵列(FPGA)以及CudaTM、OpenCLTM、OpenMPTM、OpenCVTM、Compute ShadersTM、多线程库、并行计算库和/或其他类型的库全部或部分地不逼近虚拟机上的架构。

使用在具有一个CPU和多个GPU的虚拟机上实现的上述架构,可以完成以下呈现的结果。除了其它方面之外,以此方式获得的虚拟机还用于训练3D人工神经网络、神经网络系统,仿真DNA复制并创建云仿真。

在下文中,描述了应用上述架构允许的变换的方法。

图12示出了用于视觉编程的方法200的一个实施例。方法200可以通过以硬件或虚拟机实现的上述变换处理设计来执行。

在步骤202,接收变换。在当前情况下,变换至少包括输入位置的标识、输出位置的标识、效果和变换数据。但是,如上所述,变换可以仅包括效果和输入位置,或者输入和输出位置,变换数据是可选的。

在步骤204,从输入域中检索输入位置。输入位置从输入域中识别至少一种表单,将从该表单中检索与变换相关的信息。在步骤206,从输出域中检索输出位置。在一个实施例中,使用从输入位置中检索的信息来从输出域中检索输出位置。输出位置定义了要应用与变换相关联的效果的输出域的子空间(即,包含在输出域中的给定表单)。

在步骤208,使用变换数据和从输入位置中检索的信息将在变换中定义的效果应用于所检索到的输出位置,从而获得修改后的输出位置。

在步骤210,输出修改后的输出位置。在一个实施例中,修改后的输出位置被存储在存储器中。在同一或另一实施例中,如下所述,修改后的输出位置的图形表示在输出域的表示中显示。在又一实施例中,修改后的输出位置可用作要执行的第二变换的输入。例如,参考图8至11,修改后的输出位置可以从其相关联的变换块152a、152b、152c、152d、......、152m、152n传输到至少另一变换块152a、152b、152c、152d、......、152m、152n。

在一个实施例中,输入位置可用于修改变换的任何部分。例如,输入位置数据可用于实例化、更新、计算或修改输出位置、变换数据、输出作用域和效果的任何部分。

在一个实施例中,变换不包括输入位置的标识和/或变换数据。在这种情况下,省略了从输入域中检索输入位置的步骤204和/或省略了检索变换数据的步骤,并且在不考虑有关输入位置和/或变换数据的信息的情况下将效果应用于输出位置。

在另一实施例中,变换不包括输出位置的标识和/或变换数据。在这种情况下,省略了从输出域中检索输出位置的步骤206和/或省略了检索变换数据的步骤,并且在不考虑有关输出位置和/或变换数据的信息的情况下应用效果。

在省略输出位置和变换数据的接收的实施例中,步骤202包括仅接收效果。然后,仅接收效果和输入位置。接着,步骤206包括在输入域内检索所接收的输入位置,即在输入域中找到所接收的输入域的匹配,并检索与所检索到的输入位置相关联的信息。步骤208包括使用与输入匹配相关联的检索信息来修改效果以获得修改后的效果。然后在步骤210输出修改后的效果。修改后的效果可以被存储在存储器(例如在效果块中)中,和/或被输出以进行显示。

在一个实施例中,步骤204还包括检索与输入位置相关联的输入作用域和/或检索与输出位置相关联的输出作用域。在这种情况下,使用与所检索到的输入作用域相关联的信息和/或与所检索到的输出作用域相关联的信息来应用效果。

在一个实施例中,方法200还包括显示用户图形界面,该用户图形界面包括用于表示输出域的第一部分和用于显示变换的图形表示的第二部分。在一个实施例中,第二部分包括用于定义输入位置的第一窗口、用于定义效果的第二窗口、用于定义输出位置的第三窗口和用于输入变换数据的第四窗口。应当理解,用户界面可以随着输出域的视觉表示而变化,并且可以在显示器上向用户显示变换的视觉表示。

在一个实施例中,输入位置显示在第一窗口中,并且效果显示在第二窗口中,而输出位置显示在第三窗口中。

如下面进一步详细说明的,用户可以绘制和编辑任何窗口的内容。

上述方法200可以被实现为包括计算机可读存储器的计算机程序产品,该计算机可读存储器在其上存储计算机可执行指令,当被计算机执行时,这些计算机可执行指令执行上述步骤。

图13示出了用于视觉编程的系统230的一个实施例。系统230包括至少一个处理单元232,例如至少一个CPU和/或至少一个GPU;通信单元234和其上存储有指令和数据的存储器236。处理单元232被配置为执行方法200的上述步骤。在一个实施例中,系统230对应于被配置为再现上述变换处理单元架构的虚拟机。

如上所述,变换可以由效果、输入位置和/或输出位置以及可选的变换数据、输入作用域和/或输出作用域组成。作为一个简单的示例,可以将输出位置视为输出域中发生变化的表单,效果显示同一表单,但是此时表单处于新的状态,例如处于新位置或具有新形状。可以将输出位置中的一张纸(或一张纸的表示),以及被揉成球的纸片视为效果。在此,变换的效果对应于将纸片揉成小球的动作。可以将此变换应用100次以堆叠100张纸,从而获得100个弄皱的纸球。

当存在时,输入位置用于从输入域的子空间(即从选自输入域的至少一个表单)中提取信息。然后基于选定的表单的信息和可选的变换数据来应用变换的效果,变换数据包括以下信息:其中包括但不限于要变换的应用编号、变换的样式和类型等。

应当理解,可以使用任何适当的方法来选择输入或输出位置。例如,可以通过以下方式***输入或输出表单:使用拖放功能从系统复制选定的表单,导入其他系统或其他系统的一部分,从其他软件或设备导入文件,使用软件功能直接创建表单,这些软件功能例如包括绘图工具、变换、图形用户界面按钮、连接到变换的图形用户界面按钮、由表单和变换定义的图形用户界面按钮等。

在一个实施例中,当自动地或根据用户的请求在变换的一部分中***表单时,表单的副本可以自动出现在变换的其他部分中。在一个实施例中,自动生成的副本可以与***的表单相同。在另一实施例中,自动生成的副本可以与***的表单不同。例如,自动生成的副本可能具有不同的透明度。然后,用户可以决定要保留、删除、替换、编辑或修改副本的哪些元素。这样可以快速构建变换和系统。系统应被理解为是表单、变换、表单的集合、变换的集合或表单和变换的集合。

图14是变换的示例性图形表示250,其中包括输入位置252、输入作用域254、效果256、输出位置258、输出作用域260和变换数据262。输入作用域允许选择输入域264的一部分,可以从该部分中选择输入位置匹配,而输出作用域允许定义输出作用域的一部分,在该部分中,可以将效果应用于位于其中的输出域266的输出位置的一部分。

在一个实施例中,可以使用以下命令/语言定义变换。

符号“:=”或文本输入部分可用于为表单、变换或域命名。

“复制/获取”可用于指定输入位置(即,在输入域中选择的表单)在应用效果之后仍保留在输入域中(复制),还是在应用变换之后从输入域中消失(“获取”)。

“添加/替换”可用于指定输出位置(即,在输出域中选择的表单)在应用变换之后,在输出域中保留(添加)还是被替换(替换)。在某些情况下,表单会相互叠加,从而允许在同一位置具有同一表单的多个副本。

“#次数”可用于指示将应用变换的次数。

“全部”可用于指示一旦每个表单在时间线的当前时刻或当前位置满足变换输入和输出位置条件时,变换便进行修改。

“始终”可用于指示变换是否总是做好应用准备,或者可以应用无限次(在某些情况下,只要满足输入和输出条件即可)。

“应用#”可用于指示要应用不同变换的顺序。当系统中存在多个变换时,被分配有最低编号的变换是接下来将要应用的变换。

“寿命参数”(未示出)可用于指示可以在多少步中应用变换,以及可以针对多少步应用变换。这些参数可以引用全局步数计数器,并指示可以对其应用变换的步长(整数或间隔)。

其他类型的变换数据(未示出)可以包括数据,例如但不限于,有关在变换在应用之后保持还是消失的指示、变换所属的组、有关应该并行地、顺序地或同时地应用变换的指示、变换的类型、变换的样式、变换的名称、限制、全局或局部轴等。

变换的激活和过程

在一个实施例中,当变换包括输入位置并且输入位置在输入域中具有匹配时,则该变换被激活并且可以被执行。如果输入位置中存在要满足的不等式条件,则在满足不等式之前,不能应用变换,即使输出位置在输出域中具有匹配也是如此。

在一个实施例中,执行变换的过程如下。

首先,搜索输入位置中定义的表单与输入域中的表单之间的匹配。找到匹配后,在输入域中选择已标识的表单。

然后,基于与在输入域中选择的表单相关联的信息,确定是否满足在输入位置或输入作用域(如果有)中定义的不等式、条件或等式。在一个实施例中,要满足的不等式和等式可以被包括在输入作用域或输出作用域(如果有)中。

通过用信息或修改后的信息替换适当的变量(或*),来用选定信息更新效果输出位置和变换数据。在这种情况下,可认为变换已被激活,并且可认为值已被初始化。

然后,选择输出域中包含的与输出位置中定义的表单匹配的表单。

接着,变换用在变换效果中定义的表单替换在输出域中选择的表单。在一个实施例中,在效果中定义的表单可以叠加到在输出域中选择的表单上。

在一个实施例中,当输入位置始终与输入域中的给定表单连接或匹配时,输入域中给定表单的更改触发上述过程的执行。在这种情况下,变换可能不包括任何输出位置,因此也不包括任何输出作用域。始终连接的表单的示例对应于以下场景:其中输入域中存在一种表单,并且在输入位置中定义了相同的表单,使得变换被设定为复制而非获取。在这种情况下,一旦检测到对输入域中存在以及在输入位置中定义的表单所做的更改,就会自动执行变换。

变换应用

当变换包括输入作用域和输出作用域时,可以如下应用变换。输入作用域和输出作用域可以是整个系统、空白、表单、表单类型、系统的子系统、系统的多维空间或系统的表单周围的多维空间(例如:3D网格边缘周围的体积)等。输入作用域提供了有关允许从何处提取信息的信息,即输入作用域定义了输入域的子空间,可以从中选择在输入位置中标识的表单。输入位置定义了可以从输入作用域中选择的表单。效果由依赖于输入作用域的选定表单的信息的表单组成。输出作用域提供有关在输出域中的何处可以应用变换的信息。通过从输出作用域中选择与输出位置相似或相等的表单来应用变换。然后,系统的选定表单将被修改、被添加、被添加到旁边、被添加到附近的分层位置或被替换为来自效果的相应表单。输出位置的表单与效果之间的对应关系可以以不同的方式表示,例如通过显示它们之间的线或在不同位置显示的数据。

具有输入位置和效果的变换可以理解为从输入域中的一组表单中选择表单,然后使用它们来构建被称为“效果”的对象。选定表单从输入域中删除或在输入域中保持不变。具有输出位置和效果的变换可以理解为从输出域中选择表单,然后添加到、替换和修改选定表单。效果中可能存在来自输出位置的表单,尤其是在将元素添加到选定表单的情况下。变换可以同时具有输入和输出表单。因此,效果可以根据输入创建,然后被应用于修改系统中的表单。

在一个实施例中,选定表单可以是对象的名称或类型标记。变换数据可以包括有关要选择标记本身还是标记的内容的指示。例如,这允许选择标记“分子”并使用与标记“分子”相关联的分子来进行使用或替换。通过一种使用指示应该选择或修改附加到特定表单的内容的记法(符号或颜色),可以将此扩展到与标记或名称不同的对象。此外,可以定义一种记法(符号或颜色)以供选择来修改不具有由该记法标识的预定结构的所有表单。例如,可以定义选择具有标记分子的表单的变换,但是该分子不具有碳原子(C)。

变换数据

变换提取信息、构建、应用和在系统中表现的方式可以由变换数据来调节。这样的变换数据的示例包括将要应用变换的次数(有限或无限)、将要应用变换的顺序、有关在变换不再被应用时是被移除还是被保留的指示、有关是否将变换应用于特定类型的所有对象的指示、有关是否表示插补步骤的指示、缩放或旋转对象的方式、以及有关是否以绝对或相对方式进行操作的指示、有关如何影响坐标系的指示、变换名称、使用变换的系统的名称、变换创建者和编辑者的名称、与使用相关的注释、本地和远程存储库、分级等。可以将变换数据分配给整个变换,但是也可以将不同的数据集分配给变换的不同部分集合。例如,可以将数据分配给由输入位置和效果组成的对,或由输出位置和效果组成的对。例如,这可用于基于某种类型的大量表单创建效果,然后应用变换以修改单个对象。

在一个实施例中,有用的变换数据类型被称为“post”和“pre”。将“post”分配给变换指示该变换将在每次应用非后变换之后才应用。这可以在3D动画中使用,以使点的网络遵循特定表单,如图15a和15b所示。例如,通过在三角形上方添加3D网格的后变换,可以使3D网格(或矩形框)遵循三角形的位置和方向。移动三角形之后,由于存在后变换,因此将船更新到三角形之后的位置。

在一个实施例中,可以将表单作为另一表单的子集***,以使子集表单解释取决于其所处的父表单。例如,可以将3D网格作为三角形的子集***,并且当三角形移动时,网格会跟随它,因为网格是根据三角形的位置来解释的。

变换的并发和序列

可以构造变换序列,并且应当理解,在这种情况下,将按顺序应用变换,使得在前一变换仍存在的情况下,不能应用下一变换。由于序列本身也是表单,因此可以为其分配数据集合。在一个实施例中,变换的序号指示接下来要应用哪个变换。变换数据中没有编号或相等序号的多个并发序列可以同时应用,也可以一个接一个地应用,具体取决于它们各自的优先级。备选地,执行顺序使用分配给每个变换的概率来确定,基于变换数据信息并根据框架的随机函数。序号可以由函数和操作给出。例如,可以使应用在两个或更多个变换之间交替。在一个实施例中,序列可以具有活动的特性,并且该序列包含的变换将在一些或每个时间线步骤中应用。在一个实施例中,域或事件的变化触发序列的检索,这些序列将通过执行它们所包含的变换来处理。

自变换和高阶变换

应当理解,对于变换可以从何处提取信息或可以将变换应用于何处没有限制。例如,可以应用变换来修改任何其他变换的任何部分、系统的数据或与变换相关联的数据。变换甚至可以提取信息或修改其自身的给定部分。这些功能为更高阶系统以及模型中的递归合并提供了机会。

时间线访问

当系统在每一步或每次更改时,可以将其先前的状态记录在存储器中以构建系统的时间线。时间线可以看作是系统的历史。类似地,可以记录系统的每个元素或表单的时间线。例如,接下来可以访问其中记录网格边缘的位置。在这种情况下,诸如效果或输出位置之类的变换的一部分不仅可以包括表单,而且可以包括在时间线中记录的该表单的先前状态。这对于创建与微分有关的建模可能很有用。例如,可以构建一个变换,如果边缘处于某个位置并且过去位于某个特定位置,它将删除该边缘。也可以使用时间线的将来,但这将需要多次运行系统或进行多次传递。例如,如果边缘位于给定的实际位置,并且将来位于某个特定位置,则可以立即将该边缘删除。在这种情况下,假定将来是在未删除边缘的情况下运行一次系统后才确定的。

下面给出了与将来时间线的访问有关的更精确的示例。如果在将来的步骤,系统中存在某个将来的表单(或处于所需状态),则可以在当前步骤S0在系统中应用变换。当可以应用这种变换时,系统继续运行系统而不应用该变换,并在指定步骤检查将来的表单是否存在于系统中。如果表单存在,则系统返回到步骤S0,应用变换并让系统运行。如果表单在将来的步骤中不在那里,则系统从那里继续运行。此技术可用于优化系统或避免系统出现负面结果。

需要访问时间线的变换可以同时访问许多不同表单的多个过去、现在和将来的步骤。

隐藏/显示、私有/公共和界面

对于每个系统,变换或表单可以被显示或隐藏和/或被选择为公共或私有的。这有助于在运行系统时隐藏不需要被看到的底层数据。例如,3D网格只能显示面,而不能显示顶点或边缘。但是,在边缘公开的情况下,应当理解,变换仍应用于隐藏的表单。基于框架的隐藏/显示和私有/公共功能,可以创建一些界面,在这些界面上,只有一些信息是公开的并且可被编辑。例如,系统可能由n个颜色为c且边长为d的等边三角形组成。可以创建呈现为三角形[n、c、d]的界面。在这种情况下,三角形[6、绿色、1/2]将代表6个绿色等边三角形,其边长为1/2。创建界面的能力也可以作为系统的原生功能包括在内。

框架的GUI功能

在一个实施例中,该系统可以包括图形用户界面(GUI),该图形用户界面包括按钮,这些按钮本身在框架内创建或者可以利用框架本身来添加。当单击GUI按钮、键盘按钮、鼠标按钮或启动输入时,可能会在系统上应用变换。这允许用户完全自定义用户界面。尽管初始GUI可以带有框架,但是用户可以添加启动不同变换或运行不同系统的按钮。有趣的是,这允许用户或开发人员创建用于虚拟现实和增强现实应用的3D GUI。本发明的变换处理单元和方法可用于创建交互式3D网站,该交互式3D网站可通过类似于Web浏览器执行操作的软件进行导航。

输入和输出数据

本发明的系统可以与其他软件或硬件连接,这些软件或硬件具有被称为实时或非实时的输入和输出表单的特殊表单。此类表单可以是可被其他软件或硬件访问的公共或私有数据。这里提供输出数据的示例。在本发明的系统内构建移动机器人的3D网格模型后,可以选择手臂关节角度作为输出表单数据。真实机器人的硬件可以访问输出表单数据以更新伺服电机角的角度。同样,来自用户身体上的不同传感器的数据可用于更新包含输入表单数据的虚拟人类生物模型。然后,该模型可以具有与用户一样的心脏或呼吸频率。

由于表单可以是许多表单的集合,因此在收到来自输入数据表单的请求之后,可以使用输出数据来服务系统或系统数据。对于下面描述的“项目网络”,这可能是有用的组件。

在一个实施例中,框架可以导入不同类型的文件,例如具有不同格式的3D网格、来自数据库和表的数据,或诸如HTML/CSS、C++TM、JavaTM和PythonTM的语言的代码。这可以是软件的原生功能,也可以是在表单和变换框架内作为系统或表单构建的解译器,其中将变换应用于文本或计算机文件以在语言之间进行翻译。

多标度

本发明的变换处理单元设备可以允许多标度(空间和时间)导航和处理。例如,在心脏模型中,可以单击一个细胞以放大该细胞的内部系统。也可以逐步放大一个细胞,通过使细胞膜透明以显示细胞的内部模型来揭示内部系统。在主系统中导入另一系统时,可以指定与包含该系统相关的系统数据的不同参数。此类数据的示例包括尺寸标度和时间标度。例如,当在心脏系统中导入心肌细胞时,必须相对于心脏和时间尺度指定细胞尺寸。与心脏级别的变换相比,细胞变换的频率要高得多。细胞中的变换为纳秒级变换,而心脏跳动为秒级变换。

在一个实施例中,每个系统或表单具有与其相关的滴答数值(整数、浮点数、双精度、有理数或实数),并且滴答数值可以被更新和修改。滴答数值有助于指示接下来应用系统中的哪些变换。这可用于调节系统和子系统中的速度和时间。

插补

在两个变换应用之间,可以添加至少一个中间变换。这被称为两个变换之间的插补。同样,一个变换可以被多个变换替换。这被称为变换的插补。可以由系统手动完成此动作,方法是***一系列变换或使用系统的原生插补函数。例如,可以使用插补函数将在z方向上使点移动1个单位的变换更改为变换序列,以使序列中的每个变换在z方向上使点移动0.01个单位。这可以增加系统的精确度。

当执行变换的插补或在两个变换之间执行插补时,用于生成插补的变换数量可以是有限的。或者,该数量可以是无限的或连续的。这允许在框架中引入和使用更抽象的连续变换概念。这与经典数学概念实线、实数、连续性和连续函数有关。插补可以借助下面描述的进给来完成。

变换的进给

在下文中,参考图16至31描述变换的进给。变换的进给是与变换相关联的变换数据的一部分。

进给由变量及其相关联的有序表单集合组成。进给可以理解为一系列数字(或对象),这些数字或对象按顺序推入变换中以创建要应用的该变换的实例。关联的集合可以是任何类型的集合,例如有限的数字集合、无限的数字集合、实数间隔、表单的集合、变换的集合、对象的序列、符号的集合、数据等。

以下是集合的示例:[0,1];[0,无穷大];]2,5];[n]={1,2,3,4,...};[0,1]U[4,12];M x N;{abd,a,cc,c,e,t,%};{1,2,3,4,5,…};{1,2,3,4.5,12.2,-15.2};{1,2,2,2,2,1,1,10,0.5,e};实数、复数、有理数和/或整数的集合;{transform1,form1,form2,a,4.3,6,pi}等等

在一个实施例中,进给由多个变量及其相应的集合组成。可能存在首先使用变量的顺序。进给中还可能具有变量需要满足的限制。在一些实施例中,限制出现在变换的输入位置中。

在某些实施例中,进给允许变换:

-将变换扩展为连续的,而不仅仅是离散的;

-创建连续的形状;

-在离散变换之间进行插补,并完美控制插补;

-访问概念连续性和强度实数;

-做微分;

-形成变换的应用次数概念;

-用作for循环或while循环;

-表示向量和多维数组甚至张量

-类似于实例化多个变换的循环,该循环类似于在面向对象的语言中实例化多个对象的循环;和/或

-通过进给进行变换。

进给应用

在一个实施例中,变换可以由输入位置、效果和输出位置,以及一个变量及其相应的有序集合的进给组成。变量可以出现变换中的任何位置以及出现任意次数(零次、有限次数或无限次数),出现的位置包括输入位置、输出位置、效果,甚至包括进给本身的变换数据。

为了应用变换,包含在变换中的变量的实例被有序集合的第一元素替换。当应用变换时,变量被集合中第二元素替换为第二个变量,然后应用第二变换,并且该过程一直进行,直到针对变量集合中的每个元素都应用了一次所有变换为止。

图17示出了第一示例,其中针对值1、2和3进行了3次变换。将变量t替换为1,并应用变换,从而在距黑点1个单元的距离处添加白点。然后,将t替换为2,并应用变换,从而在距黑点2个单位的距离处添加白点。最后,将t替换为3,并应用变换,从而在距黑点3个单位的距离处添加白点。

图18示出了被配置为创建实线的变换的示例。与图17的示例相似,通过用区间[0,2]的所有元素按顺序进给变换来创建长度为2的线。

应当理解,只有有限数量的点被显示在显示单元上。但是,如果需要,例如如果需要确定两条实线之间的交点或对象之间的碰撞点,可以访问隐藏的实点。

图19示出了应用次数的一般化。在该示例中,变量t未出现在变换中。实际上,可以写100次而不是定义进给。请注意,只要变换中不出现变量t并且关联集合中有100个元素,集合中的符号类型便不重要。特别是,包含100乘以符号“@”的集合相当于应用100次变换。

图20示出了进给中的多个变量的示例。进给中有两个变量可以生成元素网格。在一个实施例中,对进给和多维数组中的变量数量没有限制,可以创建类似于张量系数的矩阵和对象。在本发明的示例中,应当理解,选择t=1,然后选择h=1。之后,保持t=1并选择h=2,然后保持t=1并选择h=3。然后,通过取t=1和h=1再次开始该过程,直到采用了所有可能的组合。应当理解,对于两个以上的变量,遵循相同的过程。在一个实施例中,可以在变换数据中详细指示选择元素的顺序。

图21示出了其中多个点彼此堆叠的示例。

图22示出了其中进给包含用于创建普通或连续正方形的连续集合的示例性变换,而图23示出了其中进给包含用于创建普通或连续三角形的连续集合的示例性变换。

在描述三角形的情况下,在应用变换之前,需要满足变换的输入位置中的条件。此限制指示仅将线y=-x+1下方的点添加到域。

图24示出了用于使火箭加速的示例性变换。火箭的加速度取决于进给中的次数。应当理解,也可以将5t选择为函数f(t)的任何类型。

图25示出了示例性火箭相对位移。在该示例中,火箭的相对位移基于进给值1/7和函数2t定义。

在图26中,变换要求将火箭移动14个单元,但要通过7步进行插补。插补可以用图27中描述的进给表示。

图28示出了可以定制执行插补的方式以反映诸如加速之类的行为。

图29示出了绝对位置的示例性连续变换,其中当移除火箭时,接着在相对于全局轴的新位置处***另一火箭。

图30示出了相对位置的示例性连续变换。在该示例中,以相对方式应用变换。该集合中提供了一次访问多个值。在当前情况下,t1=0,t2=0.25,t3=5,t4=0.75和t5=1。这允许计算差异以产生1个单元增量的位移。

如图31所示,可以使用dt代替δt来进行连续的相对位移。

图32示出了用于创建n个元素的向量的示例性变换。例如,如图33所示,可以创建3x 3矩阵。

求解

可以通过添加变量符号或指示表单是变量来在系统中添加变量。通常在对变量进行求解时,需要指示期望系统变成什么或执行哪些操作。这类似于用等号“=”求解经典代数方程式中的x。例如,对于不断复制的癌细胞,可以采取应用于癌细胞的变量变换T,并指示期望系统成为不再复制的细胞。然后使用该系统对T的变量进行求解。还可以通过使用在框架内创建的求解器系统,使用输入和输出数据表单,使用外部求解器或手动输入潜在的变换来对T进行求解。结果是T的一组不同的可能表单,这些表单阻止了癌细胞的复制。由于可以在框架中直接对多种类型的数学和编程技术进行建模和实现,因此可以同时使用多种强大的工具来对这个困难的系统进行求解。可以在框架中实现的工具的示例是人工神经网络、方程式求解、数学优化和不同的机器学习算法等。

项目网络

当创建项目或系统时,系统位于存储库中,并且可以设为公共或私有系统。在Web平台、私有本地服务器或基于对等的网络上,可以通过描述需要实现的内容来启动新项目P。用户可以在该项目中提交系统,也可以改进其他人在该项目中提交的系统。用户可以投票选出最好的系统或最接近项目要求的系统。

其他项目系统可以完全导入系统(或项目)中并针对该系统或项目进行调整。例如,可以要求将信息从Sys发送到Sub,然后让Sub计算Sys的返回值,而不是将整个系统Sub导入系统Sys中。这样可以实现分布式计算,并减少项目和系统的重复。一些项目可以是私有的也可以是公共的。这允许创建大型项目网络,大量用户可以在其中开发和创建大型有用的项目。这些项目中的每一个可以由多个其他项目构成,这些项目本身又依赖于另外的项目。可以将每个包括的项目视为类似于用基于脚本的编程语言(如C++)编写的库。

在一个实施例中,在变换中定义的效果可以包括多个部分以帮助表示。例如,效果可以包括两个部分。当选择输入位置并在效果和输出位置中使用值时,将使用效果的输出部分中的表单来修改由输出位置选择的输出位置表单,并使用效果的输入部分中的表单来修改由输入位置选择的输入位置表单。

图34示出了具有两部分效果的示例性变换。在此,初始域的值12被导入变换中,以使K=12。然后,用K=12替换K=0,用H=1替换H=12。

图35示出了具有两部分效果的变换的另一示例。在该示例中,初始域中的值12和9被导入变换中,以使M=12+8=20。然后,用H=0替换H=12,用K=-8替换K=8,并且用M=20替换M=0。然后,用K=12替换K=0,用H=1替换H=12。

图36示出了包括进给和两部分效果的示例性变换。

应当理解,进给可以模拟为仅具有三部分变换的分量而没有进给的离散进给。图37所示的离散变换取输入域中的t的值,该输入域包含有序元素1、2、3。应用变换之后,左侧元素移至右侧。这将允许在下一次应用变换时选择有序集合的第二元素。当进给是实数或无限集的区间时,需要定义一个新程序以从连续的有序集合中提取元素。在一个实施例中,可以将进给的定义添加到非常适合于处理区间并且具有许多其他应用的系统中。

在下文中,描述了变换的其他示例。

在第一个示例中,为了创建变换,用户选择输出域中存在的四面体的面(参见图38a),将其发送或拖放到变换的输出位置(参见图38b)。三角形的面将自动出现在效果和输出位置中。然后,用户可以通过在面上添加网格或按比例缩小三角形来编辑效果。如果用户在面上添加了一个较小的四面体(参见图38b)并通过在要应用变换的次数上加上3来调整变换数据。当运行该系统时,将在面上一个接一个地添加较小的四面体,直到3个面上都具有小四面体(见图38c)。

用户还可以创建另一变换,其中在三角形上添加小立方体。当两个变换与另一变换同时放置在系统的四面体上并且系统运行时,将仅应用两个变换之一。在这种情况下,用户可以决定将80%应用变换的机会用于立方体,而将20%的机会用于其他变换。

在另一示例中,用户将分子导入系统中,将其选中并发送到输出位置。用户在输入位置中添加D,也可以将其添加到效果中。将效果分子向右移动会打开一个可以***值或函数的位置。从效果中拖放D或在该空间中键入D都会将其连接到输入位置的D。然后,用户通过写入1/D将函数应用于D。现在,当向分子应用变换时,分子的位移将取决于D值,D值来自系统中的其他位置,甚至来自输入数据。在应用变换之前,读取D值以确定分子的位移。在当前情况下,如果D=100,则当向分子应用7次该变换时,分子将向左移动7次,每次移动1/100个单元。

分子的所有先前位置可以保存在时间线中,以便变换可以使用和访问时间线。为了测量5个步骤之前到现在的平均速度,例如,用户可以在输入位置写入或选择分子现在的全局位置(P0)和5个步骤之前的全局位置(P5)。实际上,用户写入S=(P0-P5)/5。现在,每当向分子应用该变换时,都会计算平均速度。该变换可以留在系统的一角,并在系统每次发生更改后应用。通过隐藏该变换的输入位置,仅在一角显示速度数据。

图39示出了包括输入位置、效果和输出位置的示例性变换(省略了变换数据)。变换的应用如下执行。首先,在输入域中选择表单。选定表单与输入位置匹配,其中星号(*)可以是任何内容,只要星号周围的表单匹配即可。

在本发明的示例中,选择了A=3,因为'A='是匹配项,并且星号可以选择任何内容,因此选择了数字3。

然后,识别出另外出现在变换的其余部分中的输入位置的信息,并将所识别的信息的每次出现替换为来自相关联的选定表单的信息。

在本发明的示例中,星号出现在变换的效果和输出位置中。来自与星号相关联的选定表单的信息为“3”。因此,如图40所示,将效果和输出位置中的星号替换为3。应当理解,用数字3替换星号在效果和输出位置中可能不是永久的,因为该替换仅针对变换的应用完成。

然后选择输出域中与输出位置匹配的表单,并将其替换为效果。

在本发明的示例中,选择了输出域中三角形的长度为3的边,并替换为同一边,但添加了两条直线,从而创建了另一三角形,如图41所示。

变换部分之间的相对位置

在一个实施例中,输入位置、效果和输出位置内的表单的相对位置可能影响变换。例如,如果对应于输出位置和效果的两个对象在其各自的矩形中位于同一位置,则意味着它们已连接在一起。例如,如果效果的对象E与输出位置的对象O处于同一位置,则O将被E替换。如果这两个对象的位置不同,则可以获得不同的结果,如下面的示例所示。

例如,如果将图40所示的变换替换为图42所示的变换,则得到图43所示的表单,而非图30的表单。

神经元点火

对于该示例,输入和输出域相同,唯一的域在图44中示出。

图45所示的第一变换选择树突d=x和阈值变量T及其值y作为输入位置。通过将值x添加到y来创建效果,以便将该树突的贡献添加到阈值。然后,当由输出位置选择时,d=x和T=y时分别被替换为d=0和T=y+x。

“全部”指示向所有d=x应用变换,直到每个树突仅贡献一次,在这种情况下为11次。变换中的相似符号被视为相同的对象。因此,可以理解为输入和输出位置的d=x和T=y是相同的。

当阈值大于或等于6(此处,6是该神经元的阈值极限值)时,图46所示的下一变换使神经元点火。输入位置中定义的不等式指示当满足该不等式时,可通过将h标记的闪电更改为i标记的闪电来应用变换。

图47所示的下一变换允许动作电位移向轴突末端。在这种情况下,输入位置为空,这意味着在应用变换之前“没有条件”要满足。应用变换所需的唯一条件是,在输出域中将闪电符号标记为i,将凹凸不平的圆标记为h。

因为现在动作电位接近轴突,所以每个轴突的值a=0更改为值a=1,如图48的变换所示。

然后,在与轴突相关联的每个值变为1之后,表示动作电位的符号被标记为h,如图49的变换所示。

可以通过将该神经元的轴突连接到其他神经元网络的树突上来创建神经元网络。可以使用图50所示的变换来完成将轴突值a=x传输到与其相关联的树突值d=y的粗略方法。

突触间隙

图51示出了突触间隙的模型。

图52所示的变换允许对轴突附近突触间隙中10种神经递质的释放进行建模。

输入作用域是该神经元的a=x。当a=1时,选择输出作用域中的随机位置,并在该位置***圆形神经递质。空白的输出位置不指定特定位置。因此,它被解释为输出作用域中的随机位置。输出作用域定义由图53所示的矩形框界定的区域。

在释放神经递质之后,使用图54的变换将a=1变为0。

图55的变换允许神经递质在由图56所示的圆柱体包围的突触间隙中移动。需要一个神经递质和围绕它的包围球。然后,将神经递质放回其包围球中的任意位置,只要该包围球中的位置不在圆柱体包围的突触间隙之外。

最后,当神经递质结合到神经受体上时,其贡献被添加到树突值d=y上,如图57的变换所示。该变换始终存在,并且在满足条件时(即,当神经递质与神经受体之一结合时)起作用。

构建石墨烯片

图47的变换表示组装石墨烯片所需的规则之一。该变换获取四个CO2分子,并将其添加到图48所示的石墨烯片中。

CO2收集器

图60所示的变换通过使用功能“获取”和“添加”来充当收集器。在该示例中,收集了CO2分子并将其添加到CO2收集中。从字面上看,从输入域中获取CO2分子,并将其移动到被称为“二氧化碳收集”的组中。输入域被认为是包含大量CO2分子的容器。

收集5个分子之后,便获得了图61所示的场景。

图62示出了更复杂的系统,该系统收集CO2分子来构建石墨烯片的某些部分。红色框中的数字给出了变换的应用顺序。首先收集CO2,然后使石墨烯片膨胀。

卫星旋转

变换可用于移动和旋转诸如3D网格之类的对象。

手动旋转

图63所示的变换允许旋转3D卫星。

将该变换多次应用于3D卫星模型将提供图64所示的输出域的一系列状态。

自动信号查找器变换

如果希望卫星自动朝着特定信号定向,则可以使用图65所示的一组变换,其中当卫星的中心z轴与其各个平面中的信号源之间的角度相差20度以上时,可以在其各个平面上旋转卫星。

除了这组变换之外,在角度大于或等于180度时沿着其他方向旋转将为我们提供一组允许卫星自主地朝着信号定向其碟形天线的变换。通过使用1度阈值而不是20度阈值来激活旋转并使卫星旋转增量也变为1度,可以实现更高的精度。

键盘激活的旋转

旋转的应用可以通过按下键盘箭头来触发,如图66所示。

使用用户界面或实际的物理按钮旋转卫星

图67的变换的输入位置所示的线连接到YZ平面中的线。请注意,效果中的卫星被视为处于绝对位置,并且无论该卫星先前的定向如何,都将朝该方向进行替换。

汽车和时间线

当系统在每一步或每次更改时,都可以记录系统状态并将其存储在存储器中。如上所述,这将构建系统的时间线。

随着变换的应用,系统的步数增加。在本发明的示例中,假设每次在系统中应用变换时,步数都会增加1。应当理解,步数不一定是整数,也可以是根据实数增量增加的实数。实数步的示例是将时间的流逝描述为步。此外,在本发明的实施例中,可以以连续的方式而不是离散的方式来应用变换。

系统描述了根据不同类型的变换行驶的汽车。利用图68所示的变换,可以计算步骤0和步骤50之间的汽车在x方向上的平均速度。在输入位置中,访问有关步骤0和步骤50处的汽车状态的信息。汽车的透明度用于表示汽车来自较早的步骤。

通过变换访问时间线可以查找速度、加速度,衍生许多其他概念并对这些概念进行建模。

将使用图69和70所示的变换完成对汽车实际速度测量进行建模并将其投影在里程表上。在当前情况下,“实际”是指将应用变换的时刻的步骤值。请注意,为了获得当前速度,需要计算最后五个步骤的平均速度。图69的变换允许在输出域中***PresentSpeed。

图70的变换从前一输出域中获取PresentSpeed,并在黑色正方形上用蓝色写出速度值。然后,如图60所示,将在里程表的图像上叠加蓝色数字和正方形。请注意,单词“添加”表示未替换里程表,而是将带有数字的黑色正方形添加到里程表的图像上。

变换记法

应当理解,上述变换记法仅仅是示例性的。

例如,变换也可以写成由效果和输出位置组成的两个部分。在这种情况下,应确定将用作输入的表单。这是因为需要使用这些表单来初始化变换的效果、输出位置和数据。

还应当理解,可以根据需要和建模上下文来不同地呈现变换和结构。例如,图72的变换可以由提供更紧凑的书写的图73所示的变换来替换。

定位与匹配

在本发明的一些实施例中,当变换使输入位置与输入域的表单匹配时,匹配可以是文字的,或者允许旋转和平移。

在上述简单系统中,输出域中的匹配为文字。

在上面的二氧化碳收集器中,输入域中的匹配不是文字的。它可以选择面向不同方向的分子。

相互连接

输入位置可以连接到多个不同的效果。效果可以连接到多个输出位置。输入位置可以连接到多个输入域。输出位置可以连接到多个输出域。

输出域可以是变换,输入域也可以是变换。

此外,一个单独的输入位置可以连接到由其输入位置、效果、输出位置和数据组成的完整变换。输入位置也可以连接到一组变换甚至连接到域。以同样的方式,可以将一个单独的输出位置连接到一个三部分的变换、一组变换或域。

图形用户界面(GUI)

下面介绍了可用于定义变换的图形用户界面(GUI)。如图74所示,GUI包括其中能够可视化地创建变换的第一部分和其中可表示输出域的第二部分。

GUI的第一部分包括五个窗口。在第一窗口中,能够可视地或以图形方式表示输入位置。第二窗口用于可视地定义效果,而第三窗口用于可视地表示输出位置中包含的表单。第四窗口用于可视地表示输出作用域,第五窗口用于输入变换数据。

在一个实施例中,如图88所示,没有作用域的变换显示在左侧,而域显示在左侧。

在一个实施例中,GUI可以包括用于可视地表示输入域的第三部分。

在一个实施例中,变换和变换序列可以直接在域中表示。

在一个实施例中,变换序列可以在单个表示下组合在一起。

在一个实施例中,变换序列可以以2D方式或通过变换表示之间的线、箭头(或其他形状)表示,以指示将如何应用它们。

在一个实施例中,变换序列可被放置在3D空间中或通过变换表示之间的线、3D箭头(或其他形状)表示,以指示将如何应用它们。

在一个实施例中,可以省略用于表示输出作用域的第四窗口。在同一或另一实施例中,GUI的第一部分可以包括用于可视地表示输入作用域的窗口。

为了创建变换,用户首先从库中导入输出域中的表单(例如3D模型),或者使用位于GUI左上方的“几何图形”选项卡的元素来创建基本3D模型。在该示例中,用户在域中创建四面体,如图75所示。

然后,用户从四面体中选择一个面,接着将其拖放到变换的输出位置,如图76所示。

如图77所示,用户将输出位置的整个内容复制到效果中。

然后,用户通过使用“几何图形”选项卡的元素或通过手动修改3D模型来添加表单或修改效果窗口中包含的表单的几何图形,从而在效果窗口中创建效果。或者,用户可以从库中导入3D模型。在该示例中,在三角形上添加了较小的四面体,如图78所示。

如图79所示,用户然后输入变换数据。例如,用户可以单击变换数据中的单选按钮“全部”,然后在“复选标记”上单击四次以将该变换注入域。“全部”按钮指示该变换将应用于域中与输出位置的三角形匹配的所有三角形。

当用户按下“步进”按钮时,变换将被应用一次。四面体的每个三角形都替换为上面带有较小四面体的三角形。所产生的的表单如图80所示。

当用户按下“播放”时,将依次应用其他三个变换以给出以下复杂的分形以获得图81所示的形式。

使用变换的输入位置、输出位置和效果

现在使用具有输入位置的变换描述相同的示例。在这种情况下,可以将文本、值、3D模型或数据添加到域。在本发明的示例中,文本“D=2”被添加到域,如图82所示。

用户在输入位置中添加文本“D=x”,如图83所示。“x”指示输出位置将匹配表单“D=x”的对象,其中“x”可以是任意值。然后,用户在效果(或可选地在输出位置)中指示将使用值“x”的位置。在该示例中,值“x”将被分配给三角形的较小四面体的高度。

通过选择单选按钮“全部”注入并应用变换之后,该变换使输入位置与域中的文本“D=2”匹配。然后,值“2”将替换效果中的“x”,如图84所示。将计算要应用的变换的效果和输出位置。

图85至88示出了应用了四次变换之后最终形成的域。

动态输入

在前面的示例中,文本“D=2”在域中始终相同。可以使用更具动态性和变化性的输入。

I)在每次应用变换之后,可以将值“D=2”更改为更大的值。例如,如图89所示,变换可以将四面体添加到三角形上,同时将“D=2”更改为“D=2.5”,这是通过“D=x+0.5”计算而出的。

首次应用变换将为添加的四面体提供2的高度,第二高度为2.5,第三高度为3,依此类推。换句话说,变换中的高度取决于域中“D”的初始值以及该变换被应用的次数。

II)可以从域中的其他形状提取输入,这些形状本身会在应用多个其他变换下随着域的变化而修改。例如,“x”可能来自对象之间两点间的距离。

变换作用域

a)执行上述步骤后,用户可以通过单击右下菜单中的相应按钮来决定使用变换的输出作用域,以将域的所有数据复制到变换的输出作用域中,如图90所示。

b)用户可以选择作用域的四面体的某些面。通过按下删除按钮,移除选定面。在图91所示的示例中,仅保留了两个面。这意味着该变换仅应用于域中的四面体的与作用域中仍存在的面相对应的面。

在该示例中,在应用一次变换之后,最终形成的域将包含这样一个四面体:该四面体的左侧和底部具有较小的四面体,如图92所示。

变换的录制

可以将在域中进行的手动更改录制为变换。

例如,用户可以在域中添加一个在其两端之一上带有点的线段,如图93所示。这可以通过使用“几何图形”选项卡组件来完成。

用户按下用户界面底部的“录制”按钮。在释放“录制”按钮之前,将针对用户在域中做出的手动修改创建并录制变换。

用户单击线段,然后手动将线段旋转约20度。接着,创建变换并将其显示在左侧,如图94所示。

如果用户对所录制的变换感到满意,则用户取消选择录制按钮。然后,在变换数据的“次数”框中输入“12”后,将所录制的变换注入域中,如图95所示。

按下“播放”后,域的线段将旋转12次,如图96所示。

编辑注入的变换

可以编辑和修改已注入到域(可以是但不限于2D或3D空间)中的变换。图97示出了呈现一系列录制的变换的界面。在变换序列中,用户可以双击其中一个变换。

双击的结果是在GUI中显示变换。然后,用户可以编辑特定的变换以进行修改。修改后,可以保存变换,并且该变换在轮到被应用时实施不同的行为。

在该序列中,可以通过上下拖动来重新排列变换。

在一个实施例中,本发明的方法和系统的目的是提供一种通用系统,利用该通用系统可以为所有知识领域创建和实现模型、仿真、通信和优化。基于本发明的方法,可以在单个系统和范例下整合所有知识和应用。现在,在下文中将通用系统称为“框架”。

上述本发明的实施例仅是示例性的。因此,本发明的范围旨在仅由所附权利要求的范围来限制。

78页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:人工智能应用搭建中的运行实现方法、装置和机器设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类