为医疗应用分配计算资源的系统和方法
技术领域
本申请一般涉及计算资源管理,尤其涉及用于为医疗应用分配计算资源的系统和方法。
背景技术
医疗中心,诸如医院和医学成像中心,通常拥有多个医学成像设备,例如CT、MR、PET和其他成像设备。在一些实施例中,成像设备可以被配置为执行与诸如用于显示的3D图像渲染、图像重建等有关的医疗应用。在一些实施例中,医疗中心通常可以有多个工作站以执行诸如图像后处理(例如,3D图像渲染)的医疗应用。
由医疗设备或工作站执行的各种医疗应用可能需要高计算能力/计算资源来平稳地执行医疗应用。为此目的,通常可以在医疗设备的计算设备主机中部署具有强计算能力的一个或以上图形/高性能处理器。计算设备的计算资源通常可以分配给单个医疗设备或甚至单个医疗应用。为了避免资源浪费和成本节省,期望提供用于有效地为医疗应用分配计算资源的系统和方法。
发明内容
本申请的第一方面,提供了一种用于为医疗应用分配计算资源的系统。该系统可以包括至少两个计算设备、网络、至少一个存储设备和一个或以上资源管理器。至少两个计算设备中的每一个可以包括至少一个处理器。网络可以被配置用于促进系统中的组件之间的通信。至少一个存储设备可以存储可执行指令。一个或以上资源管理器可以被配置为通过网络与至少两个计算设备和至少一个存储设备通信,当执行可执行指令时,系统可以被配置为执行一个或以上的下述操作。可以通过用户界面从至少一个客户终端接收执行医疗应用的请求,每个医疗应用可以具有优先级。可以从医疗应用中识别其优先级满足条件的第一医疗应用。可确定与第一医疗应用相关的第一标准。第一标准可以表征第一医疗应用所需的估计的计算资源。可以确定与至少两个计算设备中的每一个相关联的第二标准。第二标准可以表征至少两个计算设备中的每一个的特征。可以基于第一标准和第二标准从至少两个计算设备中识别第一计算设备,并可以将第一医疗应用分配给第一计算设备以执行。
在一些实施例中,医疗应用可以包括图像重建应用、图像后处理应用、体渲染应用、虚拟现实应用或人工智能应用中的至少一个。
在一些实施例中,第一医疗应用所需的估计的计算资源可以由第一医疗应用占用的估计存储量、执行第一医疗应用的计算设备的类型或计算设备的计算能力中的至少一个来定义。
在一些实施例中,系统可以进一步被配置为执行一个或以上下述操作。可以保留用于第一医疗应用的第一计算设备的计算资源的一部分。第一计算设备的计算资源的一部分可以大于或等于第一医疗应用所需的估计的计算资源。可以记录分配给第一医疗应用的第一计算设备的计算资源的一部分。当第一计算设备完成执行第一医疗应用时,可以释放第一计算设备的计算资源的一部分。
在一些实施例中,系统可以进一步被配置为执行一个或以上下述操作。可以基于第一医疗应用所需的估计的计算资源和/或为第一医疗应用保留的第一计算设备的计算资源的一部分,来识别第一计算设备的空闲计算资源。可以记录所识别的空闲计算资源。
在一些实施例中,系统可以进一步被配置为执行一个或以上下述操作。通过确定第一医疗应用是否与第二计算设备执行的第二医疗应用相似或相关,可以从至少两个计算设备中确定第一计算设备。
在一些实施例中,系统可以进一步被配置为执行一个或以上下述操作。可以确定第一医疗应用是否与第二医疗应用相似或相关。响应于确定第一医疗应用与第二医疗应用相似或相关,可以确定第二计算设备的第二标准是否满足与第一医疗应用相关的第一标准。响应于确定第二计算设备的第二标准满足与第一医疗应用相关的第一标准,第二计算设备可被指定为第一计算设备。
在一些实施例中,系统可以进一步被配置为执行一个或以上下述操作。可确定第一医疗应用与第二医疗应用不相似或无关。可以从至少两个计算设备中识别出一个或以上第三计算设备。一个或以上第三计算设备中的每一个设备的第二标准可满足与第一医疗应用相关的第一标准。在一个或以上第三计算设备中具有最大空闲计算资源的第三计算设备可被指定为第一计算设备。
在一些实施例中,系统可以进一步被配置为执行一个或以上下述操作。可以确定至少两个计算设备中的每一个的第二标准不满足与第一医疗应用相关的第一标准。可以确定分配给第四计算设备的第三医疗应用。第三医疗应用的优先级低于第一医疗应用的优先级。被第三医疗应用保留或占用的第四计算设备的计算资源可被释放。第四计算设备可以被指定为第一计算设备。
在一些实施例中,系统可以进一步被配置为执行一个或以上下述操作。可以确定至少两个计算设备中的每一个的第二标准不满足与第一医疗应用相关联的第一标准。第一医疗应用可以分为至少两个任务。可以将至少两个任务分配给至少两个计算设备中的至少一个。
在一些实施例中,系统可以进一步被配置为执行一个或以上下述操作。可以确定其优先级与第一医疗应用相同或相似的第四医疗应用。可以确定第一医疗应用的等待时间长于第四医疗应用的等待时间或第一医疗应用的估计的计算资源低于第四医疗应用的估计的计算资源。
在一些实施例中,系统可以进一步被配置为执行一个或以上下述操作。第一计算设备可以执行第一医疗应用以生成结果。与第一医疗应用相关联的结果可以被发送到至少一个客户终端。
在一些实施例中,至少两个计算设备中的每一个可以包括一个或以上计算卡。
在一些实施例中,一个或以上资源管理器可以包括用于接收并将请求分配给一个或以上资源管理器的网络负载均配器。
在一些实施例中,系统可以进一步被配置为执行一个或以上下述操作。第一医疗应用的一个或以上特征可以通过用户界面从至少一个客户终端接收。
在一些实施例中,系统可以进一步被配置为执行一个或以上下述操作。已经分配给计算设备以执行第一医疗应用的通知可以经由用户界面提供给至少一个客户终端。
本申请的第二方面,提供了一种用于为医疗应用分配计算资源的方法。该方法可以在包括至少一个处理器和存储设备的计算设备上实现。所述方法可以包括一个或以上下述操作。可以通过用户界面从至少一个客户终端接收执行医疗应用的请求,每个医疗应用可以具有优先级。可以从医疗应用中识别其优先级满足条件的第一医疗应用。可确定与第一医疗应用相关的第一标准。第一标准可以表征第一医疗应用所需的估计的计算资源。可以确定与至少两个计算设备中的每一个相关的第二标准。第二标准可以表征至少两个计算设备中的每一个的特征。可以基于第一标准和第二标准从至少两个计算设备中识别第一计算设备。可以将第一医疗应用分配给第一计算设备以执行。
本申请的第三方面,非暂时性计算机可读介质可以存储指令,该指令在由计算设备执行时,可以被配置为执行一个或以上下述操作。可以通过用户界面从至少一个客户终端接收执行医疗应用的请求,每个医疗应用可以具有优先级。可以从医疗应用中识别其优先级满足条件的第一医疗应用。可确定与第一医疗应用相关的第一标准。第一标准可以表征第一医疗应用所需的估计的计算资源。可以确定与至少两个计算设备中的每一个相关联的第二标准。第二标准可以表征至少两个计算设备中的每一个的特征。可以基于第一标准和第二标准从至少两个计算设备中识别第一计算设备。可以将第一医疗应用分配给第一计算设备以执行。
本申请的第四方面,提供了一种用于为医疗应用分配计算资源的方法。该方法可以由计算系统实现。计算系统可以包括至少两个计算节点。所述方法可以包括一个或以上下述操作。可以通过计算系统经由用户界面从至少一个客户终端接收用于执行医疗应用的一个或以上请求。每个医疗应用可以具有优先级。对于优先级满足条件的医疗应用中的至少一个,可以基于医疗应用中的至少一个的任务属性确定一个或以上计算节点。所述一个或以上确定的计算节点可以执行医疗应用中的至少一个。
在一些实施例中,该方法还可包括一个或以上下述操作。基于所述任务属性,评估医疗应用中的至少一个所需的估计的计算资源,所述任务属性包括医疗应用中的至少一个占用的估计的存储量、执行医疗应用中的至少一个的一个或以上计算节点的类型、一个或以上计算节点的计算能力或任务亲和力中的至少一个。可以确定其计算资源与估计的计算资源匹配的一个或以上计算节点。
在一些实施例中,医疗应用可以包括图像重建应用、图像后处理应用、体渲染应用、虚拟现实应用或人工智能应用中的至少一个。
本申请的一部分附加特性可以在下面的描述中进行说明。通过对以下描述和相应附图的检查或者对实施例的生产或操作的了解,本申请的一部分附加特性对于本领域技术人员是明显的。本披露的特性可以通过对以下描述的具体实施例的各种方面的方法、手段和组合的实践或使用得以实现和达到。
附图描述
可以根据示例性实施例进一步描述本申请。参考附图详细描述这些示例性实施例。附图不是按比例绘制的。这些实施例是非限制性示例性实施例,其中相同的附图标记在附图的若干视图中表示类似的结构。
图1是根据本申请的一些实施例示出的示例性医疗系统的示意图;
图2A是根据本申请一些实施例示出的可以实现处理设备120的示例性计算集群的示意图;
图2B是根据本申请一些实施例示出的可以实现处理引擎的另一示例性计算集群的示意图;
图3是根据本申请一些实施例示出的可以在其上实现医疗系统的示例性计算设备的示意图;
图4是根据本申请一些实施例示出的可以在其上实现终端的示例性移动设备的示例性硬件和/或软件组件的示意图;
图5是根据本申请一些实施例示出的示例性资源管理器的框图;
图6是根据本申请一些实施例示出的为医疗应用分配计算资源的示例性流程的流程图;
图7A和图7B是根据本申请一些实施例示出的响应于执行医疗应用的请求而为医疗应用分配计算资源的另一示例性流程的流程图;以及
图8A至图8E是根据本申请一些实施例示出的可以在其上实现医疗系统100的计算集群的示例性任务处理进程的示意图。
具体描述
在下面的详细说明中,通过举例说明了许多具体细节,以便对有关的发明有透彻的了解。然而,对于本领域技术人员来说,本申请可以在没有这些细节的情况下进行实践,这一点应该是显而易见的。在其他情况下,众所周知的方法、流程、系统、组件和/或电路在相对高级的情况下没有详细描述,以避免不必要地模糊本申请的一些方面。对本领域技术人员来说,显然可以对所披露的实施例进行各种修改。另外,在不偏离本申请的原则和范围的情况下,本申请中所定义的普遍原则可以适用于其他实施例和应用场景。因此,本申请并不限于所披露的实施例,而应被给予与权利要求一致的最宽泛的范围。
此处使用的术语仅用于描述特定的示例性实施例,而不具有限定性。如本申请和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其他的特征、整数、步骤、操作、元素、组件和/或组。
在这里“系统”、“引擎”、“单元”、“模块”和/或“块”可以理解为是用来以升序排列的方法区分不同部件、元件、部件、截面或装配。然而,如果他们达到相同的目的,该术语可能被其他表达式取代。
通常,这里所使用的“模块”、“单元”、“模块”或“块”一词指的是硬件或固件中所体现的逻辑,或指软件指令集。本申请中所描述的模块、单元或块可以作为软件和/或硬件被实现,并且可以存储在任何类型的非临时计算机可读介质或其它存储设备中。在一些实施例中,可以将软件模块/单元/块编译并链接到可执行程序中。可以理解的是,软件模块可以从其他模块/单元/块或自身调用,并且/或可以响应检测到的事件或中断调用。在计算设备(例如,如图3所示的中央处理器320)上执行的软件模块/单元/模块可以在计算机可读介质,如光盘、数字视频光盘、闪存驱动器、磁盘或其他任何有形媒介上提供,或作为数字下载(可最初存储在压缩或安装的格式,需要安装、解压或解密之前执行)。这样的软件代码可以部分或全部地存储在计算机的存储设备中,被计算机执行。软件指令可以嵌入在固件中,如可擦可编程只读存储器。将进一步理解的是,硬件模块/单元/块可以包括在连接的逻辑组件中,例如门和触发器,和/或可以包括可编程单元,例如可编程门阵列或处理器。本申请中所描述的模块/单元/块或计算设备功能可以作为软件模块/单元/块被实现,但可以用硬件或固件来表示。一般来说,这里所描述的模块/单元/块指的是与其他模块/单元/块相结合的逻辑模块/单元/块,或者尽管它们的物理结构或存储被划分为子模块/子单元/子块。所述描述可适用于系统、引擎或其部分。
可以理解的是,当单元、引擎、模块或块被称为“在”、“连接到”或“耦合到”另一个单元、引擎、模块或块时,它可以直接在、连接到、耦合到或者与其他单元、引擎、模块、或块、或中间可能是存在的单元、引擎、模块或块通信,除非上下文另有明确指示。如本申请所用,术语“和/或”包括至少一个相关的所列元素的所有组合。
在考虑了作为本申请一部分的附图的描述内容后,本申请的特征和特点以及操作方法、结构的相关元素的功能、各部分的组合、制造的经济性变得显而易见。然而,应该理解的是,附图是不按比例的,并且以上附图是示意性的,不对本申请的范围加以限制。
本文提供了用于计算资源分配以执行医疗系统中的医疗应用的系统和组件。医疗系统可以在不同领域中找到其应用,例如疾病诊断、身体检查或疾病治疗。例如,医疗系统可以用于内部检查(例如,非侵入性内部检查),包括例如肿瘤代谢、脑功能、心脏功能等,或其任何组合。
提供以下描述以帮助更好地理解为医疗应用分配计算资源以响应于通过与至少一个客户终端交互而接收的执行医疗应用的请求。该系统可以包括至少两个计算设备,一个或以上资源管理器,以及存储可执行指令的至少一个存储设备。在从至少一个客户终端接收到执行医疗应用的请求之后,资源管理器可以从医疗应用中识别出优先级满足条件的第一医疗应用。资源管理器可以确定第一医疗应用所需的预计计算资源。此外,基于第一医疗应用所需的预计计算资源和计算设备的空闲计算资源,资源管理器可以从至少两个计算设备中确定计算设备。系统可以基于执行医疗应用的实时请求、医疗应用的优先级和可用的计算设备来分配计算设备。为了优化计算设备分配和/或流水线化医疗应用的执行,系统还可以在由计算设备执行的医疗应用完成时释放计算设备,或者对计算设备分配进行实时调整,以便计算设备可以执行另一个医疗应用。例如,系统可以暂停或终止计算设备上的第一医疗应用的执行,使得计算设备可以执行比第一医疗应用更紧急和/或消耗更少时间的第二医疗应用。因此,该系统可以提高至少两个计算设备的使用效率,减少计算设备的空闲时间和执行医疗应用的等待时间,并且允许及时执行医疗应用。
图1是根据本申请的一些实施例示出的示例性医疗系统100的示意图。在一些实施例中,医疗系统100可以是单模态系统或多模态系统。示例性单模系统可包括计算机断层摄影(CT)系统、数字射线照相(DR)系统、正电子发射断层摄影(PET)系统、磁共振(MR)系统、放射治疗(RT)系统等。示例性多模态系统可包括计算机断层摄影-正电子发射断层摄影(CT-PET)系统,磁共振-正电子发射断层摄影(MR-PET)系统等。在一些实施例中,医疗系统100可包括用于执行成像和/或相关分析的模块和/或组件。
仅作为示例,如图1所示,医疗系统100可以包括医疗设备110、处理设备120、存储设备130、一个或以上终端140和网络150。医疗系统100中的组件可以以各种方式中的一种或多种方式连接。仅作为示例,医疗设备110可以通过网络150连接到处理设备120。作为另一示例,医疗设备110可以直接连接到处理设备120,如图1所示。作为另一示例,一个或以上终端140可以经由网络150连接到医疗系统100的另一个组件(例如,处理设备120)。作为又一示例,至少一个终端140可以直接连接到处理设备120,如图1中的虚线箭头所示。作为又一示例,存储设备130可以直接连接到医疗系统100的另一个组件(例如,处理设备120),如图1所示,也可以通过网络150连接。
医疗设备110可以包括成像设备、介入医疗设备或其组合。成像设备可以获取与对象的至少一部分有关的成像数据。与对象的至少一部分有关的成像数据可包括图像(例如,图像切片)、投影数据或其组合。在一些实施例中,成像数据可以是二维(2D)成像数据、三维(3D)成像数据、四维(4D)成像数据等,或其任何组合。对象可以是生物学的或非生物学的。例如,对象可以包括患者、人造物体等。作为另一个例子,对象可以包括患者的特定部分、器官和/或组织。例如,对象可包括头部、颈部、胸部、心脏、胃、血管、软组织、肿瘤、结节等,或其任何组合。示例性成像设备可包括PET扫描仪、CT扫描仪、DR扫描仪等,或其组合。示例性介入医疗设备可包括放疗(RT)设备、超声治疗设备、热治疗设备、外科手术介入设备等,或其组合。
处理设备120可以处理从医疗设备110、终端140和/或存储设备130获得的数据和/或信息。例如,处理设备120可以通过处理由医疗设备110获取的成像数据来执行一个或以上医疗应用。示例性医疗应用可以包括图像重建应用、图像后处理应用、体绘制应用、虚拟现实应用、人工智能应用等。图像重建应用可以包括二维重建应用、三维重建应用等。图像后处理应用可以包括图像去噪应用、图像增强应用、图像分割应用、图像分类应用、图像变换应用、图像配准应用等。虚拟现实应用可以包括增强现实渲染应用、混合现实渲染应用等。人工智能应用可以包括基于机器学习技术的智能患者定位应用、智能扫描计划应用、智能成像质量优化应用、智能图像质量控制应用等。
在一些实施例中,处理设备120可以基于与医疗应用相对应的一个或以上算法和/或模型来执行医疗应用。例如,处理设备120可以基于图像重建算法重建图像(例如,2D图像、3D图像等)。作为另一示例,处理设备120可以使用体绘制算法基于重建的图像执行3D渲染操作,例如,光线投射算法、光线追踪算法、移动立方体算法等。
在一些实施例中,处理设备120可以是计算机、用户控制台、单个服务器或服务器组等。服务器组可以是集中式的或分布式的。在一些实施例中,处理设备120可以是本地的或远程的。例如,处理设备120可以经由网络150访问存储在医疗设备110、终端140和/或存储设备130中的信息和/或数据。作为另一示例,处理设备120可以直接连接到医疗设备110、终端140和/或存储设备130以访问存储的信息和/或数据。在一些实施例中,处理设备120可以在云平台上实现。仅作为示例,云平台可以包括私有云、公共云、混合云、社区云、分布式云、交互式云、多个云等,或其任何组合。
在一些实施例中,处理设备120可以包括具有至少两个计算设备/计算组件的计算集群。至少两个计算设备中的每一个可以包括至少一个处理器和至少一个第一存储设备。处理设备120还可以包括一个或以上资源管理器和存储可执行指令的至少一个第二存储设备。一个或以上资源管理器中的每一个可以被配置为响应于执行医疗应用的请求,对至少两个计算设备进行分配以执行医疗应用(例如,图像重建应用、图像后处理应用、体绘制应用等)。在一些实施例中,处理设备120可以在具有如图3所示的一个或以上组件的计算设备300上实现。处理设备120的更详细描述可以在本申请的其他地方(例如,图2A、图2B及其描述)找到。
存储设备130可以存储数据、指令和/或任何其他信息。在一些实施例中,存储设备130可以存储从终端140和/或处理设备120获得的数据。数据可以包括由处理设备120获取的图像数据、用于处理图像数据的算法和/或模型、与处理设备120的组件有关的信息等。例如,存储设备130可以存储由医疗设备110获取的图像数据。作为另一示例,存储设备130可以存储用于处理图像数据的一个或以上算法。作为又一示例,存储设备130可以将与至少两个计算设备有关的信息存储在处理设备120中。在一些实施例中,存储设备130可以存储处理设备120可以执行或使用的数据和/或指令,以执行本申请中描述的示例性方法/系统。在一些实施例中,存储设备130可以包括大容量存储器、可移动存储器、易失性读写存储器、只读存储器(ROM)等,或其任何组合。示例性大容量存储器可以包括磁盘、光盘与固态驱动器等。所述示例性可移动存储器可以包括闪存盘、软盘、光盘、存储卡、压缩盘与磁带等。所述示例性易失性读写存储器可以包括随机存取存储器(RAM)。示例性RAM可以包括动态RAM(DRAM)、双倍数据传输率同步动态RAM(DDR SDRAM)、静态RAM(SRAM)、晶闸管RAM(T-RAM)与无电容RAM(Z-RAM)等。示例性ROM可以包括掩模型ROM(MROM)、可编程ROM(PROM)、可擦除可编程ROM(EPROM)、电擦除可编程ROM(EEPROM)、光盘ROM(CD-ROM)与数字通用盘ROM等。在一些实施例中,所述存储器130可以由云平台执行。仅作为示例,云平台可以包括私有云、公共云、混合云、社区云、分布式云、交互式云、多个云等,或其任何组合。
在一些实施例中,存储设备130可以与网络150连接,以便与医疗系统100的一个或以上其他组件(例如,处理设备120、终端140等)进行通信。医疗系统100的一个或以上组件可以通过网络150访问存储在存储设备130中的数据或指令。在一些实施例中,存储设备130可以直接与医疗系统100的一个或以上其他组件(例如,处理设备120、终端140等)连接或通信。在一些实施例中,存储设备130可以是所述处理设备120的一部分。
终端140可以包括移动设备140-1、平板电脑140-2、笔记本电脑140-3等,或其任意组合。在一些实施例中,移动设备140-1可以包括智能家居设备、可穿戴设备、智能移动设备、虚拟现实设备、增强现实设备等或其任意组合。在一些实施例中,智能家居设备可以包括智能照明设备、智能电气设备的控制设备、智能监控设备、智能电视、智能摄像机、对讲机等或其任意组合。在一些实施例中,可穿戴装置可包括手镯、鞋类、眼镜、头盔、手表、衣服、背包、智能配件等或其任意组合。在一些实施例中,移动设备可以包括移动电话、个人数字助理(PDA)、游戏设备、导航设备、销售点(POS)设备、笔记本电脑、平板电脑、台式电脑等或或其任意组合。在一些实施例中,虚拟现实设备和/或增强现实设备可以包括虚拟现实头盔、虚拟现实眼镜、虚拟现实补丁、增强现实头盔、增强现实眼镜、增强现实补丁等或其任意组合。例如,虚拟现实设备和/或增强现实设备可以包括Google GlassTM、Oculus RiftTM、HololensTM、Gear VRTM等。在一些实施例中,终端140可以是处理设备120的一部分。
在一些实施例中,终端140可以经由用户界面向处理设备120发送和/或接收与医疗应用有关的信息。在一些实施例中,用户界面可以是用于在终端140上实现的医疗应用的应用程序的形式。用户界面可以被配置为促进终端140和与终端140相关的用户之间的通信。在一些实施例中,用户界面可以通过,例如,用户界面屏幕,从用户接收用于执行医疗应用的请求的输入。终端140可以经由用户界面将用于执行医疗应用的请求发送到处理设备120,以便为医疗应用分配计算资源。处理设备120可以基于医疗应用的任务属性为医疗应用确定一个或以上计算设备(节点)。用于执行医疗应用的请求可以包括计算协议、与医疗应用相对应的待处理的原始数据、用于处理原始数据的算法等。计算设备可以使用计算协议来执行医疗应用。例如,计算协议可以用于使计算设备从存储设备130获得原始数据。在一些实施例中,用户可以通过用户界面输入和/或调整计算协议、医疗应用的任务属性、负载平衡算法或策略、用于处理原始数据的算法等。例如,用户可以通过经由用户界面输入命令来输入或调整与医疗应用的一个或以上特征(即,医疗设备的任务属性)和/或负载平衡算法有关的一个或以上信息。终端140可以经由用户界面将与本申请中其他地方描述的医疗应用和/或负载平衡算法的一个或以上特征有关的信息发送到处理设备120。然后,处理设备120可以使用负载平衡算法基于输入或调整的医疗应用的任务属性来确定用于执行医疗应用的一个或以上计算设备(节点)。
在一些实施例中,用户界面可以从处理设备120接收与医疗应用有关的信号。该信号可以包括在计算设备执行医疗应用之后生成的结果。例如,医疗应用的结果可以包括一个或以上图像(例如,2D图像、3D图像等)、一个或以上数据图、一个或以上单词、一个或以上数字、用于执行第一个医疗应用的一个或以上模型、一个或以上数据表等。在一些实施例中,信号还可以被配置为使得终端140将结果显示给用户。
网络150可以包括可促进医疗系统100的信息和/或数据交换的任何合适的网络。在一些实施例中,医疗设备110(例如,CT扫描仪、PET扫描仪等)的一个或以上组件、终端140、处理设备120、存储设备130等可以经由网络150与医疗系统100的一个或以上其他组件传递信息和/或数据。例如,处理设备120可以经由网络150从医疗设备110获得数据。作为另一示例,处理设备120可以经由网络150从终端140获得用户指令。网络150可以是和/或包括公共网络(例如,因特网)、专用网络(例如,局域网(LAN)、广域网(WAN)))、有线网络(例如,以太网)、无线网络(例如,802.11网络、Wi-Fi网络)、蜂窝网络(例如,LTE网络)、帧中继网络,虚拟专用网络(“VPN”)、卫星网络、电话网络、路由器、集线器、交换机、服务器计算机和/或上述网络的任意组合。仅作为示例,网络150可以包括电缆网络、有线网络、光纤网络、电信网络、内联网、无线局域网(WLAN)、城域网(MAN)、公共电话交换网络(PSTN)、BluetoothTM网络、ZigBeeTM网络、近场通信(NFC)网络等或其任意组合。在一些实施例中,网络150可以包括一个或以上网络接入点。例如,网络150可以包括有线和/或无线网络接入点(例如,基站和/或互联网交换点),通过接入点可以将医疗系统100的一个或以上组件连接到网络150以交换数据和/或信息。在一些实施例中,网络150可以是因特网、内联网或其组合。
应当注意,医疗系统100的以上描述仅出于说明的目的而提供,并不旨在限制本申请的范围。对于本领域普通技术人员,可以在本申请的教导下进行多种变化和修改。例如,可以根据具体的实施方案变化或改变医疗系统100的组装和/或功能。仅作为示例,可以将一些其他组件添加到医疗系统100中,例如可以向医疗系统100的一个或以上组件供电的电源模块,以及其他设备或模块。
图2A是根据本申请一些实施例示出的示例性处理设备120的示意图。如图2A所示,终端140可以经由网络150连接到处理设备120,如图1中多描述的。然后,处理设备120可以经由网络150与终端140通信,例如,接收从终端140发送的数据/信息/应用/用户指令。在一些实施例中,网络150可以包括广域网(WAN)或局域网(LAN)。处理设备120可以经由网络150连接到一个或以上医疗设备(例如,医疗设备110)和/或与其通信,如图1中所描述的。
处理设备120可以包括计算集群240、网络250、资源管理器260和存储设备270。在一些实施例中,终端140可以经由网络150连接到计算集群的资源管理器260。终端140还可以经由网络150连接到存储设备270,如图2A中的虚线箭头所示。处理设备120中的组件可以以一种或多种不同方式连接。仅作为示例,计算集群240的一个或以上计算设备可以通过网络250连接到资源管理器260和/或存储设备270。作为另一示例,计算集群240的一个或以上计算设备可以直接连接到存储设备270,如图2A所示。存储设备270还可以通过网络250连接到资源管理器260。网络250可以包括可以为处理设备120促进信息和/或数据交换的任何合适的网络(例如,广域网(WAN)、局域网(LAN)、有线和/或无线网络接入点等)。在一些实施例中,网络250可以是因特网、内联网或其组合。
计算集群240可以包括至少两个计算设备,诸如计算设备240-1、计算设备240-2、......、计算设备240-N等。在一些实施例中,至少两个计算设备可以经由无线连接(例如,网络250)、有线连接或其组合彼此连接和/或通信。例如,计算设备240-1可以经由网络250接收由计算设备240-2处理的数据。作为另一示例,至少两个计算设备中的一个(例如,计算设备240-1)可以直接连接到其他计算设备(例如,计算设备240-2)和/或与其他计算设备(例如,计算设备240-2)通信。
如本文使用的,计算设备也可以称为计算节点。至少两个计算设备中的每一个可以包括至少一个处理器和至少一个存储设备。在一些实施例中,计算设备(例如,计算设备240-1)可以是任何合适的计算机,诸如膝上型计算机、平板计算机、台式机等。至少一个处理器可以包括微控制器、微处理器、精简指令集计算机(RISC)、专用集成电路(ASIC)、专用指令集处理器(ASIP)、中央处理器(CPU)、图形处理器(GPU)、物理处理单元(PPU)、微控制器单元、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、高级RISC机器(ARM)、可编程逻辑器件(PLD)等任何能够执行一个或以上功能电路或处理器或其任何组合。至少一个存储设备可以存储数据、指令和/或任何其他信息。在一些实施例中,计算设备的至少一个存储设备可以存储从终端140和/或资源管理器260获得的数据。在一些实施例中,存储设备可以存储算法和/或指令,所述至少一个处理器可以执行或使用所述算法和/或指令来执行本申请中描述的示例性医疗应用。
在一些实施例中,计算设备可以包括一个或以上计算卡。计算卡可以包括一个或以上处理器、存储器、板载存储设备、端口或连接器等。计算卡可以是小型便携式计算设备,其可以嵌入、插入或连接到至少两个不同类型的主计算设备(例如,终端140)。包括计算卡的计算设备的更多描述可以在图8A-8E中找到。
计算设备(例如,计算设备240-1)可以基于计算设备的计算资源来执行一个或以上计算任务。计算设备的计算资源可以涉及计算设备的配置,诸如至少一个处理器和存储设备。此外,计算设备的计算资源可以涉及与计算设备和/或计算设备的组件(例如,至少一个处理器)相关联的一个或以上特征(或参数)。与计算设备相关联的示例性特征可以包括至少一个处理器的类型、至少一个存储器的类型、至少一个处理器的数量、至少一个存储设备的存储量、计算设备的计算能力等。所述至少一个处理器的类型可以包括CPU、GPU等,如本申请中其他地方所述。所述至少一个存储器的类型可以包括大容量存储设备、可移动存储设备、易失性读写存储器、只读存储器(ROM)等,如本申请中其他地方所述。计算设备的计算能力可以由计算设备的计算速度来定义。计算设备的计算速度越高,计算设备的计算能力可能越高。可以基于与计算设备有关的其他特征来确定计算速度,例如,至少一个处理器的类型、至少一个存储设备的存储量等。
资源管理器260可以被配置为响应于执行医疗应用的请求,为医疗应用分配计算集群240的计算资源。资源管理器260可以从终端140接收用于执行医疗应用的请求。在一些实施例中,资源管理器260可以同时接收一个或以上请求,因此资源管理器260必须根据负载平衡算法或策略分配至少两个计算设备以执行医疗应用。示例性负载平衡算法可以包括循环算法、加权循环算法、自动备份算法、最小连接数算法、随机算法、加权随机算法等。在一些实施例中,资源管理器260可以基于医疗应用的优先级来分配计算设备以执行医疗应用。基于优先级分配医疗应用的更详细描述可以在本申请的其他地方找到,例如,图6、图7A和图7B,以及其描述。
存储设备270可以存储数据、指令和/或任何其他信息。在一些实施例中,存储设备270可以存储从终端140和/或资源管理器260获得的数据。例如,存储设备270可以存储至少两个计算设备中的每一个的配置信息。在一些实施例中,存储设备270可以存储资源管理器260可以执行或使用的数据和/或指令,以执行本申请中描述的示例性方法/系统。
图2B是根据本申请一些实施例示出的另一种示例性处理设备120的示意图。如图2B所示,处理设备120可以包括计算集群230、网络250、资源管理器260、存储设备270和网络负载均衡器280。在一些实施例中,终端140可以经由网络150连接到计算集群的网络负载均衡器280。终端140还可以连接到存储设备270,如图2B中的虚线箭头所示。计算集群230中的组件(例如,虚拟机(VM))可以以一种或多种不同的方式连接。仅作为示例,每个计算集群230可以通过网络250连接到资源管理器260。计算集群230中的每一个还可以通过网络250连接到存储设备270。作为另一示例,计算集群230中的每一个可以直接连接到存储设备270,如图2B所示。存储设备270还可以通过网络250连接到资源管理器260。网络负载均衡器280可以通过有线无线通信连接到资源管理器260。
在一些实施例中,如图2B中所示的处理设备120的一个或以上组件可以与如图2A中所示的处理设备120相同或相似。例如,计算集群230、网络250和/或存储设备270可以分别与计算集群240、网络250和/或存储设备270相同或相似,如图2A中所描述的。作为另一示例,计算集群230中的至少两个计算设备中的每一个可包括至少一个处理器和至少一个存储设备。在一些实施例中,如图2B中所示的处理设备120的一个或以上组件可以与如图2A中所示的处理设备120不同。例如,计算集群230可以包括至少两个虚拟机(例如,VM 0、VM 1、VM 2、......、VM N等)。计算集群240可以包括至少两个实体机器。作为另一示例,如图2B所示的处理设备120还可以包括网络负载均衡器280。
在一些实施例中,虚拟机(VM)可以是安装在软件上的操作系统(OS)或应用程序环境,其模仿物理计算机(例如,计算集群240中的至少两个计算设备之一)。在一些实施例中,至少两个虚拟机中的至少一个可以集成到客户终端(例如,终端140)、医疗设备(例如,医疗设备110)或实体机器(例如,笔记本电脑)。例如,VM 0可以集成到终端140中。作为另一示例,VM 1、VM 2、......、VM N可以集成到医疗设备110中。用户(例如,医生,研究人员等)可以在虚拟机上具有与在实体机器或物理计算机上具有的相同的体验。在这种情况下,计算集群内的计算设备的数量可以增加,这可以提高计算集群230的效率。
网络负载均衡器280可以被配置为将用于执行医疗应用的请求分配给资源管理器260。在一些实施例中,网络负载均衡器280可以与资源管理器集成。网络负载均衡器280可以包括如本申请中其他地方所描述的计算设备。
应当注意,计算集群的以上描述仅出于说明的目的而提供,并不旨在限制本申请的范围。对于本领域普通技术人员,可以在本申请的教导下进行多种变化和修改。例如,可以根据具体实施方案改变或改变计算集群的组装和/或功能。仅作为示例,计算集群的至少两个组件可以集成到控制台中。作为另一示例,可以将一些其他组件/模块添加到计算集群中,诸如网络交换机、工作流网络服务器等。这些变化和修改不脱离本申请的范围。
图3是根据本申请一些实施例示出的可以在其上实现医疗系统100的示例性计算设备300的示意图。
计算设备300可以是通用计算机或专用计算机。两者均可用于实现本申请的医疗系统。计算设备300可以用于实现如本申请所述的服务的任何组件。例如,医疗系统100的处理设备120可以通过其硬件、软件程序、固件或其组合在计算设备300上实现。尽管为了方便仅示出了一个这样的计算机,但是如本申请所述的与医疗系统100相关的计算机功能可以以分布式方式在至少两个类似的设备/平台上实现,以分配计算负载。
例如,计算设备300可以包括连接到网络和从网络(例如,网络150)连接的COMM端口350,以促进数据通信。在一些实施例中,COMM端口350可以从获取模块510、调度确定模块520、标准确定模块530和分配模块540中的任何一个发送和接收信息或数据。在一些实施例中,COMM端口350可以包括有线端口(例如,通用串行总线(USB)端口、高清多媒体接口(HDMI)端口等)或无线端口(蓝牙端口、红外接口、WiFi端口等)。
计算设备300还可以包括处理单元320(例如,中央处理器(CPU),图形处理器(GPU)等),以一个或以上处理器的形式,用于执行计算指令。计算指令可以包括执行本申请描述的特定功能的例程、程序、对象、组件、数据结构、流程、模块和功能。例如,处理单元320可以处理从获取模块510、调度确定模块520、标准确定模块530和分配模块540或医疗系统100的任何其他组件接收的数据或信息。在一些实施例中,处理单元320可包括微控制器、微处理器、精简指令集计算机(RISC)、专用集成电路(ASIC)、专用指令集处理器(ASIP)、中央处理器(CPU)、图形处理器(GPU)、物理处理单元(PPU)、微控制器单元、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、高级RISC机器(ARM)、可编程逻辑器件(PLD),能够执行一个或以上功能的任何电路或处理器等或其任何组合。例如,处理单元320可以包括微控制器,用于处理来自医疗设备110(例如,PET扫描仪)的数据(例如,原始PET数据)以进行图像重建。
计算设备300还可以包括内部通信总线310,用于由计算机处理和/或传输的各种数据文件的不同形式的程序存储和数据存储,例如,磁盘370以及只读存储器(ROM)330或随机存取存储器(RAM)340。磁盘370可以包括例如软盘、光盘、zip盘等。只读存储器330可以包括掩模只读存储器(MROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(PEROM)、电可擦除可编程只读存储器(EEPROM)、光盘只读存储器(CD-ROM)和数字通用磁盘读存储器等。随机存取存储器340可以包括动态随机存取存储器(DRAM)、双倍数据速率同步动态随机存取存储器(DDR SDRAM)、静态随机存取存储器(SRAM)、晶闸管随机存取存储器(T-RAM)和零电容器随机存取存储器(Z-RAM)等。
仅仅为了说明,在计算设备300中仅描述了一个处理单元和/或处理器。然而,应该注意的是,本申请中的计算设备300还可以包括至少两个处理单元和/或处理器,因此由本申请中描述的一个处理单元和/或处理器执行的操作和/或方法步骤也可以由至少两个处理单元和/或处理器联合或单独地执行。例如,计算设备300的处理单元和/或处理器执行操作A和操作B。如在另一示例中,操作A和操作B也可以由计算设备300中的两个不同的处理单元和/或处理器联合或单独地执行(例如,第一处理器执行操作A,并且第二处理器执行操作B;或者第一和第二处理器共同执行操作A和B)。
图4是根据本申请一些实施例示出的可以在其上实现终端140的示例性移动设备400的示例性硬件和/或软件组件的示意图。如图4所示,所述移动设备400可以包括通信平台410、显示器420、图形处理器(GPU)430、中央处理器(CPU)440、输入/输出接口450、内存460和存储器490等。在一些实施例中,任何其他合适的组件,包括但不限于系统总线或控制器(未示出),也可以包括在移动设备400中。在一些实施例中,操作系统470(如,iOSTM、AndroidTM、Windows PhoneTM)和一个或以上应用程序480可以从存储器490加载到内存460中,以便由CPU 440和/或GPU 430执行。应用程序480可以包括浏览器或任何其他合适的移动应用程序,用于从处理设备120接收和渲染与图像处理或其他信息有关的信息。用户与信息流的交互可以通过I/O 450实现,并通过网络150提供给处理设备120和/或医疗系统100的其他组件。
为了实现在本申请中描述的各种模块、单元及其功能,计算机硬件平台可以用作这里描述的一个或以上元件的硬件平台。具有用户界面元件的计算机可以用于实现个人计算机(PC)或其他类型的工作站或终端设备,如果适当地编程,计算机也可以充当服务器。
图5是根据本申请一些实施例示出的示例性资源管理器260的框图。在一些实施例中,资源管理器260可以在如图2A和/或图2B所示的计算设备上实现。如图5所示,资源管理器260可以包括获取模块510、调度确定模块520、标准确定模块530和分配模块540。在一些实施例中,模块可以经由有线连接(例如,金属线缆、光缆、混合线缆等,或其任何组合)或无线连接(例如,局域网(LAN)、广域网(WAN)、蓝牙、ZigBee、近场通信(NFC)等,或其组合)彼此连接。
获取模块510可以被配置为从至少一个客户终端获取或接收用于执行医疗应用的请求。医疗应用可以包括图像重建应用、图像后处理应用、体渲染应用、虚拟现实应用、人工智能应用等,或其任何组合。每个医疗应用可以具有优先级。每个医疗应用的优先级可以由用户(例如,操作员或医生)或根据医疗系统100的默认设置来设置,如本申请中其他地方(例如,图6及其描述)所描述的。在一些实施例中,用于执行医疗应用的请求可以包括与医疗应用相对应的计算协议。用于执行医疗应用的请求内的计算协议可以由一个或以上计算设备用于执行医疗应用。在一些实施例中,对应于医疗应用的计算协议可包括与医疗应用相关联的原始数据、用于执行医疗应用的算法和/或模型、医疗应用的优先级等,或其组合。获取模块510可以将请求发送到资源管理器260的其他组件以进行进一步处理。例如,获取模块510可以将该请求发送到调度确定模块520以确定具有最高优先级的医疗应用。
调度确定模块520可以被配置为从医疗应用中识别出其优先级满足条件的第一医疗应用。在一些实施例中,资源管理器260(例如,调度确定模块520)可以按优先级对医疗应用进行排名。如果调度确定模块520确定医疗应用的优先级被排在前几个(例如,前一个、前两个、前三个等)中,则医疗应用的优先级即满足条件。例如,资源管理器260可以从医疗应用中确定具有最高优先级的一个或以上候选医疗应用。作为另一示例,资源管理器260可以确定其优先级在前两个或更多中的两个或更多个候选医疗应用。调度确定模块520可以基于候选医疗应用的如本申请中其他地方所述的一个或以上特征从候选医疗应用中确定第一医疗应用,例如排队时间、估计的计算资源(例如,医疗应用需要占用的估计存储量)等。调度确定模块520可以将请求发送到资源管理器的其他组件以进行进一步处理。例如,调度确定模块520可以将识别的第一医疗应用发送到标准确定模块530,以确定第一医疗应用所需的估计的计算资源。
标准确定模块530可以被配置为确定与第一医疗应用相关联的第一标准。第一标准可以表征第一医疗应用所需的估计的计算资源。可以基于第一医疗应用的一个或以上特征(也称为任务属性)来确定第一医疗应用所需的估计的计算资源。例如,第一医疗应用所需的估计计算资源可包括第一医疗应用占用的估计存储量、执行第一医疗应用的计算设备的类型、计算设备的计算能力、估计的执行第一医疗应用需要的持续时间等,或其任何组合。
标准确定模块530还可以被配置为确定与至少两个计算设备中的每一个相关联的第二标准。与计算设备相关联的第二标准可以表征计算设备的特征。计算设备的特征可以表征计算设备拥有的空闲计算资源。计算设备的特征可以包括计算设备的空闲存储容量、计算设备内的处理单元的类型(例如,CPU、GPU、FPGA等)、计算设备的计算资源可被占用的时间段、计算设备的计算能力等,或其任何组合。标准确定模块530可以将请求发送到资源管理器的其他组件以进行进一步处理。例如,标准确定模块530可以将第一标准和第二标准发送到分配模块540,以确定用于执行第一医疗应用的计算设备。
分配模块540可以被配置为基于第一标准和第二标准从至少两个计算设备中识别第一计算设备。在一些实施例中,如果第一标准满足第二标准,则分配模块540可以从至少两个计算设备识别第一计算设备。如本申请所使用的,满足第二标准的第一标准可以指与第一医疗应用相关联的一个或以上估计的计算资源与第一计算设备的一个或以上空闲计算资源一致或满足。例如,第一医疗应用占用的估计存储容量可以等于或小于第一计算设备的空闲存储容量。作为另一示例,执行第一医疗应用的计算设备的类型可以与第一计算设备内的处理单元(例如,CPU、GPU、FPGA等)的类型相似或相同。
在一些实施例中,资源管理器260可以包括记录模块(图中未示出)。记录模块可以被配置为保留分配给第一医疗应用的计算设备的计算资源的一部分。所分配的计算设备的计算资源的一部分可以大于或等于第一医疗应用所需的估计的计算资源,这可以确保所分配的计算设备可以具有足够的空闲计算资源来执行第一医疗应用。记录模块可以记录为第一医疗应用分配的计算设备的计算资源的一部分,并且可以在分配的计算设备完成执行第一医疗应用时释放分配的计算设备的计算资源的一部分。
应当注意,资源管理器260的以上描述仅出于说明的目的而提供,并不旨在限制本申请的范围。对于本领域普通技术人员,可以在本申请的教导下进行多种变化和修改。例如,可以根据具体的实施方案变化或改变资源管理器260的组装和/或功能。仅作为示例,获取模块510、调度确定模块520、标准确定模块530和分配模块540中的至少两个模块可以集成到控制台中。作为另一示例,可以将一些其他组件/模块添加到资源管理器260中。这些变化和修改不脱离本申请的范围。
图6是根据本申请一些实施例示出的为医疗应用分配计算资源的示例性流程的流程图。在一些实施例中,图6中所示的用于分配计算资源以执行医疗应用的流程600的一个或以上操作可以在图1所示的医疗系统100中实现。例如,图6中所示的流程600可以以指令的形式存储在存储设备130中,并且由处理设备120(例如,资源管理器260(例如,如图3所示的计算设备300的处理单元320,如图4所示的移动设备400的GPU 430或CPU 440))调用和/或执行。
在610中,资源管理器260(例如,获取模块510)可以经由用户界面从至少一个客户终端接收用于执行医疗应用的请求。如本申请中其他地方所述(例如,图1及其描述),医疗应用可以包括图像重建应用、图像后处理应用、体绘制应用、虚拟现实应用、人工智能应用等。每个医疗应用可以具有优先级。每个医疗应用的优先级可以由用户(例如,操作员或医生)设置或根据医疗系统100的默认设置来设置。在一些实施例中,用户(例如,操作员或医生)可以经由至少一个客户终端(例如,终端140)手动设置医疗应用的优先级。在一些实施例中,可以基于与处理设备120的医疗应用的特征有关的一个或以上评估参数来确定医疗应用的优先级。医疗应用的特征可以涉及要处理的原始数据、用于处理医疗应用的算法和/或模型、医疗应用的类型等。例如,与医疗应用相关的原始数据的特征可以包括原始数据的数据量、原始数据的类型(例如,图像、投影数据等)等。与用于处理医疗应用的算法和/或模型有关的特征可以包括要涉及的算法和/或模型的数量、要使用的算法的类型等。示例性评估参数可以包括医疗应用的计算结果的期望响应时间、医疗应用占用的估计存储量、医疗应用所需的计算设备的期望计算能力、医疗应用的估计执行持续时间、医疗应用可容忍的排队时间等。例如,如果医疗应用期望计算结果的响应时间更短,则该医疗应用可以具有相对较高的优先级。作为另一示例,医疗应用的估计计算持续时间越长,该医疗应用的优先级可能越高。作为另一示例,参考图像重建应用或体绘制应用,这样的医疗应用可具有相对较高的优先级,因为用户(例如,医生、研究人员等)可能需要看到实时渲染过程或重建图像,以便进一步分析、诊断、治疗、计划治疗等。图像后处理应用可以具有相对较低的优先级,因为用户可以等待立即查看实时后处理过程或计算结果。当对计算资源的需求存在竞争时,具有较低优先级的这种医疗应用(例如,图像后处理应用)可以在后台处理或甚至暂停,以便允许具有更高优先级的医疗应用被及时执行。
在一些实施例中,可以为医疗应用的每个评估参数分配权重值。对应于评估参数的权重值可以指示评估参数对医疗应用的优先级的贡献。可以基于权重值和评估参数来确定医疗应用的优先级。例如,医疗应用的优先级可以与基于与每个评估参数对应的权重值的评估参数的加权和有关;医疗应用的评估参数的加权和越大,医疗应用的优先级可能越高。对应于每个评估参数的权重值可以由用户预设或者根据医疗系统100的默认设置来预设。例如,权重值可以是小于1的常数。
在一些实施例中,用于执行医疗应用的请求可以包括与医疗应用相对应的计算协议。用于执行医疗应用的请求内的计算协议可以由一个或以上计算设备用于执行医疗应用。在一些实施例中,对应于医疗应用的计算协议可以包括要处理的原始数据、用于执行医疗应用的算法和/或模型、医疗应用的优先级等,或其组合。原始数据可以包括由医疗系统100的医疗设备110通过扫描对象(例如,PET扫描仪、CT扫描仪、DR扫描仪、MR扫描仪等)生成的图像数、基于图像数据等重建的图像(例如,2D图像、3D图像等)。在一些实施例中,计算协议可包括与医疗应用相关联的标识信息。与医疗应用相关联的标识信息可以被配置为从存储设备130、存储设备270、存储器490或其他外部存储设备中检索、识别和/或获得要处理的原始数据和/或用于处理与医疗应用相关联的原始数据的算法(或模型)。在这种情况下,要处理的图像数据可以预先存储在存储设备130、存储设备270、存储器490或其他外部存储设备中。
在620中,资源管理器260(例如,调度确定模块520)可以从医疗应用中识别出优先级满足条件的第一医疗应用。在一些实施例中,资源管理器260(例如,调度确定模块520)可以按优先级对医疗应用进行排序。如果调度确定模块520确定医疗应用的优先级被排在前几个(例如,前一个、前两个、前三个等)中,则该医疗应用的优先级可能满足条件。例如,资源管理器260可以从医疗应用中确定具有最高优先级的一个或以上候选医疗应用。作为另一示例,资源管理器260可以确定其优先级在前两个或更多中的两个或更多个候选医疗应用。
在一些实施例中,可以存在具有相同或相似优先级的两个或更多个候选医疗应用(例如,具有最高优先级的医疗应用或其优先级在前两个中)。资源管理器260可以基于候选医疗应用的一个或以上评估参数从候选医疗应用确定第一医疗应用,如本申请中其他地方所述,例如排队时间、医疗应用需要占用的估计存储量等。例如,资源管理器260可以将候选医疗中的一个确定为第一医疗应用,该候选医疗应用的排队时间长于其他候选医疗应用。候选医疗应用的排队时间可以分别由资源管理器260确定。作为另一示例,资源管理器260可以将候选医疗应用中的一个确定为第一医疗应用,该候选医疗应用占用的估计存储量高于其他候选医疗应用。作为又一示例,资源管理器260可以将候选医疗应用中的一个确定为第一医疗应用,该候选医疗应用的估计执行持续时间短于其他候选医疗应用。
在630中,资源管理器260(例如,标准确定模块530)可以确定与第一医疗应用相关联的第一标准。第一标准可以表征或涉及第一医疗应用所要求的估计的计算资源。第一医疗应用所需的估计计算资源可以与第一医疗应用的一个或以上特征相关。例如,第一医疗应用所需的估计计算资源可包括第一医疗应用占用的估计存储量、执行第一医疗应用的计算设备的类型、第一医疗应用所需的计算设备的计算能力、第一医疗应用所需的估计执行持续时间等,或其任何组合。作为另一示例,第一医疗应用可以是体绘制应用,并且该体绘制应用所需的估计计算资源可以包括具有至少一个GPU和至少一个CPU、1千兆字节(GB)的存储容量的计算设备,以及该计算设备具有每秒执行300万条指令的计算能力。
在一些实施例中,第一医疗应用所需的估计计算资源可以基于与第一医疗应用相关联的特征来确定,和/或可以由用户经由至少一个客户终端设置。与第一医疗应用相关联的特征可以涉及与第一医疗应用相关联的原始数据、用于执行医疗应用的算法和/或模型、第一医疗应用的类型等。例如,与第一医疗应用相关联的原始数据的数据量越大,第一医疗应用可能占据的估计存储量就越大。作为另一示例,相较于图像重建应用而言,人工智能应用可能需要具有更高计算能力的计算设备。
在640中,资源管理器260(例如,标准确定模块530)可以确定与至少两个计算设备中的每一个相关联的第二标准。与计算设备相关联的第二标准可以涉及计算设备的一个或以上特征。计算设备的特征可以涉及计算设备的配置。计算设备的特征可以表征计算设备在特定时间拥有的空闲计算资源。计算设备的特征可以包括计算设备的空闲存储卷、计算设备的空闲处理单元(例如,CPU、GPU、FPGA等)的类型、可以占用计算设备的空闲计算资源的时间段、计算设备的计算能力等,或其任何组合。在一些实施例中,与计算设备相关联的第二标准可以由计算设备确定。例如,计算设备可以确定计算设备的空闲计算资源,并将计算设备的空闲计算资源报告给资源管理器260(例如,标准确定模块530)。
在一些实施例中,与计算设备相关联的第二标准可以由资源管理器260(例如,标准确定模块530)确定。例如,标准确定模块530可以向计算设备查询为其他医疗应用占用或保留的计算资源以及总计算资源。标准确定模块530可以基于占用的计算资源和总计算资源来确定计算设备的空闲计算资源。作为另一示例,标准确定模块530可以接收由计算设备报告的计算设备的空闲计算资源。标准确定模块530还可以确定包括计算设备的空闲计算资源的第二标准。
在650中,资源管理器260(例如,分配模块540)可以基于第一标准和第二标准从至少两个计算设备中识别第一计算设备。在一些实施例中,如果第一标准满足第二标准,则资源管理器260可以从至少两个计算设备识别第一计算设备。如本文所使用的,满足第二标准的第一标准可以指与第一医疗应用相关联的估计计算资源与第一计算设备的空闲计算资源一致或匹配。例如,第一医疗应用占用的估计存储容量可以等于或小于第一计算设备的空闲存储容量。作为另一示例,执行第一医疗应用的计算设备的类型可以与第一计算设备内的处理单元(例如,CPU、GPU、FPGA等)的类型相似或相同。作为又一示例,第一医疗应用要求的计算能力可以等于或小于第一计算设备的计算能力。在一些实施例中,资源管理器260可以从至少两个计算设备中确定至少两个候选计算设备。与每个候选计算设备相关联的第二标准可以满足与第一医疗应用相关联的第一标准。资源管理器260可以将候选计算设备中具有最大空闲计算资源的确定为第一计算设备。
在一些实施例中,资源管理器260可以基于第一标准和第二标准之间的匹配程度从至少两个计算设备中识别第一计算设备。如这里所使用的,第一标准和第二标准之间的匹配程度可以用于表征第一计算设备的空闲计算资源与第一医疗应用所需的估计计算资源之间的一致性。第一标准和第二标准之间的匹配程度越高,可以更适当地分配第一计算设备以执行第一医疗应用。可以基于第一计算设备的空闲计算资源与第一医疗应用所需的估计计算资源之间的相似性来确定第一标准和第二标准之间的匹配程度。可以基于第一计算设备的空闲计算资源与第一医疗应用所需的估计计算资源之间的距离来评估第一计算设备的空闲计算资源与第一医疗应用所需的估计计算资源之间的相似性。示例性距离可以包括欧几里德(Euclidean)距离、曼哈顿(Manhattan)距离、闵可夫斯基(Minkowski)距离等,或其组合。
在一些实施例中,资源管理器260可以通过确定第一医疗应用是否与第二计算设备正在执行的第二医疗应用相似或相关联来从至少两个计算设备确定第一计算设备。如果资源管理器260确定第一医疗应用与第二医疗应用类似或相关联,则资源管理器260可以确定第二计算设备的第二标准是否满足第一医疗应用的第一标准。如果资源管理器260确定第二计算设备的第二标准满足第一标准,则资源管理器260可以将第二计算设备指定为第一计算设备。如本文所使用的,两个医学应用(例如,第一医学应用和第二医学应用)之间的相似性或关联也可以被称为两个医学应用之间的任务亲和力。
在一些实施例中,如果资源管理器260确定至少两个计算设备中的每个计算设备的第二标准不满足与第一医疗应用相关联的第一标准,资源管理器260可以搜索已经分配给医疗应用(或称为已分配的医疗应用)的计算设备,该医疗应用的优先级低于第一医疗应用。资源管理器260可以释放已分配的医疗应用所占用的计算资源,并将已分配的医疗应用所占用的计算资源分配给第一医疗应用程序。
在一些实施例中,如果资源管理器260确定至少两个计算设备中的每个计算设备的第二标准不满足与第一医疗应用相关联的第一标准,资源管理器260可以将第一医疗应用划分为至少两个任务,并基于所述至少两个任务确定第一计算设备。从至少两个计算设备中识别第一计算设备的详细描述可以在本申请的其他地方找到,例如,图7A-7B及其描述。
在660中,资源管理器260(例如,分配模块540)可以分配第一计算设备以执行第一医疗应用。在一些实施例中,资源管理器260可以将用于执行第一医疗应用的请求发送到第一计算设备。
在一些实施例中,资源管理器260可以为第一医疗应用保留第一计算设备的计算资源的一部分。第一计算设备的计算资源的一部分可以大于或等于第一医疗应用所需的估计计算资源,这确保了第一计算设备可以具有足够的空闲计算资源以在第一医疗应用所需的估计执行持续时间期间执行第一医疗应用。资源管理器260可以记录分配给第一医疗应用的第一计算设备的计算资源的一部分。并且当第一计算设备完成执行第一医疗应用时,资源管理器260可以释放第一计算设备的计算资源的一部分。
在一些实施例中,在将第一医疗应用分配给第一计算设备之后,资源管理器260可以,基于第一医疗应用所需的估计计算资源和/或为执行第一医疗应用而保留的第一计算设备的计算资源的一部分,识别第一计算设备的空闲计算资源。识别的第一计算设备的空闲计算资源可以包括除了第一医疗应用所需的估计计算资源和/或第一计算设备的被保留用于执行第一医疗应用的一部分之外的计算资源。然后,资源管理器260可以记录第一计算设备的识别的空闲计算资源。以相同的方式,资源管理器260可以基于识别的至少两个计算设备中的每一个的计算资源来更新与至少两个计算设备中的每一个相关联的第二标准。
在一些实施例中,资源管理器260可以经由用户界面向客户终端提供已经分配了计算设备以执行第一医疗应用的通知。
在670中,第一计算设备可以执行第一医疗应用以生成结果。第一计算设备可以基于执行第一医疗应用的请求来执行第一医疗应用以生成结果。在一些实施例中,用于执行第一医疗应用的请求可以包括与第一医疗应用相关联的计算协议。与第一医疗应用相关联的计算协议可以包括要处理的原始数据和/或用于处理原始数据的算法。第一计算设备可以在接收到执行第一医疗应用的请求之后,基于原始数据和/或用于处理原始数据的算法直接执行第一医疗应用。在一些实施例中,第一计算设备可以基于与第一医疗应用相关联的计算协议从存储设备(例如,存储设备270)获得原始数据和/或用于处理原始数据的算法。
与第一医疗应用相关联的结果可包括一个或以上图像(例如,2D图像、3D图像等)、一个或以上数据图、一个或以上单词、一个或以上数字、用于执行第一医疗应用的一个或以上模型、一个或以上数据表等。例如,第一医疗应用可以是图像重建应用。与图像重建应用相关联的结果可以是一个或以上重建图像。作为另一示例,第一医学应用可以涉及诸如基于深度学习技术的图像去噪的图像后处理。与第一医学应用相关联的结果可以包括用于去噪的神经网络模型和/或基于神经网络模型去噪的图像。
在一些实施例中,在第一计算设备完成执行第一医疗应用以产生结果之后,第一医疗应用所需的估计计算资源和/或为执行第一医疗应用而保留的第一计算设备的计算资源的一部分可以被释放并变得空闲。资源管理器260可以基于第一医疗应用所要求的估计的计算资源和/或保留的用于执行第一医疗应用的第一计算设备的计算资源的一部分,来识别第一计算设备的空闲计算资源。通过将第一医疗应用所需的估计计算资源和/或为执行第一医疗应用而保留的第一计算设备的计算资源的一部分添加到识别的空闲计算资源中,可以增加第一计算设备的识别的空闲计算资源。然后,资源管理器260可以记录第一计算设备的识别的空闲计算资源。以相同的方式,资源管理器260可以基于识别的至少两个计算设备中的每一个的空闲计算资源来更新与至少两个计算设备中的每一个相关联的第二标准。
在680中,第一计算设备可以将与第一医疗应用相关联的结果发送到至少一个客户终端。在一些实施例中,在完成第一医疗应用之后,第一计算设备可以经由网络150向至少一个客户终端发送与第一医疗应用(例如,图像重建应用)相关联的结果(例如,一个或以上重建图像)。在一些实施例中,至少一个客户终端可以在其用户图形界面(GUI)上显示与第一医疗应用相关联的结果(例如,一个或以上图像、一个或以上数据图等)。在一些实施例中,与第一医疗应用相关联的结果可以作为第二医疗应用由第一计算设备或其他计算设备处理。例如,第一医疗应用可以是图像重建应用。第一医学应用的结果可包括多个2D图像。2D图像可以由第一计算设备或其他计算设备进一步处理以执行3D渲染应用。
应当注意,上述对于响应于执行医疗应用的请求而为医疗应用分配计算资源的流程的描述仅出于说明的目的而提供,并不旨在限制本申请的范围。对于本领域普通技术人员,可以在本申请的教导下进行多种变化和修改。例如,流程600可以进一步包括以时间间隔(例如,0.05s)更新至少两个计算设备中的每一个的空闲计算资源的操作。这些变化和修改不脱离本申请的范围。
图7A和图7B是根据本申请一些实施例示出的响应于执行医疗应用的请求而为医疗应用分配计算资源的另一示例性流程的流程图。在一些实施例中,图7A和图7B中所示的用于分配计算资源以执行医疗应用的流程700的一个或以上操作可以在图1所示的医疗系统100中实现。例如,图7A和图7B中所示的流程700可以以指令的形式存储在存储设备130中,并且由处理设备120(例如,资源管理器260(例如,如图3所示的计算设备300的处理单元320,如图4所示的移动设备400的GPU 430或CPU 440))调用和/或执行。
在702中,资源管理器260(例如,分配模块540)可以获得用于执行第一医疗应用的请求。在一些实施例中,第一医疗应用可以是其优先级满足条件的至少两个医疗应用之一。参考如图6所示的操作620,资源管理器260(例如,调度确定模块520)可以识别第一医疗应用。用于执行第一医疗应用的请求可以由客户终端(例如,终端140)经由有线或无线通信发送到分配模块540。
在704中,资源管理器260(例如,分配模块540)可以确定是否存在与第一医疗应用类似或关联的第二医疗应用正在或将由第二计算设备执行。响应于确定存在与第一医疗应用类似或关联的第二医疗应用正在或将由第二计算设备执行,流程700可以进行到706;否则,流程700可以前进到节点A并执行从图7B中所示的节点A开始的至少一些操作。
在一些实施例中,可以基于如本申请中其他地方所述的第一医疗应用的特征和第二应用的特征之间的相似性来确定第二医疗应用是否与第一应用相似或相关联。医疗应用的特征可以涉及医疗应用的原始数据、用于执行医疗应用的算法和/或模型、医疗应用的类型等。例如,可以基于第一应用和第二医疗应用的特征之间的相似性来确定第二医疗应用是否与第一应用相似或相关联,例如,第一医疗应用和第二医疗应用的类型之间的相似性、用于执行第一医疗应用和第二医疗应用的算法之间的相似性等。
在一些实施例中,可以基于第二医疗应用与第一应用之间是否存在关联关系来确定第二医疗应用是否与第一应用相关联。在一些实施例中,如果第一医疗应用的原始数据与第二医疗应用的原始数据相同或者可以从第二医疗应用的原始数据中提取,资源管理器260可以确定第二医疗应用与第一医疗应用之间存在关联关系。在一些实施例中,可以基于在第二医疗应用的计算过程中生成的结果和/或中间数据确定第二医疗应用与第一医疗应用之间是否存在关联关系。例如,如果第一医疗应用的原始数据是通过执行第二医疗应用生成的结果和/或中间数据(例如,模型、图像等),可以确定第二医疗应用与第一医疗应用具有关联关系。
在706中,资源管理器260(例如,分配模块540)可以确定第二计算设备的第二标准是否满足与第一医疗应用相关联的第一标准。响应于确定与第二计算设备相关联的第二标准满足与第一医疗应用相关联的第一标准,流程700可以进行到708;否则,流程700可以前进到节点A并执行从图7B中所示的节点A开始的至少一些操作。
如果由第二计算设备执行的第二医疗应用与第一医疗应用类似或相关联,则资源管理器260还可以确定与第二计算设备相关联的第二标准是否满足与第一医疗应用相关联的第一标准。与第一医疗应用相关联的第一标准可以涉及第一医疗应用所需的估计资源,例如,第一医疗应用占据的估计存储量、执行第一医疗应用的计算设备的类型、第一医疗应用所需的计算设备的计算能力、第一医疗应用所需的估计执行持续时间等。与第一医疗应用相关联的第一标准可以如结合操作630所描述的那样确定。与第二计算设备相关联的第二标准可以涉及第二计算设备所拥有的空闲计算资源,例如,第二计算设备的空闲存储卷、第二计算设备的空闲处理单元种类(例如,CPU、GPU、FPGA等)、第二计算设备的计算资源可被占用的时间段、第二计算设备的计算能力等。与第二计算设备相关联的第二标准可以由资源管理器260确定,如结合图6中描述的操作640所描述的。在一些实施例中,如果第二计算设备的空闲计算资源与第一医疗应用所需的估计计算资源一致(例如,大于或等于),可以确定与第二计算设备相关联的第二标准满足与第一医疗应用相关联的第一标准。例如,如果第二计算设备的空闲存储卷、第二计算设备的空闲计算资源可被占用的时间段和/或第二计算设备的计算能力分别大于或等于第一医疗应用占用的估计存储量、第一医疗应用所需的估计执行持续时间和/或第一医疗应用所需的计算设备的计算能力,则可以确定第二标准满足与第一医疗应用相关联的第一标准。
在708中,资源管理器260(例如,分配模块540)可以将第二计算设备指定为第一计算设备。如果由第二计算设备执行的第二医疗应用与第一医疗应用类似或相关联,并且与第二计算设备相关联的第二标准满足与第一医疗应用相关联的第一标准,则第二计算设备可以被确定为第一计算设备。资源管理器260可以将用于执行第一医疗应用的请求发送到第二计算设备。因为第二计算设备执行的第二医疗应用与第一医疗应用类似或相关联,资源管理器260可以分配第二计算设备以执行第一医疗应用,这可能会减少执行第一个医疗应用的过程中的数据传输,降低了网络负载,提高了系统效率。
在710中,资源管理器260(例如,分配模块540)可以确定是否存在一个或以上第三计算设备的第二标准满足与第一医疗应用相关联的第一标准的。响应于确定存在一个或以上第三计算设备,其第二标准满足与第一医疗应用相关联的第一标准,流程700可以进行到712;否则,流程700可以进行到714。
如果没有与第一医疗应用类似或相关的由第二计算设备执行第二医疗应用;或者如果存在,但是与第二计算设备相关联的第二标准不满足与第一医疗应用相关联的第一标准,则可以从至少两个计算设备中确定一个或以上第三计算设备,所述一个或以上第三计算设备的第二标准满足与第一医疗应用相关联的第一标准。在一些实施例中,资源管理器260(例如,标准确定模块530)可以确定与至少两个计算设备中的每一个相关联的第二标准,如结合图6中的操作640所描述的。如果计算设备的空闲计算资源与第一医疗应用所需的估计计算资源一致(例如,大于或等于),则该计算设备可以被确定为第三计算设备。
在712中,资源管理器260(例如,分配模块540)可以指定在一个或以上第三计算设备中具有最大空闲计算资源的第三计算设备作为第一计算设备。最大空闲计算资源可以涉及第三计算设备的空闲存储空间、第三计算设备内的处理单元(例如,CPU、GPU、FPGA等)的数量,第二计算设备的计算资源可被占用的时间段、第二计算设备的计算能力等,或其组合。例如,第三计算设备的空闲计算资源可以由第三计算设备的空闲存储空间、第三计算设备内的处理单元(例如,CPU、GPU、FPGA等)的数量、第二计算设备的计算资源可被占用的时间段、第二计算设备的计算能力等,或其组合的加权和来定义。加权和越大,第三计算设备的空闲计算资源即越大。
资源管理器260可以将用于执行第一医疗应用的请求发送到在一个或以上第三计算设备中具有最大空闲计算资源的第三计算设备。具有最大空闲计算资源的第三计算设备(即,第一计算设备)可以基于如本申请中其他地方(例如,图6及其描述)所述的执行第一医疗应用的请求来执行第一医疗应用。
在714中,资源管理器260(例如,分配模块540)可以确定第一医疗应用是否可以被划分为至少两个任务。响应于确定第一医疗应用可被分成至少两个任务,流程700可以进行到716;否则,流程700可以进行到720。
如果没有满足与第一医疗应用相关联的第一标准的具有第二标准第三计算设备,资源管理器260还可以确定第一医疗应用是否可以被划分为至少两个任务。在一些实施例中,如果第一医疗应用包括至少两个子应用,第一医疗应用可以分为至少两个任务。至少两个任务中的每一个可以对应于至少两个子应用中的一个。如本申请中其他地方所描述的,在至少两个子应用中的两个子应用之间可存在关联关系。例如,第一子应用的原始数据可以是第二子应用的结果。对于另一示例,图像后处理应用可以包括图像去噪子应用、图像增强子应用、图像分割子应用等。作为示例,虚拟现实应用可以包括图像重建子应用、体绘制子应用等。
在一些实施例中,如果用于执行第一医疗应用的计算过程是连续的和/或第一医疗应用不包括至少两个子应用,则第一个医疗应用不能分为至少两个任务。例如,体绘制应用中的模板计算、MR图像重建应用中的傅立叶计算,这类应用不能分成至少两个任务。
在716中,资源管理器260(例如,分配模块540)可以将第一医疗应用划分为至少两个任务。在一些实施例中,资源管理器260(例如,标准确定模块530)可以进一步确定与至少两个任务中的每个任务相关联的第三标准。与任务相关联的第三标准可以表征任务所需的估计计算资源。可以如结合操作630所描述的那样确定与任务相关联的第三标准。
在718中,资源管理器260(例如,分配模块540)可以分配至少两个计算设备中的至少一个以执行至少两个任务。在一些实施例中,资源管理器260可以分配至少两个计算设备中的单个计算设备以执行至少两个任务。至少两个计算设备中的单个计算设备的空闲计算资源可以满足与至少两个任务之一相关联的最大估计计算资源。在一些实施例中,资源管理器260可以分配至少两个计算设备的一部分以执行至少两个任务。至少两个任务中的每一个可以对应于至少两个计算设备中的一个。与计算设备相关联的第二标准可以满足与对应任务相关联的第三标准。换句话说,计算设备具有的空闲计算资源可以满足与对应任务相关联的估计计算资源。在一些实施例中,资源管理器260可以将与至少两个任务中的每个任务相对应的计算协议(例如,用于执行多个任务的算法)发送到至少两个计算设备中的至少一个,以执行第一医疗应用。
在720中,资源管理器260(例如,分配模块540)可以确定分配给第四计算设备的第三医疗应用。在一些实施例中,第三医疗应用可以排队等待由第四计算设备执行。在一些实施例中,第四计算设备可以正在执行第三医疗应用。可以为第三医疗应用记录和/或保留第四计算设备的计算资源的一部分。第三医疗应用的优先级可以低于第一医疗应用的优先级。参考如图6所示的操作610,资源管理器260(例如,获取模块510)可以确定第三医疗应用和第一医疗应用的优先级。当没有第三计算设备执行第一医疗应用并且第一医疗应用不能被分割时,可以确定分配给第四计算设备的第三医疗应用。可以通过停止执行第三医疗应用来释放为第三医疗应用预留或占用的第四计算设备的计算资源。
在722中,资源管理器260(例如,分配模块540)可以释放为第三医疗应用预留或占用的第四计算设备的计算资源。例如,第三医疗应用可以是图像后处理应用,第一医疗应用可以是体绘制应用。图像后处理应用可以具有比体绘制应用相对较低的优先级,因为这样的医疗应用不需要短的响应时间。当存在计算资源的竞争时,可以暂停具有较低优先级的这种医疗应用(例如,图像后处理应用)或排队以进行分配。然后,资源管理器260可以释放为第三医疗应用(例如,图像后处理应用程序)保留或占用的第四计算设备的计算资源。因此,第四计算设备中可以有足够的空闲计算资源用于执行第一医疗应用(例如,体绘制应用)。
在724中,资源管理器260(例如,分配模块540)可以将第四计算设备指定为第一计算设备。如果与第四计算设备相关联的第二标准满足与第一医疗应用相关联的第一标准,在第四计算设备释放为第三医疗应用保留或占用的计算资源之后(例如,第四计算设备的空闲计算资源与第一医疗应用所要求的估计计算资源一致),第四计算设备可以被指定为第一计算设备。资源管理器260可以将用于执行第一医疗应用的请求发送到第四计算设备(即,第一计算设备)。在一些实施例中,用于执行第一医疗应用的请求可以包括如本申请中其他地方(例如,图6及其描述)所描述的计算协议。
在一些实施例中,资源管理器260可以为第一医疗应用或从第一医疗应用划分的一个或以上任务保留和/或记录分配的计算设备的计算资源的一部分。分配的计算设备的计算资源的一部分可以满足第一医疗应用或从第一医疗应用需求划分的一个或以上任务的估计的计算资源。当分配的计算设备完成执行第一医疗应用或一个或以上任务时,资源管理器260可以释放所分配的计算设备的计算资源的一部分,这样分配的计算设备可以具有足够的空闲计算资源来执行第一医疗应用或一个或以上任务。
在一些实施例中,在将第一医疗应用或一个或以上任务分配给计算设备之后,资源管理器260可以基于第一医疗应用或一个或以上任务所需的估计计算资源和/或为执行第一医疗应用或一个或以上任务而保留的计算设备的计算资源的一部分,识别计算设备的空闲计算资源。识别的计算设备的空闲计算资源可以包括除了第一医疗应用或一个或以上任务所需的估计计算资源和/或为执行第一医疗应用或一个或以上任务而保留的计算设备的计算资源的一部分以外的计算资源。然后,资源管理器260可以记录识别的计算设备的空闲计算资源,以便分配给另一个医疗应用。
在一些实施例中,在计算设备完成执行第一医疗应用或一个或以上任务之后,第一医疗应用或一个或以上任务所需的估计计算资源和/或为执行第一医疗应用或一个或以上任务而保留的计算设备的计算资源的一部分可以被释放,并且可以分配给另一个医疗应用或其一部分。资源管理器260可以基于第一医疗应用或一个或以上任务所需的估计计算资源和/或为执行第一医疗应用或一个或以上任务而保留的计算设备的计算资源的一部分,识别和更新计算设备的空闲计算资源。通过将第一医疗应用或一个或以上任务所需的估计计算资源和/或为执行第一医疗应用或一个或以上任务而保留的计算设备的计算资源的一部分添加到识别的空闲计算资源,识别的计算设备的空闲计算资源会增加。资源管理器260还可以记录识别的计算设备的空闲计算资源,以便分配给另一个医疗应用。
应当注意,对于响应于执行医疗应用的请求为医疗应用分配计算资源的流程的上述描述仅仅是出于说明的目的而提供的,并非旨在限制本申请的范围。对于本领域普通技术人员,可以在本申请的教导下进行多种变化和修改。这些变化和修改不脱离本申请的范围。例如,流程700可以进一步包括以时间间隔(例如,0.05s)更新至少两个计算设备中的每一个的空闲计算资源的操作。作为另一示例,流程700可以在706处终止并且不进行到节点A并且不执行如图7B所示的从节点A开始的至少一些操作。
图8A至图8E是根据本申请一些实施例示出的一个或以上计算设备执行一个或以上医疗应用的示例性流程的示意图。计算设备(例如,计算设备240-1)可以由资源管理器(例如,资源管理器260)分配以执行如本申请中其他地方所述(例如,图6、7A和7B及其描述)的医疗应用(也称为任务)。计算设备可以包括一个或以上算法模块和一个或以上计算卡。算法模块可以被配置为一个或以上计算卡提供一个或以上算法。例如,示例性算法可以包括图像重建算法、体绘制算法、图像后处理算法、机器学习算法等,或其任何组合。嵌入在算法模块中的算法可以与嵌入在其他算法模块中的算法相同或不同。计算卡可以包括一个或以上处理器、存储器、板载存储设备、端口或连接器等。例如,计算卡可以包括视频卡、XeonPhi计算卡、具有FPGA的计算卡、或具有PCI-E接口的任何其他计算卡。计算卡可以是便携式计算设备,其可以嵌入、插入或连接到多个不同类型的主计算设备,如图2A所示。
如图8A所示,计算设备810是可以同时执行单个任务的单进程结构。计算设备810可以包括算法模型1、算法模块2、计算卡1和计算卡2。在资源管理器(例如,资源管理器260)从至少两个计算设备识别计算设备并且分配计算设备以执行医疗应用(也称为任务A)之后,计算设备810可以接收任务A。可以调用计算卡1或计算卡2中的仅一个使用从算法模块1和算法模块2获得的算法来以执行任务A。
如图8B所示,计算设备820可以是同时执行单个任务的单进程结构。图8B中所示的计算设备820与图8A中所示的计算设备810之间的差异在于计算设备820的计算卡1和计算卡2可以被调用以使用来自算法模块1和算法模块2的算法来执行任务A。例如,计算卡1可以使用来自算法模块1的算法执行从任务A划分的子任务,并且计算卡2可以使用来自算法模块2的算法执行从任务A划分的另一个子任务。
如图8C所示,计算设备830可以是同时执行多个任务(例如,任务A和任务B)的多进程结构。在资源管理器(例如,资源管理器260)从至少两个计算设备识别计算设备830并且分配计算设备830以执行任务A和任务B之后,计算设备830可以接收任务A和任务B。计算卡1或计算卡2中的仅一个可以使用从算法模块1获得的任务A所需的算法和从算法模块2获得的任务B所需的算法同时执行任务A和任务B。
如图8D所示,计算设备840可以是同时执行多个任务(例如,任务A和任务B)的多进程结构。图8D中所示的计算设备840与图8C中所示的计算设备830之间的差异在于可以同时调用计算设备840的计算卡1和计算卡2分别使用来自算法模块1和算法模块2的算法以执行任务A和任务B。例如,计算卡1可以使用来自算法模块1的算法来执行任务A,同时,计算卡2可以使用来自算法模块2的算法执行任务B。
如图8E所示,多个任务(例如,任务A和任务B)可以由包括在不同计算设备(例如,计算设备850和计算设备860)中的多个计算卡执行。在资源管理器(例如,资源管理器260)从至少两个计算设备识别计算设备850并且将计算设备850分配给任务A之后,计算设备850可以接收任务A。在资源管理器从至少两个计算设备识别计算设备860并且将计算设备860分配给任务B之后,计算设备860可以接收任务B。计算设备850的计算卡1和计算卡2可以获得存储在算法模块1中的算法,以执行从任务A划分的多个子任务。计算设备860的计算卡1或计算卡2之一可以获得存储在算法模块1中的算法,通过基于消息传递接口(MPI)的远程直接存储器访问(RDMA)协议,执行从任务A划分的多个子任务中的至少一个。计算设备860的计算卡1或计算卡2之一可以获得存储在算法模块1和/或算法模块2中的算法以同时执行任务B。
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述发明披露仅仅作为示例,而并不构成对本申请的限定。虽然此处并没有明确说明,本领域技术人员可能会对本申请进行各种修改、改进和修正。该类修改、改进和修正在本申请中被建议,所以该类修改、改进、修正仍属于本申请示范实施例的精神和范围。
同时,本申请使用了特定词语来描述本申请的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本申请至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一替代性实施例”并不一定是指同一实施例。此外,本申请的一个或以上实施例中的某些特征、结构或特点可以进行适当的组合。
此外,本领域技术人员可以理解,本申请的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的工序、机器、产品或物质的组合,或对他们的任何新的和有用的改进。相应地,本申请的各个方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。此外,本申请的各方面可能表现为位于一个或以上计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。
计算机可读信号介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等等、或合适的组合形式。计算机可读信号介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机可读信号介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、射频信号、或类似介质、或任何上述介质的组合。
本申请各部分操作所需的计算机程序编码可以用任意一种或多种程序语言编写,包括面向对象编程语言如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Python等,常规程序化编程语言如C语言、Visual Basic、Fortran 2003、Perl、COBOL 2002、PHP、ABAP,动态编程语言如Python、Ruby和Groovy,或其他编程语言等。该程序编码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或服务器上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(SaaS)。
此外,除非权利要求中明确说明,本申请所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本申请流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本申请实施例实质和范围的修正和等价组合。例如,虽然以上所描述的系统组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的服务器或移动设备上安装所描述的系统。
同理,应当注意的是,为了简化本申请披露的表述,从而帮助对一个或以上发明实施例的理解,前文对本申请实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本申请对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
一些实施例中使用了描述成分、属性数量的数字,应当理解的是,此类用于实施例描述的数字,在一些示例中使用了修饰词“大约”、“近似”或“大体上”来修饰。除非另外说明,“大约”、“近似”或“大体上”表明所述数字允许有±20%的变化。相应地,在一些实施例中,说明书和权利要求中使用的数值参数均为近似值,该近似值根据个别实施例所需特点可以发生改变。在一些实施例中,数值参数应考虑规定的有效数位并采用一般位数保留的方法。尽管本申请一些实施例中用于确认其范围广度的数值域和参数为近似值,在具体实施例中,此类数值的设定在可行范围内尽可能精确。
针对本申请引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本申请作为参考。与本申请内容不一致或产生冲突的申请历史文件除外,对本申请权利要求最广范围有限制的文件(当前或之后附加于本申请中的)也除外。需要说明的是,如果本申请附属材料中的描述、定义、和/或术语的使用与本申请所述内容有不一致或冲突的地方,以本申请的描述、定义和/或术语的使用为准。
最后,应当理解的是,本申请中所述实施例仅用以说明本申请实施例的原则。其他的变形也可能属于本申请的范围。因此,作为示例而非限制,本申请实施例的替代配置可视为与本申请的教导一致。相应地,本申请的实施例不仅限于本申请明确介绍和描述的实施例。