使用深度学习的力估计

文档序号:1111248 发布日期:2020-09-29 浏览:10次 >En<

阅读说明:本技术 使用深度学习的力估计 (Force estimation using deep learning ) 是由 S·伯奇菲尔德 B·布茨 D·福克斯 A·汉达 N·拉特利夫 B·顺达拉林加姆 A·兰伯 于 2020-03-19 设计创作,主要内容包括:公开一种使用深度学习的力估计。计算机系统通过执行大量校准任务来生成用于触觉力传感器的触觉力模型。在各种实施例中,校准任务包括当将触觉力传感器附接到压力计时,按下触觉力传感器,与球体相互作用以及沿着平面推动对象。从这些校准任务中收集的数据用于训练神经网络。所得的触觉力模型允许计算机系统以比传统方法更高的精度将从触觉力传感器接收的信号转换为力的大小和方向。在一个实施例中,通过与对象相互作用、确定对象的移动以及基于对象的物理模型来估计对象上的力来推断触觉力传感器上的力。(A force estimation using deep learning is disclosed. The computer system generates a haptic force model for the haptic force sensor by performing a number of calibration tasks. In various embodiments, the calibration tasks include, while attaching the tactile force sensor to the pressure gauge, depressing the tactile force sensor, interacting with the sphere, and pushing the object along the plane. The data collected from these calibration tasks is used to train the neural network. The resulting haptic force model allows the computer system to convert the signals received from the haptic force sensors to the magnitude and direction of the force with greater accuracy than conventional methods. In one embodiment, the force on the haptic force sensor is inferred by interacting with an object, determining movement of the object, and estimating the force on the object based on a physical model of the object.)

使用深度学习的力估计

背景技术

机器人系统被用来执行日益复杂和精细的任务。能够执行许多精细任务的重要部分是能够根据感官反馈调整机器人的控制能力。例如,许多厨房任务(例如打开糖罐、倒入容器或翻转薄饼),都需要精确观察力才能成功执行。通过一种从触觉信号中估算力的方法,可以更快地学习这些任务。在另一个示例中,当处理柔软或柔顺的物体时,触觉力感测允许机器人根据对物体的更改来调整其动作。先进的触觉传感器(例如Syn Touch BioTac),可提供柔软的、类似肉体的柔顺的抓握表面,能够处理细腻的物体而不会损坏。然而,传感器的性质使得难以估计由触觉传感器施加的力。如果没有准确的力估计,许多任务的成功执行将非常困难。因此,重要的是提供一种系统,该系统在大范围的力上以大小和方向均准确的方式估算触觉传感器上的力。

具体实施方式

本文档描述了一种校准用于在机器人系统中使用的触觉力传感器的系统。在一个实施例中,探针、爪、抓手或机械手安装有一组触觉力传感器,该一组触觉力传感器允许控制系统接收代表施加在传感器上的力的信号。在一个实施例中,触觉力传感器提供分布在力传感器的表面上的多个力测量值,其提供力方向以及力大小的指示。在一个实施例中,触觉力传感器被柔软的表面(例如硅树脂)包覆,该表面使传感器的表面与***纵的对象相吻合。

在一个实施例中,许多测试装置被用来收集触觉力传感器的校准信息。在一个实施例中,将触觉力传感器的背面固定到压力传感器,并且将对象压在力传感器上。在一个实施例中,作为将物体压在力传感器上的结果,触觉力传感器产生信号,并且压力传感器记录所产生的力的量。在一个实施例中,配备有触觉力传感器的机械手用于操控连接至校准的力传感器的球。在一个实施例中,当操纵球时,由触觉力传感器接收的信号与由校准的力传感器测量的相应力相关联。在一个实施例中,装有触觉传感器的探针用于在平面上推动对象,并测量对象的运动。在一个实施例中,确定对象的物理模型,从而允许基于对象的运动来估计施加在对象上的力。在一个实施例中,估计的力和从触觉力传感器接收的信号被用于校准触觉力传感器。

在一个实施例中,从测试夹具接收的信息被用作神经网络的训练数据。在一个实施例中,神经网络学习触觉力模型,其可用于将由触觉力传感器提供的信号转换成力的大小和方向。在一个实施例中,通过如上所述利用来自各种不同的测试装置的地面实况进行训练,触觉力模型可以用于估计由触觉力传感器施加的用于除上述训练任务之外的各种任务的力。在一个实施例中,系统将体素化的输入特征层用于空间信号,并利用关于传感器表面的信息来规范化损失函数。在一个实施例中,已经示出了所产生的触觉力模型在测试数据集上产生0.06弧度的中值角度精度和0.06N弧度的中值幅度精度。在一个实施例中,通过执行物体提升和放置任务来验证触觉力模型,因为如果力估计不正确,提升任务往往失败,而如果力方向估计不正确,则放置任务往往失败。

在一个实施例中,通过在3d网格中体素化电极值来对触觉力传感器中的电极的空间信息进行编码以对力方向进行更好的估计。在一个实施例中,该系统提供了表面法线正则化,其改善了在接触点处更接近表面法线的力预测的准确性。在一个实施例中,在真实的机器人操纵任务中,利用不同表面特性的刚性对象和柔性对象验证触觉力模型。

如本领域的技术人员根据该公开所理解的,某些示例可能能够实现某些优点,包括以下的一些或全部:(1)在方向和大小上都增加力估计的准确性,(2)对在标准化度量中的力精度进行量化,(3)通过与校准对象模型的交互提供准确的力推论,(4)自主收集地面实况测力数据,(5)提供确认测力模型准确性的验证任务。

图1示出了装备有触觉力传感器的机械手的示例。在一个实施例中,计算机控制系统控制机械手100的操作。在一个实施例中,机械手100包括连接到多个关节手指的手掌部分102。在一个实施例中,关节手指包括第一手指104、第二手指106、第三手指108和第四手指110。在一个实施例中,带关节的手指包括相对的手指112。在一个实施例中,每个手指包括允许该手指相对于手掌部分102移动的多个关节点和伺服机构。在一些实施例中,每个手指由伺服电动机和手指长度的电缆控制,从而使手指能够像人的手一样屈伸和卷曲。在其他实施例中,手指可在每个关节点处包括一个或更多个伺服电机,从而允许每个关节点被分别操作。在另一实施例中,每个关节点可包括控制一个或多个轴线上的旋转和铰接的铰接马达。

在一个实施例中,控制系统连接到机械手100。在一个实施例中,该控制系统包括计算机器系统,计算机系统具有一个或更多个处理器和存储有指令的存储器,该指令由于被一个或更多个处理器执行时,使计算机系统向控制机器人手100的各个手指的伺服电动机发出电子命令。在一个实施例中,电子命令通过连接到计算机系统的I/O端口发出,并使用继电器、功率晶体管或其他电路放大。在各种实施例中,电子命令可以是基于电压或基于电流的信号。在一个实施例中,电子命令可以包括一系列脉冲,这些脉冲指示将由伺服电动机执行的步骤或位置变化。

在一实施例中,机械手100的一个或更多个手指可包括触觉传感器。在一个实施例中,触觉传感器是力传感器,例如SynTouch BioTac。在一个实施例中,触觉传感器可以提供被接触表面的温度、湿度、压力或电导率测量值。在一个实施例中,触觉传感器可以为传感器表面上的多个位置提供以上测量。在一个实施例中,由触觉传感器为分布在传感器表面上的位置网格中的每个位置提供单独的测量。在一个实施例中,通过触觉传感器的表面上的电极网格来提供力测量。在一个实施例中,触觉传感器提供数字电接口,例如并行或串行接口,其允许将来自触觉传感器的信号提供给控制系统。在一个实施例中,使用诸如硅树脂之类的柔顺性接触表面来构造触觉传感器,该柔顺性接触表面覆盖传感器并且保护触觉传感器的电子部件免受湿气和磨损。

在图1所示的示例中,如图1所示,第一手指104包括第一触觉力传感器114、第二手指106包括第二触觉力传感器116、第三手指108包括第三触觉力传感器118、第四手指110包括第四触觉力传感器120,以及相对的手指112包括第五触觉力传感器122。在一个实施例中,每个力传感器被定位成使得可以由控制系统操纵一个或更多个手指,使得触觉力传感器的表面被用于操纵对象。在一个实施例中,由触觉力传感器提供的信号被提供给控制系统,并且控制系统能够操纵机器人手100的各个手指中的伺服器以调节传感器感知的力。在一个实施例中,该技术允许更可靠地操纵柔软、柔顺性或软对象。例如,在一个实施例中,通过自适应地调节触觉力传感器所感知的力,控制系统能够可靠地拾取和放置软的或柔性对象到硬表面上。

在一个实施例中,机械手100可以在各种配置中包括各种数量的手指和相对的手指。在一个实施例中,机械手100包括用爪构造的触觉传感器来实现的两个手指。在一个实施例中,机械手100包括一个或更多个手指和一个或更多个相对手指,并且仅相对手指配备有触觉传感器,并且基于在相对手指上检测到的力来估计一个或更多个手指上的力。

图2示出了一个实施例中的触觉力传感器的示例。图2示出了诸如Syn TouchBioTac的触觉力传感器200的示例。在一个实施例中,触觉力传感器200包括传感器组件202、柔性盖204、传感器主体206和凸缘208。在一个实施例中,触觉力传感器200被安装到探针、爪子或机械手上手指的末端。在一个实施例中,通过探针、爪子或机械手来操纵物体,并且将柔性盖204的表面压靠在要操纵的对象的表面上。在一个实施例中,柔性盖204向传感器组件202上的一组力传感器传输力。在一个实施例中,传感器组件202包括电极网格,该电极网格提供一组与电极位置上的力大小近似地成比例的信号。

在一个实施例中,接口电缆210将传感器组件202连接到控制系统。在一个实施例中,接口电缆210是串行接口的一部分,该串行接口将电极的各个值传输到控制系统。在一个实施例中,控制系统处理该组值以识别力的大小和方向(例如力矢量)。在一个实施例中,控制系统包括神经网络,其被训练以根据由传感器部件202提供的信号来估计触觉力传感器上的力和大小。

在一个实施例中,触觉力传感器200是来自Syn Touch的BioTac传感器。BoiTac传感器具有一个刚性芯,该芯被高摩擦的弹性蒙皮包裹,并且在芯和蒙皮之间的空间中填充了导电性较弱的液体。在BioTac传感器中,在芯表面上散布有19个阻抗感应电极,以及耦合有加热器的热敏电阻测量流体温度。在一个实施例中,换能器测量静态压力,并且换能器在2.2kHz测量到压力的高频变化,并在缓冲器中发送到系统。在一个实施例中,系统通过将BioTac表面几何形状近似为连接有四分之一圆柱体盖的半圆柱体(两者都具有相同的半径),来确定Bio Tac传感器上的接触点和表面法线。

图3示出了在一个实施例中的训练触觉力模型以估计触觉力传感器上的力的过程300的示例。在一个实施例中,给定在传感器的接触点处的一组传感器读数,系统参考传感器框架来估计触觉力传感器上的力。在一个实施例中,传感器读数被体素化304,并被提供给馈源神经网络310。在一个实施例中,通过引入用于根据所施加的力与表面法线302之间的角距离的函数缩放损失的训练中的损失函数308来完善对触觉传感器的学习。在一个实施例中,前馈神经网络310被用于学习将传感器读数映射到传感器上的估计力的函数。在一个实施例中,通过使用训练数据集来提供模型的准确性,该训练数据集覆盖幅度和方向上的大范围的力。在一个实施例中,从多个地面实况数据收集源收集地面实况力306,从而提高了模型的鲁棒性以及在各种附加任务中使用力模型的能力。

在一个实施例中,源包括通过将触觉力传感器牢固地附接到腕力/扭矩(“FT”)传感器并使用物体按压触觉力传感器而收集的力数据。在一个实施例中,通过使人与物体和传感器交互来完成对传感器的按压。在一个实施例中,通过将FT传感器附接到球上,然后诸如图1所示的机器人手-臂系统与球相互作用,来创建另一源。在一个实施例中,球相互作用源向BioTac传感器框架相对于力扭矩传感器框架的定向增加了随机性。在一个实施例中,实验产生的腕力/扭矩传感器的信噪比在0.01N至0.1N之间的范围内,使得小的力读数非常嘈杂。在一个实施例中,为了减小噪声,力数据的另一个来源涉及从平面推动装置中收集传感器读数。在一个实施例中,平面推动设置被配置为使得机器人使用触觉力传感器将盒子推动在平面上。在一个实施例中,用于平面推动的地面实况力是通过最小二乘优化来计算的,如本文件的其他地方所述。

在一个实施例中,将用于系统训练的数据集收集如下。在一个实施例中,系统使用OptoForce HEX-E 6-DOF力扭矩传感器来收集刚度-ft和球-ft数据。对于刚度-ft数据,将BioTac安装到力-扭矩传感器上,然后将对象压在手指上以收集数据。在一个实施例中,总共收集了20k个力样本。在一个实施例中,对于球-ft法,机械手将触觉传感器推向安装在附接到力-扭矩传感器的垂直杆上的硬塑料球。例如,在一个实施例中,球-ft方法为中指尖生成200条随机轨迹,以从10个不同的手腕姿势与球进行接触,从而产生总计20k的力样本。在一个实施例中,对于平面推动方法,触觉传感器是安装在机器人上,该机器人可以推动重达0.65公斤的盒子。在一个实施例中,系统伴随使用轨迹优化为指尖生成单个直线,任务空间位置轨迹。在一个实施例中,使用黎曼运动策略来执行任务空间轨迹。在一个实施例中,对于任务空间位置轨迹的每次执行,为触觉力传感器和盒子选择随机的初始取向。在一个实施例中,从一个很小的范围内对盒子的方向进行采样,以使每次推动都使触点保持在盒子的同一面上。在一个实施例中,在机器人上总共收集了600次试验,总共产生了100k个力样本。在一个示例中,从三个数据源收集的最终数据集总共包含140k力样本。在一个实施例中,对于球-ft和平面推动操作,用诸如ASUS Xtion RGB-D相机之类的数字相机追踪机器人。在一个实施例中,具有物理约束的基于深度的跟踪技术被用于确定球和盒子对象的位置和运动。在一个实施例中,在FT传感器对球-ft测量大于2N的力之前以及当BioTac压力信号值升高大于平面推动设置的10个单位之前,启用接触。在一个实施例中,在最小二乘最小化问题中选择用于优化的参数,即n=80且k=10。在一个实施例中,粒子的数量n对该力的影响并没有超过这个大小,k的任何值大于2都会产生相似的性能。在一个实施例中,在盒子与平面之间的摩擦系数被确定为0.1。

图4示出了一个实施例中的力预测神经网络400的示例。在一个实施例中,一组触觉力传感器信号,例如BioTac信号402,被馈送到神经网络中。在一个实施例中,BioTac信号包括一组电极信号404和表面接触点406。在一个实施例中,神经网络400使用BioTac信号402来产生估计的力矢量。在一个实施例中,基于每个电极的值和电极在传感器上的位置来创建体素网格408。在一个实施例中,第一体素网格408的输出被馈送到第一3-D卷积410。在一个实施例中,创建了第二体素网格412,其代表传感器上的接触点。在一个实施例中,第二体素网格412的输出被馈送到第二3-D卷积414。

在一个实施例中,将3D卷积的输出串联416,并且将结果通过3D卷积的第一层418和3D卷积的第二层420传递。特征然后被展平并通过2-D卷积层422传递,然后将其进一步展平成矢量424。在一个实施例中,矢量穿过完全连接的层426、428和430以产生长度为3的预测力矢量fp

在一个实施例中,将预测的力矢量fp通过缩放的表面法线432与地面实况力30进行比较。

Q3d(f3dfp)=(1/||f3d||2)||f3d-fp||2

在一个实施例中,对于平面推动数据集,我们使用投影范数434来产生Q 436,因为可能存在垂直于平坦表面作用的力没有被物理模型考虑进去。

其中,Ψ为支撑表面平面的方向。

在一个实施例中,触觉力传感器的高摩擦表面允许在传感器的接触点处从除了表面法线之外的方向施加力,因此该力可以在表面上的接触点处施加,而非从在表面法线与力方向匹配的接触点处。在一个实施例中,随着力与表面法线之间的角度增加,传感器的信号可能变得不太有意义。在一个实施例中,损失函数用自适应加权函数来缩放。

α(Sn,f3d)=2^(β(1-D(Sn,f3d)))

Figure BDA0002417818960000082

其中,β上标量权重,并且

Figure BDA0002417818960000083

是地面实况力矢量f3d的单位向量,以及D(·)是标准化余弦距离函数。在我们的网络中使用的损失函数定义为:

Q(·)=∝(·)Qproj(f3d,fp,wRB)-如果平面推动

Q(·)=∝(·)Q3d(f3d,fp)-否则

在一个实施例中,可以使用TensorFlow来实现神经网络,并且可以通过划分试验(通过整个试验)将数据集划分为80%训练、10%验证和10%测试。在一个实施例中,可以以512的批量大小运行200个时期的训练,并且当验证集合上的损失改善时,存储模型。在一个实施例中,可以使用Adam Optimizer来辅助神经网络的优化。在一个实施例中,使用自适应学习速率,该自适应学习速率从10-4开始,并且对于前两个时期增加2[(i/50)],然后对于其余时期的每次迭代降低0.95。

在一个实施例中,当机器人检测到传感器的指尖与对象接触时,来自触觉力传感器的信号被发送到网络。在一个实施例中,来自触觉力传感器的绝对压力信号被用于确定接触并且将传感器分类为与对象接触。在一个实例中,如果压力信号在至少10次步骤中维持高于10的值,则确定BioTac传感器处于接触状态。在一个实施例中,通过在将数据发送到神经网络之前检查接触,当传感器在自由空间中移动时,避免了误报。

图5示出了一个实施例中的测试夹具500的示例,该测试夹具500测量施加到触觉力传感器502的力。在一个实施例中,触觉力传感器502包括由柔性膜片504覆盖的力传感器,表示膜片上的力的信号经由接口电缆506传输到计算机系统。在一个实施例中,力信号包括表示遍及膜504的表面分布的各个点上的力的多个信号。在一个实施例中,以允许计算机系统将各个力信号与膜上的特定位置相关联的格式传输力信号。在一个实施例中,力信号作为位置-值对传输。在一个实施例中,力信号以二维阵列传输,该二维阵列表示膜504的表面上的力传感器的对应阵列。在一个实施例中,触觉力传感器502经由安装块510安装到力传感器508。在一个实施例中,力传感器508是OptoForce HEX-E 6自由度力扭矩传感器。

在一个实施例中,将对象手动地512按压在膜片504上,并且力通过安装块510传递到力传感器508。在一个实施例中,表示力的信号的模式通过接口电缆发送到在计算机系统中,并且从力传感器508接收力的附加测量值。在一个实施例中,这两个测量值为神经网络提供了地面实况力信息的来源。在一个实施例中,将诸如平面对象、弯曲对象、柔顺对象之类的对象手动地512压在膜504上。在一个实施例中,基于在执行任务中要操纵的对象来选择压在膜504上的物体,以使神经网络生成的估计力最准确地预测实际对象上的力。

图6示出了一个实施例中的测试夹具600的示例,该测试夹具600测量由于操纵球而产生的力。在一个实施例中,测试夹具包括力传感器602,例如OptoForce HEX-E 6-DOF力扭矩传感器。在一个实施例中,力传感器602通过杆连接到球604。在一个实施例中,控制计算机系统控制机器人手606的操作。在一个实施例中,机器人在606中包括第一手指608、第二手指610和相对的手指612。在一个实施例中,第一手指608装备有诸如BioTac力传感器的触觉力传感器614。

在一个实施例中,控制计算机系统指导机械手606操纵球604。在一个实施例中,信号从触觉力传感器614通过接口电缆616发送到控制计算机系统。在一个实施例中,机器人罐606对球604的每一操纵产生了来自触觉力传感器614和力传感器602两者的力信号集合。在一个实施例中,每组力信号和相应的来自力传感器602的测量值被用作神经网络的训练数据。在一个实施例中,控制计算机系统指导机械手606自主地与球604交互以从不同的接近方向建立地面实况。

图7示出了在一个实施例中的测试夹具700的示例,在一个实施例中,该测试夹具700测量将对象702推到平坦表面704上而产生的力。在一个实施例中,利用刚体物理学,利用触觉力传感器706从物体702的平面推动中推断出力。在一个实施例中,该力推断允许获得小力量级的地面实况力估计。在一个实施例中,力推断还推断引起对象线性和角运动的力。在一个实施例中,推断的力是二维的,并且引入了损失函数,其仅沿这两个维度惩罚误差。另外,在一个实施例中,基于在传感器膜708上的接触点处的力方向与表面法线之间的余弦距离而使损失规律化。在一个实施例中,当力更接近表面法线时,这种规律化使得力预测的精度更高。

在一个实施例中,控制计算机系统指导装有触觉力传感器706的机器人探针或手的操作。在一个实施例中,控制计算机系统通过将力传感器706的触觉膜708压向对象702的一侧来指导手来移动对象702。在一个实施例中,用手使物体沿平面704移动。在一个实施例中,对象702的位置由照相机监控,并基于对象702的移动,确定膜708对对象施加的力。在一个实施例中,一组传感器信号通过接口电缆710从力传感器706传输到控制计算机系统。

在一个实施例中,假设在SE(2)平面空间具有已知质量m的对象,以线速度v和角速度ω移动,引起该运动的净力可以由以下因素决定:

fc=m(dv/dt)

cxfc=I(dw/dt)

其中,是在点处参考对象的质量(CM)中心而作用的净力。

在一个实施例中,给定对象的线性加速度,可以确定净力。但是,在一个实施例中,如果测量系统无法观察到小的线性加速度,则很难确定力。在一个实施例中,在以下情况下线性加速度可能很小:1)施加到物体上的力很小,导致很小的线性和角加速度;2)施加的力垂直于径向线,在这种情况下物体将具有较大的角加速度。在一个实施例中,在后一种情况下,以上等式可以用于确定净力fc。在一个实施例中,我们通过将以上方程式作为最小二乘最小化问题中的损失函数来求解:

Figure BDA0002417818960000113

其中,权重k缩放线性加速度损失,并且[c]是矢量c的反对称矩阵。

在一个实施例中,当对象现在以其在对象与表面之间的摩擦系数为μs的方式搁置在平面上时,对象与平面之间的摩擦将以摩擦力ff和力矩nf来抵抗对象的运动。在一个实施例中,如果对象和表面之间的接触区域是R,并且r是该区域中物体上的任何点,则可以使用库仑定律将力和力矩定义为:

Figure BDA0002417818960000114

Figure BDA0002417818960000115

其中,v(·)是给出点的速度的函数。

在一个实施例中,r处的压力由p(·)给出,并且dA是r处的面积的微分元素。在一个实施例中,参考物体的质心导出力矩。在一个实施例中,为了使平面推动的摩擦力易于计算,系统假定:

1)在接触区域R中的压力分布是均匀的。

2)刚性体由均匀分布的n个颗粒制成。

3)将接触区域分解为N个小区域,其中区域i的质心为ri,区域i施加的法向力为mg/N。

在一个实施例中,利用以上列出的假设,可以将摩擦力确定为:

以及,由摩擦力引起的力矩变为:

在最小化问题中包括的摩擦力ff和力矩nf给出:

Figure BDA0002417818960000123

优化以上方程式可得出力fc的估计值。在一个实施例中,力fc为2D,平行于支撑平面。在一个实施例中,假设f3d为地面实况力提供为如下,将该力从对象的参考系o转换为BioTac传感器参考系B,:

f3dBR0·fc

在一个实施例中,将方向误差计算为地面实况力上的预测力的向量之间的余弦相似度。在一个实施例中,对余弦相似度进行缩放以给出方向精度的百分比。在一个实施例中,将幅度误差报告为地面真值与预测力幅度之间的对称平均绝对百分比精度。

图8示出了作为由计算机系统执行的结果的过程的示例,在一个实施例中,该过程生成估计触觉力传感器上的力的触觉力模型。在一个实施例中,过程800在框802处开始,其中计算机系统将触觉传感器安装在测试夹具中。在一个实施例中,测试夹具可以是平面运动、球形操纵或直接按压夹具,如本申请中其他地方所示。

在一个实施例中,计算机系统开始于收集用于触觉力传感器的力数据的过程。在一个实施例中,在框804处,将力施加到触觉力传感器。在一个实施例中,可以手动地或通过使用受控的机械手的自主控制来施加力。在一个实施例中,在框806处,计算机系统接收由触觉力传感器施力而产生的力信号。在一个实施例中,力信号可以是多个电极信号。在一个实施例中,在框808处,计算机系统使用测试夹具上的力传感器测量施加到触觉传感器上的力。在一个实施例中,在框810处,计算机系统使用来自触觉传感器的信号和测得的力来训练触觉模型。在一个实施例中,在判定框812处,计算机系统确定是否需要额外的训练。在一个实施例中,基于所请求的训练样本的配置数量,可能需要额外的训练。在一个实施例中,基于由触觉力模型产生的测量误差,额外的训练是必要的。在一个实施例中,如果需要额外的训练,则过程返回到框804,在框804处,另一力被施加到触觉传感器。在一个实施例中,如果训练完成,则执行前进到框814。

在一个实施例中,在框814处,系统使用触觉力模型来估计传感器上的力。在一个实施例中,在框814处,计算机系统从触觉力传感器接收信号。在一个实施例中,在框816处,计算机系统使用触觉力模型来根据接收到的信号来估计传感器上的实际力。在一个实施例中,估计的力是矢量的形式,其包括力的大小和方向。在一个实施例中,执行返回到框814,并且从触觉传感器接收更新的力信号。

图9示出了在一个实施例中的作为由计算机系统执行的结果的过程900的示例,该过程基于由传感器操纵对象的运动来确定触觉力传感器上的力。在一个实施例中,过程在框902处开始,计算机系统为包括对象的环境建立物理模型。在一实施例中,模型可以包括对象的质量、对象的质心、对象的几何形状、对象的压力中心中的一个或者更多个,以及一个或更多个环境参数。在一个实施例中,环境参数可以包括摩擦力、空气阻力、流体阻力、温度、压力或风速中的一个或更多个。在一个实施例中,在框904处,计算机系统命令配备有触觉力传感器的机器人机构来操纵对象。在一个实施例中,在框906处,计算机系统接收来自触觉力传感器接收信号,作为对对象操纵的结果。在一个实施例中,信号是单个信号的集合,其中每个单个信号与触觉力传感器上的多个电极中的一个电极相关联。在一个实施例中,在框908处,计算机系统测量由于操纵而产生的对象的运动。在一个实施例中,使用获得物体移动的视频片段的照相机来测量物体的移动。在一个实施例中,视频片段由计算机系统分析以确定物体的移动。

在一个实施例中,在框910处,计算机系统至少部分地基于物体确定的运动和物理模型来估计物体上的力。例如,在一个实施例中,物理模型包括物体的质心和质量,并且可以将物体上的力确定为物体的质量乘以物体的加速度。在一个实施例中,作用在物体上的力可以包括线性分量和角度分量,并且可以如上所述被限制在二维平面上。在一个实施例中,在框912处,将从触觉传感器获取的信号和估计的力用作力数据以训练触觉力模型。在一个实施例中,触觉力模型可用于将从触觉力传感器产生的信号转换为估计的力和力向量。

一个实施例包括一种处理器,该处理器包括:一个或更多个算术逻辑单元(ALU),算术逻辑单元配置成至少部分地基于使用对象表面的二维表示训练的一个或更多个神经网络和来自一个或更多个触觉传感器的压力信息来控制机器人设备的运动。

实施例包括一种方法,包括:至少部分地基于物体表面的二维表示和来自一个或更多个触觉传感器的压力信息,训练一个或更多个神经网络以控制一个或更能多个机器人设备。

实施例包括一种其上存储有一组指令的机器可读介质,所述一组指令如果由一个或更多个处理器执行,则使一个或更多个处理器执行至少以下操作:至少部分地基于物体表面的二维表示和来自一个或更多个触觉传感器的压力信息,训练一个或更多个神经网络来控制一个或更多个机器人设备。

实施例包括一种机器可读介质,该机器可读介质包括信息,如果该信息被一个或更多个计算机指令用来配置一个或更多个处理器,则使该一个或更多个处理器至少部分地基于机器学习模型来控制机器人设备,机器学习模型包括:嵌入层,用于编码三维物体的二维表示和表示由触觉传感器感测施加到三维物体的压力的压力信息;至少部分地基于二维表示和压力信息来预测机器人设备的一个或更多个动作的神经网络。

图10示出了根据一个实施例的并行处理单元(“PPU”)1000。在一个实施例中,PPU1000配置有机器可读代码,该机器可读代码如果由PPU执行,则使得PPU执行贯穿本公开描述的一些或全部过程和技术。在一个实施例中,PPU 1000是在一个或更多个集成电路设备上实现的多线程处理器,它利用多线程作为延迟隐藏技术来处理计算机可读指令(也称为机器可读指令或简单指令)在多个线程上并行。在一个实施例中,线程是指执行线程,并且是配置成由PPU 1000执行的一组指令的实例。在一个实施例中,PPU 1000是图形处理单元(“GPU”),其被配置成用于处理三维(“3D”)图形数据的图像渲染管线以便生成二维(“2D”)图像数据以在诸如液晶显示器(“LCD”)设备之类的显示设备上显示。在一个实施例中,PPU1000被用于执行诸如线性代数运算和机器学习操作之类的计算。图10示出了用于仅出于说明目的的示例并行处理器,应将其解释为在本公开的范围内的处理器体系结构的非限制性示例,并且任何合适的处理器可以是用于补充和/或替代相同内容。

在一实施例中,一个或更多个PPU配置成加速高性能计算(“HPC”)、数据中心和机器学***台、深度学习、高精度语音、图像、文本识别系统、智能视频分析、分子模拟、药物发现、疾病诊断、天气预报、大数据分析、天文学、分子动力学模拟、财务建模、机器人技术、工厂自动化、实时语言翻译、在线搜索优化、个性化用户推荐等。

在一个实施例中,PPU 1000包括输入/输出(“I/O”)单元1006、前端单元1010、调度器单元1012、工作分配单元1014、集线器1016、交叉开关(“Xbar”)1020、一个或更多个通用处理集群(“GPC”)1018,以及一个或更多个分区单元1022。在一个单元中,PPU 1000通过一个或更多个高速GPU互连1008连接到主机处理器或其他PPU1000。在一实施例中,PPU1000通过互连1002连接到主机处理器或其他***设备。在一实施例中,PPU1000连接到包括一个或更多个存储器设备1004的本地存储器。在一个实施例中,本地存储器包括一个或更多个动态随机存取存储器(“DRAM”)。在一个实施例中,一个或更多个DRAM设备配置成和/或可配置为高带宽存储器(“HBM”)子系统,并且在每个设备内堆叠有多个DRAM管芯。

高速GPU互连1008可指代基于有线的多通道通信链路,系统可使用该链路来扩展规模并包括一个或更多个与一个或更多个CPU结合的PPU 1000,支持PPU1000和CPU之间的缓存一致性,以及CPU主控。在一个实施例中,数据和/或命令由高速GPU互连1008通过集线器1016传输到PPU 1000的其他单元/从PPU 1000的其他单元接受,PPU 1000的其他单元例如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元和可能未在图10中明确示出的其他组件。

在一个实施例中,I/O单元1006配置成通过系统总线1002从主机处理器(图10中未示出)发送和接收通信(例如,命令、数据)。在一个实施例中,I/O单元1006直接经由系统总线1002或通过一个或更多个中间设备(例如存储器桥)与主机处理器进行通信。在一个实施例中,I/O单元1006可以经由系统总线1002与一个或更多个其他处理器(例如一个或多个PPU1000)通信。在一个实施例中,I/O单元1006实现***组件高速(“PCIe”)接口,用于通过PCIe总线进行通信。在一个实施例中,I/O单元1006实现用于与外部设备通信的接口。

在一个实施例中,I/O单元1006对经由系统总线1002接收的分组进行解码。在一个实施例中,至少一些分组表示被配置为使PPU1000执行各种操作的命令。在一个实施例中,I/O单元1006如命令所指定的那样将解码的命令发送到PPU1000的各种其他单元。在一个实施例中,命令被发送到前端单元1010和/或被发送到集线器1016或PPU 000的其他单元,例如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元等(图10中未明确示出)。在一个实施例中,I/O单元1006配置成在PPU 1000的各个逻辑单元之间和之中路由通信。

在一个实施例中,由主机处理器执行的程序在缓冲器中对命令流进行编码,该缓冲器将工作负载提供给PPU1000以进行处理。在一个实施例中,工作负载包括指令和这些指令要处理的数据。在一个实施例中,缓冲区是可由主机处理器和PPU1000两者访问(例如,读/写)的存储器中的区域-主机接口单元可以配置成访问系统存储器中的缓冲区,系统存储器经由I/O单元l006经由系统总线1002传输的存储器请求而连接至系统总线1002。在一个实施例中,主机处理器将命令流写入缓冲器,然后将指向命令流的起始点的指针发送至PPU1000,以使前端单元1010接收到指向一个或更多个命令流的指针并管理该一个或更多个流,从这些流中读取命令并将命令转发到PPU 1000的各个单元。

在一个实施例中,前端单元1010耦合到调度器单元1012,该调度器单元1012配置各个GPC1018,以处理由一个或更多个流定义的任务。在一个实施例中,调度器单元1012配置成追踪与由调度器单元1012管理的各种任务有关的状态信息,其中状态信息可以指示任务被分配给哪个GPC 1018,任务是活跃的还是非活跃的,与任务相关的优先级,等等。在一实施例中,调度器单元1012管理在一个或更多个GPC 1018上的多个任务的执行。

在一个实施例中,调度器单元1012耦合到工作分配单元1014,其被配置为分配任务以在GPC1018上执行。在一个实施例中,工作分配单元1014追踪从调度器单元1012接收的若干计划任务,并且工作分配单元1014管理每个GPC1018的未决任务池和活跃任务池。在一个实施例中,未决任务池包括多个时隙(例如32个时隙),这些时隙包含分配给要由特定的GPC1018处理的某些任务;活跃任务池可以包括用于由GPC1018正积极处理的任务的多个时隙(例如4个时隙),使得当GPC1018完成执行任务时,该任务被从GPC1018的活跃任务池中逐出,并选择未决任务池中的其他任务之一并将其安排在GPC1018上执行。在一个实施例中,如果活跃任务在GPC 1018上是空闲的,例如在等待解决数据依赖关系的同时,将活跃任务从GPC 1018驱逐出并返回到未决任务池,同时在未决任务池中选择另一个任务并安排其在GPC1018上执行。

在一个实施例中,工作分配单元1014经由交叉开关(XBar)1020与一个或更多个GPC 1018通信。在一个实施例中,交叉开关1020是将PPU 1000的许多单元耦合到PPU 1000的其他单元的互连网络,并且可以被配置为将工作分配单元1014耦合到特定的GPC 1018。尽管没有明确示出,PPU 1000的一个或更多个其他单元也可以通过集线器1016连接到交叉开关1020。

任务由调度器单元1012管理,并由工作分配单元1014分配给GPC1018。GPC1018配置成处理任务并产生结果。结果可以被GPC 1018中的其他任务消耗,可以通过交叉开关1020路由到不同的GPC 1018,或者可以存储在存储器1004中。结果可以通过分区单元1202被写入存储器1004,实现用于从存储器1004读取数据和向存储器1004写入数据的存储器接口。可以将结果经由高速GPU互连1008传输到另一PPU1004或CPU。在一个实施例中,PPU1000包括数量为U的分区单元1022,U等于耦合到PPU 1000的分离且不同的存储设备1004的数量。分区单元1022将在其他地方更详细地描述。

在一个实施例中,主机处理器执行驱动程序内核,该驱动程序内核实现应用程序编程接口(“API”),该应用程序编程接口使一个或更多个在该主机处理器上执行的应用程序能够调度要在PPU1000上执行的操作。在一个实施例中,PPU 1000同时执行多个计算应用程序,并且PPU1000为多个计算应用程序提供隔离、服务质量(“QoS”)和独立的地址空间。在一个实施例中,应用程序生成指令(例如,以API调用的形式),该指令使驱动程序内核生成由PPU1000执行的一个或更多个任务,并且驱动程序内核将任务输出到由PPU1000处理的一个或更多个流。在一个实施例中,每个任务包括一个或更多个相关线程组,可以将其称为线程束。在一个实施例中,线程束包括可以并行执行的多个相关线程(例如32个线程)。在一个实施例中,协作线程可以指多个线程,其包括执行任务并且通过共享存储器交换数据的指令。根据一个实施例,在本说明书的其他地方,更详细地描述了线程和协作线程。

图11示出了根据一个实施例的诸如图10的PPU 1000所示的GPC之类的GPC 1100。在一个实施例中,每个GPC 1100包括多个用于处理任务的硬件单元,并且每个GPC 1100包括管线管理器1102,前光栅操作单元(“PROP”)1104、光栅引擎1108、工作分配交叉开关(“WDX”)1116、存储器管理单元(“MMU”)1118、一个或更多个数据处理群集(“DPC”)1106以及部件的任何适当组合。将理解的是,图11的GPC 1100可以包括代替或附加于图11所示的单元的其他硬件单元。

在一个实施例中,GPC 1100的操作由管线管理器1102控制。管线管理器1102对一个或更多个DPC 1106的配置进行处理,以处理分配给GPC 1100的任务。在一个实施例中,管线管理器1102将一个或更多个DPC 1106中的至少一个配置为实现图形渲染管线的至少一部分。在一个实施例中,DPC 1106被配置为在可编程流式多处理器(“SM”)1114上执行顶点着色器程序。在一个实施例中,管线管理器1102配置成将从工作分配接收的分组路由到GPC1100内的适当逻辑单元,而且一些分组可以被路由到PROP 1104和/或光栅引擎1108中的固定功能硬件单元,而其他分组可以被路由到DPC 1106以由基元引擎1112或SM111处理。在一实施例中,管线管理器1102配置一个或更多个DPC 1106中的至少一个以实现神经网络模型和/或计算管线。

在一个实施例中,PROP单元1104配置成将由光栅引擎1108和DPC 1106生成的数据路由到存储器分区单元中的光栅操作(“ROP”)单元,如上面更详细地描述的。在一个实施例中,PROP单元1104配置成执行优化颜色混合、组织像素数据、执行地址转换等等。在一个实施例中,光栅引擎1108包括配置成执行各种光栅操作的多个固定功能硬件单元,并且栅格引擎1108包括设置引擎、粗糙光栅引擎、剔除引擎、剪切引擎、精细栅格引擎、瓦片合并引擎及其任意合适的组合。在一个实施例中,设置引擎接收变换后的顶点并生成与由这些顶点定义的几何图元相关联的平面方程;平面方程式被传递到粗略光栅引擎以生成图元的覆盖信息(例如,图块的x、y覆盖掩膜);粗糙光栅引擎的输出被传输到剔除引擎,在剔除引擎中,其中与z测试失败的图元相关联的片段被剔除,并传输到剪切引擎,其中位于视锥范围之外的片段将被剪切。在一个实施例中,将经过剪裁和剔除的片段传递给精细光栅引擎,以基于设置引擎生成的平面方程式生成像素片段的属性。在一个实施例中,光栅引擎1108的输出包括要由任何合适的实体(例如,由在DPC1106内实现的片段着色器)处理的片段。

在一个实施例中,包括在GPC1100中的每个DPC1106包括M-管线控制器(“MPC”)1110;基元引擎1112;一个或更多个SM1114,以及其任何合适的组合。在一个实施例中,MPC1110控制DPC1106的操作,将从管线管理器1102接收的分组路由到DPC1106中的适当单元。在一个实施例中,与顶点相关联的分组被路由到基元引擎1112,被配置为从存储器中获取与顶点相关联的顶点属性;相反,与着色器程序相关联的分组可以被发送到SM1114。

在一个实施例中,SM1114包括可编程流处理器,其配置成处理由多个线程表示的处理任务。在一个实施例中,SM1114是多线程的,并且配置成同时执行来自特定线程组的多个线程(例如32个线程),并实现SIMD(单指令,多数据)架构,其中一组线程(例如,线程束)中的每个线程配置成基于同一组相同的指令来处理不同的数据集。在一个实施例中,线程组中的所有线程执行相同的指令。在一个实施例中,SM1114实现了SIMT(单指令,多线程)架构,其中,一组线程中的每个线程配置成基于相同的指令集来处理不同的数据集,但是其中线程组中的单个线程在执行期间允许发散。在一个实施例中,为每个线程束维护程序计数器、调用栈和执行状态,从而当线程束内的线程发散时,实现线程束和在线程束内的串行执行之间的并发。在另一个实施例中,为每个单独的线程维护程序计数器、调用堆栈和执行状态,从而使得在线程束内和线程束之间、所有线程之间具有相等的并发性。在一个实施例中,为每个单独的线程维持执行状态,并且为了更好的效率,可以收敛并并行地执行执行相同指令的线程。在一个实施例中,下面将更详细地描述SM1114。

在一个实施例中,MMU1118提供了GPC1100与存储器分区单元之间的接口,而MMU1118提供了虚拟地址到物理地址的转换、存储器保护以及对存储器请求的仲裁。在一个实施例中,MMU1118提供一个或更多个转换后备缓冲器(“TLB”),用于将虚拟地址转换为存储器中的物理地址。

图12示出了根据一个实施例的诸如图11的流式多处理器之类的流式多处理器。在一个实施例中,SM 1200包括:指令高速缓存1202;一个或更多个调度器单元1204;寄存器文件1208;一个或更多个处理核心1210;一个或更多个特殊功能单元(“SFU”)1212;一个或更多个加载/存储单元(“LSU”)1214;互连网络1216;共享存储器/L1高速缓存1218;及其任何合适的组合。在一个实施例中,工作分配单元调度任务以在PPU的GPC上执行,并且每个任务被分配给GPC内的特定DPC,并且,如果该任务与着色器程序相关联,则该任务被分配给SM1200。在一个实施例中,调度器单元1204从工作分配单元接收任务,并管理分配给SM 1200的一个或更多个线程块的指令调度。在一个实施例中,调度器单元1204调度线程块以作为并行线程的线程束执行,其中每个线程块被分配至少一个线程束。在一个实施例中,每个线程束执行线程。在一个实施例中,调度器单元1204管理多个不同的线程块,将线程束分配给不同的线程块,然后在每个时钟周期将来自多个不同的协作组的指令分配给各个功能单元(例如,核心1210、SFU 1212、和LSU 1214)。

合作组可以指用于组织通信线程组的编程模型,该模型允许开发人员表达通信线程的粒度,从而能够表达更丰富、更有效的并行分解。在一个实施例中,协作启动API支持线程块之间的同步以执行并行算法。在一个实施例中,常规编程模型的应用提供了用于同步协作线程的单一、简单的构造:跨线程块所有线程的屏障(例如,syncthreads()函数)。但是,编程人员通常希望以小于线程块粒度的方式定义线程组,并在定义的组内进行同步,以实现更高的性能、设计灵活性以及以集体范围内的功能接口的形式来复用软件。合作组使编程人员能够在子块(即,小到单个线程)和多块粒度上明确定义线程组,并在协作组中对线程执行集体操作(例如同步)。编程模型支持跨软件边界的洁净构成,以便库和实用函数可以在其本地上下文中安全地同步,而不必假设收敛性。合作组基元启用了新的合作并行模式,包括生产者-消费者并行、机会主义并行以及跨整个线程块网格上的全局同步。

在一个实施例中,分派单元1206配置成将指令发送到一个或更多个功能单元,并且调度器单元1204包括两个分派单元1206,其使得来自相同线程束的两个不同指令能够在每个时钟周期中被分派。在一个实施例中,每个调度器单元1204包括单个分派单元1206或额外的分派单元1206。

在一个实施例中,每个SM 1200包括寄存器文件1208,其为SM 1200的功能单元提供一组寄存器。在一个实施例中,寄存器文件1208被划分在每个功能单元之间,使得每个功能单元被分配寄存器文件1208的专用部分。在一实施例中,寄存器文件1208被划分在SM1200执行的不同线程束之间,并且寄存器文件1208为连接到功能单元的数据路径的操作数提供临时存储。在一个实施例中,每个SM 1200包括多个L处理核心1210。在一个实施例中,SM1200包括大量(例如128个或更多个)不同的处理核心1210。在一个实施例中,每个核心1210包括全管线、单精度、双精度和/或混合精度处理单元(包括浮点算术逻辑单元和整数算术逻辑单元)。在一个实施例中,浮点算术逻辑单元实现用于浮点算术的IEEE 754-2008标准。在一个实施例中,核心1210包括64个单精度(32位)浮点核心、64个整数核心、32个双精度(64位)浮点核心和8个张量核心。

根据一个实施例,张量核心配置成执行矩阵运算。在一个实施例中,一个或更多个张量核被包括在核心1210中。在一个实施例中,张量核心配置成执行深度学习矩阵算术,例如用于神经网络训练和推理的卷积运算。在一个实施例中,每个张量核在4×4矩阵上操作并且对矩阵进行乘法和累加操作D=A×B+C,其中A、B、C和D为4×4矩阵。

在一个实施例中,矩阵乘法输入A和B是16位浮点矩阵,并且累加矩阵C和D是16位浮点或32位浮点矩阵。在一个实施例中,张量核心对16位浮点输入数据和32位浮点进行累加运算。在一个实施例中,该16位浮点乘法需要64次运算,并产生全精度乘积,然后使用32位浮点加法将其与其他中间乘积相加,以进行4×4×4矩阵乘法。在一个实施例中,张量核心用于执行更大的二维或更高维的矩阵运算,这些运算由这些较小的元素构成。在一个实施例中,诸如CUDA 9C++API之类的API公开专门的矩阵加载、矩阵乘法和累加以及矩阵存储操作以有效地使用来自CUDA-C++程序的张量核心。在一个实施例中,在CUDA级别,线程束级接口假定l 6×16大小的矩阵跨线程束的所有32个线程。

在一个实施例中,执行特定功能(例如,属性评估、倒数平方根等)的每个SM1200包括M个SFU 1212。在一个实施例中,SF1212包括配置成遍历分层树数据结构的树遍历单元。在一个实施例中,SFU 1212包括配置成执行纹理图过滤操作的纹理单元。在一个实施例中,纹理单元配置成从存储器中加载纹理贴图(例如,纹理的2D阵列)以及对纹理图进行采样,以生成采样的纹理值,以供SM 1200执行的着色器程序使用。在一个实施例中,纹理图存储在共享存储器/LI高速缓存中。根据一个实施例,纹理单元实施纹理操作,例如使用mip-maps(例如,具有细节的变化级别的纹理图)进行过滤操作。在一个实施例中,每个SM 1200包括两个纹理单元。

在一个实施例中,每个SM 1200包括N个LSU,其实现在共享存储器/LI高速缓存和寄存器文件1208之间的加载和存储操作。在一个实施例中,每个SM 1200包括互连网络1216,其将每个功能单元连接到寄存器文件1208并且将LSU 1214连接到寄存器文件1208、共享存储器/LI高速缓存1218。在一个实施例中,互连网络1216是可以配置为将任何功能单元连接到寄存器文件1208中的任何寄存器并将LSU 1214连接到寄存器文件和共享存储器/LI高速缓存1218中的存储器位置的交叉开关。

在一个实施例中,共享存储器/L1高速缓存1218是片上存储器的阵列,其允许SM1200和基元引擎之间以及SM 1200中的线程之间的数据存储和通信。在一个实施例中,共享存储器/LI高速缓存1218包括128KB的存储容量,并且在从SM 1200到分区单元的路径中。在一个实施例中,共享存储器/LI缓存1218用于缓存读取和写入。共享存储器/LI高速缓存1218、L2高速缓存和存储器中的一个或多个是后备存储器。

在一个实施例中,将数据高速缓存和共享存储器功能组合到单个存储器块中,为两种类型的存储器访问提供了改进的性能。在一个实施例中,该容量被不使用共享内存的程序使用或用作高速缓存,例如,如果共享内存配置为使用一半的容量,纹理以及加载/存储操作可以使用剩余容量。根据一个实施例,在共享存储器/LI高速缓存1218内的集成使共享存储器/LI高速缓存1218能够用作用于流传输数据的高吞吐量管道,同时提供对频繁重用的数据的高带宽和低延迟访问。当配置用于通用并行计算时,与图形处理相比,可以使用更简单的配置。在一个实施例中,固定功能图形处理单元被绕过,从而创建了更简单的编程模型。在一个实施例中,在通用并行计算配置中,工作分配单元直接将线程的块分派和分配给DPC。根据一个实施例,块中的线程执行相同的程序,在计算中使用唯一的线程ID以确保每个线程生成唯一的结果,使用SM1200执行程序和执行计算,共享存储器/Ll高速缓存1218在线程之间进行通信,以及LSU1214通过共享存储器/L1高速缓存1218和存储器分区单元1214来读取和写入全局存储器。在一个实施例中,当被配置用于通用并行计算时,SM 1200写入命令,调度器单元可以使用该命令来在DPC上启动新工作。

在一个实施例中,PPU包括在台式计算机、膝上型计算机、平板计算机、服务器、超级计算机、智能电话(例如,无线、手持设备)、个人数字助理(“PDA”)、数码相机、车辆、头戴式显示器、手持式电子设备等中或与之耦合。在一个实施例中,PPU被封装在单个半导体衬底上。在一个实施例中,PPU与一个或更多个其他设备(例如附加的PPU、存储器、精简指令集计算机(“RISC”)CPU)、存储器管理单元(“MMU”)、数模转换器(“DAC”)等一起包括在片上系统(“SoC”)中。

在一个实施例中,PPU可以被包括在包括一个或更多个存储设备的图形卡上。图形卡可以配置为与台式计算机的主板上的PCIe插槽交互。在又一个实施例中,PPU可以是主板的芯片组中包括的集成图形处理单元(“iGPU”)。

图13示出了根据一个实施例的可以在其中实现各种架构和/或功能的计算机系统1300。在一个实施例中,计算机系统1300配置成实现贯穿本公开描述的各种过程和方法。

在一个实施例中,计算机系统1300包括至少一个中央处理单元1302,该中央处理单元1302连接到使用任何合适的协议(例如PCI(***组件互连)、PCI-Express、AGP(加速图形端口)、超传输(HyperTransport)或任何其他总线或点对点通信协议)实现的通信总线1310。在一个实施例中,计算机系统1300包括主存储器1304和控制逻辑(例如,实现为硬件、软件或其组合),并且数据被存储在主存储器1304中,其可以采取随机存取存储器(“RAM”)的形式。在一个实施例中,网络接口子系统1322向其他计算设备和网络提供接口,以用于从计算机系统1300接收数据并将数据从计算机系统1300传输到其他系统。

在一个实施例中,计算机系统1300包括输入设备1308、并行处理系统1312和显示设备1306,显示设备1306可以使用常规CRT(阴极射线管)、LCD(液晶显示器)、LED(发光二极管)、等离子显示器或其他合适的显示技术。在一个实施例中,从诸如键盘、鼠标、触摸板、麦克风等的输入设备1308接收用户输入。在一个实施例中,每个前述模块可以位于单个半导体平台上以形成处理系统。

在本说明书中,单个半导体平台可以指唯一的统一的基于半导体的集成电路或芯片。应当注意,术语“单个半导体平台”也可以指具有增加的连通性的多芯片模块,其模拟芯片上的操作,并且通过利用传统中央处理单元(“CPU”)和总线实现方式进行了实质性的改进。当然,根据用户的需求,各个模块也可以单独放置或以半导体平台的各种组合放置。

在一个实施例中,以机器可读的可执行代码或计算机控制逻辑算法的形式的计算机程序被存储在主存储器1304和/或辅助存储器中。如果由一个或更多个处理器执行,则计算机程序使系统1300能够执行根据一个实施例的各种功能。主存储器1304、存储器和/或任何其他存储器是计算机可读介质的可能示例。辅助存储可以指任何合适的存储设备或系统,例如硬盘驱动器和/或可移动存储驱动器,表现为软盘驱动器、磁带驱动器、光盘驱动器、数字多功能磁盘(“DVD”)驱动器、记录设备、通用串行总线(“USB”)闪存。

在一个实施例中,各个先前附图的架构和/或功能是在中央处理器1302;并行处理系统1312;具有中央处理器1302和并行处理系统1312两者的至少一部分能力的集成电路;芯片组(例如,一组设计为工作并作为执行相关功能的单元出售的集成电路等)以及任何合适的集成电路组合的背景中实现的。

在一个实施例中,各种先前附图的架构和/或功能是在通用计算机系统、电路板系统、专用于娱乐目的的游戏控制台系统、应用程序专用系统等的背景中实现的。在一个实施例中,计算机系统1300可以采取台式计算机、膝上型计算机、平板计算机、服务器、超级计算机、智能电话(例如,无线、手持设备)、个人数字助理(“PDA”)、数码相机、车辆、头戴式显示器、手持式电子设备、移动电话设备、电视、工作站、游戏机、嵌入式系统和/或任何其他类型的逻辑。

在一个实施例中,并行处理系统1312包括多个PPU 1314和相关联的存储器1316。在一个实施例中,PPU经由互连1318和开关1320或多路复用器连接到主机处理器或其他***设备。在一个实施例中,并行处理系统1312跨(一个或者更多个)PPU 1314分布计算任务,计算任务可以是并行的,例如,作为跨多个GPU线程块的计算任务分布的一部分。在一个实施例中,存储器尽管在整个PPU 1314或所有PPU 1314之间共享和整个PPU 1314或所有PPU1314由访问(例如,用于读和/或写访问),尽管相对于使用本地存储器和驻留在PPU中的寄存器而言,这样的共享存储器可能招致性能损失。在一个实施例中,通过使用诸如_syncthreads()之类的命令来同步PPU1314的操作,该命令要求块中的所有线程(例如,跨多个PPU 1314执行)必须在继续执行之前到达代码的特定执行点。

因此,说明书和附图应被认为是说明性的而不是限制性的。但是,很明显,在不脱离权利要求书所提出的本发明的更广泛精神和范围的前提下,可以对其做出各种修改和改变。

其他变型在本公开的精神内。因此,尽管所公开的技术易于进行各种变构和替代构造,但是某些示出的实施例由此在附图中示出并且已经在上面进行了详细描述。然而,应当理解,无意将本发明限制为所公开的特定形式或形式,相反,其意图是涵盖落入本发明的精神和范围内的所有修改、替代构造和等同形式,如所附权利要求所定义的。

在描述所公开的实施例的上下文中(特别是在所附权利要求的上下文中)术语“一”、“一个”和“所述”以及类似指代的使用应被解释为涵盖单数和复数,除非本文另有说明或与上下文明显矛盾。除非另外指出,否则术语“包括”、“具有”、“包含”和“含有”应解释为开放式术语(即,意思是“包括但不限于”)。术语“连接”(未经修改且指的是物理连接),应理解为完全或部分地包含在,附加到或连接在一起,即使有某物介入。本文中数值范围的引用仅旨在用作一种简写方法,除非本文另有说明,否则分别指代落入该范围内的每个单独值,并且每个单独值都被并入说明书中,就如同在此单独引用一样。术语“集合”(例如,“项目的集合)”或“子集”的使用,除非上下文另有说明或与之矛盾,否则应解释为包含一个或更多个成员的非空集合。此外,除非上下文另有说明或与之矛盾,否则相应集合的术语“子集”不是必需表示相应集合的适当子集,但是该子集和相应集合可以相等。

连接的语言,例如“A、B和C中的至少一个”或“A、B和C至少一个”形式的短语,除非另有明确说明或与上下文明显矛盾否则,否则可以作为通常使用与上下文一起理解以呈现项目、条款等,可以是是A或B或C,也可以是A和B以及C的集合的任何非空子集。例如,在具有三个成员的集合的示例性示例中,连接短语“A、B和C中的至少一个”和“A,B和C中的至少一个”是指以下任意集合:{A}、{B}、{C}、{A,B}、{A,C}、{B,C}、{A,B,C}。因此,这种连接语言通常并不旨在暗示某些实施例需要至少一个A、至少一个B和至少一个C,他们每一个用于呈现。另外,除非另有说明或与上下文矛盾,否则术语“多个”表示复数的状态(例如,“多个项目”表示复数个项目)。“多个”中项目的数量的至少是两个,但是当明确地或通过上下文指示时可以是更多。此外,除非另有说明或从上下文中另外可知,否则短语“基于”是指“至少部分基于”而不是“仅基于”。

可以以任何合适的顺序来执行本文描述的过程的操作,除非本文另有指示或与上下文明显矛盾。在一个实施例中,诸如本文描述的那些过程(或其变型和/或组合)的过程在一个或更多个计算机系统中的一个控制下通过硬件或其组合执行,一个或更多个计算机系统配置有可执行指令并且被实现为在一个或多个处理器上共同执行的代码(例如,可执行指令、一个或更多个计算机程序或一个或更多个应用程序)。在一个实施例中,代码以计算机程序的形式存储在计算机可读存储介质上,该计算机程序包括可由一个或多个处理器执行的多个指令的计算机程序。在一个实施例中,计算机可读存储介质是非暂时性计算机刻度存储介质,其不包括暂时信号(例如,传播的瞬态电或电磁传输)但包括瞬时信号的收发器内的非暂时性数据存储电路(例如,缓冲器、高速缓存和队列)。在一个实施例中,代码(例如,可执行代码或源代码)被存储在其上存储有可执行指令(或其他存储器以存储可执行指令)的一组一个或更多个非暂时性计算机可读存储介质上,该可执行指令在被执行时(例如,由于被计算机系统的一个或更多个处理器执行,使计算机系统执行本文所述的操作。在一个实施例中,该组非暂时性计算机可读存储介质包括多个非暂时性计算机可读存储介质,以及多个非暂时性计算机可读存储介质中的一个或更多个单独的非暂时性存储介质缺少全部代码,而多个非暂时性计算机可读存储介质共同存储所有代码。在一个实施例中,可执行指令被执行,使得不同的指令被不同的处理器执行-例如,非暂时性计算机可读存储介质存储指令,并且主CPU执行一些指令,而图形处理器单元执行其他指令。在一个实施例中,计算机系统的不同组件具有独立处理器,以及不同处理器执行指令的不同子集。

因此,在一个实施例中,计算机系统配置成实现单独或共同执行本文所述的过程的操作的一个或更能多个服务,并且这样的计算机系统配置有能够使操作的执行的适用的硬件和/或软件。此外,实现本公开的实施例的计算机系统是单个设备,并且在另一实施例中,是一种分布式计算机系统,其包括以不同方式操作的多个设备,使得该分布式计算机系统执行本文所述的操作,并且使得单个设备不执行所有操作。

除非另外要求,本文提供的任何和所有示例或示例性语言(例如,“诸如”)的使用仅旨在更好地阐明本发明的实施例,而不对本发明的范围构成限制。本说明书中的语言不应解释为表示任何未要求保护的要素对于实施本发明是必不可少的。

这里描述了本公开的实施例,包括发明人已知的用于实施本发明的最佳方式。这些实施例的变型对于本领域普通技术人员而言,在阅读了前述说明之后将变得显而易见。发明人期望熟练的技术人员适当地采用这种变型,并且发明人希望本公开的实施例可以不同于本文具体描述的方式实施,因此,本公开的范围包括所列举的主题的所有修改和等同形式。此外,除非本文另外指出或与上下文明显矛盾,否则上述元件在其所有可能的变型中的任何组合都包括在本公开的范围之内。

本文引用的所有参考文献,包括出版物、专利申请和专利,均以引用的方式并入本文,其程度如同每个参考文献被单独且具体地指示以引用方式并入本文一样,并在此全文进行阐述。

在说明书和权利要求书中,可以使用术语“耦合”和“连接”及其派生词。应当理解,这些术语可能不旨在作为彼此的同义词。相反,在特定示例中,“连接”或“耦合”可用于指示两个或更多个元件彼此直接或间接物理或电接触。“耦合”也可能意味着两个或多个元素彼此不直接接触,但仍彼此协作或交互。

除非另有说明,否则应理解,在整个说明书中,诸如“处理”、“计算处理”、“计算”、“确定”等术语均指计算机或计算系统或类似的电子计算设备的动作和/或过程,这些电子设备将在计算系统的寄存器和/或存储器中表示为物理量(例如电子)的数据(例如电子)操作和/或转换为类似地表示为计算系统的存储器、寄存器或其他此类信息存储器、传输或显示设备中的物理量的其他数据。

在类似的方式中,术语“处理器”可以指处理来自寄存器和/或存储器的电子数据并将该电子数据转换成可以存储在寄存器和/或存储器中的其他电子数据的任何设备或设备的一部分。作为非限制性示例,“处理器”可以是中央处理单元(CPU)或图形处理单元(GPU)。“计算平台”可以包括一个或更多个处理器。如本文所使用的,“软件”过程可以包括例如随时间执行工作的软件和/或硬件实体,诸如任务、线程和智能代理。同样,每个过程可以指代多个过程,以依次或并行,连续或间歇地执行指令。术语“系统”和“方法”在本文中可互换使用,以达到一种该系统可以体现一种或更多种方法并且该方法可以被认为是系统的程度。

在本文档中,可以参考获得、获取、接收或将模拟或数字数据输入子系统、计算机系统或计算机实现的机器。可以以多种方式来完成获得、获取、接收或输入模拟和数字数据的过程,例如通过接收作为函数调用或对应用程序接口的调用的参数的数据。在一些实施方式中,获得、获取,接收或输入模拟或数字数据的过程可以通过经由串行或并行接口传输数据来完成。在另一个实施方式中,获得、获取、接收或输入模拟或数字数据的过程可以通过经由计算机网络将数据从提供实体转移到获取实体来完成。也可以参考提供、输出、传输、发送或呈现模拟或数字数据。在各种示例中,提供、输出、传输、发送或呈现模拟或数字数据的过程可以通过将数据作为函数调用的输入或输出参数、应用程序编程接口或进程间通信机制的参数进行传输来完成。

尽管以上讨论阐述了所描述的技术的示例实施方式,但是其他架构可以用于实现所描述的功能,并且意图在本公开的范围内。此外,尽管出于讨论目的在上面定义了具体的职责分配,但是根据情况,各种功能和职责可能以不同的方式分配和划分。

此外,尽管已经以结构特征和/或方法动作专用的语言描述了主题,但应理解,所附权利要求书中定义的主题不必限于所描述的特定特征或动作。而是,将特定特征和动作公开为实现权利要求的示例性形式。

34页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种新型超压设备

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!