当前位置: 首页 > 专利查询>英特尔公司专利>正文

内核功能性检查器制造技术

技术编号:12284678 阅读:77 留言:0更新日期:2015-11-06 01:36
描述了称为内核功能性检查器的调试系统和方法,以用于使得能够实现针对设备特定的API(应用程序接口)所写的软件的调试而无需在软件驱动器或硬件中的支持或改变。针对OpenCL描述了特定示例实施例,但所公开的方法也可以用于使得能够实现用于诸如DirectX®和OpenGL®之类的其它设备特定的API的调试能力。

【技术实现步骤摘要】
【国外来华专利技术】
本文所述的实施例一般涉及计算机软件和用于测试计算机软件的方法及系统。
技术介绍
包括CPU(中央处理单元)、GPU(图形处理单元)和其它处理器的组合的计算机系 统已经成为平台的重要类别。工业标准框架已经被开发用于对这些所谓的异构系统进行编 程。一个这样的框架是OpenCL(开放计算语言)。用于这样的系统的软件的开发涉及检查 作为调试(debug)过程的部分的代码的部分的功能性。然而,用于这样的系统的程序的逐 行调试的解决方案已经被限制,通常涉及硬件特定的实现方式。【附图说明】 图1图示了用于实现内核功能性检查器的示例系统。图2是示例内核功能性检查器中的软件组件之间的接口。 图3图示在一个实施例中的内核功能性检查器的解析器和驱动应用的基本操作。图4示出由内核功能性检查器所执行的方法的示例。 图5是图示根据示例实施例的示例机器的框图,在所述示例机器上本文所讨论的 技术(例如,方法)中的任何一个或多个可以执行。【具体实施方式】 本文所述的是称为内核功能性检查器的调试系统,用于使得能够实现用于在不同 硬件上运行的OpenCL内核的高级调试能力而无需在软件驱动器或硬件中的改变或支持。 内核功能性检查器可以包括用于OpenCL内核的逐行调试、运行时断点、私有、局部和全局 存储器查看和编辑、运行时断言/条件断点、工作项(线程)切换和步进、局部和全局工作组 步进以及编辑并继续调试。下述特定示例实施例是用于OpenCL的,但所公开的方法也可以 用于使得能够实现用于诸如DirectX?和OpenGL?(开放图形库)之类的其它设备特定的API (应用程序接口)的高级调试能力。 内核功能性检查器的一个实施例利用基于软件和基于硬件的OpenCL执行的混合 方法。在软件中,确定用来以正确的次序正确地运行给定的OpenCL内核内的单独的语句 (statement)的必要信息,并且那些语句然后被分派给OpenCL设备以用于执行。作为结 果,OpenCL执行被控制,如同它是软件应用一样,并且语句可以在硬件上运行以实现与当在 OpenCL设备上整个地运行内核时将会获得的相同的输出。内核功能性检查器可以支持内核 执行的完全控制,并允许用户在内核执行的每个阶段检查所有存储器对象。 在一个实施例中,内核功能性检查器可以被描述为由三个基本组件构成。解析器 组件(也称为CL解析器)负责在有效的OpenCL内核中读取并然后输出有效的微内核和必 要的元数据。驱动应用组件(也称为调试引擎)从解析器接收输出并然后负责正确地运行 内核,处置所有存储器和内核执行任务。第三组件是用户接口,其向用户提供接口,通过 所述接口向驱动应用发出命令以及显示输出。在操作中,有效的OpenCL内核首先被传递 到解析器组件,其执行内核的语义分析以生成一系列微内核,所述微内核中的每一个表示 来自原始内核的指令集。在典型的使用中,该指令集将是由原始OpenCL内核中的单行源 代码表示的指令,但也可以是由单独的源行所表示的指令的子集,以允许调试源行的单独 部分。除了生成这些微内核之外,CL解析器还从内核中提取元数据用于流控制、内核变元 (argument)、私有和局部变量以及索引,以正确地映射变量以用于驱动应用。驱动应用组件 使用该输出来提供一种系统以用于用户以各种方式步进通过内核的执行,包括(但不限于) 逐行步进和执行直到指定的断点。 示例系统描述 图1图示了用于实现内核功能性检查器的示例系统。具有CPU(中央处理单元)105 和主机存储器110的主机100与用户接口 115 (例如,具有键盘的显示监视器)通信并 对接到一个或多个计算设备150,所述一个或多个计算设备中的每一个可以是例如GPU(图 形处理单元)。主机100运行标准操作系统,所述标准操作系统经由设备特定的驱动器与计 算设备150通信。计算设备150可以被称为OpenCL设备,当主机经由OpenCL驱动器与其 通信时。计算设备150由全局存储器155和多个计算元件(有时也称为核或处理元件)构 成,所述多个计算元件被群组成多个计算单元160。图1示出两个这样的计算单元160a和 160b,其分别具有局部存储器165a和165b。计算单元160a合并分别具有私有存储器167a 和169a的计算元件166a和168a,并且计算单元160b合并分别具有私有存储器167b和 169b的计算元件166b和168b。所有计算元件和主机可以访问全局存储器155。计算单元 的局部存储器仅由属于该计算单元的计算元件可访问,并且计算元件的私有存储器仅由该 计算元件可访问。 OpenCL应用由主机程序和一个或多个内核构成。内核是OpenCL中的可执行代码 的基本单元。主机程序在主机上运行,而每个内核由单个计算元件执行。内核或线程可以 由计算元件并发地执行以提供数据的并行处理。主机程序经由OpenCLAPI而部署内核以 供在OpenCL设备上执行,所述OpenCLAPI经由OpenCL设备驱动器编译内核源代码并运行 内核。整数索引空间被创建,其中由计算元件执行的内核的每个实例被指派索引空间中的 点。正执行的内核的每个实例被称为工作项,所述工作项由其在索引空间中的坐标所标识, 所述坐标被称为工作项的全局ID。每个并发执行的工作项使用如由单个内核定义的指令的 相同序列。然而,工作项的行为可以变化,由于由使用不同全局ID的代码选择的不同数据 以及由于可以被不同数据影响的代码内的条件分支语句。每个工作项由计算元件执行,并 且工作项进一步被组织成工作组,其中每个工作组由计算单元执行。属于相同工作组的工 作项因而能够访问与工作组关联的计算单元的局部存储器。 内核功能性检查器 图2图示了示例内核功能性检查器中的软件组件之间的接口。内核功能性检查器201 与用户接口 115通信并与OpenCLAPI203对接。OpenCLAPI203经由OpenCL驱动器205 在计算设备150上编译并运行从内核功能性检查器部署的微内核。 图3图示了在一个实施例中的内核功能性检查器的解析器301和驱动应用303的 基本操作。解析器将OpenCL内核取为输入,并输出用于1)微内核和符号及2)流控制的信 息。微内核和符号包含用于将被步进通过的输入内核的单独的可执行语句的信息,以及用 以提取在那些语句中使用的变量的值的信息。流控制数据包含与微内核将被执行所按的次 序有关的信息以及用于在步进通过输入内核的语句中使用的信息。驱动应用消耗解析器输 出并提供用于逐行调试的编程接口。这样的调试活动可以包括例如,步进进入OpenCL内核 代码的行,独立地执行每一行以及获得在整个内核中定义的所有变量的结果。以下为根据 一个实施例的用于调试OpenCL内核的内核功能性检查器的更详细的描述。由解析器输出的微内核和符号信息可以被划分成三个类别:微内核(可执行OpenCL内核)、微内核变元(全局存储器空间中)和微内核变量(私有/局部存储器空间中)。 微内核是OpenCL内核,其将全局存储器加载到私有和局部存储器中,运行单个OpenCL语句 并将结果拷贝回全局存储器。这些微内核中的每一个可以被独立地运行,因而允许用户跨 过(stepover)并在单独的OpenCL语句之前本文档来自技高网...
内核功能性检查器

【技术保护点】
一种用于实现内核功能性检查器的系统,包括:主机设备,其经由设备特定的API(应用编程接口)而对接到计算设备;设备特定的API解析器,其由主机设备执行以用于接收输入内核的设备特定的API源代码串并用于解析所述串以生成从输入内核得出的一个或多个设备特定的API可执行的微内核,所述微内核将私有或局部存储器变量的中间值拷贝到全局存储器中;以及,驱动应用,其用于将所生成的微内核中的一个或多个发送到计算设备以供执行。

【技术特征摘要】
【国外来华专利技术】

【专利技术属性】
技术研发人员:J·波特森A·吉梅内斯
申请(专利权)人:英特尔公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1