IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ▲蘇▼州浪潮智能科技有限公司の特許一覧

特表2022-549527データ処理方法、装置、分散型データフロープログラミングフレームワーク及び関連コンポーネント
<>
  • 特表-データ処理方法、装置、分散型データフロープログラミングフレームワーク及び関連コンポーネント 図1
  • 特表-データ処理方法、装置、分散型データフロープログラミングフレームワーク及び関連コンポーネント 図2
  • 特表-データ処理方法、装置、分散型データフロープログラミングフレームワーク及び関連コンポーネント 図3
  • 特表-データ処理方法、装置、分散型データフロープログラミングフレームワーク及び関連コンポーネント 図4
  • 特表-データ処理方法、装置、分散型データフロープログラミングフレームワーク及び関連コンポーネント 図5
  • 特表-データ処理方法、装置、分散型データフロープログラミングフレームワーク及び関連コンポーネント 図6
  • 特表-データ処理方法、装置、分散型データフロープログラミングフレームワーク及び関連コンポーネント 図7
  • 特表-データ処理方法、装置、分散型データフロープログラミングフレームワーク及び関連コンポーネント 図8
  • 特表-データ処理方法、装置、分散型データフロープログラミングフレームワーク及び関連コンポーネント 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-11-25
(54)【発明の名称】データ処理方法、装置、分散型データフロープログラミングフレームワーク及び関連コンポーネント
(51)【国際特許分類】
   G06F 13/12 20060101AFI20221117BHJP
   G06F 9/50 20060101ALI20221117BHJP
   G06F 13/38 20060101ALI20221117BHJP
【FI】
G06F13/12 330D
G06F9/50 150E
G06F13/38 340C
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022532624
(86)(22)【出願日】2020-04-27
(85)【翻訳文提出日】2022-05-31
(86)【国際出願番号】 CN2020087157
(87)【国際公開番号】W WO2021155642
(87)【国際公開日】2021-08-12
(31)【優先権主張番号】202010080853.6
(32)【優先日】2020-02-05
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
(71)【出願人】
【識別番号】521524346
【氏名又は名称】▲蘇▼州浪潮智能科技有限公司
(74)【代理人】
【識別番号】110002262
【氏名又は名称】TRY国際弁理士法人
(72)【発明者】
【氏名】▲かん▼ 宏偉
(72)【発明者】
【氏名】呉 楠
(72)【発明者】
【氏名】李 仁剛
(72)【発明者】
【氏名】王 彦偉
(57)【要約】
【要約】データ処理方法、装置、分散型データフロープログラミングフレームワーク及び関連コンポーネントである。このデータ処理方法であって、データ処理タスクを複数のデータ処理サブタスクに分割する(S101)と、FPGA加速側において各データ処理サブタスクに対応するターゲットFPGA加速カードを決定するステップ(S102)と、計算されるデータを前記ターゲットFPGA加速カードに転送し、各前記ターゲットFPGA加速カードにより対応するデータ処理サブタスクを実行してデータ処理結果を取得する(S103)と、を含む。この方法は、FPGA加速側におけるFPGA加速カードの数がホストコンピュータインターフェースの物理的な制限を回避することができ、データ処理効率を向上させることができる。
【特許請求の範囲】
【請求項1】
ホスト側に適用され、前記ホスト側が複数のFPGA加速カードを有するFPGA加速側に接続され、前記FPGA加速カード間がネットワークを介して接続されたデータ処理方法であって、
データ処理タスクを複数のデータ処理サブタスクに分割し、前記FPGA加速側において各前記データ処理サブタスクに対応するターゲットFPGA加速カードを決定するステップと、
計算されるデータを前記ターゲットFPGA加速カードに転送し、各前記ターゲットFPGA加速カードにより対応するデータ処理サブタスクを実行してデータ処理結果を取得し、ところで、前記データ処理結果には中間計算データ又は前記データ処理タスクの最終処理結果が含まれ、各前記データ処理サブタスクのソースデータには前記計算されるデータ及び/又は前記中間計算データが含まれ、前記中間計算データは前記ターゲットFPGA加速カード間のネットワークを介して転送されるステップと、
を含むことを特徴とする、データ処理方法。
【請求項2】
計算されるデータを前記ターゲットFPGA加速カードに転送するステップの後、
前記計算されるデータのデータアドレス及びデータ長さを、前記ターゲットFPGA加速カードが前記データアドレス及び前記データ長さに従って前記計算されるデータを格納するように、前記ターゲットFPGA加速カードに設定するステップ、
をさらに含むことを特徴とする、請求項1に記載のデータ処理方法。
【請求項3】
前記ターゲットFPGA加速カードが中間計算データ及び/又は前記最終処理結果を計算結果格納アドレスに格納するように、前記計算結果格納アドレスを前記ターゲットFPGA加速カードに設定するステップ、
をさらに含むことを特徴とする、請求項1に記載のデータ処理方法。
【請求項4】
全ての前記ターゲットFPGA加速カードから第1のターゲットFPGA加速カードを選択するステップと、
全ての前記データ処理サブタスク及びタスク割当情報を前記第1のターゲットFPGA加速カードに転送し、ところで、前記タスク割当情報には、前記データ処理サブタスクと前記ターゲットFPGA加速カードとの対応関係が含まれるステップと、
前記第1のターゲットFPGA加速カードを用いて、前記タスク割当情報により前記データ処理サブタスクを対応するターゲットFPGA加速カードに転送するステップと、
をさらに含むことを特徴とする、請求項1に記載のデータ処理方法。
【請求項5】
計算されるデータを前記ターゲットFPGA加速カードに転送するステップは、
全ての前記ターゲットFPGA加速カードから第2のターゲットFPGA加速カードを選択するステップと、
全ての前記計算されるデータ及びデータ割当情報を前記第2のターゲットFPGA加速カードに転送し、ところで、前記データ割当情報には前記計算されるデータと前記ターゲットFPGA加速カードとの対応関係が含まれるステップと、
前記第2のターゲットFPGA加速カードを用いて、前記データ割当情報により前記計算されるデータを対応するFPGA加速カードに転送するステップと、
を含むことを特徴とする、請求項1に記載のデータ処理方法。
【請求項6】
計算されるデータを前記ターゲットFPGA加速カードに転送するステップは、
計算されるデータをカスタムRDMA転送方法で前記ターゲットFPGA加速カードに転送することを含み、
対応的には、対応するデータ処理サブタスクを所定転送方法で前記ターゲットFPGA加速カードに転送し、ところで、前記所定転送方法には、ストリーミング転送又は一括パケット転送が含まれること、
をさらに含むことを特徴とする、請求項1に記載のデータ処理方法。
【請求項7】
前記ターゲットFPGA加速カードがネットワークを介して前記中間計算データを他のターゲットFPGA加速カードに転送する場合、前記中間計算データのデータアドレス及びデータ長さを、前記他のターゲットFPGA加速カードが前記中間計算データのデータアドレス及びデータ長さに従って前記中間計算データを格納するように、前記他のターゲットFPGA加速カードに転送すること、
をさらに含むこと特徴とする、請求項1に記載のデータ処理方法。
【請求項8】
前記ターゲットFPGA加速カードの間では、MACインターフェースを介してデータを転送し、前記ホスト側と前記ターゲットFPGA加速カードとの間では、PCIEインターフェースを介してデータを転送し、遠端装置と前記ターゲットFPGA加速カードとの間では、MACインターフェースを介してデータを転送することを特徴とする、請求項1に記載のデータ処理方法。
【請求項9】
前記ホスト側及び前記ターゲットFPGA加速カードがローカルエリアネットワーク内の装置である場合、前記ホスト側と前記ターゲットFPGA加速カードとの間の通信データは、MAC層においてパケット化され、
前記ホスト側及び前記ターゲットFPGA加速カードがパブリックネットワーク内の装置である場合、前記ホスト側と前記ターゲットFPGA加速カードとの間の通信データは、UDPのpayload層においてパケット化され、前記ターゲットFPGA加速カード間の通信データは、UDPのpayload層においてパケット化されることを特徴とする、請求項1に記載のデータ処理方法。
【請求項10】
複数のFPGA加速カードを有するFPGA加速カード側に接続され、前記FPGA加速カード間がネットワークを介して接続されたデータ処理装置であって、
データ処理タスクを複数のデータ処理サブタスクに分割し、前記FPGA加速側において、各前記データ処理サブタスクに対応するターゲットFPGA加速カードを決定するように構成されたタスク割当モジュールと、
計算されるデータを前記ターゲットFPGA加速カードに転送し、各前記ターゲットFPGA加速カードにより対応するデータ処理サブタスクを実行してデータ処理結果を取得し、ところで、前記データ処理結果には、中間計算データ又は前記データ処理タスクの最終処理結果が含まれ、各前記データ処理サブタスクのソースデータには、前記計算されるデータ及び/又は前記中間計算データが含まれ、前記中間計算データは、前記ターゲットFPGA加速カード間のネットワークを介して転送されるように構成されたタスク実行モジュールと、
を備えることを特徴とする、データ処理装置。
【請求項11】
CPU加速スタック及びFPGA加速スタックを含む分散型データフロープログラミングフレームワークであって、
前記CPU加速スタックは、データ処理タスクの分割のための基礎となるサポートを提供し、さらに、データ処理サブタスクのスケジューリングのためのホスト側プログラミングインターフェースを提供するように構成され、
前記FPGA加速スタックは、ホスト側プログラミングインターフェースに対応する加速インターフェースを提供し、さらに、前記データ処理サブタスクを実行する際に加速データ制御プログラム及びkernel制御プログラムを提供するように構成され、
ここで、前記分散型データフロープログラミングフレームワークが機能する場合、前記CPU加速スタックは、データ処理タスクを複数のデータ処理サブタスクに分割し、前記FPGA加速側において、各前記データ処理サブタスクに対応するターゲットFPGA加速カードを決定し、計算されるデータを前記ターゲットFPGA加速カードに転送し、各前記ターゲットFPGA加速カードにより対応するデータ処理サブタスクを実行してデータ処理結果を取得し、ところで、前記データ処理結果には、中間計算データ又は前記データ処理タスクの最終処理結果が含まれ、各前記データ処理サブタスクのソースデータには、前記計算されるデータ及び/又は前記中間計算データが含まれ、前記中間計算データは、前記ターゲットFPGA加速カード間のネットワークを介して転送されることを特徴とする、分散型データフロープログラミングフレームワーク。
【請求項12】
前記FPGA加速スタックは、
前記CPU加速スタックから配信されたデータ処理サブタスクを実行し、さらに、データ処理結果を前記CPU加速スタック又は他のターゲットFPGA加速カードに転送するように構成された静的領域と、
前記データ処理サブタスクをローカル加速ユニット又は他のターゲットFPGA加速カードの加速ユニットに転送し、加速計算動作を行うように構成されたFPGA加速エンジンと、を備えることを特徴とする、請求項11に記載の分散型データフロープログラミングフレームワーク。
【請求項13】
メモリとプロセッサとを含む電子装置であって、
前記メモリにはコンピュータプログラムが記憶されており、
前記コンピュータプログラムが前記プロセッサによって実行されると、請求項1~9のいずれか一項に記載のデータ処理方法のステップを実施することを特徴とする、電子装置。
【請求項14】
コンピュータ読み取り可能な命令が記憶されている記憶媒体であって、
前記コンピュータ読み取り可能な命令がプロセッサによってロードされて実行されると、請求項1~9のいずれか一項に記載のデータ処理方法のステップを実施することを特徴とする、記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、2020年2月5日に出願された中国特許出願第202010080853.6号(発明の名称:データ処理方法、装置、分散型データフロープログラミングフレームワーク及び関連コンポーネント)に基づく優先権を主張し、引用によりその全ての記載内容が本明細書に組み込まれる。
【0002】
本出願は、クラウド計算技術の分野に関し、特に、データ処理方法、装置、分散型データフロープログラミングフレームワーク、電子装置及び記憶媒体に関する。
【背景技術】
【0003】
人工知能及びビッグデータの急速な発展に伴い、データセンターにおけるデータが倍増するとともに、AI(Artificial Intelligence)の急速な発展は、データの高性能計算に対する要求をもたらす。これは、一方では、データの指数関数的な成長をもたらし、他方では、これらのデータ処理に必要な計算リソースも同様に成長する。従来の計算はCPUで処理されており、技術の進歩に伴ってCPUの性能を倍に向上させることができなくなっている。フィールドプログラマブルゲートアレイ(FPGA、Field Programmable Gate Array)のような再構成可能なチップは、多くの作業負荷を加速する潜在性を有し、復号化演算、画像処理、伸張演算及び人工知能関連演算を実行することができる。従来、通信集中や計算集中のタスクの処理は、FPGA加速側によって実現されていた。しかしながら、従来技術におけるFPGA加速側における2つのFPGA加速カードの間にデータのやり取りが必要である場合、FPGA加速カードがPCIEを介してホスト側にデータを転送し、ホスト側が更に他のカードにデータを転送する、ということが必要であり、データの計算の効率が低く、FPGAクラウドサーバにおけるマルチカード装置をサポートする数は、ホスト側でのサポート可能なPCIEカードの数に物理的制限される。
【0004】
したがって、FPGA加速側におけるFPGA加速カードの数がホストインターフェースに物理的制限されることを回避し、データ処理効率を向上させることは、当業者が現在解決すべき技術的課題である。
【発明の概要】
【0005】
本発明は、FPGA加速側におけるFPGA加速カードの数がホストインターフェースに物理的制限されることを回避し、データ処理効率を向上させることができるデータ処理方法、装置、分散型データフロープログラミングフレームワーク、電子装置及び記憶媒体を提供することを目的とする。
【0006】
上記課題を解決するために、本発明は、ホスト側に適用され、前記ホスト側が複数のFPGA加速カードを有するFPGA加速側に接続され、前記FPGA加速カード間でネットワークを介して接続されたデータ処理方法であって、
データ処理タスクを複数のデータ処理サブタスクに分割し、前記FPGA加速側において各前記データ処理サブタスクに対応するターゲットFPGA加速カードを決定するステップと、
計算されるデータを前記ターゲットFPGA加速カードに転送し、各前記ターゲットFPGA加速カードにより対応するデータ処理サブタスクを実行してデータ処理結果を取得し、ところで、前記データ処理結果には、中間計算データ又は前記データ処理タスクの最終処理結果が含まれ、各前記データ処理サブタスクのソースデータには、前記計算されるデータ及び/又は前記中間計算データが含まれ、前記中間計算データは、前記ターゲットFPGA加速カード間のネットワークを介して転送されるステップと、を含むデータ処理方法を提供する。
【0007】
任意選択で、計算されるデータを前記ターゲットFPGA加速カードに転送するステップの後、前記計算されるデータのデータアドレス及びデータ長さを、前記ターゲットFPGA加速カードが前記データアドレス及び前記データ長さに従って前記計算されるデータを格納するように、前記ターゲットFPGA加速カードに設定するステップ、をさらに含む。
【0008】
任意選択で、前記ターゲットFPGA加速カードが中間計算データ及び/又は前記最終処理結果を計算結果格納アドレスに格納するように、前記計算結果格納アドレスを前記ターゲットFPGA加速カードに設定するステップ、をさらに含む。
【0009】
任意選択で、全ての前記ターゲットFPGA加速カードから第1のターゲットFPGA加速カードを選択するステップと、
全ての前記データ処理サブタスク及びタスク割当情報を前記第1のターゲットFPGA加速カードに転送し、ところで、前記タスク割当情報には、前記データ処理サブタスクと前記ターゲットFPGA加速カードとの対応関係が含まれるステップと、
前記第1のターゲットFPGA加速カードを用いて、前記タスク割当情報により前記データ処理サブタスクを対応するターゲットFPGA加速カードに転送するステップと、をさらに含む。
【0010】
任意選択で、計算されるデータを前記ターゲットFPGA加速カードに転送するステップは、
全ての前記ターゲットFPGA加速カードから第2のターゲットFPGA加速カードを選択するステップと、
全ての前記計算されるデータ及びデータ割当情報を前記第2のターゲットFPGA加速カードに転送し、ところで、前記データ割当情報には、前記計算されるデータと前記ターゲットFPGA加速カードとの対応関係が含まれるステップと、
前記第2のターゲットFPGA加速カードを用いて、前記データ割当情報により前記計算されるデータを対応するFPGA加速カードに転送するステップと、を含む。
【0011】
任意選択で、計算されるデータを前記ターゲットFPGA加速カードに転送するステップは、
計算されるデータをカスタムRDMA転送方法で前記ターゲットFPGA加速カードに転送することを含み、
対応的には、対応するデータ処理サブタスクを所定転送方法で前記ターゲットFPGA加速カードに転送し、ところで、前記所定転送方法には、ストリーミング転送又は一括パケット転送が含まれること、をさらに含む。
【0012】
任意選択で、前記ターゲットFPGA加速カードがネットワークを介して前記中間計算データを他のターゲットFPGA加速カードに転送する場合、前記中間計算データのデータアドレス及びデータ長さを、前記他のターゲットFPGA加速カードが前記中間計算データのデータアドレス及びデータ長さに従って前記中間計算データを格納するように、前記他のターゲットFPGA加速カードに転送すること、をさらに含む。
【0013】
任意選択で、前記ターゲットFPGA加速カードの間では、MACインターフェースを介してデータを転送し、前記ホスト側と前記ターゲットFPGA加速カードとの間では、PCIEインターフェースを介してデータを転送し、遠端装置と前記ターゲットFPGA加速カードとの間では、MACインターフェースを介してデータを転送する。
【0014】
任意選択で、前記ホスト側及び前記ターゲットFPGA加速カードがローカルエリアネットワーク内の装置である場合、前記ホスト側と前記ターゲットFPGA加速カードとの間の通信データは、MAC層においてパケット化され、
前記ホスト側及び前記ターゲットFPGA加速カードがパブリックネットワーク内の装置である場合、前記ホスト側と前記ターゲットFPGA加速カードとの間の通信データは、UDPのpayload層においてパケット化され、前記ターゲットFPGA加速カード間の通信データは、UDPのpayload層においてパケット化される。
【0015】
本発明は、複数のFPGA加速カードを有するFPGA加速カード側に接続され、前記FPGA加速カード間がネットワークを介して接続されたデータ処理装置であって、
データ処理タスクを複数のデータ処理サブタスクに分割し、前記FPGA加速側において、各前記データ処理サブタスクに対応するターゲットFPGA加速カードを決定するように構成されたタスク割当モジュールと、
計算されるデータを前記ターゲットFPGA加速カードに転送し、各前記ターゲットFPGA加速カードにより対応するデータ処理サブタスクを実行してデータ処理結果を取得し、ところで、前記データ処理結果には、中間計算データ又は前記データ処理タスクの最終処理結果が含まれ、各前記データ処理サブタスクのソースデータには、前記計算されるデータ及び/又は前記中間計算データが含まれ、前記中間計算データは、前記ターゲットFPGA加速カード間のネットワークを介して転送されるように構成されたタスク実行モジュールと、を備えるデータ処理装置をさらに提供する。
【0016】
本発明は、CPU加速スタック及びFPGA加速スタックを含む分散型データフロープログラミングフレームワークであって、
前記CPU加速スタックは、データ処理タスクの分割のための基礎となるサポートを提供し、さらに、データ処理サブタスクのスケジューリングのためのホスト側プログラミングインターフェースを提供するように構成され、
前記FPGA加速スタックは、ホスト側プログラミングインターフェースに対応する加速インターフェースを提供し、さらに、前記データ処理サブタスクを実行する際に加速データ制御プログラム及びkernel制御プログラムを提供するように構成され、
ここで、前記分散型データフロープログラミングフレームワークが機能する場合、前記CPU加速スタックは、データ処理タスクを複数のデータ処理サブタスクに分割し、前記FPGA加速側において、各前記データ処理サブタスクに対応するターゲットFPGA加速カードを決定し、計算されるデータを前記ターゲットFPGA加速カードに転送し、各前記ターゲットFPGA加速カードにより対応するデータ処理サブタスクを実行してデータ処理結果を取得し、ところで、前記データ処理結果には、中間計算データ又は前記データ処理タスクの最終処理結果が含まれ、各前記データ処理サブタスクのソースデータには、前記計算されるデータ及び/又は前記中間計算データが含まれ、前記中間計算データは、前記ターゲットFPGA加速カード間のネットワークを介して転送される、分散型データフロープログラミングフレームワークをさらに提供する。
【0017】
任意選択で、前記FPGA加速スタックは、
前記CPU加速スタックから配信されたデータ処理サブタスクを実行し、さらに、データ処理結果を前記CPU加速スタック又は他のターゲットFPGA加速カードに転送するように構成された静的領域と、
前記データ処理サブタスクをローカル加速ユニット又は他のターゲットFPGA加速カードの加速ユニットに転送し、加速計算動作を行うように構成されたFPGA加速エンジンと、を備える。
【0018】
本発明は、コンピュータプログラムが記憶されている記憶媒体をさらに提供する。前記コンピュータプログラムが実行されると、上記のデータ処理方法のステップを実施する。
【0019】
本発明は、メモリ及びプロセッサを含む電子装置をさらに提供する。前記メモリには、コンピュータプログラムが記憶されており、前記コンピュータプログラムが前記プロセッサによって実行されると、上記のデータ処理方法のステップを実施する。
【0020】
本発明は、ホスト側に適用され、前記ホスト側が複数のFPGA加速カードを有するFPGA加速側に接続され、前記FPGA加速カード間でネットワークを介して接続されたデータ処理方法であって、
データ処理タスクを複数のデータ処理サブタスクに分割し、前記FPGA加速側において各前記データ処理サブタスクに対応するターゲットFPGA加速カードを決定するステップと、
計算されるデータを前記ターゲットFPGA加速カードに転送し、各前記ターゲットFPGA加速カードにより対応するデータ処理サブタスクを実行してデータ処理結果を取得し、ところで、前記データ処理結果には、中間計算データ又は前記データ処理タスクの最終処理結果が含まれ、各前記データ処理サブタスクのソースデータには、前記計算されるデータ及び/又は前記中間計算データが含まれ、前記中間計算データは、前記ターゲットFPGA加速カード間のネットワークを介して転送されるステップと、を含むデータ処理方法を提供する。
【0021】
本発明では、まず、データ処理タスクを複数のデータ処理サブタスクに分割し、FPGA加速側において各データ処理サブタスクに対応するターゲットFPGA加速カードを決定し、ターゲットFPGA加速カードを用いて対応するデータ処理サブタスクを実行する。ターゲットFPGA加速カードがデータ処理サブタスクを処理する際には、他のターゲットFPGA加速カードのデータ処理結果を入力データとしてもよいし、自身が計算したデータ処理結果を他のターゲットFPGA加速カードに転送してもよい。データ処理結果は、一旦ホスト側に転送してからホスト側を介して転送するのではなく、FPGA加速カード同士の間でネットワークを介して転送する。このように、本発明は、FPGA加速側におけるFPGA加速カードの数がホストコンピュータインターフェースの物理的な制限を回避することができ、データ処理効率を向上させることができる。本発明は、データ処理装置、分散型データフロープログラミングフレームワーク、電子装置および記憶媒体も同時に提供し、上述の利点を有するので、ここではその説明を省略する。
【図面の簡単な説明】
【0022】
本発明の実施形態又は従来技術における技術案をより明確に説明するために、実施形態又は従来技術の説明に必要な図面を簡単に説明するが、以下の説明における図面は本発明の実施形態の一部に過ぎず、当業者にとっては、創造的な労力を払わない限り、これらの図面に基づいて他の図面を獲得することができることは明らかである。
図1】本発明の実施形態によるデータ処理方法のフローチャートである。
図2】本発明の実施形態によるデータ処理サブタスクの割当方法のフローチャートである。
図3】本発明の実施形態による計算されるデータの転送方法のフローチャートである。
図4】本発明の実施形態による再構成可能なデータセンターの構成図である。
図5】本発明の実施形態による再構成可能なデータセンターの加速フレームワーク図である。
図6】本発明の実施形態によるCPU加速スタックの構成の模式図である。
図7】本発明の実施形態によるFPGA加速スタックの機能の構成図である。
図8】本発明の実施形態によるFPGA加速スタックのフレームワーク図である。
図9】本発明の実施形態によるFPGAクラウドプラットフォームの計算原理の模式図である。
【発明を実施するための形態】
【0023】
以下、本発明の実施形態における技術的解決策を、本発明の実施形態における図面を参照して明確かつ完全に説明するが、明らかに、説明された実施形態は本発明の一部の実施例に過ぎず、全ての実施例にすぎない。本出願における実施形態に基づいて、当業者が創造的な労働をすることなく得た他の全ての実施形態は、本出願の保護範囲に属する。
【0024】
図1を参照すると、図1は、本発明の実施形態によるデータ処理方法のフローチャートである。
【0025】
具体的には、下記のステップを含み、
ステップS101:データ処理タスクを複数のデータ処理サブタスクに分割する。
【0026】
ここで、本実施形態は、複数のFPGA加速カードを有し、前記FPGA加速カード間がネットワークを介して接続されたFPGA加速側に接続されたホスト側に適用することができ、ホスト側におけるCPU(Central Processing Unit)は、データ処理サブタスクに対する割当を実現するために用いられることができる。
【0027】
具体的には、本実施形態では、データ処理タスクに応じて、計算されるデータ及びその計算されるデータに対する全ての計算動作を決定し、その計算動作の数や種類に応じて、データ処理タスクを複数のデータ処理サブタスクに分割することができる。例えば、一つのデータ処理タスクを9段階の計算動作に分け、第1~3項の計算動作を第1のデータ処理サブタスクとし、第4~6項の計算動作を第2のデータ処理サブタスクとし、第7~9項の計算動作を第3のデータ処理サブタスクとしてもよい。さらに例えば、1つのデータ処理タスクには形態素解析、意味解析、ハッシュマッピングの3種類の計算動作が含まれ、形態素解析の全てを第4のデータ処理サブタスクとし、構文解析の全てを第5のデータ処理サブタスクとし、ハッシュマッピングの全てを第6のデータ処理サブタスクとしてもよい。
【0028】
複数のデータ処理サブタスクを得た後、各データ処理サブタスクの対応するファームウェアを生成して、対応するFPGA加速カードにバースト記録することができ、FPGA加速カードは、ファームウェアを実行することにより対応するデータ処理動作を実行する。
【0029】
ステップS102:前記FPGA加速側において各前記データ処理サブタスクに対応するターゲットFPGA加速カードを決定する。
【0030】
ここで、FPGA加速側には複数のFPGA加速カードが含まれてもよく、本実施形態では、データ処理サブタスクのサブタスク数に基づいてFPGA加速側から同じ数のFPGA加速カードを選択することができる。ターゲットFPGA加速カードを決定した後、各ターゲットFPGA加速カードとデータ処理サブタスクとの間の対応関係も決定し、当該対応関係に基づいてデータ処理サブタスクを対応するターゲットFPGA加速カードに転送してもよく、すなわち、データ処理サブタスクに対応するファームウェアを、対応するターゲットFPGA加速カードにバースト記録してもよい。
【0031】
ステップS103:計算されるデータを前記ターゲットFPGA加速カードに転送し、各前記ターゲットFPGA加速カードにより対応するデータ処理サブタスクを実行してデータ処理結果を取得する。
【0032】
ここで、本実施形態では、データ処理タスクに基づいて対応する計算されるデータを決定し、計算されるデータをターゲットFPGA加速カードに転送することができる。ターゲットFPGA加速カードがデータ処理サブタスクを実行する際のソースデータは、計算されるデータであってもよいし、他のFPGA加速カードの中間計算結果であってもよいし、計算されるデータと中間計算結果であってもよい。各ターゲット加速カードが対応するデータ処理サブタスクを実行することで得られるデータ処理結果には中間計算データ、又は前記データ処理タスクの最終処理結果が含まれてもよく、各前記データ処理サブタスクのソースデータには前記計算されるデータ及び/又は前記中間計算データが含まれ、前記中間計算データは前記ターゲットFPGA加速カード間のネットワークを介して転送される。
【0033】
実行可能な実施形態として、計算されるデータをターゲットFPGA加速カードに転送した後、計算されるデータのデータアドレス及びデータ長さを、前記ターゲットFPGA加速カードが前記データアドレス及び前記データ長さに従って前記計算されるデータを格納するように、ターゲットFPGA加速カードに設定してもよい。上述の実施形態において、ホスト側が計算されるデータのデータアドレスとデータ長さをターゲットターゲットFPGA加速カードに転送することで、ターゲットFPGA加速カードにデータアドレスとデータ長さに従って計算されるデータを格納させることができる。
【0034】
別の実行可能な実施形態として、ホスト側は計算結果格納アドレスをターゲットFPGA加速カードに設定することもでき、これにより、ターゲットFPGA加速カードは中間計算データ及び/又は前記最終処理結果を計算結果格納アドレスに格納する。上述の実施形態において、ホスト側がターゲットFPGA加速カードに計算結果格納アドレスを転送することにより、ターゲットFPGA加速カードは当該計算結果格納アドレスに基づいて中間計算データ及び/又は最終処理結果を格納し、他のターゲットFPGA加速カードは計算結果格納アドレスに基づいて中間計算データを読み取ることができ、ホスト側は計算結果格納アドレスに基づいて最終処理結果を読み取ることができる。
【0035】
ターゲットFPGA加速カードがネットワークを介して他のターゲットFPGA加速カードに中間計算データを転送する場合に、前記他のターゲットFPGA加速カードに前記中間計算データのデータアドレスとデータ長さとを転送することにより、前記他のターゲットFPGA加速カードが前記中間計算データのデータアドレスとデータ長さとに従って前記中間計算データを格納してもよい。具体的には、ターゲットFPGA加速カード同士の間ではMACインターフェースを介して中間計算データを転送することができ、ホスト側と前記ターゲットFPGA加速カードとの間ではPCIEインターフェースを介して最終処理結果及び/又は計算されるデータを転送し、遠端装置とターゲットFPGA加速カードとの間ではMACインターフェースを介してデータを転送する。
【0036】
本実施形態では、まず、データ処理タスクを複数のデータ処理サブタスクに分割し、FPGA加速側において各データ処理サブタスクに対応するターゲットFPGA加速カードを決定し、ターゲットFPGA加速カードを用いて対応するデータ処理サブタスクを実行する。ターゲットFPGA加速カードがデータ処理サブタスクを処理する際には、他のターゲットFPGA加速カードのデータ処理結果を入力データとしてもよいし、自身が計算したデータ処理結果を他のターゲットFPGA加速カードに転送してもよい。データ処理結果は、一旦ホスト側に転送してからホスト側を介して転送するのではなく、FPGA加速カード間でネットワークを介して転送する。このように、本実施形態は、FPGA加速側におけるFPGA加速カードの数がホストコンピュータインターフェースの物理的な制限を回避することができ、データ処理効率を向上させることができる。
【0037】
図2を参照すると、図2は本発明の実施形態によるデータ処理サブタスクの割当方法のフローチャートであり、本実施形態では、図1の対応する実施形態におけるデータ処理サブタスクを決定した後のさらなる説明であり、本実施形態を図1の対応する実施形態と組み合わせることでさらなる実施形態を得てもよく、本実施形態は以下のステップを含んでもよい。
【0038】
ステップS201:全ての前記ターゲットFPGA加速カードから第1のターゲットFPGA加速カードを選択する。
【0039】
ステップS202:全ての前記データ処理サブタスク及びタスク割当情報を前記第1のターゲットFPGA加速カードに転送する。
【0040】
ステップS203:前記第1のターゲットFPGA加速カードを用いて、前記タスク割当情報により前記データ処理サブタスクを対応するターゲットFPGA加速カードに転送する。
【0041】
ここで、本実施形態の実行主体は、FPGA加速側に接続されたホスト側であってもよく、全ての選択されたターゲットFPGA加速カードから第1のターゲットFPGA加速カードを決定し、第1のターゲットFPGA加速カードに全てのデータ処理サブタスクを転送するようにしてもよい。ホスト側は、データ処理サブタスクの全てを第1のターゲットFPGA加速カードに転送すると同時に、タスク割当情報も第1のターゲットFPGA加速カードに転送する。タスク割当情報にはデータ処理サブタスクとターゲットFPGA加速カードとの対応関係が記憶されており、第1のターゲットFPGA加速カードは、この対応関係を用いて、対応するターゲットFPGA加速カードに前記データ処理サブタスクを転送することができる。
【0042】
もちろん、図2の実施形態において説明した一つのターゲットFPGA加速カードを用いてデータ処理サブタスクの全てを割り当てることに加え、ホスト側は、各ターゲットFPGA加速カードにそれぞれの対応するデータ処理サブタスクを転送することもできる。一実行可能な実施形態として、ホスト側は、ストリーミング又は一括パケットの転送方法を用いて対応するデータ処理サブタスクをFPGA加速カードに転送し得る。
【0043】
図3を参照すると、図3は、本発明の実施形態による計算されるデータの転送方法のフローチャートであり、本実施形態は、図1の対応する実施形態のステップS103に対するさらなる説明であり、本実施形態と図1の対応する実施形態を組み合わせることでさらなる実施形態を得てもよく、本実施例は以下のステップを含んでもよい。
【0044】
ステップS301:全ての前記ターゲットFPGA加速カードから第2のターゲットFPGA加速カードを選択する。
【0045】
ステップS302:全ての前記計算されるデータ及びデータ割当情報を前記第2のターゲットFPGA加速カードに転送し、
ところで、前記データ割当情報には前記計算されるデータと前記ターゲットFPGA加速カードとの対応関係が含まれる。
【0046】
ステップS303:前記第2のターゲットFPGA加速カードを用いて、前記データ割当情報により前記計算されるデータを対応するFPGA加速カードに転送する。
【0047】
ここで、本実施形態の実行主体は、FPGA加速側に接続されたホスト側であってもよく、全ての選択されたターゲットFPGA加速カードから第2のターゲットFPGA加速カードを決定し、第2のターゲットFPGA加速カードに全ての計算されるデータを転送するようにしてもよい。ホスト側は、データ処理サブタスクの全てを第2のターゲットFPGA加速カードに転送すると同時に、データ割当情報も第1のターゲットFPGA加速カードに転送する。データ割当情報には、各計算されるデータとターゲットFPGA加速カードとの対応関係が記憶されており、第2のターゲットFPGA加速カードは、この対応関係を用いて、対応するターゲットFPGA加速カードに計算されるデータを転送することができる。一実行可能な実施形態として、ホスト側は、カスタムRDMA(Remote Direct Memory Access )である転送方法で対応する計算されるデータを前記ターゲット加速カードに転送することができる。
【0048】
さらに、前記ホスト側及び前記ターゲットFPGA加速カードがローカルエリアネットワーク内の装置である場合、前記ホスト側と前記ターゲットFPGA加速カードとの間の計算されるデータ及び/又は最終処理結果などの通信データは、MAC層においてパケット化を完了する。前記ホスト側及び前記ターゲットFPGA加速カードがパブリックネットワーク内の装置である場合、前記ホスト側と前記ターゲットFPGA加速カードとの間の計算されるデータ及び/又は最終処理結果などの通信データは、UDP(User Datagram Protocol)のpayload層においてパケット化を完了し、前記ターゲットFPGA加速カードの間の計算されるデータ及び/又は最終処理結果などの通信データは、DPのpayload層においてパケット化を完了する。ここで、payload層とはユーザデータグラムプロトコルのペイロード層を指し、ペイロードとはデータ転送において転送が必要な情報を指す。
【0049】
図4を参照すると、図4は本発明の実施形態による再構成可能なデータセンターの構成であり、再構成可能なデータセンターは、ホスト側とFPGAキャビネット(すなわち、FPGA加速側)とを含む。本実施形態に開示された再構成可能なデータセンターは、ネットワークを介してFPGAリソースをプールし、FPGA加速カード間はネットワーク(10Gネットワーク、40Gネットワーク又は100Gネットワーク)を介して接続され、一方では、カード結合の形式を維持し、すなわち、一台のサーバーに、一枚又は複数枚のFPGA加速器を搭載し、他方では、BOX OF FPGA (FPGAキャビネット)モードを導入する。FPGAキャビネット内のさまざまなタイプのFPGA加速カード(Intelチップ及びXilinxチップを含んでもよい)が、ネットワークを介してデータのやりとりをする。FPGAキャビネット内のFPGA加速カードとホスト側に設定されたFPGA加速カードもネットワークを介して相互に接続されている。以上のように、FPGAとCPUの密結合を切り離すことで、通信データはホスト側のCPUを介して転送されることなく、MAC層やUDP層以上の軽量で高信頼なプロトコルを用いて転送されるため、システムスループット遅延が低減される。図4の光モジュールは、光ファイバインタフェースモジュールである。
【0050】
図4に示す再構成可能なデータセンターは、下記の特徴がある。ホスト側のCPU、ホスト側におけるFPGA加速カード、及びFPGAキャビネットにおけるFPGA加速カードが協働する。ホスト側のCPUは論理処理を担当し、FPGAキャビネットのFPGA加速カードは通信集約及び計算集約型タスクを担当する。再構成可能なデータセンターでは、ネットワークを介して記憶リソースを共有し、ノード間で分散トポロジを採用する。再構成可能な装置に関連する論理機能は、分散的にロードされ、標準的なイーサネットインターフェース及びプロトコルをサポートする。
【0051】
従来のCPU分散型プラットフォームでのタスク分割とスケジューリング、ソフトウェアパイプライン構成及びデータ通信などの処理方法は、再構成可能なデータセンターに直接適用することができず、再構成可能なデータセンターにおける異種計算リソースの並列構成及び再構成可能な特性に対し、データフローのプログラミングを基礎として、本発明が提供する再構成可能なデータセンター向けの分散型データフロープログラミングフレームワークは、分散型並列プログラミングインターフェースを提供し、再構成可能な装置への計算タスクのマッピングを完成する。分散型データフロープログラミングフレームワークは、CPU加速スタック、FPGA加速スタックおよびマッピングモデルからなる。
【0052】
CPU加速スタックは、並列タスクモデルの分割、スケジューリングのためのHOST側プログラミングインターフェース(API)を提供し、軽量で高信頼性のプロトコルモジュール、再分割可能なデータセンターのメモリ管理モジュール、FPGA加速器の駆動ジュールを含む基礎的なサポートを提供する。
【0053】
FPGA加速スタックは、具体的な計算タスクを実現するために、加速データ制御、kernel制御などのIPを提供する。FPGA IPは、HOST側APIが提供可能な機能に対して全く同じインターフェースを提供する。これにより、統一された分散型マルチエンジン加速スタックを実現する。マルチエンジン加速スタックは、上記インターフェースを介して、主にFPGAに対するリモートロード及び更新、FPGA上のアルゴリズムアプリケーションへのオフロードのロード、アルゴリズムパラメータのロード、データ転送経路の制御、アプリケーションの起動停止などを実現し、FPGAクラウドプラットフォームの各命令に対する制御を完了する。FPGA加速スタックは、ホスト側プログラミングインターフェースに対応する加速インターフェースを提供してもよく、データ処理サブタスクを実行するときに加速データ制御プログラム及びkernel制御プログラムを提供してもよい。FPGAカードがデータ処理サブタスクを実行するとき、FPGA加速スタックは、FPGAカードが処理の必要な元のデータを取得し、データ処理結果を特定の領域に格納するように、加速データ制御プログラムを用いてデータの割当及び搬送を実現することができる。Kernel制御プログラムとは、FPGAカードのカーネル制御プログラムを指し、FPGA加速スタックは、Kernel制御プログラムを用いて元のデータの計算を行うことにより対応するデータ処理結果を得ることができる。前記分散型データフロープログラミングフレームワークが機能する場合、CPU加速スタックは、データ処理タスクを複数のデータ処理サブタスクに分割し、前記FPGA加速側において、各前記データ処理サブタスクに対応するターゲットFPGA加速カードを決定し、前記ターゲットFPGA加速カードに計算されるデータを転送し、各前記ターゲットFPGA加速カードにより対応するデータ処理サブタスクを実行してデータ処理結果を取得し、ところで、前記データ処理結果には中間計算データ又は前記データ処理タスクの最終処理結果が含まれ、各前記データ処理サブタスクのソースデータには前記計算されるデータ及び/又は前記中間計算データが含まれ、前記中間計算データは前記ターゲットFPGA加速カード間のネットワークを介して転送される。FPGA加速スタックは、前記CPU加速スタックから割当されたデータ処理サブタスクを実行し、さらに、データ処理結果を前記CPU加速スタック又は他のターゲットFPGA加速カードに転送するように構成された静的領域と、ローカル加速ユニット又は他のターゲットFPGA加速カードの加速ユニットに前記データ処理サブタスクを転送し、加速計算動作を行うように構成されたFPGA加速エンジンと、を備える。
【0054】
図5を参照すると、図5は、本発明の実施形態による再構成可能なデータセンターの加速フレームワーク図である。図5におけるFPGA加速器は本明細書で言及されるFPGA加速カードである。FPGA分散型異種システムは、ユーザの要求に応じて論理サブネットの分割を実行することができ、サブネット全体は、複数の計算タスクノードから構成され、ノード間は、カスタマイズされた高信頼で軽量の転送プロトコルによって、サーバノードとFPGA加速ユニットとの間、FPGAノードとFPGAノードとの間のデータ転送、制御命令の通信を可能にする。各計算タスクは、サーバノード上で動作する論理制御モジュールと、FPGA上で動作する加速計算モジュールとを含む。サーバノードの論理制御モジュールは、拡張可能な分散型プログラミングフレームワークによって提供されるFPGAクラウドプラットフォームの関数ライブラリを用いて実現され、FPGA上で動作する加速計算モジュールは、RTLを用いて実現され、分散型プログラミングフレームワークによって提供されるIP層制御インターフェースを用いて、再構成可能なデータセンターの並列計算タスクを完了する。図5において、NICはネットワークカードであり、User Applicationはユーザアプリケーションであり、PCIe(peripheral component interconnect express)は高速直列コンピュータ拡張バスの規格であり、MAC(Medium Access Control)は媒体アクセス制御プロトコルであり、KERNELはFPGA加速カードのカーネルであり、FPGA OF BOXは複数のFPGA加速カードが設置されたFPGA加速側であり、Data FlowはFPGA加速カード間のデータ転送のプロセスであり、Control FlowはFPGA加速側の各FPGA加速カードに対する制御フローであり、Switchはコンバータである。
【0055】
図6は、本発明の実施形態によるCPU加速スタックの構成の模式図である。CPU加速スタックは、基盤FPGA加速器駆動モジュール、RDC SDK (Reconfigurable Data Center Software Development Kit、すなわち、再構成可能なデータセンターのソフトウェア開発キット)、認証管理モジュール、メモリ管理層、ストリームテーブルマッチング層、加速データ管理モジュール、加速制御管理モジュール、RLTL(Relay Layer-Transfer Layer、すなわち、中継層と転送層)プロトコルサポート層に分けられる。ユーザは、RDC SDK(再構成可能なデータセンターのソフトウェア開発キット)を通じて、アプリケーションデータの移転、Kernelの更新、および動作監視などのタスクを完了することができる。認証管理モジュールは、主にユーザの要求に応じてFPGAベースのワークグループ管理および権限付与機構を実行し、チップIDベースのセキュリティチェック機構を実行し、ユーザネットリスト/BIT文書の安全性を高める。ストリームテーブルマッチングモジュールは、主にプロトコルに基づいて関連コンテンツを解析し、関連機能モデルにマッチングさせる。加速データと制御管理モジュールは、主に制御フローおよびデータフローの管理を実行する。
【0056】
表1を参照すると、表1は、再構成可能なデータセンターのソフトウェア開発キットのインターフェース機能説明表であり、現在のSDKは、ユーザによるDDR(Double Data Rate)メモリの指定アドレスへのデータ移転、RDMA(Remote Direct Memory Access)を用いたデータ移転、PR(オペレーティングシステムコマンドの一種)ロードの実行、およびKernelパラメータの設定などをサポートする。
【0057】
【表1】
【0058】
図7を参照すると、図7は、本発明の実施形態によるFPGA加速スタック機能の構成図であり、図7において、Matchエンジンはマッチングエンジンを指し、データフロー割当を行うことに用いられ、Actionsは、FPGA加速スタックの制御動作を指し、RDMA(Remote Direct Memory Access)は、遠隔直接データアクセスを指し、プールKEYは、プールの鍵を指し、PRロードは、オペレーティングシステム命令のロードを指し、FLASH(登録商標)は、フラッシュメモリを指し、vFPGAは、ユーザ加速エンジンを指す。前記FPGA加速カードの加速スタックは、データ計算命令を実行し、ホスト側と情報をやりとりし、物理インターフェースを提供するための静的領域と、加速計算動作を実行するように、加速ユニットに前記計算されるデータを転送するためのFPGA加速エンジンと、を含む。前記FPGA加速エンジンは、PCIEインターフェースを介してローカルな加速計算操作のために前記計算されるデータを転送するように構成され、PCIEインターフェース及びMACインターフェースを介して計算されるデータを送信することにより、遠隔の加速計算動作を実行するようにさらに構成される。前記静的領域は、ターゲットのバスを介して前記FPGA加速エンジンとデータをやりとりする。そのうち、ターゲットのバスは、BUSA、BUSC、BUSD及びBUSEのうちのいずれか1つのバス又は複数のバスの組み合わせを含む。
【0059】
FPGA加速スタックは、静的領域及びユーザアプリケーション加速エンジンからなる。静的部分は、制御面とデータ面の2つの部分を含む。制御面は、主にホストと連携してルーティング、フロー制御、認証などの管理機能を実行し、ホストから発行された制御命令を実行し、FPGAのローカルな情報を報告し、ホストとのやりとり処理を実行する。データ面は、主に10/100G MACおよびPCIEパスなどを含む様々な種類の物理インターフェースである。
【0060】
具体的には、FPGA加速エンジンは、PCIEインターフェースを介して加速ユニットに送信することによりローカル加速をしてもよく、PCIE->MACインターフェースを介して他のカードに出力することにより遠隔加速してもよく、動的再構成可能加速ユニットは、PR技術を通じて遠隔動的再構成を実行することができ、ルーティング転送モジュールの転送経路表ソフトウェアは、設定可能であり、FPGA内部で経路転送表をルックアップすることにより、ルーティングを実施することができる。
【0061】
図8を参照すると、図8は本発明の実施形態によるFPGA加速スタックのフレームワーク図であり、表2はファイバーインターフェース機能表であり、表2に示される静的領域とユーザアプリケーションの加速エンジンはBUSA、BUSB、BUSC、BUSD、BUSEバスを介してやりとりをする。表2において、FIMはFPGA Interface Manager(FPGAインターフェース管理)を指す。
【0062】
【0063】
次に、上記実施形態で説明した流れを、実際的な適用例を用いて具体的に説明する。図9を参照すると、図9は、本発明の実施形態によるFPGAクラウドプラットフォームの計算原理の模式図である。
【0064】
この適用例では、ユーザによって使用されるHOST側を含み、ユーザに割り当てられたFPGAクラウドプラットフォームの4枚のカードは、それぞれFPGA加速カード1(以下、FPGA1と略称する)、FPGA加速カード2(以下、FPGA2と略称する)、FPGA加速カード3(以下、FPGA3と略称する)、及びFPGA加速カード4(以下、FPGA4と略称する)である。
【0065】
各FPGA加速カードにおけるKernelの主な機能:Kernel1は、HOST側から転送されたデータa、bをそれぞれ+1及び+2のように動作する;Kernel2は、a+1の結果を、HOST側からFPGA2に転送されたデータcと加算又は減算又は乗算又は除算する;Kernel3はb+2の結果を、HOSTからFPGA3に転送されたデータdと加算又は減算又は乗算又は除算する。Kernel4は、Kernel2とKernel3の出力を乗算し、その結果をHOST側に転送する。
【0066】
本実施形態の例示的な機能流れ:HOST側は標準ネットワークカードを介してFPGA1にデータa及びbを転送する。Kernel1はaを1加算し、bを2加算し、a+1の結果をFPGA2に転送し、b+1の結果をFPGA3に転送する。HOST側はFPGA2とFPGA3にそれぞれデータc、dを転送し、Kernel2は(a+1)とcとを計算し(+-*/選択可能)、Kernel3は(b+2)とdとを計算し(+-*/選択可能)、計算結果をFPGA4に転送する。Kernel4は、結果を乗算し、結果をHOST側の要求に応じてローカルに記憶し、HOSTは演算結果をHOST側に転送する。
【0067】
図9の対応する実施形態におけるFPGA加速カードの計算流れは、以下の通りである。
【0068】
ステップ1、HOSTは、Kernel1をFPGA1にストリーミング方法でロードする。
標準インターフェース:icfCreateProgramToFPGA( )。
ステップ2、HOSTは、Kernel2、Kernel3、Kernel4のaocxファイルをそれぞれFPGA2に移す。
標準インターフェース:icfTransterDataRDMA( )。
ステップ3、HOSTは、Kernelif2をFPGA2にロードするための命令をFPGA2に送信する。
標準インターフェース:icfLoadProgramToFPGA( )。
ステップ4、FPGA2は、Kernel1をストリーミング方法でFPGA3にロードする。
標準インターフェース:FPGA IP coreから提供されるインターフェース;
ステップ5、FPGA2は、Kernel4のaocxファイルをFPGA2に移す;
標準インターフェース:FPGA IP coreから提供されるインターフェース;
ステップ6、FPGA2は、FPGA4にKernel4をロードするための命令をFPGA4に送信する;
標準インターフェース:FPGA IP coreから提供されるインターフェース;
ここで、ステップ1からステップ6はFPGA Kernelのロード過程であり、HOST側からロードを行うこと(ステップ1~3はHOST側コードである)及びFPGA側とロードを行うこと(ステップ4~6はFPGA2エンジニアリングである)を含む。
ステップ7、HOSTは、RDMAの方法でデータAをFPGA1に移す;
標準インターフェース:icfTransterDataRDMA( );
ステップ8、HOSTは、直接転送の方法でデータBをFPGA1に移す;
標準インターフェース:icfTransterData ( );
ステップ9、HOSTは、AのFPGAにおけるアドレス及びデータ長さをFPGA1に設定する;
標準インターフェース:icfConfigKernelParam( );
ステップ10、HOSTは、BのFPGA1におけるアドレス及びデータ長さをFPGA1に設定する;
標準インターフェース:icfConfigKernelParam ( );
ステップ11、HOSTは、kernel1-1の計算結果A1格納アドレスをFPGA1に設定する;
標準インターフェース:icfConfigKernelReturn ( );
ステップ12、HOSTは、kernel1-2の計算結果A2格納アドレスをFPGA1に設定する;
標準インターフェース:icfConfigKernelReturn ( );
ステップ13、HOST側は、kernel1-1を起動する;
標準インターフェース:icfStartKernel ( );
ステップ14、HOST側は、kernel1-2を起動する;
標準インターフェース:icfStartKernel ( );
このうち、ステップ7からステップ14は、HOST側コードがソフトウェアアプリケーション層インターフェースを用いてFPGA1とのやりとりを実現するためのものであり、FPGA1を制御してkernelを起動する。
ステップ15、FPGA1は、A1をRDMAの方法でFPGA2に移す;
標準インターフェース:FPGA IP coreから提供される;
ステップ16、HOSTは、RDMAの方法でデータcをFPGA2に移す;
標準インターフェース:icfTransterDataRDMA ( );
ステップ17、FPGA1は、A1のFPGA2におけるアドレス及びデータ長さをFPGA2に設定する;
標準インターフェース:FPGA IP coreから提供される;
ステップ18、HOSTは、cのFPGA2におけるアドレス及びデータ長さをFPGA2に設定する;
標準インターフェース:icfConfigKernelParam ( );
ステップ19、FPGA1は、kernel2の計算結果A2格納アドレスをFPGA2に設定する;
標準インターフェース:FPGA IP coreから提供される;
ステップ20、FPGA1は、FPGA2のkernel2を起動してパラメータA1、cを転送する;
標準インターフェース:FPGA IP coreから提供される;
このうち、ステップ15からステップ20は、FPGA1及びHOSTがそれらの提供されるインターフェースを用いることによりFPGA2とのやりとりを行い、FPGA1によりFPGA2を制御してkernelを起動する。
ステップ21、FPGA1は、直接転送の方法でB1をFPGA3に移す;
ステップ22、HOSTは、直接転送の方法でデータdをFPGA3に移す;
ステップ23、FPGA1は、B1のFPGA3におけるアドレス及びデータ長さをFPGA3に設定する;
ステップ24、HOSTは、dのFPGA3におけるアドレス及びデータ長さをFPGA3に設定する;
ステップ25、FPGA1は、kernel3の計算結果B2格納アドレスをFPGA3に設定する;
ステップ26、FPGA1は、FPGA3のkernel3を起動してパラメータB1、dを転送する;
このうち、ステップ21からステップ26までは、FPGA1及びHOSTがそれらの提供されるインターフェースを用いることによりFPGA3とのやりとりを行い、FPGA1によりFPGA3を制御してkernelを起動する。
ステップ27、FPGA2は、RDMAの方法でA2をFPGA4に移す;
ステップ28、FPGA3は、直接転送の方法でB2をFPGA4に移す;
ステップ29、FPGA2は、A2のFPGA4におけるアドレス及びデータ長さをFPGA4に設定する;
ステップ30、FPGA3は、B2のFPGA4におけるアドレス及びデータ長さをFPGA4に設定する;
ステップ31、FPGA2は、kernel4の計算結果AB3格納アドレスをFPGA4に設定する;
ステップ32、FPGA2は、FPGA4のkernel4を起動してパラメータA2、B2を転送する;
このうち、ステップ27からステップ32までは、FPGA2及びFPGA3がそれらの提供されるインターフェースを用いることによりFPGA4とのインタラクションを行い、FPGA2によりFPGA4を制御してkernelを起動する。
ステップ33、FPGA4は、FPGA3のkernel3を起動してパラメータB1、dを転送する。
【0069】
本発明の実施形態では、データ処理装置がさらに提供され、複数のFPGA加速カードを有するFPGA加速カード側に接続され、前記FPGA加速カード間がネットワークを介して接続されたデータ処理装置であって、
データ処理タスクを複数のデータ処理サブタスクに分割し、前記FPGA加速側において、各前記データ処理サブタスクに対応するターゲットFPGA加速カードを決定するように構成されたタスク割当モジュールと、
計算されるデータを前記ターゲットFPGA加速カードに転送し、各前記ターゲットFPGA加速カードにより対応するデータ処理サブタスクを実行してデータ処理結果を取得し、ところで、前記データ処理結果には、中間計算データ又は前記データ処理タスクの最終処理結果が含まれ、各前記データ処理サブタスクのソースデータには、前記計算されるデータ及び/又は前記中間計算データが含まれ、前記中間計算データは、前記ターゲットFPGA加速カード間のネットワークを介して転送されるように構成されたタスク実行モジュールと、を備える。
【0070】
本実施形態は、まず、データ処理タスクを複数のデータ処理サブタスクに分割し、FPGA加速側において各データ処理サブタスクに対応するターゲットFPGA加速カードを決定し、ターゲットFPGA加速カードを用いて対応するデータ処理サブタスクを実行する。ターゲットFPGA加速カードがデータ処理サブタスクを処理する際には、他のターゲットFPGA加速カードのデータ処理結果を入力データとしてもよいし、自身が計算したデータ処理結果を他のターゲットFPGA加速カードに転送してもよい。データ処理結果は、一旦ホスト側に転送してからホスト側を介して転送するのではなく、FPGA加速カード同士の間でネットワークを介して転送する。このように、本実施形態は、FPGA加速側におけるFPGA加速カードの数がホストコンピュータインターフェースの物理的な制限を回避することができ、データ処理効率を向上させることができる。
【0071】
装置部分に係わる実施形態は、方法部分に係わる実施形態に対応するため、装置部分に係わる実施形態は、方法部分に係わる実施形態の説明を参照し、ここではその説明を省略する。
【0072】
本発明は、コンピュータプログラムが記憶されている記憶媒体をさらに提供し、このコンピュータプログラムの記憶媒体が実行されると、上述の実施形態の各ステップを実施することができる。この記憶媒体は、U-ディスク、ポータブルハードディスク、Read-Only Memory (ROM)、Random Access Memory(RAM)、磁気ディスク、光ディスクなど、種々のプログラムコードを記憶できる媒体を含んでもよい。
【0073】
本発明は、メモリとプロセッサとを含む電子装置をさらに提供し、そのメモリには、コンピュータプログラムが記憶されており、前記コンピュータプログラムが前記プロセッサによって実行されると、上述の実施形態の各ステップを実施することができる。もちろん、その電子装置は、各種のネットワークインターフェースや電源等を備えていてもよい。
【0074】
本明細書における様々な実施形態は、逐次的な方法で説明され、各実施形態は、他の実施形態との相違点を中心に説明され、様々な実施形態の同様の部分は、相互に参照され得る。実施形態に開示されたシステムは、実施形態に開示された方法に対応するので、説明が比較的単純であることに関しては、方法の部分の説明を参照すればよい。なお、本発明の原理から逸脱することなく、本発明の特許請求の範囲内に含まれるいくつかの修正および変更を本発明に加えることができることは、当業者には明らかである。
【0075】
また、本明細書において、第1、第2などの関係用語は、単に1つの実体または動作を他の実体または動作と区別するために使用されるものであり、必ずしもその実体または動作の間にそのような実際の関係または順序が存在することを必要とするものでも、あるいは暗示するものでもない。さらに、「備える」、「含む」、またはそれらの任意の他の変形例は、非排他的な包含をカバーするように意図され、したがって、要素のリストを含むプロセス、方法、品目、または装置は、それらの要素だけでなく、明示的に列挙されていない他の要素も含み、またはそのようなプロセス、方法、品目、または装置に固有の要素も含む。「……を含む」という表現によって定義される要素は、これ以上の限定はないが、その要素を含むプロセス、方法、物品、又は装置内に、同じ要素が追加で存在することを除外しない。
図1
図2
図3
図4
図5
図6
図7
図8
図9
【国際調査報告】