CN114021709B - 多fpga数据处理方法、装置、服务器及存储介质 - Google Patents

多fpga数据处理方法、装置、服务器及存储介质 Download PDF

Info

Publication number
CN114021709B
CN114021709B CN202111168537.5A CN202111168537A CN114021709B CN 114021709 B CN114021709 B CN 114021709B CN 202111168537 A CN202111168537 A CN 202111168537A CN 114021709 B CN114021709 B CN 114021709B
Authority
CN
China
Prior art keywords
fpga
data
category
target
current
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.)
Active
Application number
CN202111168537.5A
Other languages
English (en)
Other versions
CN114021709A (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.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology 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 Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202111168537.5A priority Critical patent/CN114021709B/zh
Publication of CN114021709A publication Critical patent/CN114021709A/zh
Application granted granted Critical
Publication of CN114021709B publication Critical patent/CN114021709B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例涉及一种多FPGA数据处理方法、装置、服务器及存储介质,所述方法包括:获取目标操作算子对应的源数据和Tensorflow框架下的当前FPGA设备的数量;基于所述目标操作算子的类别和所述当前FPGA设备的数量,从源数据中确定每个FPGA设备对应处理的目标数据;将所述目标数据发送给对应的FPGA设备,以使所述FPGA设备对所述目标数据进行处理并反馈。由此方法,可以实现Tensorflow框架对多个FPGA加速设备的分布式支持,多FPGA设备基于Tensorflow框架同时对数据进行处理,在深度网络模型训练时可以辅助提高模型训练效率。

Description

多FPGA数据处理方法、装置、服务器及存储介质
技术领域
本发明实施例涉及服务器数据处理领域,尤其涉及一种多FPGA数据处理方法、装置、服务器及存储介质。
背景技术
随着深度神经网络越来越广泛地开发和使用,模型尺寸变得越来越大,这使得高效的模型训练变得更加重要。目前,Tensorflow、Pytorch等深度学习框架以及GPU、FPGA、ASIC芯片等各种硬件加速器的出现,为深度神经网络训练做出了巨大贡献。
随着FPGA加速设备被广泛应用,近年来,Tensorflow框架支持FPGA加速设备的实现方案被广大开发人员提出和应用,如何让Tensorflow框架支持FPGA加速设备已不再是一个难以解决的问题。
但是,现有技术中,Tensorflow框架支持FPGA加速设备方案的实现均是在单机单卡环境下的,并没有实现Tensorflow框架对多个FPGA加速设备的分布式支持,以实现数据的加速处理。因此,如何实现基于Tensorflow框架的多FPGA设备数据处理,成为一个亟待解决的问题。
发明内容
鉴于此,为解决上述技术问题或部分技术问题,本发明实施例提供一种多FPGA数据处理方法、装置、服务器及存储介质。
第一方面,本发明实施例提供一种多FPGA数据处理方法,应用于Tensorflow框架,包括:
获取目标操作算子对应的源数据和Tensorflow框架下的当前FPGA设备的数量;
基于所述目标操作算子的类别和所述当前FPGA设备的数量,从源数据中确定每个FPGA设备对应处理的目标数据;
将所述目标数据发送给对应的FPGA设备,以使所述FPGA设备对所述目标数据进行处理并反馈。
在一个可能的实施方式中,所述方法还包括:
基于所述源数据中的数据元素在执行所述目标操作算子时的关联度,划分所述目标操作算子的类别。
在一个可能的实施方式中,所述方法还包括:
判断所述源数据中的数据元素在执行所述目标操作算子时的关联度;
若所述数据元素全部不相关,则确定所述目标操作算子的类别为第一类别;
若所述数据元素部分相关,则确定所述目标操作算子的类别为第二类别;
若所述数据元素全部相关,则确定所述目标操作算子的类别为第三类别。
在一个可能的实施方式中,所述方法还包括:
若当前目标操作算子的类别为第一类别,则基于所述当前FPGA设备的数量将所述源数据平均分配给每个FPGA设备;
若当前目标操作算子的类别为第二类别,则基于所述数据元素的关联度为所述FPGA设备分配数据;
若当前目标操作算子的类别为第三类别,则将所述源数据全部分配给第一FPGA设备,所述第一FPGA设备是全部所述FPGA设备中的任意一个。
在一个可能的实施方式中,所述方法还包括:
对所述源数据中相关的数据元素进行分组,得到多组数据元素,其中,每组数据元素中的各数据元素之间相互关联;
将每组数据元素分配给一个FPGA设备。
在一个可能的实施方式中,所述方法还包括:
获取全部FPGA设备的负载占用率;
对所述FPGA设备的负载占用率由高到低进行排序;
将所述负载占用率最低的FPGA设备作为所述第一FPGA设备。
在一个可能的实施方式中,所述方法还包括:
基于Tensorflow框架搭建服务器集群,其中,所述服务器集群中的每个服务器上至少包括一个FPGA设备。
第二方面,本发明实施例提供一种多FPGA数据处理装置,包括:
获取模块,用于获取目标操作算子对应的源数据和Tensorflow框架下的当前FPGA设备的数量;
确定模块,用于基于所述目标操作算子的类别和所述当前FPGA设备的数量,从源数据中确定每个FPGA设备对应处理的目标数据;
发送模块,用于将所述目标数据发送给对应的FPGA设备,以使所述FPGA设备对所述目标数据进行处理并反馈。
第三方面,本发明实施例提供一种服务器,包括:处理器和存储器,所述处理器用于执行所述存储器中存储的多FPGA数据处理程序,以实现上述第一方面中所述的多FPGA数据处理方法。
第四方面,本发明实施例提供一种存储介质,包括:所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述第一方面中所述的多FPGA数据处理方法。
本发明实施例提供的多FPGA数据处理方案,通过获取目标操作算子对应的源数据和Tensorflow框架下的当前FPGA设备的数量;基于所述目标操作算子的类别和所述当前FPGA设备的数量,从源数据中确定每个FPGA设备对应处理的目标数据;将所述目标数据发送给对应的FPGA设备,以使所述FPGA设备对所述目标数据进行处理并反馈。相比于现有技术中Tensorflow框架支持FPGA设备均是单机单卡环境,由此方案,可以实现Tensorflow框架对多个FPGA加速设备的分布式支持,实现多FPGA设备基于Tensorflow框架同时对数据进行处理,辅助提高深度网络模型的训练效率。
附图说明
图1为本发明实施例提供的一种多FPGA数据处理方法的流程示意图;
图2为本发明实施例提供的另一种多FPGA数据处理方法的流程示意图;
图3为本发明实施例提供的第一类别中源数据分配FPGA设备的方法;
图4为本发明实施例提供的第二类别中源数据分配FPGA设备的方法;
图5为本发明实施例提供的第三类别中源数据分配FPGA设备的方法;
图6为本发明实施例提供的一种多FPGA数据处理装置的结构图;
图7为本发明实施例提供的一种服务器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为便于对本发明实施例的理解,下面将结合附图以具体实施例做进一步的解释说明,实施例并不构成对本发明实施例的限定。
图1为本发明实施例提供的一种多FPGA数据处理方法的流程示意图,如图1所示,该方法具体包括:
本方法应用于服务器集群的基于Tensorflow框架支持多FPGA设备的数据处理,可以用于深度神经网络模型的训练。首先,基于Tensorflow框架搭建服务器集群,该服务器集群由多台服务器组成,每台服务器上至少包含有一块FPGA设备,FPGA设备可以是集成在服务器上的,也可以是外接设备,根据实际应用进行选择,本发明不做具体限制;其次,在Tensorflow框架中添加对多个FPGA设备的支持,实现方法可以参照现有技术方案,包括以下内容:在TensorFlow框架中添加对多个FPGA设备的注册和发现,以使得每个FPGA设备的名称存在于TensorFlow框架的设备列表中,根据FPGA设备的名称调用TensorFlow框架的算子注册接口注册支持FPGA设备的算子,并使TensorFlow框架的算子名称与TensorFlow框架支持的所有FPGA设备的算子名称相同,利用OpenCL编写算子的执行函数,包括服务器主机端执行函数和FPGA设备端执行函数,以执行服务器主机上的CPU与FPGA设备的数据交互。其中主机端代码实现位于各OP的Compute类函数中。
S11、获取目标操作算子对应的源数据和Tensorflow框架下的当前FPGA设备的数量。
本发明实施例中,首先获取目标操作算子,其中,目标操作算子在本发明实施例中可以为Tensorflow框架中已支持的OP,OP携带有源数据,并统计Tensorflow框架下的当前服务器含有的FPGA设备的数量,其中,源数据可以是目标操作算子对应的待操作数据,该源数据可以是最原始的用户输入的数据或者服务器从另外存储位置获取到的数据,又可以是将这些获取到的数据进行一定的前置处理后的数据,例如,做某些格式变换或某些简单的计算处理的数据等;服务器可以是一个或多个,相应的,FPGA设备的数量也可以是一个或多个,本实施例以多个FPGA设备进行说明。
S12、基于所述目标操作算子的类别和所述当前FPGA设备的数量,从源数据中确定每个FPGA设备对应处理的目标数据。
统计Tensorflow框架中已支持的全部OP的类别,其中,每一个OP都有其对应的一个类,在类中定义了一个名为Compute的类函数,在该Compute函数中定义了该OP的kernel实现,基于当前OP的类别和当前FPGA设备的数量对各源数据进行分配,即从源数据中确定每个FPGA设备对应处理的目标数据。具体的OP分类和目标数据分配方法可参照下面实施例,在此先不详述。
S13、将所述目标数据发送给对应的FPGA设备,以使所述FPGA设备对所述目标数据进行处理并反馈。
将目标数据发送给对应的FPGA设备,启动各FPGA设备,以使FPGA设备对接收到的目标数据进行处理,待各FPGA设备处理数据完成后再将处理结果返回到Compute函数,Compute函数对各FPGA设备的返回结果进行拼接合并。
本发明实施例提供的多FPGA数据处理方法,通过获取目标操作算子对应的源数据和Tensorflow框架下的当前FPGA设备的数量;基于所述目标操作算子的类别和所述当前FPGA设备的数量,从源数据中确定每个FPGA设备对应处理的目标数据;将所述目标数据发送给对应的FPGA设备,以使所述FPGA设备对所述目标数据进行处理并反馈。相比于现有技术中Tensorflow框架支持FPGA设备均是单机单卡环境,由此方法,可以实现Tensorflow框架对多个FPGA加速设备的分布式支持,实现多FPGA设备基于Tensorflow框架同时对数据进行处理,辅助提高深度网络模型的训练效率。
图2为本发明实施例提供的另一种多FPGA数据处理方法的流程示意图,如图2所示,该方法具体包括:
基于所述源数据中的数据元素在执行所述目标操作算子时的关联度,划分所述目标操作算子的类别。
S21、判断所述源数据中的数据元素在执行所述目标操作算子时的关联度。
本发明实施例中,可根据源数据中的数据元素在执行OP时的关联度将OP分为三类,包括:
第一类别:计算针对源数据中每一个数据元素的元素级OP,各个数据元素之间全部不相关,例如Add,Subtract,Multiply,Div,Max,Relu等,即各个数据元素之间没有任何关联性,每个数据元素都可以单独分配FPGA设备。
第二类别:不属于第一类别且至少有一个源数据中每个数据元素之间存在关联的OP,即,例如Matmul,Dense等,即至少两个数据元素之间存在关联性,存在关联性的数据元素需作为一个数据组分配给同一FPGA设备。
第三类别:不属于第一和第二类别的其他OP,例如shape、reshape等,此类别的数据元素之间相互关联,需全部分配给同一FPGA设备。
S22、若所述数据元素全部不相关,则确定所述目标操作算子的类别为第一类别。
S23、基于所述当前FPGA设备的数量将所述源数据平均分配给每个FPGA设备。
以下对S22-S23进行统一说明:
若源数据中的各数据元素全部不相关,则可以确定目标OP的类别为第一类别,基于当前FPGA设备的数量,将该OP的各个输入中的数据元素平均分配给每个FPGA设备,如图3所示,数据元素等分后分别写入各个FPGA设备,并启动各个FPGA设备进行计算,待各FPGA设备计算完成后将计算结果返回给服务器主机端即当前OP对应的Compute函数中,再在Compute函数中将各个返回结果进行拼接。
例如,当前待计算OP为Add,当前服务器上有4个FPGA设备,Add算子的两个输入分别为A={0,1,2,3,4,5,6,7}和B={10,11,12,13,14,15,16,17},可以按照上述分配方案将A中{0,1},B中的{10,11}分配给FPGA:0,将A中{2,3}和B中的{12,13}分配给FPGA:1,以此类推,经过FPGA:0计算返回{10,12,},经FPGA:1计算返回{12,14},以此类推,最后在Compute函数中将4个FPGA设备的返回结果进行拼接合并,得到{10,12,14,16,18,20,22,24}。
S24、若所述数据元素部分相关,则确定所述目标操作算子的类别为第二类别。
S25、基于所述数据元素的关联度为所述FPGA设备分配数据。
以下对S24-S25进行统一说明:
若源数据中的各数据元素中有部分数据元素相关,则可以确定目标OP的类别为第二类别,对源数据中相关的数据元素进行分组,可以得到多组数据元素,其中,每组数据元素中的各数据元素之间相互关联。
进一步的,将每组数据元素分配给一个FPGA设备。
例如,如图4所示,若当前服务器上有4个FPGA设备,当前待计算OP为Matmul,Matmul算子的两个输入分别为A和B,A_b1为按照数据元素的关联度分组得到的第一个数据块,A_b2为按照关联度分组得到的第二个数据块,A_b3为按照关联度分组得到的第三个数据块,A_b4为按照关联度分组得到的第四个数据块,则将A_b1、A_b2、A_b3、A_b4和完整数据B分别写入各个FPGA设备。
S26、若所述数据元素全部相关,则确定所述目标操作算子的类别为第三类别。
S27、将所述源数据全部分配给第一FPGA设备,所述第一FPGA设备是全部所述FPGA设备中的任意一个。
以下对S26-S27进行统一说明:
若源数据中的各数据元素全部相关,则可以确定目标OP的类别为第三类别,不对源数据进行分配,获取全部FPGA设备的负载占用率,对全部FPGA设备的负载占用率由高到低进行排序,得到负载占用率序列,从序列中可以确定负载占用率最低的FPGA设备或空闲的FPGA设备,进而将负载占用率最低的FPGA设备或空闲的FPGA设备作为所述第一FPGA设备,若空闲的FPGA设备较多,则可以任意选择一个。直接将全部源数据发送给第一FPGA设备并启动执行,如图4所示。此时可以是在每台服务器上只使用其中一个FPGA设备,或者使用空闲的FPGA设备,FPGA设备处理数据完后直接返回Compute函数,由于没有对输入数据进行分块处理,所以此处的返回结果也不需要进行合并拼接处理。
需要说明的是,Tensorflow框架的用户端分布式训练代码由单机训练代码使用horovod插件修改而来,此处需设置该用户端训练代码启动多个进程,要求启动进程个数与集群中的服务器数量相同,以保证每个进程对应管理一个服务器,即在每个服务器上启动单个进程,该进程统一管理该服务器上的所有FPGA设备。
在完成Tensorflow框架的修改设计实现后,用户便可将Tensorflow用户端训练代码轻松部署到集群中的多个FPGA设备上完场本方法的数据处理。
本发明实施例提供的多FPGA数据处理方法,通过获取目标操作算子对应的源数据和Tensorflow框架下的当前FPGA设备的数量;基于所述目标操作算子的类别和所述当前FPGA设备的数量,从源数据中确定每个FPGA设备对应处理的目标数据;将所述目标数据发送给对应的FPGA设备,以使所述FPGA设备对所述目标数据进行处理并反馈。由此方法,可以实现Tensorflow框架对多个FPGA设备的分布式支持,实现多FPGA设备基于Tensorflow框架同时对数据进行处理,并且可以根据不同的OP类型对多个FPGA设备进行目标数据的分配,在深度神经网络模型训练场景使用时可以提高深度网络模型的训练效率。
图6为本发明实施例提供的一种多FPGA数据处理装置的结构图,包括:
获取模块601,用于获取目标操作算子对应的源数据和Tensorflow框架下的当前FPGA设备的数量;
确定模块602,用于基于所述目标操作算子的类别和所述当前FPGA设备的数量,从源数据中确定每个FPGA设备对应处理的目标数据;
发送模块603,用于将所述目标数据发送给对应的FPGA设备,以使所述FPGA设备对所述目标数据进行处理并反馈。
在一个可能的实施方式中,所述获取模块601,具体用于获取全部FPGA设备的负载占用率。
在一个可能的实施方式中,所述确定模块602,具体用于基于所述源数据中的数据元素在执行所述目标操作算子时的关联度,划分所述目标操作算子的类别。
在一个可能的实施方式中,所述确定模块602,还用于判断所述源数据中的数据元素在执行所述目标操作算子时的关联度;若所述数据元素全部不相关,则确定所述目标操作算子的类别为第一类别;若所述数据元素部分相关,则确定所述目标操作算子的类别为第二类别;若所述数据元素全部相关,则确定所述目标操作算子的类别为第三类别。
在一个可能的实施方式中,所述确定模块602,还用于若当前目标操作算子的类别为第一类别,则基于所述当前FPGA设备的数量将所述源数据平均分配给每个FPGA设备;若当前目标操作算子的类别为第二类别,则基于所述数据元素的关联度为所述FPGA设备分配数据;若当前目标操作算子的类别为第三类别,则将所述源数据全部分配给第一FPGA设备,所述第一FPGA设备是全部所述FPGA设备中的任意一个。
在一个可能的实施方式中,所述确定模块602,还用于对所述源数据中相关的数据元素进行分组,得到多组数据元素,其中,每组数据元素中的各数据元素之间相互关联;将每组数据元素分配给一个FPGA设备。
在一个可能的实施方式中,所述确定模块602,还用于对所述FPGA设备的负载占用率由高到低进行排序;将所述负载占用率最低的FPGA设备作为所述第一FPGA设备。
本实施例提供的多FPGA数据处理装置可以是如图6中所示的多FPGA数据处理装置,可执行如图1-2中多FPGA数据处理方法的所有步骤,进而实现图1-2所示多FPGA数据处理方法的技术效果,具体请参照图1-2相关描述,为简洁描述,在此不作赘述。
图7为本发明实施例提供的一种服务器的结构示意图,图7所示的服务器700包括:至少一个处理器701、存储器702、至少一个网络接口704和其他用户接口703。服务器700中的各个组件通过总线系统705耦合在一起。可理解,总线系统705用于实现这些组件之间的连接通信。总线系统705除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图7中将各种总线都标为总线系统705。
其中,用户接口703可以包括显示器、键盘或者点击设备(例如,鼠标,轨迹球(trackball)、触感板或者触摸屏等。
可以理解,本发明实施例中的存储器702可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data RateSDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambus RAM,DRRAM)。本文描述的存储器702旨在包括但不限于这些和任意其它适合类型的存储器。
在一些实施方式中,存储器702存储了如下的元素,可执行单元或者数据结构,或者他们的子集,或者他们的扩展集:操作系统7021和应用程序7022。
其中,操作系统7021,包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序7022,包含各种应用程序,例如媒体播放器(Media Player)、浏览器(Browser)等,用于实现各种应用业务。实现本发明实施例方法的程序可以包含在应用程序7022中。
在本发明实施例中,通过调用存储器702存储的程序或指令,具体的,可以是应用程序7022中存储的程序或指令,处理器701用于执行各方法实施例所提供的方法步骤,例如包括:
获取目标操作算子对应的源数据和Tensorflow框架下的当前FPGA设备的数量;基于所述目标操作算子的类别和所述当前FPGA设备的数量,从源数据中确定每个FPGA设备对应处理的目标数据;将所述目标数据发送给对应的FPGA设备,以使所述FPGA设备对所述目标数据进行处理并反馈。
在一个可能的实施方式中,基于所述源数据中的数据元素在执行所述目标操作算子时的关联度,划分所述目标操作算子的类别。
在一个可能的实施方式中,判断所述源数据中的数据元素在执行所述目标操作算子时的关联度;若所述数据元素全部不相关,则确定所述目标操作算子的类别为第一类别;若所述数据元素部分相关,则确定所述目标操作算子的类别为第二类别;若所述数据元素全部相关,则确定所述目标操作算子的类别为第三类别。
在一个可能的实施方式中,若当前目标操作算子的类别为第一类别,则基于所述当前FPGA设备的数量将所述源数据平均分配给每个FPGA设备;若当前目标操作算子的类别为第二类别,则基于所述数据元素的关联度为所述FPGA设备分配数据;若当前目标操作算子的类别为第三类别,则将所述源数据全部分配给第一FPGA设备,所述第一FPGA设备是全部所述FPGA设备中的任意一个。
在一个可能的实施方式中,对所述源数据中相关的数据元素进行分组,得到多组数据元素,其中,每组数据元素中的各数据元素之间相互关联;将每组数据元素分配给一个FPGA设备。
在一个可能的实施方式中,获取全部FPGA设备的负载占用率;对所述FPGA设备的负载占用率由高到低进行排序;将所述负载占用率最低的FPGA设备作为所述第一FPGA设备。
在一个可能的实施方式中,基于Tensorflow框架搭建服务器集群,其中,所述服务器集群中的每个服务器上至少包括一个FPGA设备。
上述本发明实施例揭示的方法可以应用于处理器701中,或者由处理器701实现。处理器701可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器701中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器701可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件单元组合执行完成。软件单元可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器702,处理器701读取存储器702中的信息,结合其硬件完成上述方法的步骤。
可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(ApplicationSpecific Integrated Circuits,ASIC)、数字信号处理器(Digital Signal Processing,DSP)、数字信号处理设备(DSPDevice,DSPD)、可编程逻辑设备(Programmable LogicDevice,PLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。
对于软件实现,可通过执行本文所述功能的单元来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
本实施例提供的服务器可以是如图7中所示的服务器,可执行如图1-2中多FPGA数据处理方法的所有步骤,进而实现图1-2所示多FPGA数据处理方法的技术效果,具体请参照图1-2相关描述,为简洁描述,在此不作赘述。
本发明实施例还提供了一种存储介质(计算机可读存储介质)。这里的存储介质存储有一个或者多个程序。其中,存储介质可以包括易失性存储器,例如随机存取存储器;存储器也可以包括非易失性存储器,例如只读存储器、快闪存储器、硬盘或固态硬盘;存储器还可以包括上述种类的存储器的组合。
当存储介质中一个或者多个程序可被一个或者多个处理器执行,以实现上述在服务器侧执行的多FPGA数据处理方法。
所述处理器用于执行存储器中存储的多FPGA数据处理程序,以实现以下在服务器侧执行的多FPGA数据处理方法的步骤:
获取目标操作算子对应的源数据和Tensorflow框架下的当前FPGA设备的数量;基于所述目标操作算子的类别和所述当前FPGA设备的数量,从源数据中确定每个FPGA设备对应处理的目标数据;将所述目标数据发送给对应的FPGA设备,以使所述FPGA设备对所述目标数据进行处理并反馈。
在一个可能的实施方式中,基于所述源数据中的数据元素在执行所述目标操作算子时的关联度,划分所述目标操作算子的类别。
在一个可能的实施方式中,判断所述源数据中的数据元素在执行所述目标操作算子时的关联度;若所述数据元素全部不相关,则确定所述目标操作算子的类别为第一类别;若所述数据元素部分相关,则确定所述目标操作算子的类别为第二类别;若所述数据元素全部相关,则确定所述目标操作算子的类别为第三类别。
在一个可能的实施方式中,若当前目标操作算子的类别为第一类别,则基于所述当前FPGA设备的数量将所述源数据平均分配给每个FPGA设备;若当前目标操作算子的类别为第二类别,则基于所述数据元素的关联度为所述FPGA设备分配数据;若当前目标操作算子的类别为第三类别,则将所述源数据全部分配给第一FPGA设备,所述第一FPGA设备是全部所述FPGA设备中的任意一个。
在一个可能的实施方式中,对所述源数据中相关的数据元素进行分组,得到多组数据元素,其中,每组数据元素中的各数据元素之间相互关联;将每组数据元素分配给一个FPGA设备。
在一个可能的实施方式中,获取全部FPGA设备的负载占用率;对所述FPGA设备的负载占用率由高到低进行排序;将所述负载占用率最低的FPGA设备作为所述第一FPGA设备。
在一个可能的实施方式中,基于Tensorflow框架搭建服务器集群,其中,所述服务器集群中的每个服务器上至少包括一个FPGA设备。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (7)

1.一种多FPGA数据处理方法,其特征在于,应用于Tensorflow框架,所述方法包括:
获取目标操作算子对应的源数据和Tensorflow框架下的当前FPGA设备的数量;
基于所述源数据中的数据元素在执行所述目标操作算子时的关联度,划分所述目标操作算子的类别;
所述基于所述源数据中的数据元素在执行所述目标操作算子时的关联度,划分所述目标操作算子的类别,包括:
判断所述源数据中的数据元素在执行所述目标操作算子时的关联度;
若所述数据元素全部不相关,则确定所述目标操作算子的类别为第一类别;
若所述数据元素部分相关,则确定所述目标操作算子的类别为第二类别;
若所述数据元素全部相关,则确定所述目标操作算子的类别为第三类别;
基于所述目标操作算子的类别和所述当前FPGA设备的数量,从源数据中确定每个FPGA设备对应处理的目标数据;
所述基于所述目标操作算子的类别和所述当前FPGA设备的数量,从源数据中确定每个FPGA设备对应处理的目标数据,包括:
若当前目标操作算子的类别为第一类别,则基于所述当前FPGA设备的数量将所述源数据平均分配给每个FPGA设备;
若当前目标操作算子的类别为第二类别,则基于所述数据元素的关联度为所述FPGA设备分配数据;
若当前目标操作算子的类别为第三类别,则将所述源数据全部分配给第一FPGA设备,所述第一FPGA设备是全部所述FPGA设备中的任意一个;
将所述目标数据发送给对应的FPGA设备,以使所述FPGA设备对所述目标数据进行处理并反馈。
2.根据权利要求1所述的方法,其特征在于,所述若当前目标操作算子的类别为第二类别,则基于所述数据元素的关联度为所述FPGA设备分配数据,包括:
对所述源数据中相关的数据元素进行分组,得到多组数据元素,其中,每组数据元素中的各数据元素之间相互关联;
将每组数据元素分配给一个FPGA设备。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取全部FPGA设备的负载占用率;
对所述FPGA设备的负载占用率由高到低进行排序;
将所述负载占用率最低的FPGA设备作为所述第一FPGA设备。
4.根据权利要求1所述的方法,其特征在于,所述获取目标操作算子对应的源数据和Tensorflow框架下的当前FPGA设备的数量之前,所述方法还包括:
基于Tensorflow框架搭建服务器集群,其中,所述服务器集群中的每个服务器上至少包括一个FPGA设备。
5.一种多FPGA数据处理装置,其特征在于,包括:
获取模块,用于获取目标操作算子对应的源数据和Tensorflow框架下的当前FPGA设备的数量;基于所述源数据中的数据元素在执行所述目标操作算子时的关联度,划分所述目标操作算子的类别;所述基于所述源数据中的数据元素在执行所述目标操作算子时的关联度,划分所述目标操作算子的类别,包括:判断所述源数据中的数据元素在执行所述目标操作算子时的关联度;若所述数据元素全部不相关,则确定所述目标操作算子的类别为第一类别;若所述数据元素部分相关,则确定所述目标操作算子的类别为第二类别;若所述数据元素全部相关,则确定所述目标操作算子的类别为第三类别;
确定模块,用于基于所述目标操作算子的类别和所述当前FPGA设备的数量,从源数据中确定每个FPGA设备对应处理的目标数据;所述基于所述目标操作算子的类别和所述当前FPGA设备的数量,从源数据中确定每个FPGA设备对应处理的目标数据,包括:若当前目标操作算子的类别为第一类别,则基于所述当前FPGA设备的数量将所述源数据平均分配给每个FPGA设备;若当前目标操作算子的类别为第二类别,则基于所述数据元素的关联度为所述FPGA设备分配数据;若当前目标操作算子的类别为第三类别,则将所述源数据全部分配给第一FPGA设备,所述第一FPGA设备是全部所述FPGA设备中的任意一个;
发送模块,用于将所述目标数据发送给对应的FPGA设备,以使所述FPGA设备对所述目标数据进行处理并反馈。
6.一种服务器,其特征在于,包括:处理器和存储器,所述处理器用于执行所述存储器中存储的多FPGA数据处理程序,以实现权利要求1~4中任一项所述的多FPGA数据处理方法。
7.一种存储介质,其特征在于,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现权利要求1~4中任一项所述的多FPGA数据处理方法。
CN202111168537.5A 2021-09-30 2021-09-30 多fpga数据处理方法、装置、服务器及存储介质 Active CN114021709B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111168537.5A CN114021709B (zh) 2021-09-30 2021-09-30 多fpga数据处理方法、装置、服务器及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111168537.5A CN114021709B (zh) 2021-09-30 2021-09-30 多fpga数据处理方法、装置、服务器及存储介质

Publications (2)

Publication Number Publication Date
CN114021709A CN114021709A (zh) 2022-02-08
CN114021709B true CN114021709B (zh) 2024-01-23

Family

ID=80055360

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111168537.5A Active CN114021709B (zh) 2021-09-30 2021-09-30 多fpga数据处理方法、装置、服务器及存储介质

Country Status (1)

Country Link
CN (1) CN114021709B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107277050A (zh) * 2017-07-27 2017-10-20 维沃移动通信有限公司 一种数据处理方法、服务器、终端及计算机可读存储介质
CN111209277A (zh) * 2020-01-06 2020-05-29 北京思维造物信息科技股份有限公司 一种数据处理方法、装置、设备及介质
CN111784000A (zh) * 2020-07-16 2020-10-16 矩阵元技术(深圳)有限公司 数据处理方法、装置和服务器
CN112799850A (zh) * 2021-02-26 2021-05-14 重庆度小满优扬科技有限公司 模型的训练方法、模型的预测方法以及模型的控制系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107277050A (zh) * 2017-07-27 2017-10-20 维沃移动通信有限公司 一种数据处理方法、服务器、终端及计算机可读存储介质
CN111209277A (zh) * 2020-01-06 2020-05-29 北京思维造物信息科技股份有限公司 一种数据处理方法、装置、设备及介质
CN111784000A (zh) * 2020-07-16 2020-10-16 矩阵元技术(深圳)有限公司 数据处理方法、装置和服务器
CN112799850A (zh) * 2021-02-26 2021-05-14 重庆度小满优扬科技有限公司 模型的训练方法、模型的预测方法以及模型的控制系统

Also Published As

Publication number Publication date
CN114021709A (zh) 2022-02-08

Similar Documents

Publication Publication Date Title
US11347480B2 (en) Transpose operations using processing element array
US11003429B1 (en) Compile-time scheduling
CN102193824A (zh) 虚拟机均质化以实现跨异构型计算机的迁移
CN110866610A (zh) 一种深度学习模型分布式运算的方法及装置
CN110554913A (zh) 神经网络系统及其操作方法以及应用处理器
US20230153158A1 (en) Method, apparatus, system, and storage medium for performing eda task
CN110795343B (zh) 测试系统、测试方法和计算设备
US20210158131A1 (en) Hierarchical partitioning of operators
CN113535087B (zh) 数据迁移过程中的数据处理方法、服务器及存储系统
CN112463296B (zh) 一种创建虚拟机的方法及装置
CN114021709B (zh) 多fpga数据处理方法、装置、服务器及存储介质
CN113535381A (zh) 基于改进遗传算法的服务功能链映射方法、装置及设备
CN112631994A (zh) 数据迁移方法及系统
CN111258950B (zh) 原子访存方法、存储介质、计算机设备、装置和系统
CN113672375A (zh) 资源分配预测方法、装置、设备及存储介质
CN114785693B (zh) 基于分层强化学习的虚拟网络功能迁移方法及装置
Van Nieuwpoort et al. Adaptive load balancing for divide-and-conquer grid applications
CN115150268A (zh) Kubernetes集群的网络配置方法、装置、及电子设备
US11372677B1 (en) Efficient scheduling of load instructions
CN113608851A (zh) 一种任务分配方法、装置、电子设备及存储介质
CN114816032B (zh) 一种数据处理方法、装置、电子设备及存储介质
US11625269B1 (en) Scheduling for locality of reference to memory
US11442794B1 (en) Event assignment for synchronization of concurrent execution engines
CN111858036B (zh) 基于FPGA设备的TensorFlow系统加速方法、装置、设备及存储介质
CN112286663B (zh) 任务调度方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant