JP7400105B2 - データ処理方法、装置、分散型データフロープログラミングフレームワーク及び関連コンポーネント - Google Patents

データ処理方法、装置、分散型データフロープログラミングフレームワーク及び関連コンポーネント Download PDF

Info

Publication number
JP7400105B2
JP7400105B2 JP2022532624A JP2022532624A JP7400105B2 JP 7400105 B2 JP7400105 B2 JP 7400105B2 JP 2022532624 A JP2022532624 A JP 2022532624A JP 2022532624 A JP2022532624 A JP 2022532624A JP 7400105 B2 JP7400105 B2 JP 7400105B2
Authority
JP
Japan
Prior art keywords
data
data processing
fpga acceleration
acceleration
card
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
JP2022532624A
Other languages
English (en)
Other versions
JP2022549527A (ja
Inventor
宏偉 ▲かん▼
楠 呉
仁剛 李
彦偉 王
Original Assignee
▲蘇▼州浪潮智能科技有限公司
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 ▲蘇▼州浪潮智能科技有限公司 filed Critical ▲蘇▼州浪潮智能科技有限公司
Publication of JP2022549527A publication Critical patent/JP2022549527A/ja
Application granted granted Critical
Publication of JP7400105B2 publication Critical patent/JP7400105B2/ja
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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • G06F13/124Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
    • G06F13/128Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine for dedicated transfers to a network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7885Runtime interface, e.g. data exchange, runtime control
    • G06F15/7889Reconfigurable logic implemented as a co-processor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload
    • 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

Description

本出願は、2020年2月5日に出願された中国特許出願第202010080853.6号(発明の名称:データ処理方法、装置、分散型データフロープログラミングフレームワーク及び関連コンポーネント)に基づく優先権を主張し、引用によりその全ての記載内容が本明細書に組み込まれる。
本出願は、クラウド計算技術の分野に関し、特に、データ処理方法、装置、分散型データフロープログラミングフレームワーク、電子装置及び記憶媒体に関する。
人工知能及びビッグデータの急速な発展に伴い、データセンターにおけるデータが倍増するとともに、AI(Artificial Intelligence)の急速な発展は、データの高性能計算に対する要求をもたらす。これは、一方では、データの指数関数的な成長をもたらし、他方では、これらのデータ処理に必要な計算リソースも同様に成長する。従来の計算はCPUで処理されており、技術の進歩に伴ってCPUの性能を倍に向上させることができなくなっている。フィールドプログラマブルゲートアレイ(FPGA、Field Programmable Gate Array)のような再構成可能なチップは、多くの作業負荷を加速する潜在性を有し、復号化演算、画像処理、伸張演算及び人工知能関連演算を実行することができる。従来、通信集中や計算集中のタスクの処理は、FPGA加速側によって実現されていた。しかしながら、従来技術におけるFPGA加速側における2つのFPGA加速カードの間にデータのやり取りが必要である場合、FPGA加速カードがPCIEを介してホスト側にデータを転送し、ホスト側が更に他のカードにデータを転送する、ということが必要であり、データの計算の効率が低く、FPGAクラウドサーバにおけるマルチカード装置をサポートする数は、ホスト側でのサポート可能なPCIEカードの数に物理的制限される。
したがって、FPGA加速側におけるFPGA加速カードの数がホストインターフェースに物理的制限されることを回避し、データ処理効率を向上させることは、当業者が現在解決すべき技術的課題である。
本発明は、FPGA加速側におけるFPGA加速カードの数がホストインターフェースに物理的制限されることを回避し、データ処理効率を向上させることができるデータ処理方法、装置、分散型データフロープログラミングフレームワーク、電子装置及び記憶媒体を提供することを目的とする。
上記課題を解決するために、本発明は、ホスト側に適用され、前記ホスト側が複数のFPGA加速カードを有するFPGA加速側に接続され、前記FPGA加速カード間でネットワークを介して接続されたデータ処理方法であって、
データ処理タスクを複数のデータ処理サブタスクに分割し、前記FPGA加速側において各前記データ処理サブタスクに対応するターゲットFPGA加速カードを決定するステップと、
計算されるデータを前記ターゲットFPGA加速カードに転送し、各前記ターゲットFPGA加速カードにより対応するデータ処理サブタスクを実行してデータ処理結果を取得し、ところで、前記データ処理結果には、中間計算データ又は前記データ処理タスクの最終処理結果が含まれ、各前記データ処理サブタスクのソースデータには、前記計算されるデータ及び/又は前記中間計算データが含まれ、前記中間計算データは、前記ターゲットFPGA加速カード間のネットワークを介して転送されるステップと、を含むデータ処理方法を提供する。
任意選択で、計算されるデータを前記ターゲットFPGA加速カードに転送するステップの後、前記計算されるデータのデータアドレス及びデータ長さを、前記ターゲットFPGA加速カードが前記データアドレス及び前記データ長さに従って前記計算されるデータを格納するように、前記ターゲットFPGA加速カードに設定するステップ、をさらに含む。
任意選択で、前記ターゲットFPGA加速カードが中間計算データ及び/又は前記最終処理結果を計算結果格納アドレスに格納するように、前記計算結果格納アドレスを前記ターゲットFPGA加速カードに設定するステップ、をさらに含む。
任意選択で、全ての前記ターゲットFPGA加速カードから第1のターゲットFPGA加速カードを選択するステップと、
全ての前記データ処理サブタスク及びタスク割当情報を前記第1のターゲットFPGA加速カードに転送し、ところで、前記タスク割当情報には、前記データ処理サブタスクと前記ターゲットFPGA加速カードとの対応関係が含まれるステップと、
前記第1のターゲットFPGA加速カードを用いて、前記タスク割当情報により前記データ処理サブタスクを対応するターゲットFPGA加速カードに転送するステップと、をさらに含む。
任意選択で、計算されるデータを前記ターゲットFPGA加速カードに転送するステップは、
全ての前記ターゲットFPGA加速カードから第2のターゲットFPGA加速カードを選択するステップと、
全ての前記計算されるデータ及びデータ割当情報を前記第2のターゲットFPGA加速カードに転送し、ところで、前記データ割当情報には、前記計算されるデータと前記ターゲットFPGA加速カードとの対応関係が含まれるステップと、
前記第2のターゲットFPGA加速カードを用いて、前記データ割当情報により前記計算されるデータを対応するFPGA加速カードに転送するステップと、を含む。
任意選択で、計算されるデータを前記ターゲットFPGA加速カードに転送するステップは、
計算されるデータをカスタムRDMA転送方法で前記ターゲットFPGA加速カードに転送することを含み、
対応的には、対応するデータ処理サブタスクを所定転送方法で前記ターゲットFPGA加速カードに転送し、ところで、前記所定転送方法には、ストリーミング転送又は一括パケット転送が含まれること、をさらに含む。
任意選択で、前記ターゲットFPGA加速カードがネットワークを介して前記中間計算データを他のターゲットFPGA加速カードに転送する場合、前記中間計算データのデータアドレス及びデータ長さを、前記他のターゲットFPGA加速カードが前記中間計算データのデータアドレス及びデータ長さに従って前記中間計算データを格納するように、前記他のターゲットFPGA加速カードに転送すること、をさらに含む。
任意選択で、前記ターゲットFPGA加速カードの間では、MACインターフェースを介してデータを転送し、前記ホスト側と前記ターゲットFPGA加速カードとの間では、PCIEインターフェースを介してデータを転送し、遠端装置と前記ターゲットFPGA加速カードとの間では、MACインターフェースを介してデータを転送する。
任意選択で、前記ホスト側及び前記ターゲットFPGA加速カードがローカルエリアネットワーク内の装置である場合、前記ホスト側と前記ターゲットFPGA加速カードとの間の通信データは、MAC層においてパケット化され、
前記ホスト側及び前記ターゲットFPGA加速カードがパブリックネットワーク内の装置である場合、前記ホスト側と前記ターゲットFPGA加速カードとの間の通信データは、UDPのpayload層においてパケット化され、前記ターゲットFPGA加速カード間の通信データは、UDPのpayload層においてパケット化される。
本発明は、複数のFPGA加速カードを有するFPGA加速カード側に接続され、前記FPGA加速カード間がネットワークを介して接続されたデータ処理装置であって、
データ処理タスクを複数のデータ処理サブタスクに分割し、前記FPGA加速側において、各前記データ処理サブタスクに対応するターゲットFPGA加速カードを決定するように構成されたタスク割当モジュールと、
計算されるデータを前記ターゲットFPGA加速カードに転送し、各前記ターゲットFPGA加速カードにより対応するデータ処理サブタスクを実行してデータ処理結果を取得し、ところで、前記データ処理結果には、中間計算データ又は前記データ処理タスクの最終処理結果が含まれ、各前記データ処理サブタスクのソースデータには、前記計算されるデータ及び/又は前記中間計算データが含まれ、前記中間計算データは、前記ターゲットFPGA加速カード間のネットワークを介して転送されるように構成されたタスク実行モジュールと、を備えるデータ処理装置をさらに提供する。
本発明は、CPU加速スタック及びFPGA加速スタックを含む分散型データフロープログラミングフレームワークであって、
前記CPU加速スタックは、データ処理タスクの分割のための基礎となるサポートを提供し、さらに、データ処理サブタスクのスケジューリングのためのホスト側プログラミングインターフェースを提供するように構成され、
前記FPGA加速スタックは、ホスト側プログラミングインターフェースに対応する加速インターフェースを提供し、さらに、前記データ処理サブタスクを実行する際に加速データ制御プログラム及びkernel制御プログラムを提供するように構成され、
ここで、前記分散型データフロープログラミングフレームワークが機能する場合、前記CPU加速スタックは、データ処理タスクを複数のデータ処理サブタスクに分割し、前記FPGA加速側において、各前記データ処理サブタスクに対応するターゲットFPGA加速カードを決定し、計算されるデータを前記ターゲットFPGA加速カードに転送し、各前記ターゲットFPGA加速カードにより対応するデータ処理サブタスクを実行してデータ処理結果を取得し、ところで、前記データ処理結果には、中間計算データ又は前記データ処理タスクの最終処理結果が含まれ、各前記データ処理サブタスクのソースデータには、前記計算されるデータ及び/又は前記中間計算データが含まれ、前記中間計算データは、前記ターゲットFPGA加速カード間のネットワークを介して転送される、分散型データフロープログラミングフレームワークをさらに提供する。
任意選択で、前記FPGA加速スタックは、
前記CPU加速スタックから配信されたデータ処理サブタスクを実行し、さらに、データ処理結果を前記CPU加速スタック又は他のターゲットFPGA加速カードに転送するように構成された静的領域と、
前記データ処理サブタスクをローカル加速ユニット又は他のターゲットFPGA加速カードの加速ユニットに転送し、加速計算動作を行うように構成されたFPGA加速エンジンと、を備える。
本発明は、コンピュータプログラムが記憶されている記憶媒体をさらに提供する。前記コンピュータプログラムが実行されると、上記のデータ処理方法のステップを実施する。
本発明は、メモリ及びプロセッサを含む電子装置をさらに提供する。前記メモリには、コンピュータプログラムが記憶されており、前記コンピュータプログラムが前記プロセッサによって実行されると、上記のデータ処理方法のステップを実施する。
本発明は、ホスト側に適用され、前記ホスト側が複数のFPGA加速カードを有するFPGA加速側に接続され、前記FPGA加速カード間でネットワークを介して接続されたデータ処理方法であって、
データ処理タスクを複数のデータ処理サブタスクに分割し、前記FPGA加速側において各前記データ処理サブタスクに対応するターゲットFPGA加速カードを決定するステップと、
計算されるデータを前記ターゲットFPGA加速カードに転送し、各前記ターゲットFPGA加速カードにより対応するデータ処理サブタスクを実行してデータ処理結果を取得し、ところで、前記データ処理結果には、中間計算データ又は前記データ処理タスクの最終処理結果が含まれ、各前記データ処理サブタスクのソースデータには、前記計算されるデータ及び/又は前記中間計算データが含まれ、前記中間計算データは、前記ターゲットFPGA加速カード間のネットワークを介して転送されるステップと、を含むデータ処理方法を提供する。
本発明では、まず、データ処理タスクを複数のデータ処理サブタスクに分割し、FPGA加速側において各データ処理サブタスクに対応するターゲットFPGA加速カードを決定し、ターゲットFPGA加速カードを用いて対応するデータ処理サブタスクを実行する。ターゲットFPGA加速カードがデータ処理サブタスクを処理する際には、他のターゲットFPGA加速カードのデータ処理結果を入力データとしてもよいし、自身が計算したデータ処理結果を他のターゲットFPGA加速カードに転送してもよい。データ処理結果は、一旦ホスト側に転送してからホスト側を介して転送するのではなく、FPGA加速カード同士の間でネットワークを介して転送する。このように、本発明は、FPGA加速側におけるFPGA加速カードの数がホストコンピュータインターフェースの物理的な制限を回避することができ、データ処理効率を向上させることができる。本発明は、データ処理装置、分散型データフロープログラミングフレームワーク、電子装置および記憶媒体も同時に提供し、上述の利点を有するので、ここではその説明を省略する。
本発明の実施形態又は従来技術における技術案をより明確に説明するために、実施形態又は従来技術の説明に必要な図面を簡単に説明するが、以下の説明における図面は本発明の実施形態の一部に過ぎず、当業者にとっては、創造的な労力を払わない限り、これらの図面に基づいて他の図面を獲得することができることは明らかである。
本発明の実施形態によるデータ処理方法のフローチャートである。 本発明の実施形態によるデータ処理サブタスクの割当方法のフローチャートである。 本発明の実施形態による計算されるデータの転送方法のフローチャートである。 本発明の実施形態による再構成可能なデータセンターの構成図である。 本発明の実施形態による再構成可能なデータセンターの加速フレームワーク図である。 本発明の実施形態によるCPU加速スタックの構成の模式図である。 本発明の実施形態によるFPGA加速スタックの機能の構成図である。 本発明の実施形態によるFPGA加速スタックのフレームワーク図である。 本発明の実施形態によるFPGAクラウドプラットフォームの計算原理の模式図である。
以下、本発明の実施形態における技術的解決策を、本発明の実施形態における図面を参照して明確かつ完全に説明するが、明らかに、説明された実施形態は本発明の一部の実施例に過ぎず、全ての実施例にすぎない。本出願における実施形態に基づいて、当業者が創造的な労働をすることなく得た他の全ての実施形態は、本出願の保護範囲に属する。
図1を参照すると、図1は、本発明の実施形態によるデータ処理方法のフローチャートである。
具体的には、下記のステップを含み、
ステップS101:データ処理タスクを複数のデータ処理サブタスクに分割する。
ここで、本実施形態は、複数のFPGA加速カードを有し、前記FPGA加速カード間がネットワークを介して接続されたFPGA加速側に接続されたホスト側に適用することができ、ホスト側におけるCPU(Central Processing Unit)は、データ処理サブタスクに対する割当を実現するために用いられることができる。
具体的には、本実施形態では、データ処理タスクに応じて、計算されるデータ及びその計算されるデータに対する全ての計算動作を決定し、その計算動作の数や種類に応じて、データ処理タスクを複数のデータ処理サブタスクに分割することができる。例えば、一つのデータ処理タスクを9段階の計算動作に分け、第1~3項の計算動作を第1のデータ処理サブタスクとし、第4~6項の計算動作を第2のデータ処理サブタスクとし、第7~9項の計算動作を第3のデータ処理サブタスクとしてもよい。さらに例えば、1つのデータ処理タスクには形態素解析、意味解析、ハッシュマッピングの3種類の計算動作が含まれ、形態素解析の全てを第4のデータ処理サブタスクとし、構文解析の全てを第5のデータ処理サブタスクとし、ハッシュマッピングの全てを第6のデータ処理サブタスクとしてもよい。
複数のデータ処理サブタスクを得た後、各データ処理サブタスクの対応するファームウェアを生成して、対応するFPGA加速カードにバースト記録することができ、FPGA加速カードは、ファームウェアを実行することにより対応するデータ処理動作を実行する。
ステップS102:前記FPGA加速側において各前記データ処理サブタスクに対応するターゲットFPGA加速カードを決定する。
ここで、FPGA加速側には複数のFPGA加速カードが含まれてもよく、本実施形態では、データ処理サブタスクのサブタスク数に基づいてFPGA加速側から同じ数のFPGA加速カードを選択することができる。ターゲットFPGA加速カードを決定した後、各ターゲットFPGA加速カードとデータ処理サブタスクとの間の対応関係も決定し、当該対応関係に基づいてデータ処理サブタスクを対応するターゲットFPGA加速カードに転送してもよく、すなわち、データ処理サブタスクに対応するファームウェアを、対応するターゲットFPGA加速カードにバースト記録してもよい。
ステップS103:計算されるデータを前記ターゲットFPGA加速カードに転送し、各前記ターゲットFPGA加速カードにより対応するデータ処理サブタスクを実行してデータ処理結果を取得する。
ここで、本実施形態では、データ処理タスクに基づいて対応する計算されるデータを決定し、計算されるデータをターゲットFPGA加速カードに転送することができる。ターゲットFPGA加速カードがデータ処理サブタスクを実行する際のソースデータは、計算されるデータであってもよいし、他のFPGA加速カードの中間計算結果であってもよいし、計算されるデータと中間計算結果であってもよい。各ターゲット加速カードが対応するデータ処理サブタスクを実行することで得られるデータ処理結果には中間計算データ、又は前記データ処理タスクの最終処理結果が含まれてもよく、各前記データ処理サブタスクのソースデータには前記計算されるデータ及び/又は前記中間計算データが含まれ、前記中間計算データは前記ターゲットFPGA加速カード間のネットワークを介して転送される。
実行可能な実施形態として、計算されるデータをターゲットFPGA加速カードに転送した後、計算されるデータのデータアドレス及びデータ長さを、前記ターゲットFPGA加速カードが前記データアドレス及び前記データ長さに従って前記計算されるデータを格納するように、ターゲットFPGA加速カードに設定してもよい。上述の実施形態において、ホスト側が計算されるデータのデータアドレスとデータ長さをターゲットターゲットFPGA加速カードに転送することで、ターゲットFPGA加速カードにデータアドレスとデータ長さに従って計算されるデータを格納させることができる。
別の実行可能な実施形態として、ホスト側は計算結果格納アドレスをターゲットFPGA加速カードに設定することもでき、これにより、ターゲットFPGA加速カードは中間計算データ及び/又は前記最終処理結果を計算結果格納アドレスに格納する。上述の実施形態において、ホスト側がターゲットFPGA加速カードに計算結果格納アドレスを転送することにより、ターゲットFPGA加速カードは当該計算結果格納アドレスに基づいて中間計算データ及び/又は最終処理結果を格納し、他のターゲットFPGA加速カードは計算結果格納アドレスに基づいて中間計算データを読み取ることができ、ホスト側は計算結果格納アドレスに基づいて最終処理結果を読み取ることができる。
ターゲットFPGA加速カードがネットワークを介して他のターゲットFPGA加速カードに中間計算データを転送する場合に、前記他のターゲットFPGA加速カードに前記中間計算データのデータアドレスとデータ長さとを転送することにより、前記他のターゲットFPGA加速カードが前記中間計算データのデータアドレスとデータ長さとに従って前記中間計算データを格納してもよい。具体的には、ターゲットFPGA加速カード同士の間ではMACインターフェースを介して中間計算データを転送することができ、ホスト側と前記ターゲットFPGA加速カードとの間ではPCIEインターフェースを介して最終処理結果及び/又は計算されるデータを転送し、遠端装置とターゲットFPGA加速カードとの間ではMACインターフェースを介してデータを転送する。
本実施形態では、まず、データ処理タスクを複数のデータ処理サブタスクに分割し、FPGA加速側において各データ処理サブタスクに対応するターゲットFPGA加速カードを決定し、ターゲットFPGA加速カードを用いて対応するデータ処理サブタスクを実行する。ターゲットFPGA加速カードがデータ処理サブタスクを処理する際には、他のターゲットFPGA加速カードのデータ処理結果を入力データとしてもよいし、自身が計算したデータ処理結果を他のターゲットFPGA加速カードに転送してもよい。データ処理結果は、一旦ホスト側に転送してからホスト側を介して転送するのではなく、FPGA加速カード間でネットワークを介して転送する。このように、本実施形態は、FPGA加速側におけるFPGA加速カードの数がホストコンピュータインターフェースの物理的な制限を回避することができ、データ処理効率を向上させることができる。
図2を参照すると、図2は本発明の実施形態によるデータ処理サブタスクの割当方法のフローチャートであり、本実施形態では、図1の対応する実施形態におけるデータ処理サブタスクを決定した後のさらなる説明であり、本実施形態を図1の対応する実施形態と組み合わせることでさらなる実施形態を得てもよく、本実施形態は以下のステップを含んでもよい。
ステップS201:全ての前記ターゲットFPGA加速カードから第1のターゲットFPGA加速カードを選択する。
ステップS202:全ての前記データ処理サブタスク及びタスク割当情報を前記第1のターゲットFPGA加速カードに転送する。
ステップS203:前記第1のターゲットFPGA加速カードを用いて、前記タスク割当情報により前記データ処理サブタスクを対応するターゲットFPGA加速カードに転送する。
ここで、本実施形態の実行主体は、FPGA加速側に接続されたホスト側であってもよく、全ての選択されたターゲットFPGA加速カードから第1のターゲットFPGA加速カードを決定し、第1のターゲットFPGA加速カードに全てのデータ処理サブタスクを転送するようにしてもよい。ホスト側は、データ処理サブタスクの全てを第1のターゲットFPGA加速カードに転送すると同時に、タスク割当情報も第1のターゲットFPGA加速カードに転送する。タスク割当情報にはデータ処理サブタスクとターゲットFPGA加速カードとの対応関係が記憶されており、第1のターゲットFPGA加速カードは、この対応関係を用いて、対応するターゲットFPGA加速カードに前記データ処理サブタスクを転送することができる。
もちろん、図2の実施形態において説明した一つのターゲットFPGA加速カードを用いてデータ処理サブタスクの全てを割り当てることに加え、ホスト側は、各ターゲットFPGA加速カードにそれぞれの対応するデータ処理サブタスクを転送することもできる。一実行可能な実施形態として、ホスト側は、ストリーミング又は一括パケットの転送方法を用いて対応するデータ処理サブタスクをFPGA加速カードに転送し得る。
図3を参照すると、図3は、本発明の実施形態による計算されるデータの転送方法のフローチャートであり、本実施形態は、図1の対応する実施形態のステップS103に対するさらなる説明であり、本実施形態と図1の対応する実施形態を組み合わせることでさらなる実施形態を得てもよく、本実施例は以下のステップを含んでもよい。
ステップS301:全ての前記ターゲットFPGA加速カードから第2のターゲットFPGA加速カードを選択する。
ステップS302:全ての前記計算されるデータ及びデータ割当情報を前記第2のターゲットFPGA加速カードに転送し、
ところで、前記データ割当情報には前記計算されるデータと前記ターゲットFPGA加速カードとの対応関係が含まれる。
ステップS303:前記第2のターゲットFPGA加速カードを用いて、前記データ割当情報により前記計算されるデータを対応するFPGA加速カードに転送する。
ここで、本実施形態の実行主体は、FPGA加速側に接続されたホスト側であってもよく、全ての選択されたターゲットFPGA加速カードから第2のターゲットFPGA加速カードを決定し、第2のターゲットFPGA加速カードに全ての計算されるデータを転送するようにしてもよい。ホスト側は、データ処理サブタスクの全てを第2のターゲットFPGA加速カードに転送すると同時に、データ割当情報も第1のターゲットFPGA加速カードに転送する。データ割当情報には、各計算されるデータとターゲットFPGA加速カードとの対応関係が記憶されており、第2のターゲットFPGA加速カードは、この対応関係を用いて、対応するターゲットFPGA加速カードに計算されるデータを転送することができる。一実行可能な実施形態として、ホスト側は、カスタムRDMA(Remote Direct Memory Access )である転送方法で対応する計算されるデータを前記ターゲット加速カードに転送することができる。
さらに、前記ホスト側及び前記ターゲットFPGA加速カードがローカルエリアネットワーク内の装置である場合、前記ホスト側と前記ターゲットFPGA加速カードとの間の計算されるデータ及び/又は最終処理結果などの通信データは、MAC層においてパケット化を完了する。前記ホスト側及び前記ターゲットFPGA加速カードがパブリックネットワーク内の装置である場合、前記ホスト側と前記ターゲットFPGA加速カードとの間の計算されるデータ及び/又は最終処理結果などの通信データは、UDP(User Datagram Protocol)のpayload層においてパケット化を完了し、前記ターゲットFPGA加速カードの間の計算されるデータ及び/又は最終処理結果などの通信データは、DPのpayload層においてパケット化を完了する。ここで、payload層とはユーザデータグラムプロトコルのペイロード層を指し、ペイロードとはデータ転送において転送が必要な情報を指す。
図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の光モジュールは、光ファイバインタフェースモジュールである。
図4に示す再構成可能なデータセンターは、下記の特徴がある。ホスト側のCPU、ホスト側におけるFPGA加速カード、及びFPGAキャビネットにおけるFPGA加速カードが協働する。ホスト側のCPUは論理処理を担当し、FPGAキャビネットのFPGA加速カードは通信集約及び計算集約型タスクを担当する。再構成可能なデータセンターでは、ネットワークを介して記憶リソースを共有し、ノード間で分散トポロジを採用する。再構成可能な装置に関連する論理機能は、分散的にロードされ、標準的なイーサネットインターフェース及びプロトコルをサポートする。
従来のCPU分散型プラットフォームでのタスク分割とスケジューリング、ソフトウェアパイプライン構成及びデータ通信などの処理方法は、再構成可能なデータセンターに直接適用することができず、再構成可能なデータセンターにおける異種計算リソースの並列構成及び再構成可能な特性に対し、データフローのプログラミングを基礎として、本発明が提供する再構成可能なデータセンター向けの分散型データフロープログラミングフレームワークは、分散型並列プログラミングインターフェースを提供し、再構成可能な装置への計算タスクのマッピングを完成する。分散型データフロープログラミングフレームワークは、CPU加速スタック、FPGA加速スタックおよびマッピングモデルからなる。
CPU加速スタックは、並列タスクモデルの分割、スケジューリングのためのHOST側プログラミングインターフェース(API)を提供し、軽量で高信頼性のプロトコルモジュール、再分割可能なデータセンターのメモリ管理モジュール、FPGA加速器の駆動ジュールを含む基礎的なサポートを提供する。
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加速エンジンと、を備える。
図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はコンバータである。
図6は、本発明の実施形態によるCPU加速スタックの構成の模式図である。CPU加速スタックは、基盤FPGA加速器駆動モジュール、RDC SDK (Reconfigurable Data Center Software Development Kit、すなわち、再構成可能なデータセンターのソフトウェア開発キット)、認証管理モジュール、メモリ管理層、ストリームテーブルマッチング層、加速データ管理モジュール、加速制御管理モジュール、RLTL(Relay Layer-Transfer Layer、すなわち、中継層と転送層)プロトコルサポート層に分けられる。ユーザは、RDC SDK(再構成可能なデータセンターのソフトウェア開発キット)を通じて、アプリケーションデータの移転、Kernelの更新、および動作監視などのタスクを完了することができる。認証管理モジュールは、主にユーザの要求に応じてFPGAベースのワークグループ管理および権限付与機構を実行し、チップIDベースのセキュリティチェック機構を実行し、ユーザネットリスト/BIT文書の安全性を高める。ストリームテーブルマッチングモジュールは、主にプロトコルに基づいて関連コンテンツを解析し、関連機能モデルにマッチングさせる。加速データと制御管理モジュールは、主に制御フローおよびデータフローの管理を実行する。
表1を参照すると、表1は、再構成可能なデータセンターのソフトウェア開発キットのインターフェース機能説明表であり、現在のSDKは、ユーザによるDDR(Double Data Rate)メモリの指定アドレスへのデータ移転、RDMA(Remote Direct Memory Access)を用いたデータ移転、PR(オペレーティングシステムコマンドの一種)ロードの実行、およびKernelパラメータの設定などをサポートする。
図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つのバス又は複数のバスの組み合わせを含む。
FPGA加速スタックは、静的領域及びユーザアプリケーション加速エンジンからなる。静的部分は、制御面とデータ面の2つの部分を含む。制御面は、主にホストと連携してルーティング、フロー制御、認証などの管理機能を実行し、ホストから発行された制御命令を実行し、FPGAのローカルな情報を報告し、ホストとのやりとり処理を実行する。データ面は、主に10/100G MACおよびPCIEパスなどを含む様々な種類の物理インターフェースである。
具体的には、FPGA加速エンジンは、PCIEインターフェースを介して加速ユニットに送信することによりローカル加速をしてもよく、PCIE->MACインターフェースを介して他のカードに出力することにより遠隔加速してもよく、動的再構成可能加速ユニットは、PR技術を通じて遠隔動的再構成を実行することができ、ルーティング転送モジュールの転送経路表ソフトウェアは、設定可能であり、FPGA内部で経路転送表をルックアップすることにより、ルーティングを実施することができる。
図8を参照すると、図8は本発明の実施形態によるFPGA加速スタックのフレームワーク図であり、表2はファイバーインターフェース機能表であり、表2に示される静的領域とユーザアプリケーションの加速エンジンはBUSA、BUSB、BUSC、BUSD、BUSEバスを介してやりとりをする。表2において、FIMはFPGA Interface Manager(FPGAインターフェース管理)を指す。
次に、上記実施形態で説明した流れを、実際的な適用例を用いて具体的に説明する。図9を参照すると、図9は、本発明の実施形態によるFPGAクラウドプラットフォームの計算原理の模式図である。
この適用例では、ユーザによって使用されるHOST側を含み、ユーザに割り当てられたFPGAクラウドプラットフォームの4枚のカードは、それぞれFPGA加速カード1(以下、FPGA1と略称する)、FPGA加速カード2(以下、FPGA2と略称する)、FPGA加速カード3(以下、FPGA3と略称する)、及びFPGA加速カード4(以下、FPGA4と略称する)である。
各FPGA加速カードにおけるKernelの主な機能:Kernel1は、HOST側から転送されたデータa、bをそれぞれ+1及び+2のように動作する;Kernel2は、a+1の結果を、HOST側からFPGA2に転送されたデータcと加算又は減算又は乗算又は除算する;Kernel3はb+2の結果を、HOSTからFPGA3に転送されたデータdと加算又は減算又は乗算又は除算する。Kernel4は、Kernel2とKernel3の出力を乗算し、その結果をHOST側に転送する。
本実施形態の例示的な機能流れ: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側に転送する。
図9の対応する実施形態におけるFPGA加速カードの計算流れは、以下の通りである。
ステップ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を転送する。
本発明の実施形態では、データ処理装置がさらに提供され、複数のFPGA加速カードを有するFPGA加速カード側に接続され、前記FPGA加速カード間がネットワークを介して接続されたデータ処理装置であって、
データ処理タスクを複数のデータ処理サブタスクに分割し、前記FPGA加速側において、各前記データ処理サブタスクに対応するターゲットFPGA加速カードを決定するように構成されたタスク割当モジュールと、
計算されるデータを前記ターゲットFPGA加速カードに転送し、各前記ターゲットFPGA加速カードにより対応するデータ処理サブタスクを実行してデータ処理結果を取得し、ところで、前記データ処理結果には、中間計算データ又は前記データ処理タスクの最終処理結果が含まれ、各前記データ処理サブタスクのソースデータには、前記計算されるデータ及び/又は前記中間計算データが含まれ、前記中間計算データは、前記ターゲットFPGA加速カード間のネットワークを介して転送されるように構成されたタスク実行モジュールと、を備える。
本実施形態は、まず、データ処理タスクを複数のデータ処理サブタスクに分割し、FPGA加速側において各データ処理サブタスクに対応するターゲットFPGA加速カードを決定し、ターゲットFPGA加速カードを用いて対応するデータ処理サブタスクを実行する。ターゲットFPGA加速カードがデータ処理サブタスクを処理する際には、他のターゲットFPGA加速カードのデータ処理結果を入力データとしてもよいし、自身が計算したデータ処理結果を他のターゲットFPGA加速カードに転送してもよい。データ処理結果は、一旦ホスト側に転送してからホスト側を介して転送するのではなく、FPGA加速カード同士の間でネットワークを介して転送する。このように、本実施形態は、FPGA加速側におけるFPGA加速カードの数がホストコンピュータインターフェースの物理的な制限を回避することができ、データ処理効率を向上させることができる。
装置部分に係わる実施形態は、方法部分に係わる実施形態に対応するため、装置部分に係わる実施形態は、方法部分に係わる実施形態の説明を参照し、ここではその説明を省略する。
本発明は、コンピュータプログラムが記憶されている記憶媒体をさらに提供し、このコンピュータプログラムの記憶媒体が実行されると、上述の実施形態の各ステップを実施することができる。この記憶媒体は、U-ディスク、ポータブルハードディスク、Read-Only Memory (ROM)、Random Access Memory(RAM)、磁気ディスク、光ディスクなど、種々のプログラムコードを記憶できる媒体を含んでもよい。
本発明は、メモリとプロセッサとを含む電子装置をさらに提供し、そのメモリには、コンピュータプログラムが記憶されており、前記コンピュータプログラムが前記プロセッサによって実行されると、上述の実施形態の各ステップを実施することができる。もちろん、その電子装置は、各種のネットワークインターフェースや電源等を備えていてもよい。
本明細書における様々な実施形態は、逐次的な方法で説明され、各実施形態は、他の実施形態との相違点を中心に説明され、様々な実施形態の同様の部分は、相互に参照され得る。実施形態に開示されたシステムは、実施形態に開示された方法に対応するので、説明が比較的単純であることに関しては、方法の部分の説明を参照すればよい。なお、本発明の原理から逸脱することなく、本発明の特許請求の範囲内に含まれるいくつかの修正および変更を本発明に加えることができることは、当業者には明らかである。
また、本明細書において、第1、第2などの関係用語は、単に1つの実体または動作を他の実体または動作と区別するために使用されるものであり、必ずしもその実体または動作の間にそのような実際の関係または順序が存在することを必要とするものでも、あるいは暗示するものでもない。さらに、「備える」、「含む」、またはそれらの任意の他の変形例は、非排他的な包含をカバーするように意図され、したがって、要素のリストを含むプロセス、方法、品目、または装置は、それらの要素だけでなく、明示的に列挙されていない他の要素も含み、またはそのようなプロセス、方法、品目、または装置に固有の要素も含む。「……を含む」という表現によって定義される要素は、これ以上の限定はないが、その要素を含むプロセス、方法、物品、又は装置内に、同じ要素が追加で存在することを除外しない。

Claims (14)

  1. ホスト側に適用され、前記ホスト側が複数のFPGA加速カードを有するFPGA加速側に接続され、前記FPGA加速カード間がネットワークを介して接続されたデータ処理方法であって、
    データ処理タスクを複数のデータ処理サブタスクに分割し、前記FPGA加速側において各前記データ処理サブタスクに対応するターゲットFPGA加速カードを決定するステップと、
    計算されるデータを前記ターゲットFPGA加速カードに転送し、各前記ターゲットFPGA加速カードにより対応するデータ処理サブタスクを実行してデータ処理結果を取得し、ところで、前記データ処理結果には、各前記ターゲットFPGA加速カード自身が計算した中間結果データとなる中間計算データ又は前記データ処理タスクの最終処理結果が含まれ、各前記データ処理サブタスクのソースデータには前記計算されるデータ及び/又は前記中間計算データが含まれ、前記中間計算データは前記ターゲットFPGA加速カード間のネットワークを介して転送されるステップと、
    を含み、
    前記ホスト側及び前記FPGA加速側は、再構成可能なデータセンターの構成部分であり、前記再構成可能なデータセンターの分散型データフロープログラミングフレームワークは、CPU加速スタック及びFPGA加速スタックを含み、
    前記CPU加速スタックは、データ処理タスクの分割のための基礎となるサポートを提供し、さらに、データ処理サブタスクのスケジューリングのためのホスト側プログラミングインターフェースを提供するように構成され、ところで、前記CPU加速スタックは、再構成可能なデータセンターのソフトウェア開発キットを含み、前記ソフトウェア開発キットは、ユーザによるカードDDRアドレスの指定のインターフェース、RDMAの転移のためのインターフェース、PRをストリーミングの方法でFPGAへのロードのためのインターフェース、PRをFPGAへのロードのための指令インターフェース、Flashへのロードのための指令インターフェース、kernelパラメータの設定のためのインターフェース、kernelリターン値の設定のためのインターフェース、Kernelの起動のためのインターフェース及びKernelの強制終了のためのインターフェースを含み、
    前記FPGA加速スタックは、ホスト側プログラミングインターフェースに対応する加速インターフェースを提供し、さらに、前記データ処理サブタスクを実行する際に加速データ制御プログラム及びkernel制御プログラムを提供するように構成されることを特徴とする、データ処理方法。
  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加速カード自身が計算した中間結果データとなる中間計算データ又は前記データ処理タスクの最終処理結果が含まれ、各前記データ処理サブタスクのソースデータには、前記計算されるデータ及び/又は前記中間計算データが含まれ、前記中間計算データは、前記ターゲットFPGA加速カード間のネットワークを介して転送されるように構成されたタスク実行モジュールと、
    を備え、
    前記データ処理装置は、ホスト側に適用され、前記ホスト側及び前記FPGA加速側は、再構成可能なデータセンターの構成部分であり、前記再構成可能なデータセンターの分散型データフロープログラミングフレームワークは、CPU加速スタック及びFPGA加速スタックを含み、
    前記CPU加速スタックは、データ処理タスクの分割のための基礎となるサポートを提供し、さらに、データ処理サブタスクのスケジューリングのためのホスト側プログラミングインターフェースを提供するように構成され、ところで、前記CPU加速スタックは、再構成可能なデータセンターのソフトウェア開発キットを含み、前記ソフトウェア開発キットは、ユーザによるカードDDRアドレスの指定のインターフェース、RDMAの転移のためのインターフェース、PRをストリーミングの方法でFPGAへのロードのためのインターフェース、PRをFPGAへのロードのための指令インターフェース、Flashへのロードのための指令インターフェース、kernelパラメータの設定のためのインターフェース、kernelリターン値の設定のためのインターフェース、Kernelの起動のためのインターフェース、及びKernelの強制終了のためのインターフェースを含み、
    前記FPGA加速スタックは、ホスト側プログラミングインターフェースに対応する加速インターフェースを提供し、さらに、前記データ処理サブタスクを実行する際に加速データ制御プログラム及びkernel制御プログラムを提供するように構成されることを特徴とする、データ処理装置。
  11. CPU加速スタック及びFPGA加速スタックを含む分散型データフロープログラミングフレームワークであって、
    前記CPU加速スタックは、データ処理タスクの分割のための基礎となるサポートを提供し、さらに、データ処理サブタスクのスケジューリングのためのホスト側プログラミングインターフェースを提供するように構成され、ところで、前記CPU加速スタックは、再構成可能なデータセンターのソフトウェア開発キットを含み、前記ソフトウェア開発キットは、ユーザによるカードDDRアドレスの指定のインターフェース、RDMAの転移のためのインターフェース、PRをストリーミングの方法でFPGAへのロードのためのインターフェース、PRをFPGAへのロードのための指令インターフェース、Flashへのロードのための指令インターフェース、kernelパラメータの設定のためのインターフェース、kernelリターン値の設定のためのインターフェース、Kernelの起動のためのインターフェース、及びKernelの強制終了のためのインターフェースを含み、
    前記FPGA加速スタックは、ホスト側プログラミングインターフェースに対応する加速インターフェースを提供し、さらに、前記データ処理サブタスクを実行する際に加速データ制御プログラム及びkernel制御プログラムを提供するように構成され、
    ここで、前記分散型データフロープログラミングフレームワークが機能する場合、前記CPU加速スタックは、データ処理タスクを複数のデータ処理サブタスクに分割し、複数のFPGA加速カードを有するFPGA加速側において、各前記データ処理サブタスクに対応するターゲットFPGA加速カードを決定し、計算されるデータを前記ターゲットFPGA加速カードに転送し、各前記ターゲットFPGA加速カードにより対応するデータ処理サブタスクを実行してデータ処理結果を取得し、ところで、前記データ処理結果には、各前記ターゲットFPGA加速カード自身が計算した中間結果データとなる中間計算データ又は前記データ処理タスクの最終処理結果が含まれ、各前記データ処理サブタスクのソースデータには、前記計算されるデータ及び/又は前記中間計算データが含まれ、前記中間計算データは、前記ターゲットFPGA加速カード間のネットワークを介して転送されることを特徴とする、分散型データフロープログラミングフレームワーク。
  12. 前記FPGA加速スタックは、
    前記CPU加速スタックから配信されたデータ処理サブタスクを実行し、さらに、データ処理結果を前記CPU加速スタック又は他のターゲットFPGA加速カードに転送するように構成された静的領域と、
    前記データ処理サブタスクをローカル加速ユニット又は他のターゲットFPGA加速カードの加速ユニットに転送し、加速計算動作を行うように構成されたFPGA加速エンジンと、を備えることを特徴とする、請求項11に記載の分散型データフロープログラミングフレームワーク。
  13. メモリとプロセッサとを含む電子装置であって、
    前記メモリにはコンピュータプログラムが記憶されており、
    前記コンピュータプログラムが前記プロセッサによって実行されると、請求項1~9のいずれか一項に記載のデータ処理方法のステップを実施することを特徴とする、電子装置。
  14. コンピュータ読み取り可能な命令が記憶されている記憶媒体であって、
    前記コンピュータ読み取り可能な命令がプロセッサによってロードされて実行されると、請求項1~9のいずれか一項に記載のデータ処理方法のステップを実施することを特徴とする、記憶媒体。
JP2022532624A 2020-02-05 2020-04-27 データ処理方法、装置、分散型データフロープログラミングフレームワーク及び関連コンポーネント Active JP7400105B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN202010080853.6 2020-02-05
CN202010080853.6A CN111324558B (zh) 2020-02-05 2020-02-05 数据处理方法、装置、分布式数据流编程框架及相关组件
PCT/CN2020/087157 WO2021155642A1 (zh) 2020-02-05 2020-04-27 数据处理方法、装置、分布式数据流编程框架及相关组件

Publications (2)

Publication Number Publication Date
JP2022549527A JP2022549527A (ja) 2022-11-25
JP7400105B2 true JP7400105B2 (ja) 2023-12-18

Family

ID=71170924

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022532624A Active JP7400105B2 (ja) 2020-02-05 2020-04-27 データ処理方法、装置、分散型データフロープログラミングフレームワーク及び関連コンポーネント

Country Status (5)

Country Link
US (1) US20230004433A1 (ja)
EP (1) EP4095703A4 (ja)
JP (1) JP7400105B2 (ja)
CN (1) CN111324558B (ja)
WO (1) WO2021155642A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112087471A (zh) * 2020-09-27 2020-12-15 山东云海国创云计算装备产业创新中心有限公司 一种数据传输方法及fpga云平台
CN112631778B (zh) * 2020-12-27 2023-01-06 苏州浪潮智能科技有限公司 一种基于fpga云的计算优化方法、系统、存储介质及设备
CN113065299B (zh) * 2021-02-23 2024-01-09 杭州电子科技大学 一种基于fpga云的图像处理硬件逻辑hdl模块的线上验证方法
CN113268356B (zh) * 2021-07-20 2021-10-29 西安芯瞳半导体技术有限公司 基于LINUX系统的多GPU板卡bounding的系统、方法及介质
CN114138481A (zh) * 2021-11-26 2022-03-04 浪潮电子信息产业股份有限公司 一种数据处理方法、装置及介质
CN116149861B (zh) * 2023-03-07 2023-10-20 中科计算技术西部研究院 一种基于vpx结构的高速通信方法
CN116228515B (zh) * 2023-05-06 2023-08-18 苏州仰思坪半导体有限公司 硬件加速系统、方法及相关装置
CN116599892B (zh) * 2023-07-17 2023-10-03 浪潮电子信息产业股份有限公司 一种服务器系统、路由方法、装置及电子设备和存储介质
CN117171075B (zh) * 2023-10-27 2024-02-06 上海芯联芯智能科技有限公司 一种电子设备及任务处理方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080148227A1 (en) 2002-05-17 2008-06-19 Mccubbrey David L Method of partitioning an algorithm between hardware and software
US20170220499A1 (en) 2016-01-04 2017-08-03 Gray Research LLC Massively parallel computer, accelerated computing clusters, and two-dimensional router and interconnection network for field programmable gate arrays, and applications
US20170262567A1 (en) 2013-11-15 2017-09-14 Scientific Concepts International Corporation Code partitioning for the array of devices
CN109739833A (zh) 2018-12-18 2019-05-10 山东超越数控电子股份有限公司 一种基于fpga的国产平台数据库加速系统及方法
US20190213029A1 (en) 2018-01-08 2019-07-11 Huazhong University Of Science And Technology Fpga-based method for network function accelerating and system thereof
CN110069441A (zh) 2019-03-21 2019-07-30 中国科学院计算技术研究所 一种用于流计算的fpga网络及流计算系统与方法
CN110399221A (zh) 2019-07-23 2019-11-01 江苏鼎速网络科技有限公司 数据处理方法、系统及终端设备
CN110619595A (zh) 2019-09-17 2019-12-27 华中科技大学 一种基于多fpga加速器互联的图计算优化方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103345461B (zh) * 2013-04-27 2016-01-20 电子科技大学 基于fpga的带有加速器的多核处理器片上网络系统
CN105183683B (zh) * 2015-08-31 2018-06-29 浪潮(北京)电子信息产业有限公司 一种多fpga芯片加速卡
CN106354574A (zh) * 2016-08-30 2017-01-25 浪潮(北京)电子信息产业有限公司 一种用于大数据K‑Mean聚类算法的加速系统和方法
CN107273331A (zh) * 2017-06-30 2017-10-20 山东超越数控电子有限公司 一种基于cpu+gpu+fpga架构的异构计算系统和方法
CN108776648A (zh) * 2018-05-28 2018-11-09 郑州云海信息技术有限公司 数据传输方法、系统及fpga异构加速卡和存储介质
CN108776649A (zh) * 2018-06-11 2018-11-09 山东超越数控电子股份有限公司 一种基于cpu+fpga异构计算系统及其加速方法
CN109787918A (zh) * 2019-01-08 2019-05-21 郑州云海信息技术有限公司 基于网络传输的数据加速方法、装置、系统及一种加速卡
CN110083558A (zh) * 2019-06-03 2019-08-02 苏州长江睿芯电子科技有限公司 一种用于自适应可编程存储计算加速卡装置
CN110519090B (zh) * 2019-08-23 2022-11-04 苏州浪潮智能科技有限公司 一种fpga云平台的加速卡分配方法、系统及相关组件
CN110618871B (zh) * 2019-09-21 2022-07-22 苏州浪潮智能科技有限公司 一种fpga云平台加速资源的分配方法与系统

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080148227A1 (en) 2002-05-17 2008-06-19 Mccubbrey David L Method of partitioning an algorithm between hardware and software
US20170262567A1 (en) 2013-11-15 2017-09-14 Scientific Concepts International Corporation Code partitioning for the array of devices
US20170220499A1 (en) 2016-01-04 2017-08-03 Gray Research LLC Massively parallel computer, accelerated computing clusters, and two-dimensional router and interconnection network for field programmable gate arrays, and applications
US20190213029A1 (en) 2018-01-08 2019-07-11 Huazhong University Of Science And Technology Fpga-based method for network function accelerating and system thereof
CN109739833A (zh) 2018-12-18 2019-05-10 山东超越数控电子股份有限公司 一种基于fpga的国产平台数据库加速系统及方法
CN110069441A (zh) 2019-03-21 2019-07-30 中国科学院计算技术研究所 一种用于流计算的fpga网络及流计算系统与方法
CN110399221A (zh) 2019-07-23 2019-11-01 江苏鼎速网络科技有限公司 数据处理方法、系统及终端设备
CN110619595A (zh) 2019-09-17 2019-12-27 华中科技大学 一种基于多fpga加速器互联的图计算优化方法

Also Published As

Publication number Publication date
CN111324558B (zh) 2021-08-10
WO2021155642A1 (zh) 2021-08-12
JP2022549527A (ja) 2022-11-25
EP4095703A4 (en) 2023-07-19
EP4095703A1 (en) 2022-11-30
CN111324558A (zh) 2020-06-23
US20230004433A1 (en) 2023-01-05

Similar Documents

Publication Publication Date Title
JP7400105B2 (ja) データ処理方法、装置、分散型データフロープログラミングフレームワーク及び関連コンポーネント
US11934341B2 (en) Virtual RDMA switching for containerized
US11838199B1 (en) System and method for deploying, scaling and managing network endpoint groups in cloud computing environments
CN108780410B (zh) 计算系统中的容器的网络虚拟化
US9996371B2 (en) Virtual switching method, related apparatus, and computer system
US9424067B2 (en) Managing virtual machine instances utilizing an offload device
KR101593463B1 (ko) 네트워크 분할을 통한 네이티브 클라우드 컴퓨팅
EP3267322B1 (en) Scalable direct inter-node communication over peripheral component interconnect-express (pcie)
US9400674B2 (en) Managing virtual machine instances utilizing a virtual offload device
JP7404390B2 (ja) コヒーレントアクセラレーションのためのドメイン支援プロセッサピア
CN108319563A (zh) 一种基于fpga的网络功能加速方法和系统
US10498814B2 (en) Network storage node and network storage system
WO2005124549A1 (ja) 処理管理装置、コンピュータ・システム、分散処理方法及びコンピュータプログラム
CN105915387B (zh) 一种IaaS云平台下云主机的外网带宽限速方法、装置及系统
US10572421B2 (en) Topology-aware parallel reduction in an accelerator
WO2014183531A1 (zh) 一种分配远程内存的方法及装置
JP5420477B2 (ja) 情報サービスシステム
Alam et al. Software defined networks: Review and architecture
Shinde et al. Modeling NICs with Unicorn
US11650884B2 (en) I/O to unpinned memory supporting memory overcommit and live migration of virtual machines
KR102466231B1 (ko) 오케스트레이터 환경에서의 프로세스 마이그레이션을 위한 컨테이너 관리 장치 및 관리 방법
US20240061805A1 (en) Host endpoint adaptive compute composability
EP3089428A1 (en) Method and apparatus for deploying applications
JP6909218B2 (ja) ラック内のノードのための分散型オペレーティング・システム機能
WO2021002970A1 (en) Distributed system that promotes task-machine affinity

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220531

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20220531

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221108

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230208

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230509

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230809

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20231107

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231206

R150 Certificate of patent or registration of utility model

Ref document number: 7400105

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150