用于在多处理器上进行数据并行计算的应用编程接口的制作方法_6

文档序号:8942920阅读:来源:国知局
执行指令使执行这些指令的机器实现某些功 能。在这种上下文中,"机器"可以是把中间形式(或者"抽象")的指令转换成处理器特有 的指令(例如,诸如"虚拟机"(例如,Java虚拟机)、解译器、公共语言运行时、高级语言虚 拟机之类的抽象执行环境)的机器,和/或被置于半导体芯片(例如,用晶体管实现的"逻 辑芯片")上、用来执行指令的电子电路,诸如通用处理器和/或专用处理器。上面的讨论 所教导的处理也可由用于在不执行程序代码的情况下实现所述处理(或其一部分)的电子 电路(在机器的备选方案中,或者与机器结合)实现。
[0090] 制造产品可被用于保存程序代码,例如,包括多个令牌。保存程序代码的制造产品 可被具体体现为但不限于一个或多个存储器(例如,一个或多个闪速存储器,随机存取存 储器(静态,动态或其它)),光盘,CD-ROM,DVD-ROM,EPROM,EEPR0M,磁卡或光卡,或者适合 于保存电子指令的其它类型的机器可读介质。也可利用包含在传播介质中的数据信号(例 如,利用通信链路(例如,网络连接)),把程序代码从远程计算机(例如,服务器)下载到请 求应用程序(例如,客户端)。
[0091] 利用对计算机存储器内的数据比特的运算的算法和符号表示,给出了前面的详细 说明。这些算法描述和表示是数据处理领域的技术人员用于向本领域的其他技术人员最有 效地传达其工作实质的工具。这里并且通常地,算法被认为是导致期望结果的自相一致的 运算序列。运算是需要物理量的物理处理的那些运算。通常,尽管不一定,这些物理量采取 能够被保存、传送、组合、比较和以其它方式处理的电信号或磁信号的形式。主要是因为常 用的缘故,有时方便的是把这些信号称为比特、值、元素、符号、字符、项、或数等。
[0092] 不过,应记住的是所有这些和类似术语将与适当的物理量相关联,并且仅仅是适 用于这些物理量的方便标志。根据上面的讨论,显然除非明确地另有说明,否则要认识到在 本说明书中,利用诸如"处理"或"计算(compute,calculate) "或"确定"或"显示"之类的 术语的讨论指的是计算机系统或类似的电子计算装置的把表示成计算机系统的寄存器和 存储器内的物理(电子)量的数据处理和变换成类似地表示成计算机系统存储器或寄存器 或者其它信息存储、传输或显示装置内的物理量的其它数据的动作和处理。
[0093] 本发明还涉及执行这里说明的操作的设备。所述设备可以是为所需的用途专门构 造的,或者它可包含由保存在计算机中的计算机程序有选择地激活或重新配置的通用计算 机。这样的计算机程序可被保存在计算机可读存储介质中,诸如但不限于任意类型的磁盘, 包括软件,光盘,CD-ROM,和磁光盘,只读存储器(ROM),RAM,EPROM,EEPR0M,磁卡或光卡,或 者适合于保存电子指令并都与计算机系统总线耦接的任何类型的介质中。
[0094] 这里给出的处理和显示并不固有地涉及任何特定的计算机或其它设备。按照这里 的教导,各种通用系统可以与程序一起使用,或者更方便的是构造更专门的设备来实现所 描述的操作。根据下面的说明,各种各样的这些系统的所需结构将是显然的。另外,未针对 任何特定的编程语言来说明本发明。要认识到可以使用各种各样的编程语言来实现这里所 述的发明的教导。
[0095] 上面的讨论仅仅描述了本发明的一些例证实施例。本领域的技术人员根据这样的 讨论、附图和权利要求,易于认识到可以做出各种修改,而不脱离本发明的精神和范围。
[0096] 相关申请的交叉引用
[0097] 本申请涉及以下申请并且要求其权益:Aaftab A. Munshi等人于2008年6月6日 提交的标题为"Application Programming Interfaces for Data Parallel Computing on Multiple Processors"、申请号为61/059, 739的美国临时专利申请,其全部内容通过引用 合并于此。
【主权项】
1. 一种并行计算系统,包括: 主处理器; 与所述主处理器耦接的一个或多个计算单元; 与所述主处理器和所述一个或多个计算单元中的至少一个耦接的存储器,其中并行 计算程序存储在所述存储器中,所述并行计算程序包括调用所述主处理器的一个或多个 API (应用编程接口)以执行: 生成与数据处理任务的源代码相对应的程序对象; 为所述一个或多个计算单元根据所述程序对象生成可执行代码;和 载入要在所述一个或多个计算单元之间同时执行的可执行代码 以执行所述数据处理任务。2. 按照权利要求1所述的并行计算系统,其中所述程序对象包括编译自源代码的二进 制代码,其中所述二进制代码包括对所述一个或多个计算单元中的至少一个的描述。3. 按照权利要求2所述的并行计算系统,其中生成程序对象包括: 从预编译库中获取二进制代码,其中所述二进制代码包括可执行代码。4. 按照权利要求2所述的并行计算系统,其中生成可执行代码包括: 按照一个或多个编译标记将源代码编译成二进制代码,其中所述编译标记包括多维 值,所述多维值用于指定在所述一个或多个计算单元中的至少一个中执行所述可执行代码 之一的线程的数目。5. 按照权利要求1所述的并行计算系统,其中载入可执行代码包括: 生成与函数名相关联的内核对象,所述函数名用于指定源代码中实现数据处理任务的 函数,所述内核对象包括所述函数的自变量的存储;以及 在所述一个或多个计算单元之间调度可执行代码的执行,其中所述执行包括用于在所 述一个或多个计算单元中的至少一个中同时执行所述可执行代码之一的线程组中的线程 的数目。6. 按照权利要求5所述的并行计算系统,其中载入可执行代码还包括: 对应于所述自变量的存储在存储器中分配一个或多个存储器对象。7. 按照权利要求5所述的并行计算系统,其中所述调度包括: 确定在所述一个或多个计算单元中并行执行所述可执行代码的线程的总数。8. 按照权利要求7所述的并行计算系统,其中所述确定包括: 分析所述二进制代码以确定所述函数执行所述数据处理任务的资源要求。9. 按照权利要求8所述的并行计算系统,其中所述确定还包括: 根据所述一个或多个计算单元中的至少一个的运行时资源可用性,确定线程组中的线 程的数目。10. 按照权利要求5所述的并行计算系统,其中所述载入还包括: 响应于对所述一个或多个API的一个或多个调用,获取所述线程组中的线程的数目。11. 按照权利要求1所述的并行计算系统,其中所述一个或多个计算单元包括一个或 多个图形处理单元(GPU)。12. 按照权利要求1所述的并行计算系统,其中所述一个或多个计算单元包括一个或 多个中央处理单元(CPU)。13. -种存储有多个令牌的计算机可读介质,所述令牌包括: 与用于执行一个或多个主函数的主处理器的一个或多个API (应用编程接口)相对应 的主函数令牌,包括: 生成与数据处理任务的源代码相对应的程序对象; 为耦接到所述主处理器的一个或多个计算单元根据所述程序对象生成可执行代码;和 载入要在所述一个或多个计算单元之间同时执行的可执行代码以执行所述数据处理 任务;和 与所述数据处理任务的源代码相对应的内核函数令牌。14. 按照权利要求13所述的计算机可读介质,其中所述程序对象包括编译自源代码的 二进制代码,其中所述二进制代码包括对所述一个或多个计算单元中的至少一个的描述。15. 按照权利要求14所述的计算机可读介质,其中生成程序对象包括: 从预编译库中获取二进制代码,其中所述二进制代码包括可执行代码。16. 按照权利要求14所述的计算机可读介质,其中生成可执行代码包括: 按照一个或多个编译标记将源代码编译成二进制代码,其中所述编译标记包括多维 值,所述多维值用于指定在所述一个或多个计算单元中的至少一个中执行所述可执行代码 之一的线程的数目。17. 按照权利要求13所述的计算机可读介质,其中载入可执行代码包括: 生成与函数名相关联的内核对象,所述函数名用于指定源代码中实现数据处理任务的 函数,所述内核对象包括所述函数的自变量的存储;以及 在所述一个或多个计算单元之间调度可执行代码的执行,其中所述调度包括用于在所 述一个或多个计算单元中的至少一个中同时执行所述可执行代码之一的线程组中的线程 的数目。18. 按照权利要求17所述的计算机可读介质,其中载入可执行代码还包括: 为所述自变量的存储在存储器中分配一个或多个存储器对象。19. 按照权利要求17所述的计算机可读介质,其中所述调度包括: 确定在所述一个或多个计算单元中并行执行所述可执行代码的线程的总数。20. 按照权利要求19所述的计算机可读介质,其中所述确定包括: 分析所述二进制代码以确定所述函数执行所述数据处理任务的资源要求。21. 按照权利要求20所述的计算机可读介质,其中所述确定还包括: 根据所述一个或多个计算单元中的至少一个的运行时资源可用性,确定线程组中的线 程的数目。22. 按照权利要求17所述的计算机可读介质,还包括: 生成包括状态值的事件对象,所述状态值指示被调度的执行是否已被完成;以及 响应于对所述一个或多个API的一个或多个调用,获取并行计算程序的状态值。23. 按照权利要求13所述的计算机可读介质,其中所述一个或多个计算单元包括一个 或多个GPU。24. 按照权利要求1所述的并行计算系统,其中所述一个或多个计算单元包括一个或 多个CPU。
【专利摘要】本公开涉及用于在多处理器上进行数据并行计算的应用编程接口。本公开描述了一种用于调用主处理器中的API(应用编程接口)以在计算单元之间并行执行数据处理任务的并行计算程序的方法和设备。计算单元被耦接到包括GPU(图形处理单元)和CPU(中央处理单元)的主处理器。按照API调用在耦接到主处理器的存储器中产生与数据处理任务的源代码相对应的程序对象。按照API调用由程序对象产生针对计算单元的可执行代码以便载入以在计算单元之间同时执行从而执行数据处理任务。
【IPC分类】G06F9/48, G06F9/50, G06F15/16
【公开号】CN105159761
【申请号】CN201510351055
【发明人】N·比奇曼, A·A·芒希
【申请人】苹果公司
【公开日】2015年12月16日
【申请日】2009年4月20日
【公告号】CN102099788A, CN102099788B, EP2304563A1, US8286198, US8806513, US20090307699, US20130081066, US20140237457, WO2009148714A1
当前第6页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1