CN103282888A - 数据处理方法、图像处理器gpu及第一节点设备 - Google Patents

数据处理方法、图像处理器gpu及第一节点设备 Download PDF

Info

Publication number
CN103282888A
CN103282888A CN201180003244XA CN201180003244A CN103282888A CN 103282888 A CN103282888 A CN 103282888A CN 201180003244X A CN201180003244X A CN 201180003244XA CN 201180003244 A CN201180003244 A CN 201180003244A CN 103282888 A CN103282888 A CN 103282888A
Authority
CN
China
Prior art keywords
gpu
communication data
beacon signal
cpu
signal position
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201180003244XA
Other languages
English (en)
Other versions
CN103282888B (zh
Inventor
蒋吴军
卢彦超
郑龙
过敏意
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN103282888A publication Critical patent/CN103282888A/zh
Application granted granted Critical
Publication of CN103282888B publication Critical patent/CN103282888B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明实施例提供了一种数据处理方法、图像处理器GPU及第一节点设备,涉及通信技术领域,所述数据处理方法包括:当CPU启动本节点设备的GPU的内核程序时,GPU运行内核程序,内核程序包括至少一个预设的GPU通信API;当GPU的内核程序运行至预设的GPU通信API时,GPU获取第一通信数据;GPU判断预设的GPU通信API对应的通信操作是用于发送的通信操作还是用于接收的通信操作,如果是用于发送的通信操作时,GPU将第一通信数据存储至显存的预设的缓冲区,使CPU将第一通信数据由预设的缓冲区复制至本节点设备的内存中;如果是用于接收的通信操作时,GPU从预设的缓冲区获取第二通信数据。本发明提高了系统的计算效率。

Description

数据处理方法、 图形处理器 GPU及第一节点设备 技术领域
本发明涉及通信技术领域, 特别涉及一种数据处理方法、 图像处理器 GPU及第一节点 设备。
背景技术
在分布式环境下, 节点设备之间的数据通信机制是分布式并行计算的基础。 在典型的 分布式并行计算系统中, 同属一个任务的各个进程之间存在一定的共享数据或数据流动, 这些进程需要在特定位置进行同歩。 当在节点设备中书加入 GPU (Graphic Processing Unit, 图形处理器), 就组成了分布式 GPU系统。
在分布式 GPU系统中, 同属一个任务的各个进程由不同节点设备的 GPU分别运行, 其 中节点设备可以为商用服务器; 由于各个进程之间存在一定的共享数据, 因此需要节点间 的通信机制来实现所述共享数据的流动。 例如当第一节点设备的 GPU1的第一进程需要共享 第二节点设备的 GPU2的第二进程的通信数据时, 由于 GPU的从处理器特性, 第二节点设备 的 CPU ( Central Processing Unit , 中央处理器) 2在所述 GPU2运行完第二进程后, 将所 述通信数据复制到自身内存后经第一节点设备的 CPU1传输至所述 GPU1, 使所述 GPU1执行 第一进程的处理过程。
在实现本发明的过程中, 发明人发现现有技术至少存在以下问题: 当所述 GPU1的第一 进程在运行时需要共享所述 GPU2的第二进程的中间运行数据时, 第一进程也需要等待所述 GPU2运行完整个第二进程后, 才能获取第二进程的中间运行数据, 延长了第一进程的运行 时间, 从而降低了系统的计算效率。 发明内容
为了提高系统的计算效率, 本发明实施例提供了一种数据处理方法、 图像处理器 GPU 及第一节点设备。 所述技术方案如下:
一种数据处理方法, 所述方法包括- 当第一节点设备的中央处理器 CPU启动本节点设备的图形处理器 GPU的内核程序时, 所述 GPU运行所述内核程序, 所述内核程序包括至少一个预设的 GPU通信应用程序编程接 P API ;
当所述 GPU的内核程序运行至所述预设的 GPU通信 API时, 所述 GPU获取第一通信数 据;
所述 GPU判断所述预设的 GPU通信 API对应的通信操作是用于发送的通信操作还是用 于接收的通信操作, 如果是用于发送的通信操作时, 所述 GPU将所述第一通信数据存储至 本节点设备的显存的预设的缓冲区, 使所述 CPU将所述第一通信数据由所述预设的缓冲区 复制至本节点设备的内存中; 如果是用于接收的通信操作时, 所述 GPU从所述预设的缓冲 区获取第二通信数据, 其中所述第二通信数据由所述 CPU复制至所述预设的缓冲区中。
一种图形处理器 GPU, 包括:
运行模块, 用于当第一节点设备的中央处理器 CPU启动本节点设备的图形处理器 GPU 的内核程序时, 运行所述内核程序, 所述内核程序包括至少一个预设的 GPU通信应用程序 编程接口 API ;
获取模块, 用于当所述 GPU的内核程序运行至所述预设的 GPU通信 API时, 获取第一 通信数据;
判断处理模块, 用于判断所述预设的 GPU通信 API对应的通信操作是用于发送的通信 操作还是用于接收的通信操作, 如果是用于发送的通信操作时, 所述 GPU将所述第一通信 数据存储至本节点设备的显存的预设的缓冲区, 使所述 CPU将所述第一通信数据由所述预 设的缓冲区复制至本节点设备的内存中; 如果是用于接收的通信操作时, 所述 GPU从所述 预设的缓冲区获取第二通信数据, 其中所述第二通信数据由所述 CPU复制至所述预设的缓 冲区中。
一种第一节点设备, 包括中央处理器 CPU和上述图形处理器 GPU;
所述 CPU, 用于启动本节点设备的图形处理器 GPU的内核程序; 将第一通信数据由预设 的缓冲区复制至本节点设备的内存中; 复制第二通信数据至所述预设的缓冲区中。
本发明实施例提供的技术方案的有益效果是: 在第一节点设备的 GPU 的内核程序中需 要共享中间运行数据的地方插入预设的 GPU通信 API,当所述 GPU的内核程序运行至所述预 设的 GPU通信 API时, 获取运行完的部分内核程序的中间运行数据, 即第一通信数据; 所 述 GPU判断所述 GPU通信 API对应的通信操作是用于发送的通信操作还是用于接收的通信 操作, 根据判断结果由所述 GPU和本节点设备的 CPU执行相应处理, 完成 GPU的通信操作, 使所述 CPU获取第一通信数据, 所述 GPU获取第二通信数据, 相比较现有技术而言, 本实 施例在 GPU的内核程序运行过程中及时获取中间运行数据 (第一通信数据和第二通信数据), 使得第二节点设备无需等待第一节点设备的整个内核程序运行完之后再获取中间运行数 据, 缩短了第二节点设备上进程的运行时间, 提高了系统的计算效率。 附图说明
为了更清楚地说明本发明实施例中的技术方案, 下面将对实施例描述中所需要使用的 附图作简单地介绍, 显而易见地, 下面描述中的附图仅仅是本发明的一些实施例, 对于本 领域普通技术人员来讲, 在不付出创造性劳动的前提下, 还可以根据这些附图获得其他的 附图。
图 1是本发明实施例 1提供的一种数据处理方法实施例的流程图;
图 2是本发明实施例 2提供的一种数据处理方法实施例的流程图;
图 3是本发明实施例 3提供的一种数据处理方法实施例的流程图;
图 4为本发明实施例 3提供的预设的缓冲区的结构示意图;
图 5是本发明实施例 3提供的不同节点间 GPU的通信交互示意图;
图 6是本发明实施例 4提供的一种图形处理器 GPU实施例的第一结构示意图; 图 7是本发明实施例 4提供的一种图形处理器 GPU实施例的第二结构示意图; 图 8是本发明实施例 4提供的一种图形处理器 GPU实施例的第三结构示意图; 图 9是本发明实施例 4提供的一种图形处理器 GPU实施例的第四结构示意图; 图 10是本发明实施例 5提供的一种第一节点设备实施例的结构示意图。 具体实施方式
本发明实施例提供一种数据处理方法、 图像处理器 GPU及第一节点设备。
为使本发明的目的、 技术方案和优点更加清楚, 下面将结合附图对本发明实施方式作 进一步地详细描述。
实施例 1
参考图 1, 图 1是本发明实施例 1提供的一种数据处理方法实施例的流程图; 所述数据 处理方法包括:
S 101 : 当第一节点设备的中央处理器 CPU启动本节点设备的图形处理器 GPU的内核程 序时, 所述 GPU运行所述内核程序, 所述内核程序包括至少一个预设的 GPU通信应用程序 编程接口 API。
S 102 : 当所述 GPU的内核程序运行至所述预设的 GPU通信 API时, 所述 GPU获取第一 通信数据。
S 103 : 所述 GPU判断所述 GPU通信 API对应的通信操作是用于发送的通信操作还是用 于接收的通信操作, 如果是用于发送的通信操作时, 所述 GPU将所述第一通信数据存储至 本节点设备的显存的预设的缓冲区, 使所述 CPU将所述第一通信数据由所述预设的缓冲区 复制至本节点设备的内存中; 如果是用于接收的通信操作时, 所述 GPU从所述预设的缓冲 区获取第二通信数据, 其中所述第二通信数据由所述 CPU复制至所述预设的缓冲区中。
本实施例中,所述 GPU的内核程序中包含了预设的 GPU通信 API , 使 GPU具有了主动通 信的功能。 当所述 GPU的内核程序执行到所述预设的 GPU通信 API时, 表示 GPU想要发送 或者接收通信数据, 相应的, 本节点设备上的 CPU就从预设的缓冲区中取通信数据或者将 通信数据复制到所述预设的缓冲区中, 从而间接的实现了 GPU的通信操作, 进而实现了当 GPU内核程序运行过程中同一节点设备上 CPU和 GPU之间的双向通信。
本实施例中, 在第一节点设备的 GPU 的内核程序中需要共享中间运行数据的地方插入 预设的 GPU通信 API, 当所述 GPU的内核程序运行至所述预设的 GPU通信 API时, 获取运行 完的部分内核程序的中间运行数据, 即第一通信数据; 所述 GPU判断所述 GPU通信 API对 应的通信操作是用于发送的通信操作还是用于接收的通信操作, 根据判断结果由所述 GPU 和本节点设备的 CPU执行相应处理, 完成 GPU的通信操作, 使所述 CPU获取第一通信数据, 所述 GPU获取第二通信数据, 相比较像有技术而言, 本实施例在 GPU的内核程序运行过程 中及时获取中间运行数据 (第一通信数据和第二通信数据), 使得第二节点设备无需等待第 一节点设备的整个内核程序运行完之后再获取中间运行数据, 缩短了第二节点设备上进程 的运行时间, 提高了系统的计算效率。 实施例 2
参考图 2, 图 2是本发明实施例 2提供的一种数据处理方法实施例的流程图; 所述数据 处理方法包括:
S201 : 当第一节点设备的 CPU1启动本节点设备的 GPU1的内核程序时, 所述 GPU1运行 所述内核程序。
此步骤中, 所述 GPU1 的内核 (kernel ) 程序包括至少一个预设的 GPU 通信 API
(Application Programming Interface,应用程序编程接口), 所述预设的 GPU通信 API将 所述 GPU1的内核程序分割成多个子内核程序,因此所述内核程序包括至少两个子内核程序, 每个子内核程序内不存在通信操作; 所述预设的 GPU通信 API为 GPU支持的通信 API ,其对 应着不同的通信操作, 其中所述通信操作包括用于发送的通信操作和用于接收的通信操作。
S202: 当所述 GPU1的内核程序运行至所述预设的 GPU通信 API时, 所述 GPU1获取第 一通信数据。 此步骤中, 当所述 GPUl运行至所述预设的 GPU通信 API时, 所述 GPU1结束当前部分 的子内核程序的运行, 获取第一通信数据, 其中所述第一通信数据为刚刚运行完的所述子 内核程序的通信数据。
S203 : 所述 GPU1判断所述预设的 GPU通信 API对应的通信操作是用于发送的通信操作 还是用于接收的通信操作, 如果是用于发送的通信操作, 执行 S204; 如果是用于接收的通 信操作, 执行 S205。
S204: 所述 GPUl将所述第一通信数据存储至本节点设备的显存的预设的缓冲区, 使所 述 CPU将所述第一通信数据由所述预设的缓冲区复制至本节点设备的内存中。
当所述预设的 GPU通信 API对应的通信操作是用于发送的通信操作时, 表示 GPU1想要 将所述第一通信数据发送至本节点设备的 CPU1 , 但是由于 GPU的从处理器特性, 因此只能 由本节点的 CPU1从预设的缓冲区获取所述第一通信数据。
具体为: 当所述预设的 GPU通信 API对应的通信操作是用于发送的通信操作时, 所述 GPU1将所述第一通信数据存储至本节点设备的显存的预设的缓冲区中, 将内核程序切换成 CPU代码, 由所述 CPU1运行自身的程序。 当所述 CPU1运行至用于接收的通信操作对应的 CPU通信 API时, 所述 CPU1将所述第一通信数据复制至本节点设备的内存中。 其中所述预 设的缓冲区由用户指定。
S205 : 所述 GPU1 从所述预设的缓冲区获取第二通信数据, 其中所述第二通信数据由 所述 CPU1复制至所述预设的缓冲区中。
当所述预设的 GPU通信 API对应的通信操作是用于接收的通信操作时, 表示所述 CPU1 想要将第二通信数据发送至所述 GPU1。
具体为: 当所述预设的 GPU通信 API对应的通信操作是用于接收的通信操作时, 将内 核程序切换成 CPU代码, 由所述 CPU1运行自身的程序。 当所述 CPU1运行至用于发送的通 信操作对应的 CPU通信 API时, 所述 CPU1将所述第二通信数据从本节点设备的内存中复制 至本节点设备的显存的所述预设的缓冲区中。 其中所述第二通信数据可以是所述 CPU1自身 运行的程序的通信数据; 也可以是第二节点设备上 GPU2的内核程序生成的第二通信数据, 具体地, 第二节点设备的 CPU2将第二通信数据从第二节点设备上的预设的缓冲区中复制至 第二节点设备的内存上, 所述 CPU2再将所述第二通信数据传输至所述 CPU1。
所述预设的 GPU通信 API执行完成后, 继续执行所述 GPU的内核程序的下续部分, 即 顺序执行所述 GPU的内核程序的其余子内核程序。
对于所述 GPU的内核程序中存在多个 GPU通信 API时, GPU循环执行上述 S202-S205的 流程, 直至整个 GPU的内核程序的结束。 本实施例中, 所述方法还包括: 所述第一节点设备的 CPU1将所述第一通信数据经第二 节点设备的 CPU2传输至所述第二节点设备的 GPU2, 使所述第二节点设备的 GPU2共享所述 第一通信数据; 同理, 第二节点设备上的 GPU2也可以将其第二通信数据顺序经 CPU2、 CPU1 传输至 GPU1 , 从而实现了集群内部不同节点设备上 GPU运行时的双向通信。 其中不同节点 设备上 CPU间的通信机制, 可以采用 socket (套接字)或 MPI ( Message Passing Interface, 消息传递接口) 等现有技术来实现, 在此不再赘述。
本实施例中,所述 GPU的内核程序中包含了预设的 GPU通信 API , 使 GPU具有了主动通 信的功能。 当所述 GPU的内核程序执行到所述预设的 GPU通信 API时, 表示 GPU想要发送 或者接收通信数据, 相应的, 本节点设备上的 CPU就从预设的缓冲区中取通信数据或者将 通信数据复制到所述预设的缓冲区中, 从而间接的实现了 GPU的通信操作, 进而实现了当 GPU内核程序运行过程中同一节点设备上 CPU和 GPU之间的双向通信。
本实施例中, 在第一节点设备的 GPU 的内核程序中需要共享中间运行数据的地方插入 预设的 GPU通信 API , 当所述 GPU的内核程序运行至所述预设的 GPU通信 API时, 获取运行 完的部分内核程序的中间运行数据, 即第一通信数据; 所述 GPU判断所述 GPU通信 API对 应的通信操作是用于发送的通信操作还是用于接收的通信操作, 根据判断结果由所述 GPU 和本节点设备的 CPU执行相应处理, 完成 GPU的通信操作, 使所述 CPU获取第一通信数据, 所述 GPU获取第二通信数据, 相比较像有技术而言, 本实施例在 GPU的内核程序运行过程 中及时获取中间运行数据 (第一通信数据和第二通信数据), 使得第二节点设备无需等待第 一节点设备的整个内核程序运行完之后再获取中间运行数据, 缩短了第二节点设备上进程 的运行时间, 提高了系统的计算效率。
此外, 本实施例在 GPU的内核程序运行过程中实现了单节点设备上 GPU和 CPU之间的 双向通信; 且通过在 GPU的内核程序运行过程中实现单节点设备上 GPU和 CPU之间双向通 信的基础上, 结合现有集群内部不同节点设备之间的 CPU之间的通信机制, 实现了集群内 部不同节点设备上 GPU运行时的双向通信。 实施例 3
参考图 3, 图 3是本发明实施例 3提供的一种数据处理方法实施例的流程图; 本实施例 中将 CPU和 GPU之间的通信封装在 CPU设备和 GPU设备的上一层, 该层为分布式 GPU系统 提供基本的通信操作。 所述数据处理方法包括- S301 : 当第一节点设备的 CPU1启动本节点设备的 GPU1的内核程序时, 所述 GPU1运行 所述内核程序。 此步骤中, 所述 GPU1 的内核 (kernel ) 程序包括至少一个预设的 GPU 通信 API (Application Programming Interface,应用程序编程接口), 所述预设的 GPU通信 API对 应着不同的通信操作, 其中所述通信操作包括用于发送的通信操作和用于接收的通信操作。
GPU的内核 (kernel )程序中包含了预设的 GPU通信 API , 使 GPU具有了主动通信的功 能。
S302: 当所述 GPU1的内核程序运行至所述预设的 GPU通信 API时, 所述 GPU1获取第 一通信数据。
此步骤中, 当所述 GPU1运行至所述预设的 GPU通信 API时, 获取第一通信数据, 其中 所述第一通信数据为刚刚运行完的内核程序的通信数据。
S303: 所述 GPU1判断所述预设的 GPU通信 API对应的通信操作是用于发送的通信操作 还是用于接收的通信操作, 如果是用于发送的通信操作, 执行 S304; 如果是用于接收的通 信操作, 执行 S305。
S304: 所述 GPU1将所述第一通信数据存储至本节点设备的显存的预设的缓冲区, 使所 述 CPU1将所述第一通信数据由所述预设的缓冲区复制至本节点设备的内存中。
本实施例中, 由于 CPU可以直接访问本节点设备的 GPU的显存, 于是在本节点设备的 显存中为 GPU的每个 SM (Stream Multiprocessors , 流多处理器)预设一个缓冲区, 其中 所述预设的缓冲区包括多个字段, 这些字段至少包括标示信号位和通信数据缓冲区, 如图 4 所示, 图 4为本发明实施例 3提供的预设的缓冲区的结构示意图。 其中, 所述通信数据缓 冲区还可以包括通信数据的长度, 即 CPU或 GPU程序需要通信的数据的大小。
所述标示信号位可以包括第一标示信号位和第二标示信号位, 所述通信数据缓冲区可 以包括第一通信数据缓冲区和第二通信数据缓冲区, 其中所述第一标示信号位和所述第一 通信数据缓冲区对应于所述用于发送的通信操作, 即所述第一标示信号位和所述第一通信 数据缓冲区分别为, 当所述 CPU接收所述 GPU的通信数据时对应的标示信号位和通信数据 缓冲区, 所述第二标示信号位和所述第二通信数据缓冲区对应于所述用户接收的通信操作, 即所述第二标示信号位和所述第而通信缓冲区分别为, 当所述 GPU接收所述 CPU的通信数 据时对应的的标示信号位和通信数据缓冲区。
所述标示信号位的状态包括复位状态、 置位状态和接收错误状态, 其中所述复位状态 可以为 0, 所述置位状态可以为 1, 所述接收错误状态可以为除 0和 1外的其余数值。
此步骤中, 具体地, 当所述预设的 GPU通信 API对应的通信操作是用于发送的通信操 作时, 所述 GPU1将所述第一通信数据存储至本节点设备的显存的第一通信数据缓冲区, 设 置所述第一标示信号位的状态为置位状态。 所述 GPU1不断査询 (即轮询)所述第一标示信号位的状态, 当所述第一标示信号位的 状态为置位状态时, 所述 GPU1继续査询所述第一标示信号位的状态; 当所述第一标示信号 位的状态为接收错误状态时, 所述 GPU1重新将第一通信数据复制至所述第一通信数据缓冲 区中, 并将所述第一标示信号位的状态设置为置位状态; 当所述第一标示信号位的状态为 复位状态时, 所述 GPU1査询所述第二标示信号位的状态是否为置位状态, 如果是, 执行类 似 S305中的相应流程, 如果否, 则继续查询所述第二标示信号位的状态是否为置位状态, 直至所述第二标示信号位的状态为置位状态为止。
所述 CPU1上负责通信的线程也在一直不断的査询所述第一标示信号位的状态, 当所述 CPU1在査询到所述第一标示信号位的状态为置位状态时, 所述 CPU1将计数器清零, 将所述 第一通信数据缓冲区中的第一通信数据复制至本节点设备的内存中。
所述 CPU1获取所述第一通信数据后, 对所述第一通信数据进行检验, 具体地可以通过 添加校验位来检验所述第一通信数据是否有效。
所述 CPU1检验所述第一通信数据是否有效, 如果是, 所述 CPU1将所述第一标示信号 位的状态设置为复位状态, 如果否, 所述 CPU1将所述第一标示信号位的状态设置为接收错 误状态。
当所述 CPU1将所述第一表示信号位的状态设置为接收错误状态后, 所述 CPU1判断所 述计数器是否达到预设阈值, 如果是, 报告错误次数过多, 设备或许有异常, 程序终止; 如果否, 所述计数器加 1。 当所述计数器加 1后, 所述 CPU1再循环对获取到的新的第一通 信数据执行检验。
所述 CPU1将所述第一标示信号位的状态设置为复位状态后, 继续执行其自身的程序, 进行数据处理, 当所述 CPU1不需要继续与所述 GPU1进行通信时, 直接结束自身程序; 当 所述 CPU1需要继续与所述 GPU1进行通信时, 所述 CPU1将第二通信数据复制至所述第二通 信数据缓冲区中, 并将所述第二标示信号位的状态设置为置位状态。
所述 CPU1不断査询所述第二标示信号位的状态, 当所述第二标示信号位的状态为置位 状态时, 所述 CPU1继续查询所述第二标示信号位的状态; 当所述第二标示信号位的状态为 接收错误状态时, 所述 CPU1重新将第二通信数据复制至所述第二通信数据缓冲区中, 并将 所述第二标示信号位的状态设置为置位状态; 当所述第二标示信号位的状态为复位状态时, 所述 CPU1判断是否需要接收 GPU待发送的第一通信数据, 如果是, 査询所述第一标示信号 位的状态是否是置位状态, 如果否, 继续运行其自身的程序。
S305 : 所述 GPU1从所述预设的缓冲区获取第二通信数据, 其中所述第二通信数据由所 述 CPU1复制至所述预设的缓冲区中。 此步骤中, 具体地, 当所述预设的 GPU通信 API对应的通信操作是用于接收的通信操 作时, 所述 GPU1不断的查询所述第二标示信号位的状态, 当所述第二标示信号位的状态为 置位状态时,表示所述 CPU1已经将第二通信数据复制至第二通信数据缓冲区中,且所述 CPU1 已经将所述第二标示信号位的状态设置为置位状态, 所述 GPU1将计数器清零, 从所述第二 通信数据缓冲区中获取第二通信数据。
S306: 所述 GPU1检验所述第二通信数据是否有效, 如果是, 将所述第二标示信号位的 状态设置为复位状态; 如果否, 将所述第二标示信号位的状态设置为接收错误状态。
此步骤中, 当所述第二标示信号位的状态为复位状态后, 所述 GPU1继续执行器内核程 序, 进行数据处理, 当再次遇到所述预设的 GPU通信 API时, 执行相应的处理。
S307: 所述 GPU1判断所述计数器是否达到预设阈值, 如果是, 报告错误次数过多, 设 备或许有异常, 程序终止; 如果否, 所述计数器加 1。
当所述计数器加 1后,所述 CPU1返回至 S306, 对获取到的新的第二通信数据执行检验 流程。
本实施例中, 所述方法还包括: 所述第一节点设备的 CPU1将所述第一通信数据经第二 节点设备的 CPU2传输至所述第二节点设备的 GPU2, 使所述第二节点设备的 GPU2共享所述 第一通信数据; 同理, 第二节点设备上的 GPU2也可以将其第二通信数据顺序经 CPU2、 CPU1 传输至 GPU1, 从而实现了集群内部不同节点设备上 GPU运行时的双向通信; 如图 5所示, 图 5是本发明实施例 3提供的不同节点间 GPU的通信交互示意图; 图 5中实线表示第一通 信数据的通信路径, 虚线表示第二通信数据的通信路径。 其中, 不同节点设备上 CPU间的 通信机制, 可以采用 socket (套接字)或 MPI (Message Passing Interface, 消息传递接口) 等现有技术来实现, 在此不再赘述。
本实施例中, 还可以将不同节点设备上 GPU之间的双向通信封装成云通信层 API放置 在云端供 GPU分布式系统的上层应用开发人员 (用户)使用, 其中所述云通信层 API中还 加入了对任务调度策略得优化 (对用户透明), 这样就有效的避免死锁和效率低下等问题, 保证了 GPU分布式系统的正确性和稳定性。 其中所述云通信层 API用于编写分布式 GPU计 算任务, 所述云通信层 API提供三个 API, 具体为: 发送操作 API、 接收操作 API和同步操 作 API。
其 中 , 发送操作 API : CLOUD— Send (data— type, data— length, data— buff er, destination)
接收操作 API : CL0UD_Recv (datatype, data— length, data— buffer, source) 其中, date— type是待发送 /待接收的数据单位的类型, data— length是数据内容的大小 (即多少个单位的数据), data— buffer是待发送 /待接收到的数据缓冲, destination是发 送操作的目的地址, source是接收操作的数据来源地址。 CLOUD— Send ()和 CLOUD— Recv ()操 作失败将返回错误代码。
当用户使用所述云通信层 API的发送操作 API/接收操作 API时,系统采用任务调度策略优 化的方法, 具体为, 本实施例中设置一个全局计算 task (任务) 分发队列, 即在分发计算 task之前, 识别出带有发送 /接收操作的计算 task, 按照带有发送操作的计算 task放置在所 有带有接收操作的计算 task之前的顺序设置全局计算 task分发队列; 当分发计算 task时, 按照所述全局计算 task队列进行分发操作, 从而保证了用户的分布式程序的任务中的发送 / 接收操作的时序的正确性, 从而解决由 GPU任务的独占性而带来的错误的发送和错误的接收 操作产生的死锁现象。
同步操作 API: CLOUD— Sync ()
在运行时, 当进行同步操作的任务数量过量时, 该方法将返回错误。
当用户使用所述云通信层 API的同步操作 API时, 系统采用任务调度策略优化的方法, 具 体为, 在分发计算 task前, 识别需要进行同步操作的计算任务, 将这些计算 task分发到系 统内的不同节点上 (即一个节点上不能有一个以上的计算任务), 设置全局标识位, 当所有 节点上的需要同步的计算任务都准备就绪运行时, 统一调度运行这些计算任务, 从而保证 了用户的分布式程序的任务中的同步操作的范围的正确性。 其中 GPU任务的独占性决定了, 进行同步操作的任务数量不能超过系统允许的同时运行的任务数量, 系统在调度的时候, 需要将进行同步的任务同时处于运行状态, 否则会对系统性能带来损害。
本实施例中, 在第一节点设备的 GPU的内核程序中需要共享中间运行数据的地方插入预 设的 GPU通信 API , 当所述 GPU的内核程序运行至所述预设的 GPU通信 API时, 获取运行完的部 分内核程序的中间运行数据, 即第一通信数据; 所述 GPU判断所述 GPU通信 API对应的通信操 作是用于发送的通信操作还是用于接收的通信操作, 根据判断结果由所述 GPU和本节点设备 的 CPU执行相应处理, 完成 GPU的通信操作, 使所述 CPU获取第一通信数据, 所述 GPU获取第 二通信数据, 相比较像有技术而言, 本实施例在 GPU的内核程序运行过程中及时获取中间运 行数据 (第一通信数据和第二通信数据), 使得第二节点设备无需等待第一节点设备的整个 内核程序运行完之后再获取中间运行数据, 縮短了第二节点设备上进程的运行时间, 提高 了系统的计算效率。 此外, 本实施例在 GPU的内核程序运行过程中实现了单节点设备上 GPU和 CPU之间的 双向通信; 且通过在 GPU的内核程序运行过程中实现单节点设备上 GPU和 CPU之间双向通 信的基础上, 结合现有集群内部不同节点设备之间的 CPU之间的通信机制, 实现了集群内 部不同节点设备上 GPU运行时的双向通信。 实施例 4
参考图 6,图 6是本发明实施例 4提供的一种图形处理器 GPU实施例的第一结构示意图; 所述 GPU包括:
运行模块 501, 用于当第一节点设备的中央处理器 CPU启动本节点设备的图形处理器 GPU的内核程序时, 运行所述内核程序,所述内核程序包括至少一个预设的 GPU通信应用程 序编程接口 API。
获取模块 502, 用于当所述 GPU的内核程序运行至所述预设的 GPU通信 API时, 获取第 一通信数据。
判断处理模块 503,用于判断所述预设的 GPU通信 API对应的通信操作是用于发送的通 信操作还是用于接收的通信操作, 如果是用于发送的通信操作时, 所述 GPU将所述第一通 信数据存储至本节点设备的显存的预设的缓冲区, 使所述 CPU将所述第一通信数据由所述 预设的缓冲区复制至本节点设备的内存中; 如果是用于接收的通信操作时, 所述 GPU从所 述预设的缓冲区获取第二通信数据, 其中所述第二通信数据由所述 CPU复制至所述预设的 缓冲区中。
其中所述内核程序包括至少两个子内核程序, 每两个子内核程序之间存在一个所述预 设的 GPU通信 API。
所述获取模块 502包括: 获取单元 5021, 如图 7所示, 图 7是本发明实施例 4提供的 一种图形处理器 GPU实施例的第二结构示意图;
所述获取单元 5021, 用于获取所述子内核程序的通信数据。
在本实施例的另一实施方式中, 所述预设的缓冲区包括标示信号位和通信数据缓冲区; 所述标示信号位包括第一标示信号位和第二标示信号位, 所述通信数据缓冲区包括第一通 信数据缓冲区和第二通信数据缓冲区, 其中所述第一标示信号位和所述第一通信数据缓冲 区对应所述 CPU接收所述 GPU的标示信号位和通信数据缓冲区, 所述第二标示信号位和所 述第二通信数据缓冲区对应所述 GPU接收所述 CPU的标示信号位和通信数据缓冲区。
其中, 所述判断处理模块 503包括: 所述存储设置单元 5031, 如图 8所示, 图 8是本 发明实施例 4提供的一种图形处理器 GPU实施例的第三结构示意图;
所述存储设置单元 5031, 用于将所述第一通信数据存储至本节点设备的显存的第一通 信数据缓冲区, 设置所述第一标示信号位的状态为置位状态, 使所述 CPU在査询到所述第 一标示信号位的状态为置位状态后将所述第一通信数据缓冲区中的第一通信数据复制至本 节点设备的内存中。
或者, 所述判断处理模块 503包括:
査询获取单元 5032, 用于当 GPU査询到所述第二标示信号位的状态为置位状态时, 从 所述第二通信数据缓冲区中获取第二通信数据, 其中所述第二通信数据由所述 CPU复制至 所述第二通信数据缓冲区中, 所述第二标示信号位由所述 CPU设置为置位状态。
进一步地, 所述 GPU还包括: 检验设置模块 504, 如图 9所示, 图 9是本发明实施例 4 提供的一种图形处理器 GPU实施例的第四结构示意图;
所述检验设置模块 504,用于在所述从所述第二通信数据缓冲区中获取所述第二通信数 据之后, 检验所述第一通信数据是否有效, 如果是, 将所述第二标示信号位的状态设置为 复位状态; 如果否, 将所述第二标示信号位的状态设置为接收错误状态。
本实施例中, 在第一节点设备的 GPU 的内核程序中需要共享中间运行数据的地方插入 预设的 GPU通信 API , 当所述 GPU的内核程序运行至所述预设的 GPU通信 API时, 获取运行 完的部分内核程序的中间运行数据, 即第一通信数据; 所述 GPU判断所述 GPU通信 API对 应的通信操作是用于发送的通信操作还是用于接收的通信操作, 根据判断结果由所述 GPU 和本节点设备的 CPU执行相应处理, 完成 GPU的通信操作, 使所述 CPU获取第一通信数据, 所述 GPU获取第二通信数据, 相比较像有技术而言, 本实施例在 GPU的内核程序运行过程 中及时获取中间运行数据 (第一通信数据和第二通信数据), 使得第二节点设备无需等待第 一节点设备的整个内核程序运行完之后再获取中间运行数据, 缩短了第二节点设备上进程 的运行时间, 提高了系统的计算效率。 实施例 5
参考图 10, 图 10是本发明实施例 5提供的一种第一节点设备实施例的结构示意图; 本 实施例中所述第一节点设备和第二节点设备均可以为商用服务器, 但是并不局限于此。
所述第一节点设备包括: CPU 40和 GPU 50; 其中所述 GPU 50的功能与实施例 4中 GPU 的功能类似, 具体可参见实施例 4的相关描述, 在此不再赘述。
所述 CPU 40, 用于启动本节点设备的图形处理器 GPU的内核程序; 将第一通信数据由 预设的缓冲区复制至本节点设备的内存中; 复制第二通信数据至所述预设的缓冲区中。
所述 CPU 40, 进一步用于将所述第一通信数据经第二节点设备的 CPU传输至所述第二 节点设备的 GPU, 使所述第二节点设备的 GPU共享所述第一通信数据。
所述 CPU 40, 进一步用于检验所述第一通信数据是否有效, 如果是, 将所述第一标示 信号位的状态设置为复位状态; 如果否, 将所述标示信号位的状态设置为接收错误状态。 本实施例中, 在第一节点设备的 GPU 的内核程序中需要共享中间运行数据的地方插入 预设的 GPU通信 API , 当所述 GPU的内核程序运行至所述预设的 GPU通信 API时, 获取运行 完的部分内核程序的中间运行数据, 即第一通信数据; 所述 GPU判断所述 GPU通信 API对 应的通信操作是用于发送的通信操作还是用于接收的通信操作, 根据判断结果由所述 GPU 和本节点设备的 CPU执行相应处理, 完成 GPU的通信操作, 使所述 CPU获取第一通信数据, 所述 GPU获取第二通信数据, 相比较像有技术而言, 本实施例在 GPU的内核程序运行过程 中及时获取中间运行数据 (第一通信数据和第二通信数据), 使得第二节点设备无需等待第 一节点设备的整个内核程序运行完之后再获取中间运行数据, 缩短了第二节点设备上进程 的运行时间, 提高了系统的计算效率。
此外, 本实施例在 GPU的内核程序运行过程中实现了单节点设备上 GPU和 CPU之间的 双向通信; 且通过在 GPU的内核程序运行过程中实现单节点设备上 GPU和 CPU之间双向通 信的基础上, 结合现有集群内部不同节点设备之间的 CPU之间的通信机制, 实现了集群内 部不同节点设备上 GPU运行时的双向通信。 需要说明的是, 本说明书中的各个实施例均采用递进的方式描述, 每个实施例重点说 明的都是与其他实施例的不同之处, 各个实施例之间相同相似的部分互相参见即可。 对于 装置类实施例而言, 由于其与方法实施例基本相似, 所以描述的比较简单, 相关之处参见 方法实施例的部分说明即可。
需要说明的是, 在本文中, 诸如第一和第二等之类的关系术语仅仅用来将一个实体或 者操作与另一个实体或操作区分开来, 而不一定要求或者暗示这些实体或操作之间存在任 何这种实际的关系或者顺序。 而且, 术语 "包括"、 "包含"或者其任何其他变体意在涵盖 非排他性的包含, 从而使得包括一系列要素的过程、 方法、 物品或者设备不仅包括那些要 素, 而且还包括没有明确列出的其他要素, 或者是还包括为这种过程、 方法、 物品或者设 备所固有的要素。 在没有更多限制的情况下, 由语句 "包括一个…… "限定的要素, 并不 排除在包括所述要素的过程、 方法、 物品或者设备中还存在另外的相同要素。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完 成, 也可以通过程序来指令相关的硬件完成, 所述的程序可以存储于一种计算机可读存储 介质中, 上述提到的存储介质可以是只读存储器, 磁盘或光盘等。 以上所述仅为本发明的较佳实施例, 并不用以限制本发明, 凡在本发明的精神和原则 之内, 所作的任何修改、 等同替换、 改进等, 均应包含在本发明的保护范围之内。

Claims (12)

  1. 权 利 要 求 书
    1、 一种数据处理方法, 其特征在于, 所述方法包括:
    当第一节点设备的中央处理器 CPU启动本节点设备的图形处理器 GPU的内核程序时, 所 述 GPU运行所述内核程序,所述内核程序包括至少一个预设的 GPU通信应用程序编程接口 API ; 当所述 GPU的内核程序运行至所述预设的 GPU通信 API时,所述 GPU获取第一通信数据; 所述 GPU判断所述预设的 GPU通信 API对应的通信操作是用于发送的通信操作还是用于 接收的通信操作, 如果是用于发送的通信操作时, 所述 GPU将所述第一通信数据存储至本节 点设备的显存的预设的缓冲区, 使所述 CPU将所述第一通信数据由所述预设的缓冲区复制至 本节点设备的内存中; 如果是用于接收的通信操作时, 所述 GPU从所述预设的缓冲区获取第 二通信数据, 其中所述第二通信数据由所述 CPU复制至所述预设的缓冲区中。
  2. 2、 根据权利要求 1所述的方法, 其特征在于, 所述内核程序包括至少两个子内核程序, 每两个子内核程序之间存在一个所述预设的 GPU通信 API。
  3. 3、 根据权利要求 2所述的方法, 其特征在于, 所述 GPU获取第一通信数据包括- 所述 GPU获取所述子内核程序的通信数据。
  4. 4、根据权利要求 1所述的方法, 其特征在于, 所述预设的缓冲区包括标示信号位和通信 数据缓冲区; 所述标示信号位包括第一标示信号位和第二标示信号位, 所述通信数据缓冲区 包括第一通信数据缓冲区和第二通信数据缓冲区, 其中所述第一标示信号位和所述第一通信 数据缓冲区对应于所述用于发送的通信操作, 所述第二标示信号位和所述第二通信数据缓冲 区对应于所述用于接收的通信操作。 5、根据权利要求 4所述的方法, 其特征在于, 所述 GPU将所述第一通信数据存储至本节 点设备的显存的预设的缓冲区, 使所述 CPU将所述第一通信数据由所述预设的缓冲区复制至 本节点设备的内存中包括- 所述 GPU将所述第一通信数据存储至本节点设备的显存的第一通信数据缓冲区, 设置所 述第一标示信号位的状态为置位状态, 使所述 CPU在查询到所述第一标示信号位的状态为置 位状态后将所述第一通信数据缓冲区中的第一通信数据复制至本节点设备的内存中。 6、根据权利要求 4所述的方法, 其特征在于, 所述 GPU从所述预设的缓冲区获取第二通 信数据, 其中所述第二通信数据由所述 CPU复制至所述预设的缓冲区中包括- 当 GPU査询到所述第二标示信号位的状态为置位状态时, 所述 GPU从所述第二通信数据 缓冲区中获取第二通信数据, 其中所述第二通信数据由所述 CPU复制至所述第二通信数据缓 冲区中, 所述第二标示信号位的状态由所述 CPU设置为置位状态。
  5. 7、根据权利要求 6所述的方法, 其特征在于, 所述 GPU从所述第二通信数据缓冲区中获 取所述第二通信数据之后, 进一步包括- 所述 GPU检验所述第一通信数据是否有效, 如果是, 将所述第二标示信号位的状态设置 为复位状态; 如果否, 将所述第二标示信号位的状态设置为接收错误状态。
  6. 8、 根据权利要求 1-7任一项所述的方法, 其特征在于, 进一步包括- 所述第一节点设备的 CPU将所述第一通信数据经第二节点设备的 CPU传输至所述第二节 点设备的 GPU, 使所述第二节点设备的 GPU共享所述第一通信数据。
    9、 一种图形处理器 GPU, 其特征在于, 包括:
    运行模块, 用于当第一节点设备的中央处理器 CPU启动本节点设备的图形处理器 GPU的 内核程序时, 运行所述内核程序, 所述内核程序包括至少一个预设的 GPU通信应用程序编程 接口 API ;
    获取模块, 用于当所述 GPU的内核程序运行至所述预设的 GPU通信 API时, 获取第一通 信数据;
    判断处理模块, 用于判断所述预设的 GPU通信 API对应的通信操作是用于发送的通信操 作还是用于接收的通信操作, 如果是用于发送的通信操作时, 所述 GPU将所述第一通信数据 存储至本节点设备的显存的预设的缓冲区, 使所述 CPU将所述第一通信数据由所述预设的缓 冲区复制至本节点设备的内存中; 如果是用于接收的通信操作时, 所述 GPU从所述预设的缓 冲区获取第二通信数据, 其中所述第二通信数据由所述 CPU复制至所述预设的缓冲区中。
  7. 10、 根据权利要求 9所述的 GPU, 其特征在于, 所述内核程序包括至少两个子内核程序, 每两个子内核程序之间存在一个所述预设的 GPU通信 API。 11、 根据权利要求 10所述的 GPU, 其特征在于, 所述获取模块包括 <sub>:</sub>
    获取单元, 用于获取所述子内核程序的通信数据。 12、 根据权利要求 9所述的 GPU, 其特征在于, 所述预设的缓冲区包括标示信号位和通 信数据缓冲区; 所述标示信号位包括第一标示信号位和第二标示信号位, 所述通信数据缓冲 区包括第一通信数据缓冲区和第二通信数据缓冲区, 其中所述第一标示信号位和所述第一通 信数据缓冲区对应于所述用于发送的通信操作, 所述第二标示信号位和所述第二通信数据缓 冲区对应于所述用于接收的通信操作。
  8. 13、 根据权利要求 12所述的 GPU, 其特征在于, 所述判断处理模块包括:
    存储设置单元, 用于将所述第一通信数据存储至本节点设备的显存的第一通信数据缓冲 区, 设置所述第一标示信号位的状态为置位状态, 使所述 CPU在查询到所述第一标示信号位 的状态为置位状态后将所述第一通信数据缓冲区中的第一通信数据复制至本节点设备的内存 中。
  9. 14、 根据权利要求 12所述的 GPU, 其特征在于, 所述判断处理模块包括- 査询获取单元, 用于当 GPU査询到所述第二标示信号位的状态为置位状态时, 从所述第 二通信数据缓冲区中获取第二通信数据, 其中所述第二通信数据由所述 CPU复制至所述第二 通信数据缓冲区中, 所述第二标示信号位由所述 CPU设置为置位状态。
  10. 15、 根据权利要求 14所述的 GPU, 其特征在于, 进一步包括:
    检验设置模块, 用于在所述从所述第二通信数据缓冲区中获取所述第二通信数据之后, 检验所述第一通信数据是否有效, 如果是, 将所述第二标示信号位的状态设置为复位状态; 如果否, 将所述第二标示信号位的状态设置为接收错误状态。
  11. 16、 一种第一节点设备, 其特征在于, 包括中央处理器 CPU和如权利要求 9-15任一项所 述的图形处理器 GPU;
    所述 CPU, 用于启动本节点设备的图形处理器 GPU的内核程序; 将第一通信数据由预设 的缓冲区复制至本节点设备的内存中; 复制第二通信数据至所述预设的缓冲区中。 17、 根据权利要求 16所述的第一节点设备, 其特征在于, 所述 CPU, 进一步用于将所述 第一通信数据经第二节点设备的 CPU传输至所述第二节点设备的 GPU, 使所述第二节点设备 的 GPU共享所述第一通信数据。
  12. 18、 根据权利要求 16所述的第一节点设备, 其特征在于, 所述 CPU, 进一步用于检验所 述第一通信数据是否有效, 如果是, 将所述第一标示信号位的状态设置为复位状态; 如果否, 将所述标示信号位的状态设置为接收错误状态。
CN201180003244.XA 2011-12-27 2011-12-27 数据处理方法、图像处理器gpu及第一节点设备 Active CN103282888B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2011/084764 WO2013097098A1 (zh) 2011-12-27 2011-12-27 数据处理方法、图形处理器gpu及第一节点设备

Publications (2)

Publication Number Publication Date
CN103282888A true CN103282888A (zh) 2013-09-04
CN103282888B CN103282888B (zh) 2017-03-08

Family

ID=48696189

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180003244.XA Active CN103282888B (zh) 2011-12-27 2011-12-27 数据处理方法、图像处理器gpu及第一节点设备

Country Status (2)

Country Link
CN (1) CN103282888B (zh)
WO (1) WO2013097098A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017049583A1 (en) * 2015-09-25 2017-03-30 Intel Corporation Gpu-cpu two-path memory copy
CN110969565A (zh) * 2018-09-28 2020-04-07 杭州海康威视数字技术股份有限公司 图像处理的方法和装置
CN113986771A (zh) * 2021-12-29 2022-01-28 北京壁仞科技开发有限公司 用于调试目标程序代码的方法及装置、电子设备

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103716635B (zh) * 2013-12-12 2017-04-19 浙江宇视科技有限公司 一种提升智能分析性能的方法和装置
CN107333136A (zh) * 2017-06-26 2017-11-07 西安万像电子科技有限公司 图像编码方法和装置
CN111506420B (zh) * 2020-03-27 2023-09-22 北京百度网讯科技有限公司 内存同步方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5572572A (en) * 1988-05-05 1996-11-05 Transaction Technology, Inc. Computer and telephone apparatus with user friendly interface and enhanced integrity features
CN1250567A (zh) * 1997-03-13 2000-04-12 国际商业机器公司 连到计算机网络上的信息站和服务器
CN101802789A (zh) * 2007-04-11 2010-08-11 苹果公司 多处理器上的并行运行时执行

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8286198B2 (en) * 2008-06-06 2012-10-09 Apple Inc. Application programming interfaces for data parallel computing on multiple processors
CN101599009A (zh) * 2009-04-30 2009-12-09 浪潮电子信息产业股份有限公司 一种异构多处理器上并行执行任务的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5572572A (en) * 1988-05-05 1996-11-05 Transaction Technology, Inc. Computer and telephone apparatus with user friendly interface and enhanced integrity features
CN1250567A (zh) * 1997-03-13 2000-04-12 国际商业机器公司 连到计算机网络上的信息站和服务器
CN101802789A (zh) * 2007-04-11 2010-08-11 苹果公司 多处理器上的并行运行时执行

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017049583A1 (en) * 2015-09-25 2017-03-30 Intel Corporation Gpu-cpu two-path memory copy
CN110969565A (zh) * 2018-09-28 2020-04-07 杭州海康威视数字技术股份有限公司 图像处理的方法和装置
CN110969565B (zh) * 2018-09-28 2023-05-16 杭州海康威视数字技术股份有限公司 图像处理的方法和装置
CN113986771A (zh) * 2021-12-29 2022-01-28 北京壁仞科技开发有限公司 用于调试目标程序代码的方法及装置、电子设备

Also Published As

Publication number Publication date
WO2013097098A1 (zh) 2013-07-04
CN103282888B (zh) 2017-03-08

Similar Documents

Publication Publication Date Title
US9137179B2 (en) Memory-mapped buffers for network interface controllers
US8769034B2 (en) Query performance data on parallel computer system having compute nodes
KR100456630B1 (ko) 프로세서간 통신을 위한 인터럽트 중계 장치 및 방법
Spector Performing remote operations efficiently on a local computer network
US8458284B2 (en) Systems and methods for efficient live application migration within bandwidth constrained networks
US8018951B2 (en) Pacing a data transfer operation between compute nodes on a parallel computer
US8495655B2 (en) Messaging in a parallel computer using remote direct memory access (‘RDMA’)
CN100533370C (zh) 多处理器系统及运行多处理器系统的方法
US7948999B2 (en) Signaling completion of a message transfer from an origin compute node to a target compute node
US7984450B2 (en) Dispatching packets on a global combining network of a parallel computer
US20140068134A1 (en) Data transmission apparatus, system, and method
CN103282888A (zh) 数据处理方法、图像处理器gpu及第一节点设备
US9336071B2 (en) Administering incomplete data communications messages in a parallel computer
US8578132B2 (en) Direct injection of data to be transferred in a hybrid computing environment
US20100095302A1 (en) Data processing apparatus, distributed processing system, data processing method and data processing program
US20160330299A1 (en) Data distribution method and system and data receiving apparatus
US20150067695A1 (en) Information processing system and graph processing method
US7966618B2 (en) Controlling data transfers from an origin compute node to a target compute node
US20220210097A1 (en) Data access technologies
US20100218190A1 (en) Process mapping in parallel computing
US20150293844A1 (en) Broadcast and unicast communication between non-coherent processors using coherent address operations
CN105373563B (zh) 数据库切换方法及装置
CN116257471A (zh) 一种业务处理方法及装置
US7889657B2 (en) Signaling completion of a message transfer from an origin compute node to a target compute node
CN109800035B (zh) 一种算法集成服务框架系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant