WO2023181380A1 - 情報処理システム、情報処理装置、サーバ装置、プログラム、リコンフィグラブルデバイス、又は方法 - Google Patents

情報処理システム、情報処理装置、サーバ装置、プログラム、リコンフィグラブルデバイス、又は方法 Download PDF

Info

Publication number
WO2023181380A1
WO2023181380A1 PCT/JP2022/014551 JP2022014551W WO2023181380A1 WO 2023181380 A1 WO2023181380 A1 WO 2023181380A1 JP 2022014551 W JP2022014551 W JP 2022014551W WO 2023181380 A1 WO2023181380 A1 WO 2023181380A1
Authority
WO
WIPO (PCT)
Prior art keywords
information
resource information
resource
calculation
calculation node
Prior art date
Application number
PCT/JP2022/014551
Other languages
English (en)
French (fr)
Inventor
エリック 駿 福田
Original Assignee
Chiptip Technology株式会社
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 Chiptip Technology株式会社 filed Critical Chiptip Technology株式会社
Priority to PCT/JP2022/014551 priority Critical patent/WO2023181380A1/ja
Publication of WO2023181380A1 publication Critical patent/WO2023181380A1/ja

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/343Logical level

Definitions

  • the combination information generation unit may have a determination function to determine whether combination is possible before generating combination information, or may not have a determination function to determine whether combination is possible. Moreover, when the combination information generation unit determines that combination is possible, the combination information generation unit may determine whether or not the combined item operates.
  • the synthesis information generation unit may have a simulation function and a function of determining whether the synthesized information actually operates. In this case, whether or not the above-mentioned actual operation is performed may be determined by a simulation function. That is, such a simulation may determine whether or not writing to the reconfigurable device is possible.
  • Such simulation functionality may be included within the system of this example or may be located outside of the system of this example.
  • calculation nodes after soft merging and/or hard merging may be operated at multiple different frequencies by using a method such as connecting modules that operate at different frequencies using FIFO, etc. good.
  • the combined resource information may include multiple frequencies.
  • the combined resource information may include each of a plurality of frequencies and information indicating a calculation process operated at each frequency in association with each other.
  • the soft resource merge synthesis information generation unit for storage information includes an attribute related to the storage device related to the first resource, an attribute related to the storage device related to the second resource corresponding to an attribute related to the storage device related to the first resource, and an attribute related to the storage device related to the second resource. may be summed to generate an attribute related to the storage device of resource information.
  • the external communication module can store at least one unit of a packet of the HDL program 1 external output, which has the total number of bits of the HDL program 1 external output and the bit number of the HDL program 2 output. and a buffer 2 that can store at least one unit of external output packets of the HDL program 2, and check buffers 1 and 2 alternately to determine whether the buffer has stored at least one unit of packets. It may be possible to perform an operation of outputting to the outside.
  • the determination unit compares at least one attribute in the soft-merged resource information with a corresponding attribute in the soft-merged resource information of a specific hardware resource in the RFD-RDB, The latter may determine whether the former is executable.
  • the determination unit may make the determination based on predetermined information or dynamically applied processing, for example, if one and the corresponding attribute are the type of storage device.
  • one attribute is the communication speed or the number of communication bits, and the latter is a higher value than the former with respect to the corresponding attribute, the communication speed or the number of communication bits, It may be determined that it is practicable.
  • An example system uses usage information based on the relationship between resource information related to a calculation node with which soft resources have been merged and resource information related to one hardware resource, which is generated by another information processing device. You may select hardware resources.
  • the distance may be the above-mentioned physical distance or may be a distance related to information communication.
  • the actual hardware resources that match the resource information selected by the user those that are shorter in distance from one or more hardware resources currently being used by the user are selected, compared to other hardware resources. This has the advantage of supporting the provision of hardware resources that realize more efficient communication.
  • each computational node in the computational node group is associated with a vertex of a directed graph, and the input/output relationship between computational nodes is associated with an edge of the directed graph. may correspond to the maximum number of vertices in the path of the directed graph (traversing each vertex at most once) in the case.
  • Step 232 An example system stores resource information obtained by soft merging the calculation nodes used in each data flow in association with the length of each data flow in the calculation node group A (step 1002). For example, if one data flow sequence is composed of calculation nodes N1, N2, N3, N4, N5 in this order, N1-N2-N3-N4-N5, N1-N2-N3-N4, Information identifying each data flow column such as N2-N3-N4-N5, N1-N2-N3, N3-N4-N5, N2-N3-N4, etc., the length of the corresponding data flow column, and the corresponding This is an example in which combined resource information obtained when a soft resource merge is performed for a data flow sequence that is associated with and stored.
  • an example system relates to a data flow sequence for one composite resource information of each composite resource information in the DFL-RDB that can be executed by resource information for one hardware resource in the RFD-RDB.
  • Compute nodes may be identified.
  • the calculation nodes of the data flow sequence that can be executed by one hardware resource in the RFD-RDB can be specified, and the overhead between input and output data at the calculation nodes in the data flow sequence can be reduced.
  • the calculation process for comparing each combination of resource information about one hardware resource in RFD-RDB and one composite resource information of each composite resource information in DFL-RDB results in the above-mentioned You may specify what is executable.
  • the task manager written in each reconfigurable device may collect information related to communication of the reconfigurable device in which the task manager is written, and may contact the monitoring unit.
  • the monitoring unit of an example system may acquire, from the task managers written in one or more reconfigurable devices, information related to the communication of the reconfigurable devices in which each task manager is written.
  • Information related to such communication may be a calculation unit within the reconfigurable device, and information related to such communication may be associated with information (for example, ID) indicating such a calculation unit. For example, if there is no PR region within one reconfigurable device, one reconfigurable device may be used as one calculation unit, and information that identifies such one reconfigurable device and information related to communication are associated.
  • the monitoring unit may obtain such information from the task manager and store it.
  • the task manager may transmit information related to communication to the monitoring unit at a predetermined timing.
  • the timing of transmission may be periodically or at a timing when a predetermined condition is satisfied.
  • the predetermined condition may include a case where information related to communication exceeds a predetermined threshold. For example, the number of communication bits, the number of communication times, the amount of communication, the frequency of communication, the communication ratio, the communication fee, the number of communication bits per predetermined unit, the number of communication per predetermined unit, the amount of communication per predetermined unit, the communication frequency per predetermined unit, This may be a case where the communication ratio for each predetermined unit, the communication fee for each predetermined unit, and/or the statistical information based on some or all of these exceeds a predetermined threshold.
  • An example system performs a soft resource merge between the first computing node and the second computing node, for example, when information related to communication between the first computing node and the second computing node is higher than a predetermined threshold. It may be processed as a target calculation node, processed as a calculation node to be soft merged, and/or processed as a calculation node to be hard merged.
  • An example of a reconfigurable device may be one in which a bit stream based on a plurality of calculation nodes specified based on communication information obtained by the monitoring unit is written.
  • Such reconfigurable devices have the advantage of potentially processing with reduced overhead between computing nodes.
  • MI-RDB if one data flow sequence is composed of calculation nodes N1, N2, N3, N4, N5 in this order, N1-N2-N3-N4-N5, N1 - Information identifying each data flow column such as N2-N3-N4, N2-N3-N4-N5, N1-N2-N3, N3-N4-N5, N2-N3-N4, etc. and the corresponding data
  • the database may store synthetic resource information obtained by soft merging computational nodes constituting a flow sequence and information based on information related to communication between computational nodes along the corresponding data flow sequence in association with each other.
  • FIG. 14 is an example of such an MI-RDB.
  • an example system may compare resource information related to a calculation node to be soft merged or hard merged with resource information of one or more candidate hardware resources to be written, and display the result on a display device. good.
  • the information to be compared may be resource information or corresponding information regarding one attribute of the resource information.
  • the system of the example includes information indicating the relationship between the resource information related to the calculation node to be soft merged or hard merged and the resource information of one or more candidate hardware resources to be written, for example, the utilization information may be displayed on a display device.
  • the example system may be implemented together with any one of the above embodiments 1 to 5, or may be implemented alone without implementing the above embodiments 1 to 5.
  • the predetermined condition may be a condition using the information related to the above-mentioned communication.
  • the predetermined condition may be a case where information related to communication exceeds a predetermined corresponding threshold.
  • the predetermined condition may be one using a usage fee related to a reconfigurable device based on information related to communication. For example, in a case where an example system has a function of calculating a usage fee based on information related to communication of a reconfigurable device, the predetermined condition is satisfied when the usage fee exceeds a predetermined threshold. It may be.
  • Information related to communication for which sufficiency of the predetermined condition is determined may include, for example, a first PR region in a first reconfigurable device and a second PR region in a second reconfigurable device different from the first reconfigurable device. It may be information related to communication between the second PR region and the second PR region. In this case, there is an advantage that information between different PR regions in different reconfigurable devices can be used.
  • the one or more programmable devices are a system that performs pattern matching within the packet.
  • Embodiment 7-3 An example system includes one or more reconfigurable devices and one or more programmable devices, and a part or all of the one or more reconfigurable devices and the one or more programmable devices.
  • a device is a system capable of communicating information;
  • the one or more reconfigurable devices perform a process in which a reference position and/or range within the packet has been determined in a process of determining a packet acquired from outside the one or more reconfigurable devices,
  • the one or more programmable devices are a system that performs processing in which a reference position and/or range within the packet has not been determined in processing a packet acquired from outside the one or more programmable devices. .
  • the reconfigurable device 1601 acquires a packet from outside the reconfigurable device through the communication circuit 1600, and the reconfigurable device 1601 performs a predetermined number of predetermined operations on the packet. and transmits the first and second packets to the one or more programmable devices 1602, and the programmable device 1602 performs a predetermined number of non-predetermined operations or predetermined operations on the packets. Processing may be performed using combinations of numbers exceeding .
  • the reconfigurable device does not process unspecified operations or combinations of predetermined operations exceeding the predetermined number, complicated implementation (for example, regular expression matching implementation) is not required, and processing by the reconfigurable device is simplified.
  • Such a system has the advantage of being easy to implement while gaining the benefit of high speed, and processing of such non-prescribed operations or combinations of predetermined operations exceeding the predetermined number is realized by a programmable device. Overall, there is an advantage in that the required processing can be appropriately divided.
  • the system according to the first aspect comprises: first resource information that is information about hardware resources that can be used when one or more bitstreams related to the first calculation node are written to the reconfigurable device; second resource information that is information about hardware resources that can be used when one or more bitstreams related to the second calculation node are written to the reconfigurable device; an acquisition unit that acquires Using the first resource information and the second resource information, determine the hardware that can be used when one or more bitstreams based on the first computing node and the second computing node are written to a reconfigurable device.
  • a generation unit that generates composite resource information that is information about wear resources; It is a system equipped with
  • the program variable device 10 may be an information processing device such as a server or a cloud. It may be a dedicated device or a general-purpose device. Further, the programmable device 10 itself may be a reconfigurable device in which a circuit is written. In this case, there is an advantage that the programs of the various embodiments described above can be executed more quickly.

Abstract

【課題】 より適切にリコンフィグラブルデバイスを活用できる。 【解決手段】 第1計算ノードに係る一又は複数のビットストリームが、リコンフィギュラブルデバイスに書き込まれた場合に利用されうるハードウェアリソースについての情報である第1リソース情報と、第2計算ノードに係る一又は複数のビットストリームが、リコンフィギュラブルデバイスに書き込まれた場合に利用されうるハードウェアリソースについての情報である第2リソース情報と、を取得する取得部と、前記第1リソース情報と前記第2リソース情報を用いて、前記第1計算ノード及び前記第2計算ノードに基づく一又は複数のビットストリームが、リコンフィギュラブルデバイスに書き込まれた場合に利用されうるハードウェアリソースについての情報である合成リソース情報を生成する生成部と、を備えるシステム。

Description

情報処理システム、情報処理装置、サーバ装置、プログラム、リコンフィグラブルデバイス、又は方法
 本出願において開示された技術は、システム、情報処理装置、サーバ装置、リコンフィグラブルデバイス、プログラム、クラウド、及び/又は方法に関する。
 近年、回路の修正が可能なリコンフィグラブルデバイスが種々の分野において導入され始めている。
特開第2020-135318号公報 特開第2010-251925号公報 特開第H7-6080号公報
 しかしながら、リコンフィグラブルデバイスをより適切に利用する技術は活用されていない状況がある。そこで、本発明の様々な実施形態は、上記の課題を解決するために、情報処理システム、情報処理装置、サーバ装置、プログラム、リコンフィグラブルデバイス、又は方法を提供する。
 本願に係る一実施形態は、
 第1計算ノードに係る一又は複数のビットストリームが、リコンフィギュラブルデバイスに書き込まれた場合に利用されうるハードウェアリソースについての情報である第1リソース情報と、
 第2計算ノードに係る一又は複数のビットストリームが、リコンフィギュラブルデバイスに書き込まれた場合に利用されうるハードウェアリソースについての情報である第2リソース情報と、
  を取得する取得部と、
 前記第1リソース情報と前記第2リソース情報を用いて、前記第1計算ノード及び前記第2計算ノードに基づく一又は複数のビットストリームが、リコンフィギュラブルデバイスに書き込まれた場合に利用されうるハードウェアリソースについての情報である合成リソース情報を生成する生成部と、
 を備えるシステム。
 本願に係る他の実施形態は、
 一又は複数の情報処理装置が、
 第1計算ノードに係る一又は複数のビットストリームが、リコンフィギュラブルデバイスに書き込まれた場合に利用されうるハードウェアリソースについての情報である第1リソース情報と、
 第2計算ノードに係る一又は複数のビットストリームが、リコンフィギュラブルデバイスに書き込まれた場合に利用されうるハードウェアリソースについての情報である第2リソース情報と、
  を取得する取得ステップ、
 前記第1リソース情報と前記第2リソース情報を用いて、前記第1計算ノード及び前記第2計算ノードに基づく一又は複数のビットストリームが、リコンフィギュラブルデバイスに書き込まれた場合に利用されうるハードウェアリソースについての情報である合成リソース情報を生成する生成ステップ、
を実行する方法。
 本願に係る他の実施形態は、
 一又は複数の情報処理装置を、
 第1計算ノードに係る一又は複数のビットストリームが、リコンフィギュラブルデバイスに書き込まれた場合に利用されうるハードウェアリソースについての情報である第1リソース情報と、
 第2計算ノードに係る一又は複数のビットストリームが、リコンフィギュラブルデバイスに書き込まれた場合に利用されうるハードウェアリソースについての情報である第2リソース情報と、
  を取得する取得手段、
 前記第1リソース情報と前記第2リソース情報を用いて、前記第1計算ノード及び前記第2計算ノードに基づく一又は複数のビットストリームが、リコンフィギュラブルデバイスに書き込まれた場合に利用されうるハードウェアリソースについての情報である合成リソース情報を生成する生成手段、
として動作させるためのプログラム。
 本発明の一実施形態により、より適切にリコンフィグラブルデバイスを活用できる。
図1は、一実施態様に係るシステムと、リコンフィグラブルデバイスとの関係を示す一例のブロック図である。 図2は、一実施態様に係るシステムと、リコンフィグラブルデバイスとの関係を示す一例のブロック図である。 図3は、一実施態様に係るシステムが利用する一例のデータを示す図である。 図4は、一実施態様に係るシステムが利用する一例のデータを示す図である。 図5は、一実施態様に係るシステムによる一例の処理を示す図である。 図6は、一実施態様に係るシステムに関連する一例のデータフローを示す図である。 図7は、一実施態様に係るシステムによる一例の処理を示す図である。 図8は、一実施態様に係るシステムによる一例の処理を示す図である。 図9は、一実施態様に係るシステムに関連する一例のデータフローを示す図である。 図10は、一実施態様に係るシステムによる一例の処理を示す図である。 図11は、一実施態様に係るシステムが利用する一例のデータを示す図である。 図12は、一実施態様に係るシステムに関連する構成を示すである。 図13は、一実施態様に係るシステムによる一例の処理を示す図である。 図14は、一実施態様に係るシステムが利用する一例のデータを示す図である。 図15は、一実施態様に係るシステムに関連する一例のデータフローを示す図である。 図16は、一実施態様に係るシステムに関連する構成を示すである。 図17は、一実施態様に係るシステムの一例の構成を示すブロック図である。
1.はじめに
 本願において開示される技術の一例は、書き換え可能な回路に係るものである。例えば、本願において開示される技術は、書き換え可能な回路そのものに関する技術、書き換え可能な回路のための書き換え可能でない回路を利用した技術、これらの回路に利用されるプログラム、などである。本技術の一例は、書き換え可能でない回路を含む情報処理装置が利用されてもよい。書き換え可能な回路は、プログラマブルロジックデバイスなどとも称されるが、本願書類においては、これらを含めて、リコンフィグラブルデバイス(Reconfigurable Logic Device)と称する。他方、書き換え可能でない回路は、命令デコード方式、ノイマン型デバイス、などと称されることもあるが、本願書類においては、これらを含めてプログラム可変デバイス(Program Variable Device)と称する。
 リコンフィグラブルデバイスは、例えば、PAL (Programmable Array Logic)、PLA(Programmable Logic Array)、GAL (Generic Array Logic)、CPLD (Complex Programmable Logic Device)、FPGA (Field Programmable Gate Array) 、CGRA(Coarse-Grained Reconfigurable Array)などが挙げられる。
 本願書類の以下では、リコンフィグラブルデバイスとして、FPGAを用いて説明することもあるが、かかるFPGAに代えて、その他のリコンフィグラブルデバイスにおいても適用できることはいうまでもない。特に、リコンフィグラブルデバイスとして、パーシャルリコンフィグレーション、すなわち、一のプログラマブルロジックデバイス内の複数の領域(例えば、PRリージョン)を互いに独立に書き込み可能な機能を備えるものであれば、後述の領域毎の処理が可能なものであってよい。ここで、互いに独立に書き込み可能とは、一のプログラマブルロジックデバイス内の一の領域で処理が実行中に、かかる一の領域と異なる前記一のプログラマブルロジックデバイス内の他の領域について書き込みが可能な機能を含んでよい。
 本願書類において、「一の」リコンフィギュラブルデバイスというとき、物理的に独立して存在するものであってよい。また、一のリコンフィギュラブルデバイスは、一又は複数のPRリージョンを構造的に含んでよい。PRリージョンは、独立して回路構成を変更できる区画であってよい。PRリージョン毎に、リコンフィギュラブルデバイスは、パーシャルリコンフィギュレーションを利用して一又は複数の独立した演算を実行できてもよいし、パーシャルリコンフィギュレーションを利用せずに一又は複数の独立した演算を実行することが可能であってよい。独立であることから、例えば、一のリコンフィギュラブルデバイスがPRリージョンAとPRリージョンBを含む場合、PRリージョンAとPRリージョンBとは、回路の書き換え、回路の実行、について、独立に動作してよい。そのため、PRリージョンAが実行中にPRリージョンBの書き換えも可能であってよい。なお、リコンフィギュラブルデバイスは物理デバイスと称されることもあり、PRリージョンは仮想デバイスと称されることもある。
 また、リコンフィギュラブルデバイスに書き込まれるデータは、ビットストリーム(Bitstream)又はパーシャルビットストリーム(Partial Bitstream)があるが、これらを含むものとして、以下では、ビットストリームとして説明する。
 本願書類におけるビットストリームは、VHDLやVerilogなどのハードウェア記述言語(Hardware Descriptive Language。本願書類において、「HDL」ということもある。)で記述されてプログラム(本願書類においてHDLプログラムということもある。)がコンパイルされることによって得られてよい。
 本願書類におけるHDLプログラムは、人がプログラミング(コーディング)したものであってもよいし、C言語などの高級プログラミング言語によって記述されたプログラムが高位合成ツールによって変換されることによって得られたものであってもよい。なお、本願書類において、このような高位合成ツールによってHDLプログラムに変換されうる高級プログラミング言語(C言語、パイソン言語、など行為合成ツールを適用可能な言語であれば、言語を問わない)によって記述されたプログラムと、HDLプログラムと、の上位概念を「対象HDLプログラム」、と称することもある。
 なお、本願書類において、情報処理装置という用語は、リコンフィグラブルデバイスとプログラム可変デバイスの上位概念の語として使用する。
 一例のシステムは、1又は複数の情報処理装置から構成されてよい。かかる一又は複数の情報処理装置は、一又は複数のリコンフィギュラブルデバイス、及び/又は、一又は複数のプログラム可変デバイス、から構成されてよい。
 また、かかる一例のシステムは、一又は複数のリコンフィギュラブルデバイスと接続されてよい。この場合、一例のシステムが一又は複数のリコンフィギュラブルデバイスを管理できる利点がある。
 図1は、一例のシステムが、一又は複数のFPGAと接続されている一例を示す。一例のシステム(001)が、FPGA1(0021)乃至FPGA4(0024)と接続されている状況を示す。かかる接続は、イーサネットで接続されてもよいし、例えばPCIExpressなどのバスで接続されてもよい。なお、一例のシステムは、ユーザのアプリケーションを実行する演算機能として、一又は複数のFPGAのみと接続されてもよい。この場合、ユーザのアプリケーションを実行する演算機能以外の機能を実行するハードウェア資源としては、プログラム可変デバイスと接続されてよい。
 また、一例のシステムは、一又は複数のリコンフィギュラブルデバイスと接続されるとともに、更に、一又は複数のプログラム可変デバイスと接続されてもよい。この場合、一例のシステムは、リコンフィギュラブルデバイスの管理に加えて、プログラム可変デバイスも含めて分散処理などの管理をできる利点がある。
 一例のシステムが、一又は複数のリコンフィギュラブルデバイス、及び/又は、一又は複数のプログラム可変デバイスと接続されている場合において、接続は、ネットワークを介して直接的又は間接的に接続されてよい。一又は複数のリコンフィギュラブルデバイスは、一例のシステムと同一の施設内に設置されていてもよいし、異なる施設内に設置されていてもよい。また、一又は複数のリコンフィギュラブルデバイスの設置の具体的な場所はどのようなものであってもよい。例えば、一又は複数のリコンフィギュラブルデバイスは、建物内(屋内)に設置されてもよいし、建物外(屋外)に設置されてもよい。センサなどのIoT機器は建物内及び/又は建物外において作動してよく、これらがリコンフィギュラブルデバイスによって実装されてもよい。ネットワークは、有線であってもよいし、無線であってもよいし、これらの混合であってもよい。
 図2は、一例のシステムが、リコンフィギュラブルデバイス、及び、プログラム可変デバイス、とネットワーク(000)を介して接続されている状況を示す。本図では、FPGA群(002)内に、複数のFPGAとプログラム可変デバイス、を含む構成例である。ここではプログラム可変デバイスを示すものとして、CPU1及びCPU2と記載されており、便宜上これらもFPGA群の一部として示している。また、FPGA群(003)内には、複数のFPGAとFPGAライターの機能を含む情報処理装置を含む。かかるFPGAライターは、FPGA群(003)に対するビットストリーム(ビットストリーム)の書き込みと、FPGA群(002)に対するビットストリームの書き込みの、両方の書き込みが可能であってよい。これらのFPGA群(002)及び(003)内のネットワークは、バスであってもよいし、イーサネットなどでもよい。
 なお、一例のシステム、上述の一又は複数のリコンフィギュラブルデバイス、及び/又は、上述の一又は複数のプログラム可変デバイスは、クラウド上の情報処理装置であってもよい。
 本願書類において、一又は複数の対象HDLプログラム、一又は複数のビットストリーム、PRリージョン、及び/又は、リコンフィギュラブルデバイスにおいて実行される計算(または計算概念)を計算ノードといい、一のPRリージョン又は一のリコンフィギュラブルデバイスにおいて実行される計算ノードの単位を、一の計算ノードという。一の計算ノードは、一又は複数の対象HDLプログラムに対応しうる。一の計算ノードは、一又は複数のビットストリームに対応しうる。また、一の計算ノードは、プログラマーが、後述のリソース情報を指定する単位に対応しうる。
 また、本願書類において、ハードウェア資源は、リコンフィギュラブルデバイス、リコンフィギュラブルデバイス内のPRリージョン、及び/又は、プログラム可変デバイス、を示すものであってよい。
2.実施形態1
 HDLプログラムは、コンパイルによりビットストリームに変更され、リコンフィギュラブルデバイスに書き込まれた上で、計算が実行されることができる。一般的にプログラマーは、特定のリコンフィギュラブルデバイス(またはその一部のPRリージョン)への書き込みを想定してHDLプログラムをコーディングする。
 しかしながら、ある処理について、複数のHDLプログラム(例えば、HDL1、HDL2、HDL3の)が各々コンパイルされた、複数のビットストリーム(例えば、BS1、BS2、BS3)によって実現されるとする。そして、この各ビットストリームが、各リコンフィギュラブルデバイスR(例えば、RD1、RD2、RD3)に書き込まれた場合、書き込まれるリコンフィギュラブルデバイスが複数になり、これら複数のリコンフィギュラブルデバイス間の通信のオーバーヘッドが生じる場合がある。そこで、これらの書き込まれた複数のリコンフィギュラブルデバイスを、一のリコンフィギュラブルデバイス(例えば、RDX)にすることで、リコンフィギュラブルデバイス間の通信のオーバーヘッドを減少させることに関連する技術を発明者らは考えた。
 本願書類において、N個(Nは自然数)の計算ノードに対応する対象HDLプログラムが利用するハードウェア資源についてのリソース情報を、M個(MはNより小さい自然数)の計算ノードに対応する対象HDLプログラムが利用するハードウェア資源についてのリソース情報に変換する情報処理を、ソフトリソースマージと呼ぶことがある。また、本願書類において、ソフトリソースマージに係る計算ノードに対応する対象HDLプログラムを、ビットストリームに変換する(コンパイルする)情報処理を、ソフトマージと呼ぶことがある。なお、ソフトマージされる複数の計算ノードは、一の計算ノードとみなすことができてよい場合がある。なぜなら、ソフトマージされる複数の計算ノードは、ソフトリソースマージにより、前記複数の計算ノードの対応するリソース情報に基づいて合成情報を生成できる場合、これらの合成情報に対応する計算ノードは、かかる計算ノードに対応するリソース情報を観念できることから、一の計算ノードとみなすことができてよい。また、ソフトマージされたビットストリームをハードウェア資源に書き込む処理を、ハードマージと呼ぶことがある。
 また、対象HDLプログラムは、ビットストリームに変換され(高位合成ツールが適用される高級プログラミング言語の場合は、高級プログラミング言語によって記述されたプログラムが行為合成ツールが適用されることによってHDLプログラムが生成され、その上で、ビットストリームに変換される)、ビットストリームはリコンフィギュラブルデバイスに書き込み可能となる。ここで、対象HDLプログラムは、書き込むリコンフィギュラブルデバイスについての情報を前提にプログラミングされる場合がある。たとえば、ある対象HDLプログラムは、演算処理能力としてロジックブロック数が500であり、メモリ量が300メガバイトであり、周波数が100メガキロヘルツ、などである。このような対象HDLプログラムが、リコンフィギュラブルデバイスに書き込まれる場合において、書き込まれるリコンフィギュラブルデバイスが備える必要のある容量や機能を、本願書類においては、リソース情報ということがある。
 リソース情報は、例えば、リコンフィグラブルデバイスの種類、演算装置に係る属性、記憶装置に係る属性、及び/又は、通信装置に係る属性、などの情報が挙げられる。演算装置に係る属性は、演算装置の種類、セル数等の演算装置の数、クロック周波数数等の演算装置の能力、ロジックブロックの数、ロジック・エレメント(LE)の数、ロジック・セル(LC)の数、LUT(ルック・アップ・テーブル)の容量数、レジスタのビット数、DSPの種類、DSPの能力、DSPの個数、及び/又は、演算装置の利用する電力、などを含んでよい。記憶装置に係る属性は、記憶装置の種類、記憶装置の容量、記憶装置の読み・書きの速度、及び/又は、記憶装置の利用する電力、などを含んでよい。記憶装置は、例えば、リコンフィグラブルデバイス内のオンチップの記憶装置であってよいが、リコンフィグラブルデバイス外に設置される他の記憶装置であってもよい。通信装置に係る属性は、内部通信装置に係る属性、及び/又は、外部通信装置に係る属性、を有してよい。また、内部通信装置に係る属性は、FPGA内に係る通信の情報であってよい。外部通信装置に係る属性は、外部との通信のネットワーク帯域幅、通信チャネル数、及び/又は、帯域速度、などを含んでよい。なお、本願書類において、リソース情報内の異なる観点の情報(例えば、演算装置に係る属性、記憶装置に係る属性、及び/又は、通信装置に係る属性、及びこれらの下位概念の情報)は「属性」と称することもある。また、リソース情報は、各属性について、一又は複数、含んでよい。例えば、一のリソース情報は、複数の周波数、複数の記憶装置の種類、複数のロジックブロックの数、などの情報を含んでよい。また、各属性が複数ある場合、対応する属性が関連付けられて、リソース情報内に含まれてよい。また、各属性が複数である場合に加えて又は代えて、各属性は範囲で規定されてもよい。例えば、一のリソース情報内に、周波数X1~X2、ロジックブロックの数Y1~Y2などのように範囲で規定されてもよい。特に、対象HDLプログラムが、高級プログラミング言語で記述されたプログラムの場合、行為合成ツールの適用において、オプションの選択により、周波数やロジックブロックの数などのリコンフィグラブルデバイスの種類、演算装置に係る属性、記憶装置に係る属性、及び/又は、通信装置に係る属性、は、ある範囲内で自動的に決定されることもあることから、リソース情報がそれらの取りうる範囲の情報を含むことにより、より柔軟にソフトリソースマージ乃至ハードマージを実現できる利点がある。
 ある一又は複数の対象HDLプログラムについてのリソース情報、及び/又は、一のハードウェア資源についてのリソース情報は、プログラマーが指定してもよい。これは、プログラマーが、少なくともどの程度の演算能力やメモリ能力が必要であるかを考えながら、対象HDLプログラムをプログラミングした場合に、これらの情報を指定することができる。ここで、リソース情報は、一の属性について、複数の観点(例えば、必須、推奨など)で指定されてもよい。例えば、ある対象HDLプログラムについての周波数を、1MHZを必須、2MHZである場合を推奨などと指定されてよい。また、ある対象HDLプログラムに対するリソース情報は、対象HDLプログラムに対して、自動的に生成できてよい。例えば、対象HDLプログラムを解析することにより、上述のリソース情報を生成できてよい。
 なお、一のリコンフィギュラブルデバイスに対し、PRリージョンの設定方法は、複数あってもよい。例えば、一のリコンフィギュラブルデバイスは、PRリージョンA及びB、の2つのPRリージョンに分けられてもよいし、PRリージョンA乃至Dの4つのPRリージョンに分けられてもよい。このように分割方法が異なる場合、各PRリージョンについてのリソース情報も異なることから、ある分割方法における特定のPRリージョンに対して、リソース情報が関連付けられて記憶されてよい。
 なお、本願書類において「一の」リソース情報とは、ユーザがハードウェア資源として利用可能な、一の単位であってよい。したがって、リコンフィギュラブルデバイスがPRリージョン単位で管理されていない場合、一のリソース情報は一のリコンフィギュラブルデバイスであってよい。リコンフィギュラブルデバイスがPRリージョン単位で管理されてPRリージョン毎に利用可能なハードウェア資源であれば、一のリソース情報は一のリコンフィギュラブルデバイス内の一のPRリージョンであってよい。また、一のリコンフィギュラブルデバイスは、回路書き換えが可能な装置として、独立して購入できるものでよい。
 本願書類において、対象HDLプログラムと関連付けられてリソース情報を記憶するデータベースを、HDLリソースデータベース(又はHDL-RDB)ということがある。なお、本願において、リソース情報は、必ずしもデータベースの形式で格納されている必要はなく、対象HDLプログラムと対応付けられてリソース情報が記憶されていればよい。また、一のリソース情報は、一又は複数の対象HDLプログラムと対応付けられて記憶されてよい。また、一のリソース情報は、一の計算ノードと対応付けられて記憶されてよい。
 HDL-RDBの一例は、図3である。本図において、一のリソース情報は、一又は複数のHDLプログラムと関連付けられていてよい。例えば、ID001について、一のリソース情報(リソース情報についての各属性について1セットの情報)と一の対象HDLプログラムとが関連付けられて記憶されている。一のリソース情報が複数の対象HDLプログラムと関連付けられる場合は、プログラマーが、一の機能を実現する対象HDLプログラムとして複数の対象HDLプログラムをコンパイルすることを想定し、一のハードウェア資源に書き込む場合が考えられる。例えば、ID002について、一のリソース情報と、複数の対象HDLプログラム002、003、004とが関連付けられて記憶されている。また、一のリソース情報は、一の計算ノードと関連付けられていてよい。
 他方、リコンフィギュラブルデバイス又はその中のPRリージョンにおいても、リソース情報を観念することができる。すなわち、あるリコンフィギュラブルデバイス又はその中のPRリージョンが与えられた場合、かかるリコンフィギュラブルデバイス又はその中のPRリージョンの容量・機能を観念することができるため、かかるリコンフィギュラブルデバイス又はその中のPRリージョンに対するリソース情報を観念することもできる。本願書類において、あるリコンフィギュラブルデバイス又はその中のPRリージョンと関連付けられてリソース情報を記憶するデータベースを、RFDリソースデータベース(又はRFD-RDB)ということがある。
 HDLリソースデータベースの一例は、図4である。本図において、表の各行は、一又は複数のビットストリームを書き込むことが可能な一のハードウェア資源を示すものでよい。例えば、ID001及びID002は、ハードウェア資源001を、PRリージョン01及びPRリージョン02に分割する(分割方法1)場合を示したものである。また、ID003乃至ID005は、ID001及び002とは異なり、同じハードウェア資源001を、PRリージョン01乃至03に分割する(分割方法2)場合を示したものである。このように、物理的に同一のハードウェア資源001を、異なる分割方法(分割方法1と2)によって、異なるリソース量のハードウェア資源に分割し、後述する通り、実行する計算ノードにより適した(無駄の少ない)ハードウェア資源の割り当てを実現してもよい。また、ID006は、PRリージョンが設定されていない例であり、PRリージョンを設定されていないハードウェア資源101をそのまま一のリソース情報として利用する例である。なお、ID001乃至ID005など、PRリージョンの分割は、対象となるハードウェア資源が、既に分割されていた情報としてHDL-RDB内に格納されていてもよいし、PRリージョンの分割は、対象となるハードウェア資源において現実にPRリージョンが設定されていないが分割された場合の情報としてHDL-RDB内に格納されていてもよい。
 RFD-RDB及び/又はHDL-RDBは、データベース管理システムを利用してもよいし、利用しなくともよい。データベースが基づくデータモデルがある場合は、階層型、ネットワーク型、リレーショナルデータモデル、オブジェクトデータモデルなど種々のタイプのものであってよく、その種類は限定されない。また、かかるデータベースを実現するハードウェア資源は、サーバ、クラウド、専用情報処理装置、及び/又は、汎用情報処理装置であってよい。
 一例のシステムは、RFD-RDB及び/又はHDL-RDBを利用する場合、一例のシステムは、RFD-RDB及び/又はHDL-RDBにアクセス可能であればよく、一例のシステムがRFD-RDB及び/又はHDL-RDBを備えてもよいし、一例のシステムがRFD-RDB及び/又はHDL-RDBを備えなくともよい。後者の場合、一例のシステムがネットワークなどを介してRFD-RDB及び/又はHDL-RDBに直接的又は間接的に接続可能であればよい。
ステップ1
 リソース情報取得部は、複数のリソース情報を取得してよい。
 リソース情報取得部は、直接的又は間接的に、リソース情報を取得してよい。例えば、リソース情報取得部は、複数の計算ノードを取得し、前記複数の計算ノードに基づいて、前記複数の計算ノードに各々対応するリソース情報を取得してよい。代替的に、リソース情報取得部は、複数の対象HDLプログラムを取得し、前記複数のHDLプログラムに基づいて、対応するリソース情報を取得してよい。これらのケースにおいて、リソース情報取得部は、代替的に、HDL-RDBを利用して、リソース情報を取得してよい。例えば、リソース情報取得部は、計算ノードに対応するID及び/又は対象HDLプログラムを取得し、これらのキーを用いて、対応するリソース情報を取得してよい。
 また、取得の態様は、種々のものであってよい。例えば、リソース情報は、リソース情報取得部が実装されている情報処理装置内の記憶装置内から取得されてもよいし、かかる情報処理装置とは異なる情報処理装置から、ネットワークを介して取得されてもよい。また、リソース情報は、利用者の入力に基づいて取得されてもよい。
ステップ2
 合成情報生成部は、取得部が取得した複数のリソース情報を用いて、合成情報を生成してよい。なお、合成情報生成部は、ソフトリソースマージを実現する機能であってよい。
合成情報は、合成されたリソース情報を含む、又は、合成されたリソース情報、であってよい。
(判定機能)
 合成情報生成部は、合成情報を生成する前に、合成の可否を判定する判定機能を有してよいし、合成の可否を判定する判定機能を有しなくてもよい。また、合成情報生成部は、合成が可能であると判定した場合において、その合成されたものが動作するか否かを判定してもよい。例えば、合成情報生成部は、シミュレーション機能を有し、合成されたものが実際に動作するか否かを判定する機能を有してよい。この場合、上述の実際に動作するか否かは、シミュレーション機能によって判定されてよい。すなわち、かかるシミュレーションは、リコンフィギュラブルデバイスへの書き込みの可否を判定するものであってよい。かかるシミュレーションの機能は、本例のシステム内に含まれてもよいし、本例のシステム外にあってもよい。合成情報生成部は、判定機能及び/又はシミュレーション機能を実行できる場合、リソース情報の合成が可能である及び/又は合成されたものが動作すると判定した場合に限り、上述の合成情報を生成してよい。合成情報生成部は、判定機能及び/又はシミュレーション機能を実行できる場合、合成が可能である及び/又は合成されたものが動作すると判定しない場合、上述の合成情報を生成しなくてよい。
 例えば、合成情報生成部は、後述のとおり、ソフトリソースマージにあたり、リソース情報内のパイプラインサイクル、DSP種類、及び/又は、演算装置の種類、が異なる場合(例えば、第1リソース情報と、第2リソース情報とをソフトリソースマージする場合において、第1リソース情報内のDSP種類、及び/又は、演算装置の種類が、第2リソース情報内のDSP種類、及び/又は、演算装置の種類、と異なる場合)は、合成が可能ではないと判定してよい。
 以下では、一例として、合成情報生成部が、取得された2つのリソース情報から、一のリソース情報を生成する例を説明する。すなわち、合成情報生成部が、第1リソース情報と、第2リソース情報と、を用いて、リコンフィギュラブルデバイスに書き込むのに必要な、第12リソース情報を生成する例を説明する。合成情報生成部は、以下で述べる2つのリソース情報から一のリソース情報を生成する機能を有する他、Nのリソース情報から、Mのリソース情報(MはNよりも少ない)を生成する機能を有してよい。
 なお、合成情報生成部は、ソフトリソースマージにおいて生成された情報を、利用者に提示する機能を有してもよい。例えば、取得された2つのリソース情報、及び/又は、合成されたリソース情報、を利用者に表示する機能を有してよい。この場合、合成される前のリソース情報、及び/又は、合成されたリソース情報を、利用者が理解することができる利点がある。特に、ソフトリソースマージにおいて合成する前の各計算ノードと比較して、合成した後の計算ノードの機能が変化する場合、かかる変化を含む情報が表示された場合、利用者は、その変化を利用できる利点がある。例えば、後述する、異なる種類の記憶装置についてのソフトリソースマージにおいて、メモリアクセス速度が速い種類の合成リソース情報が生成される場合など、利用者は理解できる利点がある。また、例えば、後述する、周波数が異なる計算ノードのソフトリソースマージにおいて、周波数が低下する場合、かかる変化を利用者は理解できる利点がある。
演算情報のソフトリソースマージ
 合成情報生成部は、第1リソースに係る演算装置に係る属性と、前記第1リソースに係る演算装置に係る属性に対応する第2リソースに係る演算装置に係る属性と、を合計して、リソース情報の演算装置に係る属性を生成してよい。
 例えば、第1リソースに係る演算装置に係る属性におけるロジックブロック数がX1であり、第2リソースに係る演算装置に係る属性におけるロジックブロック数がX2である場合、生成された、合成リソース情報における演算装置に係る属性のロジックブロック数はX1+X2であってよい。
 そのほかの例として、例えば、第1リソースに係る演算装置に係る属性におけるDSP(デジタルシグナルプロセッサ(digital signal processor、DSP))の個数がX1であり、第2リソースに係る演算装置に係る属性におけるDSPの個数がX2である場合、生成された、合成リソース情報における演算装置に係る属性のDSPの個数はX1+X2であってよい。
 以上のとおり、リソース情報内の演算装置に係る属性である、セル数等の演算装置の数、ロジックブロックの数、及び/又は、DSPの個数、等のハードマージ時に独立である演算装置に係る能力についても、第1リソース情報と第2リソース情報内の対応する属性は、合算により、合成リソース情報における対応する属性を生成してよい。
 他方、リソース情報内の演算装置に係る属性である、DSPの種類、及び/又は、演算装置の種類、等のハードマージ時に同一性が要求される演算装置に係る能力については、第1リソース情報と第2リソース情報内の対応する属性は、同一である場合に限りソフトマージが可能であり、合成リソース情報における対応する属性として、同一のもの、を生成してよい。
 また、リソース情報内の演算装置に係る属性である、レジスタのビット数、及び/又は、DSPの桁数を表すビット数、等のハードマージ時に高い方の能力で他方をカバー可能な演算装置に係る能力についても、第1リソース情報と第2リソース情報内の対応する属性は、高い数値を、合成リソース情報における対応する属性を生成してよい。
 他方、リソース情報内の演算装置に係る属性である、クロック周波数数、等のハードマージ時に低い能力で安定性を重視すべき演算装置に係る能力についても、第1リソース情報と第2リソース情報内の対応する属性は、低い数値を、合成リソース情報における対応する属性を生成してよい。これは、特に、周波数が異なる計算ノードの場合、低い周波数の計算ノードを高い周波数の計算ノードに調整できない場合があるが、高い周波数の計算ノードを低い周波数の計算ノードに調整することは可能であるためである。なお、一の計算ノードにおいて、複数の周波数がある場合、かかる複数の周波数のなかで、最も小さい周波数が用いられてよい。
 また、上述の態様に代えて、異なる周波数で動作するモジュール間を、FIFOなどで連結するなどの手法により、ソフトマージ及び/又はハードマージ後の計算ノードを、異なる複数の周波数で動作させてもよい。この場合、合成リソース情報は複数の周波数を含んでよい。また、合成リソース情報は、複数の周波数の各々と、各周波数で動作される計算処理を示す情報と、が関連付けられて含まれてよい。
記憶情報のソフトリソースマージ
 合成情報生成部は、第1リソースに係る記憶装置に係る属性と、前記第1リソースに係る記憶装置に係る属性に対応する第2リソースに係る記憶装置に係る属性と、を合計して、リソース情報の記憶装置に係る属性を生成してよい。
 例えば、合成情報生成部は、第1リソースに係る記憶装置に係る属性と、前記第1リソースに係る記憶装置に係る属性に対応する第2リソースに係る記憶装置に係る属性と、を合計して、リソース情報の記憶装置に係る属性を生成してよい。例えば、第1リソースに係る記憶装置に係る属性における内部メモリ数がX1であり、第2リソースに係る記憶装置に係る属性における内部メモリ数がX2である場合、生成された、合成リソース情報における記憶装置に係る属性の内部メモリ数はX1+X2であってよい。
 そのほかの例として、例えば、第1リソースに係る記憶装置に係る属性における外部メモリについての外部メモリへの共有チャネル数がEC1数であって外部メモリへの専用チャネル数がED1数であり、第2リソースに係る記憶装置に係る属性における外部メモリについての外部メモリへの共有チャネル数がEC2数であって外部メモリへの専用チャネル数がED2数である場合、生成された、合成リソース情報における記憶装置に係る属性における外部メモリについての共有チャネル数はEC1又はEC2のうちの数が大きい方(1でもよい)であり、外部メモリへの専用チャネル数はED1+ED2であってよい。これは、外部メモリにおいて共有チャネルは、記憶メモリへのアクセスに遅延が生じてもよく(レイテンシーが遅くてもよい)という場合にも利用できるものであり、EC1又はEC2のうちの数が大きい方の数のチャネル数があれば、対応できるためである。なお、外部メモリへの共有チャネル数はEC1又はEC2のうちの数が大きい方よりも、大きくてもよい。例えば、所定の数のバッファを追加で設けてもよい。この場合、所定の数のバッファ分、余裕をもってチャネル数を提供できる利点がある。他方、専用チャネルは、レイテンシーにセンシティブであって、遅延が好ましくない場合に利用されることから、ソフトマージ後においても、各チャネルを別に用意することが好ましく、チャネル数をED1+ED2とするものである。
 また、リソース情報内の記憶装置に係る属性である、記憶装置の種類について、第1リソース情報内の記憶装置の種類が種類Aであり、第2リソース情報内の記憶装置の種類が種類Bである場合においてソフトマージの処理が試みられる場合において、以下の3つのいずれかの処理がされてよい。また、以下の3つのうちのいずれの処理がされるかは、利用者の情報に基づいて決定されてもよいし、自動的に決定されてもよい。また、利用者の情報又は自動的な決定のいずれにおいても、予め設定された情報に基づいて決定されてもよいし、動的に適用される処理が決定されてもよい。ここで、記憶装置の種類が異なる場合、メモリアクセスの速度が異なってもよいし、同じでもよい。メモリアクセスの速度が異なる場合は、記憶装置の種類が異なるものとして扱ってよい。
 1)種類Aと種類Bとが同一である場合に限りソフトマージを行い、種類Aと種類Bとが異なる場合は、ソフトマージをしない。種類Aと種類Bとが同一であってソフトマージをする場合、合成リソース情報における対応する記憶装置の種類は、同一のA(B)であってよい。
 2)種類Aと種類Bとが同一の場合も異なる場合もソフトマージを行う。種類Aと種類Bとが同一である場合、合成リソース情報における対応する記憶装置の種類は、同一のA(B)であってよい。種類Aと種類Bとが異なる場合、合成リソース情報における対応する記憶装置の種類は、種類Aと種類Bの両方であってよい。
 3)種類Aと種類Bとが同一の場合も異なる場合もソフトマージを行う。種類Aと種類Bとが同一である場合、合成リソース情報における対応する記憶装置の種類は、同一のA(B)であってよい。種類Aと種類Bとが異なる場合、合成リソース情報における対応する記憶装置の種類は、種類Aと種類Bのうちのメモリアクセス速度が速い種類であってよい。例えば、記憶装置の種類が、DDR4、DDR5、HBM2などがある場合、合成リソース情報における記憶装置の種類は、HBM2であってよい。
通信情報のソフトリソースマージ
 合成情報生成部は、第1リソースに係る通信装置に係る属性と、前記第1リソースに係る通信装置に係る属性に対応する第2リソースに係る通信装置に係る属性と、をソフトマージする場合、第1リソースと、第2リソース、との関係に応じて、合成リソース情報の通信装置に係る属性を生成してよい。
 ここで、本願書類において、第1計算ノードと第2計算ノードの関係が、第1計算ノードの全ての出力が第2計算ノードの入力になる場合、「出力直列関係」と称することがある。この場合、第2計算ノードの入力のうち、第1計算ノードの出力でないものがあってもよいし、なくてもよい。
 また、本願書類において、第1計算ノードと第2計算ノードの関係が、第1計算ノードの出力が第2計算ノードの全ての入力になる場合、「入力直列関係」と称することがある。この場合、第1計算ノードの出力が第2計算ノードの入力にならなくてもよいし、なってもよい。
 また、本願書類において、第1計算ノードと第2計算ノードの関係が、第1計算ノードの全ての出力が第2計算ノードの全ての入力になる場合、「入出力直列関係」と称することがある。
 なお、本願書類において、出力直列関係、入力直列関係、入出力直列関係、の上位概念として「直列関係」と称することもある。第1計算ノードと第2計算ノードが直列関係の場合、第1計算ノードと第2計算ノードをハードマージできれば第1計算ノードと第2計算ノード間の入出力情報に接続関係があるため、かかる入出力に係るオーバーヘッドを減少できる利点がある。
 ここで、第1計算ノードと第2計算ノードに接続関係があるとは、第1計算ノードの出力が、他の演算処理がされずに、直接、第2計算ノードの入力となる関係であってよい。
 また、本願書類において、第1計算ノードの出力の少なくとも一部が第2計算ノードの入力ではない場合、及び/又は、第2計算ノードの入力の少なくとも一部が、第1計算ノードの出力ではない場合、「並列関係」と称することもある。
 なお、計算ノード間に係る、直列関係、並列関係、などの接続関係の有無及び/又は態様は、リソース情報と同様に用意されてよい。例えば、接続関係の有無及び/又は態様は、プログラマーがコーディング時に用意して作成したものが記憶されていて利用されてもよいし、プログラマーがコーディング時に作成しなくとも対象HDLプログラム間のデータフロー分析などの技術に基づいて生成されて利用されてもよい。
 合成情報生成部は、第1計算ノードと第2計算ノードが、入力直列関係又は入出力直列関係の場合、第2リソース情報の出力情報を、合成リソース情報の出力情報としてよい。
 例えば、計算ノード1の入力が10GBPS、出力が20GBPSであり、計算ノード2の入力が20GBPS、出力が30GBPSであるとする。この場合、合成リソース情報の出力情報は30GBPSを含んでよい。
 合成情報生成部は、第1計算ノードと第2計算ノードが、入力直列関係ではなく、かつ、入出力直列関係ではない場合、第1リソース情報の出力情報のうち第2リソース情報の入力情報ではない出力情報、及び、第2リソース情報の出力情報、の合計を、合成リソース情報の出力情報としてよい。
 例えば、計算ノード1の入力が10GBPS、出力が20GBPSであり、計算ノード2の入力が20GBPS、出力が30GBPSであるとする。合成リソース情報の出力情報は、第1リソース情報の出力情報(20GBPS)のうち第2リソース情報の入力情報ではない出力情報(10GBPS)と第2リソース情報の出力情報(30GBPS)との合計である40GBPSを含んでよい。
 合成情報生成部は、第1計算ノードと第2計算ノードが、出力直列関係又は入出力直列関係の場合、第1リソース情報の入力情報を、合成リソース情報の入力情報としてよい。
 例えば、計算ノード1の入力が10GBPS、出力が20GBPSであり、計算ノード2の入力が20GBPS、出力が30GBPSであるとする。この場合、合成リソース情報の入力情報は、10BPSを含んでよい。
 合成情報生成部は、第1計算ノードと第2計算ノードが、出力直列関係ではなく、かつ、入出力直列関係ではない場合、第1リソース情報の入力情報、及び、第2リソース情報の入力情報のうち第1リソース情報の出力情報と接続されていない入力情報、の合計を、合成リソース情報の入力情報としてよい。
 例えば、計算ノード1の入力が10GBPS、出力が20GBPSであり、計算ノード2の入力が20GBPS、出力が30GBPSであるとする。合成リソース情報の入力情報は、第1リソース情報の入力情報(10BPS)、及び、第2リソース情報の入力情報(20GBPS)のうち第1リソース情報の出力情報と接続されていない入力情報(10GBPS)、との合計である20GBPSを含んでよい。
 以上の例においては、GBPSを例として説明したが、他の単位であってもよい。例えば、BPSなどの他の速度単位で計算がされてもよいし、各演算における周波数に対応するビット数において計算がされてもよい。特に、上述のような各計算ノードにおいて要求される又は希望される通信速度(例えば、GBPSの単位の通信速度)が、プログラマーによって指定されて情報として与えられている場合、各計算ノードにおける周波数から、通信ビット数を計算できることから、上述のとおり、ソフトマージにおいて周波数が変更される場合も対応して、(例えば、通信速度を周波数で除算することにより通信ビット数を算出できることから)変更後の周波数に対応した通信ビット数が利用されてもよい。
 入力情報、及び、出力情報は、各々、入力、及び、出力、における通信ビット数情報及び/又は通信速度を含んでよい。
ソフトマージに利用されうる情報の生成
 合成情報生成部は、ソフトマージに利用されうる情報を生成する機能を有してよい。例えば、合成情報生成部は、ソフトマージに利用されうる情報として、記憶機能に関連する情報としては、外部メモリマッピングテーブル、及び/又は、外部ストレージマッピングテーブルを生成してよい。また、合成情報生成部は、ソフトマージに利用されうる情報として、通信機能に関連する情報としては、例えば、通信ビット数と通信速度を指定する情報を生成してよい。また、合成情報生成部は、ソフトマージに利用されうる情報として、演算機能に関連する情報としては、例えば、異なる周波数のモジュール間のデータの移動のFIFOなどの機能を備えるモジュール(異周波数間通信モジュール、ということもある)を生成してよい。
 ソフトマージは、複数の対象HDLプログラムをコンパイルすることによっておこなわれる。たとえば、ここでは、計算ノード1のHDLプログラム1、計算ノード2のHDLプログラム2をコンパイルする例を考える。
 プログラマーは、計算ノード1のHDLプログラム1のために、HDLプログラム1が利用する外部メモリマッピングテーブル1、外部ストレージマッピングテーブル1、及び、外部通信情報1、を作成してよい。また、プログラマーは、計算ノード2のHDLプログラム2のために、HDLプログラム2が利用する外部メモリマッピングテーブル2、外部ストレージマッピングテーブル2、及び外部通信情報2、を作成していてよい。
 上記の例において、合成情報生成部は、外部メモリマッピングテーブル1及び外部メモリマッピングテーブル2から、合成外部メモリマッピングテーブルを作成してよい。
 例えば、外部メモリマッピングテーブル1がアドレス空間として、1~100を利用し、外部メモリマッピングテーブル2がアドレス空間として1~100を利用する場合、合成外部メモリマッピングテーブルは1~200を利用するようテーブルを生成してよい。ここでテーブル例は1例であって、他のマッピングテーブルの合成の技術が利用されてもよい。
 同様に、上記の例において、合成情報生成部は、外部ストレージマッピングテーブル1及び外部ストレージマッピングテーブル2から、合成外部ストレージマッピングテーブルを作成してよい。
 同様に、上記の例において、合成情報生成部は、外部通信情報1及び外部通信情報2から、合成通信情報モジュールを生成してよい。外部通信情報1は、HDLプログラム1が、外部と通信する場合の、通信のビット幅と、周波数情報と、を含んでよい。
 また、合成情報生成部は、第1計算ノードと第2計算ノードが出力直列関係の場合、第2計算ノードに係るリソース情報の出力情報に基づく外部通信モジュールを生成してよい。
 また、合成情報生成部は、第1計算ノードと第2計算ノードが出力直列関係でない場合、第1計算ノードに係る第1リソース情報の第1出力情報と、第2計算ノードに係る第2リソース情報の第2出力情報を、合成する外部通信モジュールを生成してよい。
 合成する外部通信モジュールは、第1計算ノードと第2計算ノードとが単独で外部と通信する場合のレイテンシーを減少させずに、出力するようなモジュールであってよい。
 例えば、外部通信モジュールは、HDLプログラム1外部出力のビット数と、HDLプログラム2の出力のビット数と、の合計のビット数を備えた、HDLプログラム1外部出力のパケットを少なくとも一単位分格納可能なバッファ1と、HDLプログラム2の外部出力のパケットを少なくとも一単位分格納可能なバッファ2と、を備え、バッファ1と2とを交互に確認して、少なくともパケット一単位分格納したバッファについて、外部に出力する動作を、行えるものであってよい。
 ここで、パケットの一単位は、例えば、リコンフィギュラブルデバイスが他のリコンフィギュラブルデバイスや情報処理装置とイーサネットを通じて通信する場合には、イーサネットの通信における一単位のパケットであってよい。
 以上の、合成通信情報モジュール、合成外部メモリマッピングテーブル、合成外部ストレージマッピングテーブル、及び/又は、異周波数間通信モジュールは、一例のシステム外のコンパイル機能によって利用されてよい。例えば、コンパイル関数は、第1計算ノードに係るHDLプログラム1、第2計算ノードに係るHDLプログラム2、合成通信情報モジュール、合成外部メモリマッピングテーブル、合成外部ストレージマッピングテーブル、及び/又は、異周波数間通信モジュール、を利用して、これらを実現するビットストリームを生成してよい。
ステップ3
 特定部は、複数の計算ノードが合成された場合における合成された計算ノードを、実行可能なハードウェア資源を特定してよい。
 特定部は、判定部、及び、選定部、を含んでよい。特定する処理は、判定する処理、及び/又は、選定する処理、を含んでよい。特定部は、選定部を含まなくてもよい。例えば、最初に後述の実行可能であるとされたハードウェア資源を利用してもよい。
 判定部は、ソフトマージされた合成リソース情報と、RFD-RDB内のリソース情報と、を比較して、かかるRFD-RDB内のリソース情報に対応するハードウェア資源が、ソフトマージされた合成リソース情報に対応するハードマージされた計算ノードを実行可能であるかどうかを判定してよい。
 判定部は、ソフトマージされたリソース情報内の少なくとも一の属性と、RFD-RDB内の特定の一のハードウェア資源における前記ソフトマージされたリソース情報内の対応する属性と、を比較して、後者が前者を実行可能であるかどうかを判定してよい。
 ここで、一の属性が演算装置に係る情報(又はその下位概念の情報)であれば、かかる対応する属性は演算装置に係る情報(又は対応するその下位概念の情報)でよい。また、一の属性が記憶装置に係る情報(又はその下位概念の情報)であれば、かかる対応する属性は記憶装置に係る情報(又は対応するその下位概念の情報)でよい。一の属性が通信装置に係る情報(又はその下位概念の情報)であれば、かかる対応する属性は通信装置に係る情報(又は対応するその下位概念の情報)でよい。
 また、判定部は、ソフトマージされたリソース情報内の一の属性と比較して、ハードウェア資源における前記一の属性に対応する属性の能力が、高い場合に実行可能であり、低い場合に実行可能でない、と判定してよい。
 より具体的には、判定部は、例えば、一の属性がロジックブロック数であれば、かかる対応する属性であるロジックブロック数について、後者が前者よりも高い数値の場合に、実効可能であると判定してよい。
 同様に、判定部は、例えば、一の属性がDSPの個数、レジスタのビット数、DSPの桁数であれば、各々、かかる対応する属性であるDSPの個数、レジスタのビット数、DSPの桁数について、各々、後者が前者よりも高い数値の場合に、実効可能であると判定してよい。
 他方、判定部は、一の属性がクロック周波数であれば、対応する属性であるクロック周波数について、後者が前者よりも低い数値の場合に、実行可能であると判定してよい。
 また、判定部は、例えば、一の属性が、内部メモリ数、外部メモリへの共有チャネル数、又は、外部メモリへの専用チャネル数、であれば、各々、対応する属性である内部メモリ数、外部メモリへの共有チャネル数、又は、外部メモリへの専用チャネル数について、後者が前者よりも高い数値の場合に、実行可能であると判定してよい。
 また、判定部は、例えば、一及び対応する属性が、記憶装置の種類であれば、予め定められた情報又は動的に適用される処理に基づいて判定してよい。
 また、判定部は、例えば、一の属性が、通信速度又は通信ビット数、であれば、各々、対応する属性である通信速度又は通信ビット数について、後者が前者よりも高い数値の場合に、実効可能であると判定してよい。
 また、判定部は、ソフトリソースマージされたリソース情報内の全ての属性について、RFD-RDB内の特定の一のハードウェア資源における前記ソフトマージされたリソース情報内の各対応する属性と、を比較して、全ての属性について、後者が前者を実行可能であるかどうかを判定してよく、全ての属性について実行可能である場合に、ソフトマージされた計算ノードが、RFD-RDB内の特定の一のハードウェア資源において実行可能であると判定してよい。
 また、判定部は、ソフトリソースマージされたリソース情報内の少なくとも一の属性について、RFD-RDB内の特定の一のハードウェア資源における前記一の属性に対応する属性と、を比較して、後者が前者を実行可能でない場合、前記ソフトリソースマージされたリソース情報に対応する計算ノードは、前記特定の一のハードウェア資源によって実行できないと判定してよい。この場合、判定部は、ソフトリソースマージされたリソース情報内の前記一の属性以外の他の一又は複数の属性について、比較しなくてもよい。
<判定部>
 また、具体的な処理の一例としては、例えば、次の処理によって、判定をしてよい。
ステップ311
 一例のシステムは、ソフトマージされたリソース情報内の少なくとも一の属性を取得する。ここで、一例のシステムは、かかる一の属性を、HDL-RDBにアクセスして、取得してもよい。
ステップ312
 一例のシステムは、RFD-RDB内の特定の一のハードウェア資源における前記ソフトマージされたリソース情報内の対応する属性を取得する。
ステップ313
 一例のシステムは、前記一のリソース情報と、対応する属性と、を比較して、後者が前者を実行可能であるかどうかを判定する。
 一例のシステムは、上述のステップ311におけるソフトマージされたリソース情報内の他の属性についても、同様に、上述の対応する一のハードウェア資源における属性について、比較及び判定してよい。
 一例のシステムは、上述のステップ311におけるソフトマージされたリソース情報内の全ての属性について、同様に、上述の対応する一のハードウェア資源における属性について、比較及び判定し、ソフトマージされたリソース情報内の全ての属性について実行可能であると判定した場合にのみ、前記対応する一のハードウェア資源が、ソフトマージされたリソース情報に基づく合成された計算ノードを実行可能であると判定してよい。
 一例のシステムは、他の情報処理装置によって生成された、ソフトリソースマージされた計算ノードに係るリソース情報と、一のハードウェア資源に係るリソース情報と、を比較及び判定してよい。
<選定部>
 選定部は、実行可能なハードウェア資源の中から、効率の良いハードウェア資源を選定する機能を有してよい。
ステップ321
 一例のシステムは、ソフトマージされたリソース情報内の少なくとも一の属性を取得する。ここで、一例のシステムは、かかる一の属性を、HDL-RDBにアクセスして、取得してもよい。
ステップ322
 一例のシステムは、RFD-RDB内の特定の一のハードウェア資源における前記ソフトマージされたリソース情報内の対応する属性を取得する。
ステップ323
 一例のシステムは、前記一のリソース情報と、対応する属性と、に基づいて、利用情報を生成する。
 なお、上述においては、判定部の処理と選定部の処理を区別して独立に処理される手法を説明したが、これらはまとめて処理されてもよい。例えば、一例のシステムが、ステップ313において、ステップ323を実行し、比較された、前記一のリソース情報と、対応する属性と、に関連付けて、これらに対する利用情報を記憶してもよい。
 利用情報は、ソフトリソースマージされたリソース情報内の少なくとも一の属性と、RFD-RDB内の特定の一のハードウェア資源における前記ソフトリソースマージされたリソース情報内の対応する属性と、の関係を示す情報であってよい、又は、かかる関係を示す情報を含んでよい。
 例えば、一の属性がロジックブロック数であれば、利用情報は、一の属性に係るロジックブロック数と対応するロジックブロック数との関係を示す情報である、又は、かかる関係を示す情報を含んでよい。例えば、一の属性に係るロジックブロック数が75であり、対応するロジックブロック数が100であれば、利用情報は、ハードウェア資源を利用する割合として、一の属性を対応する属性で除した割合である、3/4であってよい。また、利用情報は、一の属性を対応する属性で除した割合を1から減じた率であってもよく、この場合は1-3/4=1/4であってもよい。
 同様に、一の属性が、DSPの個数、レジスタのビット数、DSPの桁数、クロック周波数であれば、利用情報は、これらの値と、対応する属性の値と、の関係を示す情報である、又は、かかる関係を示す情報を含んでよい。
 同様に、一の属性が、の属性が、内部メモリ数、外部メモリへの共有チャネル数、又は、外部メモリへの専用チャネル数、であれば、利用情報は、これらの値と、対応する属性の値と、の関係を示す情報である、又は、かかる関係を示す情報を含んでよい。
 また、利用情報は、ソフトリソースマージされたリソース情報と、RFD-RDB内の特定の一のハードウェア資源におけるリソース情報と、の関係を示す情報であってよい、又は、かかる関係を示す情報を含んでよい。
 また、一例のシステムは、ソフトリソースマージされたリソース情報内の各属性と、RFD-RDB内の特定の一のハードウェア資源における前記ソフトマージされたリソース情報内の対応する各属性と、に基づく各関係を示す情報を用いて、利用情報を生成してもよい。例えば、ソフトマージされたリソース情報内に、ロジックブロック数、DSPの個数、内部メモリ数、外部メモリチャネル数、がある場合において、特定されたハードウェア資源における対応するリソース情報に基づいて、各属性の値が、ロジックブロック数についてα、DSPの個数についてβ、内部メモリ数についてγ、外部メモリチャネル数についてΔである場合に、利用情報は、関数fを用いた、f(α、β、γ、Δ)の計算式(すなわち、関数fに対し、引数α、β、γ、Δが適用される)によって生成される数である、又は、かかる数が含まれてよい。かかる計算式は、重み係数付き演算式であってもよい。
ステップ324
 選定部は、利用情報に基づいて、実行可能なハードウェア資源の中から、効率の良いハードウェア資源を選定してよい。
 例えば、選定部は、ソフトリソースマージされたリソース情報について、各RFD-RDB内の特定の一のハードウェア資源に対する、複数の利用情報の中から、他のものに比べて、効率が高い利用情報に対する特定の一のハードウェア資源を選定してよい。効率が高い利用情報は、効率が最も高い利用情報であってもよい。効率が高い利用情報とは、ハードウェア資源の利用効率が他のものに比べて高いものであってよく、例えば、利用情報におけるハードウェア資源を利用する割合が他のものに比べて高いもの、又は、利用情報において1からハードウェア資源を利用する割合を減算したものが他のものに比べて低いもの、であってよい。なお、ハードウェア資源の使用効率が極端に高い場合(例えば95%以上など)、コンパイルの実行時間が長期化したり、コンパイルが失敗する場合もあるため、利用効率が極端に高いことがないようにしてもよい。例えば、利用効率は、30%~95%、45%~90%、60%~85%、又は、70~80%などであってよい。また、利用効率は、95%未満、~90%未満、~85%未満、又は、~80%未満などであってよい。
 また、例えば、特定のソフトマージされたリソース情報について、RFD-RDB内のあるハードウェア資源αに対する利用情報αα、RFD-RDB内のあるハードウェア資源βに対する利用情報ββ、RFD-RDB内のあるハードウェア資源γに対する利用情報γγ、であって、αα、ββ、γγのうち、ααが最も利用効率が高いことを示す利用情報である場合、選定部は、ハードウェア資源αを選定してよい。
 一例のシステムは、他の情報処理装置によって生成された、ソフトリソースマージされた計算ノードに係るリソース情報と、一のハードウェア資源に係るリソース情報と、の関係に基づいた利用情報を用いて、ハードウェア資源を選定してよい。
 なお、選定部は、上述の利用情報のみに基づいて選定してもよいし、利用情報以外の他の要素情報と合わせて選定してもよい。他の要素情報は、例えば、ユーザに係る情報、及び/又は、ユーザの利用するハードウェア資源に係る情報、などを用いて自動的又はユーザによる選定指示を受けて実行されてよい。自動的に行う場合は、予め設定された優先順位に沿って選択されてよい。ユーザによる選定指示を受ける場合は、ユーザに対してユーザが選定可能な一又は複数の候補を表示し、ユーザによる選定指示に対応するものに沿って選択されてよい。
 また、ユーザに係る情報は、ユーザの会員に係る情報、及び/又は、ユーザの会員期間に係る情報、などを用いてよい。
 ユーザの会員期間に係る情報を用いた例としては、例えば、一例のシステムは、ユーザの会員期間の長さを用いて、ハードウェア資源を特定してもよい。例えば、一例のシステムは、ユーザの会員期間の残存期間の長さが所定の期間以上である場合、長期利用予定用のハードウェア資源の一を割り当てる処理をしてもよい。この場合、一例のシステムの管理者が、ハードウェア資源のメインテナンスを効率的に遂行できる利点がある。また、例えば、一例のシステムは、ユーザの会員期間の残存期間の長さとハードウェアの交換予定スケジュールとを用いて、ハードウェア資源を特定してもよい。例えば、一例のシステムは、ユーザの会員期間の残存期間の長さが所定の期間以上である場合、ハードウェア資源の交換時期まで所定の期間以下のものは割り当てないようにしてもよい。また、一例のシステムは、ユーザの会員期間の残存期間の長さが第1所定の期間である場合、ハードウェア資源の次の交換時期まで前記第1所定の期間以上あるハードウェア資源を対象として、ハードウェア資源を決定してよい。このような場合、ユーザの会員期間の延長がない場合には、ハードウェア資源のメインテナンスを効率的に遂行できる利点がある。なお、会員期間に係る情報は、ハードウェア資源を利用可能な残存期間、及び/又は、ユーザが一例のシステムの会員に入会した時期からの合計又は継続期間、などを含んでよい。
 また、ユーザの会員に係る情報は、会員のコース又は地位に係る情報を含んでよい。例えば、一例のシステムは、ユーザの会員のコースが所定のものである場合及び/又は会員の地位が所定のものである場合、所定のハードウェア資源の一を割り当てる処理をしてもよい。かかる所定のハードウェア資源は、他のハードウェア資源と比較して、ハードウェア資源の安定性や堅牢性が高いものであってよい。この場合、ユーザが特定の会員又は所定のコースになっている場合、より質の高いハードウェア資源を利用できる利点がある。なお、会員のコース又は地位に係る情報は、ユーザが一例のシステムを利用するにあたって選択したものであってよい。例えば、ある分量のリソース情報を利用するという趣旨の契約によって得られるものであってもよい。
 また、ユーザの利用するハードウェア資源に係る情報は、ユーザが上述の選択時に利用中の一又は複数のハードウェア資源を含んでよい。例えば、一例のシステムは、ユーザが選択したリソース情報に合致する現実のハードウェア資源のうち、ユーザが現在利用中の1)一又は複数のハードウェア資源が含まれるFPGAと同一のFPGA内のハードウェア資源、2)ユーザが現在利用中の一又は複数のハードウェア資源と同一のローカルエリアネットワーク内若しくはバス内のハードウェア資源、及び/又は、3)ユーザが現在利用中の一又は複数のハードウェア資源と距離が短いもの、を含んでよい。
 上述の1)の場合、同一のFPGA内であるため、ユーザが同一又は関連するアプリケーションに利用するハードウェア資源として同一のFPGA内のハードウェア資源を利用することで、より効率的な通信を実現するハードウェア資源の提供を支援できる利点がある。
 上述の2)の場合、前者の同一のローカルエリアネットワーク又はバスにおいても、同様に、同一のネットワーク内又はバス内であるため、より効率的な通信を実現するハードウェア資源の提供を支援できる利点がある。なお、ローカルエリアネットワーク又はバスの同一性は、ネットワークを超えた通信を行うための処理を削減できるようなものであればよく、どのような階層であってもよい。
 また、上述の2)は、仮想的なローカルネットワークであってもよい。この場合、物理的には距離が所定の距離より近いとは限らず情報の通信に係る距離も所定の距離より短いとは限らないものの、セキュリティが高い利点がある。
 また、上述の3)の場合、距離は、上述の、物理的な距離であってもよいし、情報の通信に係る距離であってもよい。ユーザが選択したリソース情報に合致する現実のハードウェア資源のうち、ユーザが現在利用中の一又は複数のハードウェア資源と距離が短いもの、が選択されることにより、他のものに比べて、より効率的な通信を実現するハードウェア資源の提供を支援できる利点がある。
 なお、選定部は、上述の選定の条件として利用する、利用情報、ユーザに係る情報、及び/又は、ユーザの利用するハードウェア資源に係る情報、などを用いて自動的又はユーザによる選定指示を受けて実行されてよい。自動的に行う場合は、予め設定された選定基準を用いて選択されてよい。ユーザによる選定指示を受ける場合は、ユーザに対してユーザが選定可能な一又は複数の候補を表示し、ユーザによる選定指示に対応するものに沿って選択されてよい。ユーザによる選定指示を受ける場合、一例のシステムは、選定の対象となる、ハードウェア資源についての情報を、ユーザに対して提示してよい。例えば、一例のシステムの一部又は一例のシステムと接続された一例のシステム外、の表示装置に、ハードウェア資源についての情報を表示してよい。ここで、ハードウェア資源についての情報は、ハードウェア資源についてのリソース情報、利用情報、ユーザに係る情報、及び/又は、ユーザの利用するハードウェア資源に係る情報、を含んでよい。これらの表示により、利用者は、選定されるハードウェア資源についての情報を理解しつつ、選定できる利点がある。
ステップ4
 一例のシステムは、合成される複数の計算ノードを、上述のソフトマージに利用される情報と共に、選定されたハードウェア資源に書き込み可能なように、コンパイルし、又は、コンパイルさせ、ビットストリームを生成してよい。
ステップ5
 一例のシステムは、コンパイル後のビットストリームを、特定されたハードウェア資源に対して書き込んでよい。
ステップ6
 一例のシステムは、書き込みに成功した場合、書き込みに成功したリソース情報を、データベースに登録してよい。
 また、一例のシステムは、書き込みに成功したリソース情報についての情報を、ユーザにフィードバックしてよい。ユーザにフィードバックする態様は種々のものであってよい。例えば、書き込みに成功したリソース情報についての情報を、表示装置上に表示したり、ユーザに対してメールしたり、ユーザがアクセス可能なユーザの所定の場所に記憶してよい。
 一例のリコンフィギュラブルデバイスは、ソフトリソースマージされた合成リソース情報が使用されて特定されたものであってよい。かかるリコンフィギュラブルデバイスは、計算ノード間のオーバーヘッドを減少して処理ができる可能性がある利点がある。
 一例のリコンフィギュラブルデバイスは、ソフトリソースマージされた合成リソース情報が使用されて計算ノードが書き込まれたものであってよい。かかるリコンフィギュラブルデバイスは、計算ノード間のオーバーヘッドを減少して処理ができる可能性がある利点がある。
 一例のリコンフィギュラブルデバイスは、ソフトリソースマージされた合成リソース情報が使用されて特定され、かつ、ソフトリソースマージされた合成リソース情報が使用されて計算ノードが書き込まれたものであってよい。かかるリコンフィギュラブルデバイスは、計算ノード間のオーバーヘッドを減少して処理ができる可能性がある利点がある。
3.実施形態2
 実施形態2に係る本例のシステムは、2以上のN数(Nは自然数)の計算ノード又はそれらに対応する対象HDLプログラムから、M数(MはNより小さい自然数)の計算ノードに対応するソフトマージされる対象を特定する技術である。ソフトマージされる計算ノードの一部又は全部は、自動的に決定されてよい。
 計算ノードが多数ある場合、利用者は、どの計算ノードを合成すればよいか、迷うことがある。特に、複数の(多数の)計算ノードを合成して一のハードウェア資源内に書き込むことができれば、それらの多数の計算ノード間のオーバーヘッドは減らせる可能性はある一方、もし一のハードウェア資源に書き込まれた複数の(多数の)計算ノード間に入出力の関係がない又は少ない場合には、オーバーヘッドの減少が効果的になされない場合もある。また、複数の(多数の)計算ノードをソフトマージしようとしても、ソフトマージされた対象HDLプログラムをコンパイルして書き込めるほどのリソースを備えたハードウェア資源が現実にない場合もある(例えば、合成された計算ノードを書き込むためのハードウェア資源が、一のリコンフィギュラブルデバイスのリソース量を超える場合など)。そのため、どのように、ソフトマージされる計算ノードを選定するか、という課題に本願発明者は着目した。
 以下では、計算ノードを複数含む計算ノード群(ここでは、一又は複数の計算ノードを含む計算ノードの集合を、計算ノード群、ということがある。)を対象として、ソフトマージされる計算ノードを選定する技術の一例を説明する。
 以下、一例のシステムにおける一例の処理動作を、図7を用いて説明する。
ステップ211
 計算ノード群Aに対して、計算ノード群Aに含まれる一部または全部の計算ノード間の入出力データフローを解析し、計算ノード群Aに含まれる一部または全部の計算ノード間の各データフロー列の長さを算出する(ステップ701)。データフロー列の長さは、計算ノード群Aのデータフロー列の集合族の一部または全部に対して、計算されてよい。データフロー列の長さは、データフロー列に含まれる計算ノードの数であってよい。データフロー列の長さは、データフロー列に含まれる、ループではないもっとも長いデータフロー列の計算ノードの数であってよい。
 図6は、計算ノードと、計算ノード間の入出力経路に基づくデータフロー列を示したものである。計算ノード601乃至607があり、計算ノード間の矢印の方向は一の計算ノードから他の計算ノードへの入出力関係を示す。例えば、計算ノード601から計算ノード603への矢印は、計算ノード601の出力が、計算ノード603に入ることを示す。計算ノード603は、計算ノード601と602から矢印を受けているため、計算ノード601の出力と計算ノード602の出力との両方が計算ノード603の入力になることを示している。また、計算ノード604からの矢印は計算ノード605と607に向けているため、計算ノード604の出力が計算ノード605の入力及び607の入力になっていることを示す。本図において、計算ノード601、603乃至606から構成されるデータフロー列610Aに含まれる計算ノードの数は5となり、計算ノード間の入出力経路の数は4となる。また、計算ノード602、603、604、607から構成されるデータフロー列610Bに含まれる計算ノードの数は4となり、また計算ノード間の入出力経路の数は3となる。データフロー列の長さは、上述のデータフロー列に含まれる計算ノードの数又はデータフロー列に含まれる入出力経路の数であってよい。このように、例えば、一のデータフロー列が、N1、N2、N3、N4、N5、という計算ノードがこの順によって構成されている場合、計算されるデータフロー列の長さは、N1-N2-N3-N4-N5、N1-N2-N3-N4、N2-N3-N4-N5、N1-N2-N3、N3-N4-N5、N2-N3-N4、などのようなデータフロー列についての長さであってよい。ただし、データフロー列の並び順は、飛び越えるものでなくてよい(例えば、N1-N2-N4-N5のように途中がない場合は対象としなくてよい。なぜなら、計算処理上、N3の計算ノードは、N2とN4の間に必要であるためである。)。
ステップ212
 計算ノード群A内において、第1データフロー列の長さより、長さが長い第2データフロー列を特定する(ステップ701)。
 例えば、本図においては、データフロー列610Bより、データフロー列610Aは長いため、データフロー列610Aを特定する。ここで、一例のシステムは、計算ノード群A内で、最もデータフロー列の長さが長いデータフローを見つけてもよい。
ステップ213
 一例のシステムは、第2データフロー列に含まれる計算ノードを、マージの対象として決定してよい(ステップ701)。
 このように、一例のシステムが、データフロー列の長さが長い計算ノード群に対してソフトマージを行う場合、複数の計算ノード(各異なるリコンフィギュラブルデバイス又は各子となるPRリージョンに書き込まれるものである)間の入出力に伴うオーバーヘッド(リコンフィギュラブルデバイス又はPRリージョンとリコンフィギュラブルデバイス又はPRリージョンとの間の通信のオーバーヘッド)を減少できる技術上の利点がある。
 以上の処理は一例であって、一例のシステムは異なる種々の技術によって、計算ノード群内においてソフトマージする対象となる計算ノード群を一部又は全部を自動的に特定してよい。一例のシステムは、種々の技術によって、計算ノード群内のデータフロー列の長さを利用して、ソフトマージする対象となる計算ノード群を一部又は全部を自動的に特定してよい。一例のシステムは、種々の技術によって、計算ノード群内のデータフロー列Aの長さが計算ノード群内のデータフロー列Bの長さよりも長いことを利用して、ソフトマージする対象となる計算ノード群を一部又は全部を自動的に特定してよい。
 一例のシステムは、複数の計算ノードから構成される計算ノード群Aに対し、前記計算ノード群A内における第1計算ノード群の入出力経路の第1長さ、及び、前記計算ノード群A内における第2計算ノード群の入出力経路の第2長さ、を特定する特定部と、
 前記第1長さ及び前記第2長さに基づき、前記第1計算ノード群、又は、前記第2計算ノード群、をマージの対象として決定する決定部と、
を含むシステムであってよい。
 なお、本願書類において、複数の計算ノードをマージの対象として決定することは、前記複数の計算ノードをソフトリソースマージの対象として決定すること、前記複数の計算ノードをソフトマージの対象として決定すること、及び/又は、前記複数の計算ノードをハードマージの対象として決定すること、を含んでよい。
 また、一の計算ノードは、一又は複数の対象HDLプログラムの上位概念であってよい。
 計算ノード群の入出力経路の長さは、前記計算ノード群における各計算ノード間のループのない入出力経路上の計算ノードの個数のうち、最も多いものであってよい。
 計算ノード群の入出力経路の長さは、計算ノード群の計算ノード間の入出力分析(データフロー分析)に基づく入出力経路のうち、ループのない入出力経路における最も長い入出力経路であってよい。
 また、計算ノード群の入出力経路の長さは、グラフ理論を用いて考えると、計算ノード群における各計算ノードを有向グラフの頂点、計算ノード間の入出力関係を有向グラフの辺、に対応付けた場合における、有向グラフの道(各頂点を高々1度のみ通るもの)内の頂点のうちの最大の数に対応してよい。
 次の例においては、一例のシステムが、計算ノード群内の一部又は全部のデータフロー列についてのリソース情報を計算した上で、ハードマージする対象となる計算ノード群を説明する。
 また、一例のシステムは、データフロー列の長さに加えて、計算ノード間の帯域の情報を利用して、ソフトマージする対象となる計算ノード群を特定してよい。
 これは、例えば、計算ノード1と2の帯域が1GBPSである場合において計算ノード1と2をソフトマージする場合と、計算ノード1と2の帯域が100GBPSである場合において計算ノード1と2をソフトマージする場合では、前者よりも後者の方が計算ノード間の通信のオーバーヘッドをより低下できる利点がある、という点に着目するものである。この場合、上述のデータフロー列の長さとは、異なる観点によって、通信のオーバーヘッドを低下できる利点がある。
 以下、一例のシステムにおける一例の処理動作を、図8を用いて説明する。
ステップ221
 計算ノード群Aに対して、計算ノード群Aに含まれる一部または全部の計算ノード間の入出力データフローを解析し、各データフロー列内の計算ノード間の帯域を重み付けとして、データフロー列の合計を計算する(ステップ801)。データフロー列については、上記ステップ211で述べたのと同様であってよい。
 図9は、計算ノードと、計算ノード間の入出力経路に基づくデータフロー列、及び各計算ノード間の帯域を示したものである。本図において前図と異なる個所は、計算ノード間の矢印に帯域の情報が付されている点である。これらはデータフロー列をグラフで示した場合における重み付け有向グラフとして示されることができる。
ステップ222
 計算ノード群A内において、第1データフロー列Aの重付けの合計より、重付けの合計が長い第2データフロー列を特定する(ステップ802)。
 例えば、本図においては、データフロー列610Bの重付けの合計の29より、データフロー列610Aの重み付の合計の31は大きいため、データフロー列610Aを特定する。ここで、一例のシステムは、計算ノード群A内で、最もデータフロー列の重付けの合計が大きいデータフローを見つけてもよい。
ステップ223
 一例のシステムは、第2データフロー列に含まれる計算ノードに対し、マージの対象として決定してよい(ステップ803)。
 このように、一例のシステムが、データフロー列の重付けの合計が大きい計算ノード群に対してソフトマージを行う場合、複数の計算ノード(各異なるリコンフィギュラブルデバイス又は各子となるPRリージョンに書き込まれるものである)間の入出力に伴うオーバーヘッド(リコンフィギュラブルデバイス又はPRリージョンとリコンフィギュラブルデバイス又はPRリージョンとの間の通信のオーバーヘッド)を減少できる技術上の利点がある。
 一例のシステムは、第1計算ノード及び第2計算ノードを含む複数の計算ノードから構成される第1計算ノード群から、前記計算ノード群における計算ノード間の入出力経路に係る情報を用いて、前記第1計算ノード群の部分集合である、前記第1計算ノード及び前記第2計算ノードを含む計算ノード群を選定する選定部、を備えてよい。
 前記計算ノード群における計算ノードの間の入出力経路に係る情報は、前記計算ノード群における計算ノード間の入出力経路の長さ、前記計算ノード群における計算ノード間の入出力経路の重付けの情報、及び/又は、前記計算ノード群における計算ノード間の入出力経路の重付けの合計の情報、を含んでよい。
 また、次の一例は、ハードウェア資源の観点で、ソフトマージされる計算ノードを選定する技術に係る。すなわち、ソフトマージされた計算ノードがハードウェア資源に書き込まれるためには、ソフトマージされた計算ノードがハードウェア資源において実行可能である必要がある。ここで、ハードウェア資源の観点から、ハードウェア資源単位に対応するリソース情報内になるように、ソフトマージされる計算ノードを特定することが好ましい。
 以下、一例のシステムにおける一例の処理動作を、図10を用いて説明する。
ステップ231
 一例のシステムは、計算ノード群A内の計算ノードの入出力データフローを解析する(ステップ1001)。
ステップ232
 一例のシステムは、計算ノード群A内の各データフローの長さと関連付けて、各データフローにおいて利用される計算ノードをソフトマージしたリソース情報を格納する(ステップ1002)。例えば、一のデータフロー列が、N1、N2、N3、N4、N5、という計算ノードがこの順によって構成されている場合、N1-N2-N3-N4-N5、N1-N2-N3-N4、N2-N3-N4-N5、N1-N2-N3、N3-N4-N5、N2-N3-N4、などのような各データフロー列を特定する情報と、対応するデータフロー列の長さと、対応するデータフロー列についてのソフトリソースマージをされた場合の合成リソース情報と、を関連付けて記憶した例である。なお、対応するデータフロー列の長さはなくてもよい。合成リソース情報があれば、各データフロー列に対応して必要なハードウェア資源を特定するための情報が分かるためである。なお、かかるデータフロー列の集合族の一部又は全部と関連付けて、それらに対応する合成リソース情報を記憶するデータベースを、データフロー列リソースデータベース(DFL-RDB)ということがある。
 図11は、図6におけるDFL-RDBの一部の一例である(が、かかる構成に限られない)。本図において、ID1は、計算ノード601、603乃至606から構成されるデータフロー列610Aに対応し、ID10は、計算ノード602、603、604、607から構成されるデータフロー列610Bに対応する。データフロー列610A及び610Bは、計算ノード群における他の計算ノード集合(データフロー列の構成を前提とする)も考慮でき、例えば、ID2は計算ノード601、603乃至605から構成されるデータフロー列であり、ID3は計算ノード603乃至606から構成されるデータフロー列である。これらの各データフロー列に対応して、関連付けられて合成リソース情報が、DFL-RDB内に格納されてよい。
ステップ233
 一例のシステムは、DFL-RDB内の各合成リソース情報と、RFD-RDB内の各リソース情報と、を用いて、計算ノードを、マージの対象として決定してよい(ステップ1003)。
 例えば、一例のシステムは、RFD-RDB内の一のハードウェア資源についてのリソース情報によって実行可能な、DFL-RDB内の各合成リソース情報のうちの一の合成リソース情報についてのデータフロー列に係る計算ノードを特定してよい。この場合、RFD-RDB内の一のハードウェア資源によって実行可能な、データフロー列の計算ノードを特定し、かかるデータフロー列内の計算ノードにおける入出力データ間のオーバーヘッドを減少できる利点がある。この場合、RFD-RDB内の一のハードウェア資源についてのリソース情報と、DFL-RDB内の各合成リソース情報のうちの一の合成リソース情報と、の各組み合わせについての比較の計算処理により、上述の実行可能なものを特定してよい。
 特に、一例のシステムは、RFD-RDB内のハードウェア資源の内、一のリコンフィギュラブルデバイスによって実行可能な、DFL-RDB内の各合成リソース情報のうちの一の合成リソース情報についてのデータフロー列に係る計算ノードを特定してよい。この場合、ハードウェア資源として、リコンフィギュラブルデバイスを利用できるため、リコンフィギュラブルデバイス内のハードウェア資源をより効率的に利用できる利点がある。
 また、一例のシステムは、RFD-RDB内のハードウェア資源の内、一のリコンフィギュラブルデバイス内の唯一のPRリージョンによって実行可能な、DFL-RDB内の各合成リソース情報のうちの一の合成リソース情報についてのデータフロー列に係る計算ノードを特定してよい。この場合、コンフィギュラブルデバイス内において複数のPRリージョンが設定されていないため、複数のPRリージョンについての処理のオーバーヘッドを削減でき、より効果的にハードウェア資源を利用できる利点がある。
 一例のリコンフィギュラブルデバイスは、計算ノード間の入出力経路に係る情報を用いて特定された計算ノードに係るビットストリームが書き込まれたものであってよい。かかるリコンフィギュラブルデバイスは、計算ノード間のオーバーヘッドを減少して処理ができる可能性がある利点がある。
 一例のリコンフィギュラブルデバイスは、リコンフィギュラブルデバイスのリソース情報又は前記リコンフィギュラブルデバイス内のPRリージョンのリソース情報を利用して、特定された計算ノードに係るビットストリームが書き込まれたものであってよい。かかるリコンフィギュラブルデバイスは、計算ノード間のオーバーヘッドを減少して処理ができる可能性がある利点がある。
 一例のリコンフィギュラブルデバイスは、前記リコンフィギュラブルデバイス内の唯一のPRリージョンに、ソフトリソースマージされた合成リソース情報に対応する複数の計算ノードに基づくビットストリームが書き込まれたものであってよい。かかるリコンフィギュラブルデバイスは、計算ノード間のオーバーヘッドを減少して処理ができる可能性がある利点がある。
 一例のリコンフィギュラブルデバイスは、DFL-RDBが利用されて特定された複数の計算ノードに基づくビットストリームが書き込まれたものであってよい。かかるリコンフィギュラブルデバイスは、計算ノード間のオーバーヘッドを減少して処理ができる可能性がある利点がある。
4.実施形態3
 実施形態3に係る本例のシステムは、2以上のN数の計算ノードを、M数の計算ノードに変更を支援する技術である(N及びMは自然数であり、MはNより小さい)。ソフトマージされる計算ノードの一部又は全部は、自動的に決定されてよい。
 本例に係るシステムは、ソフトマージされる計算ノードを選定する実施形態2とは異なる手法を提供するものである。複数の計算ノードをソフトマージして一のハードウェア資源に書き込むことができた場合において、抽象的にかかる複数の計算ノード間のオーバーヘッドを減少できる可能性はあるものの、現実に、どの程度そのオーバーヘッドを減少できるかは不明である。そこで、本願に係る発明者は、にかかる複数の計算ノード間において現実にどの程度の通信量が発生しているかの情報に着目して、合成される計算ノードを選定する技術を以下に提示する。
 一例のシステムは、監視部を備えてよい。
 一例のシステムの監視部は、リコンフィギュラブルデバイスの各々に書き込まれているタスクマネージャからの情報を元に、各リコンフィギュラブルデバイスを監視してよい。
 各リコンフィギュラブルデバイスに書き込まれているタスクマネージャは、タスクマネージャが書き込まれたリコンフィギュラブルデバイスの通信に係る情報を収集し、監視部に連絡してよい。
 一例のシステムの監視部は、一又は複数のリコンフィギュラブルデバイス内に書き込まれているタスクマネージャから、各タスクマネージャが書き込まれているリコンフィギュラブルデバイスの通信に係る情報を取得してよい。かかる通信に係る情報は、リコンフィギュラブルデバイス内の演算単位であってよく、かかる通信に係る情報は、かかる演算単位を示す情報(例えばID)と関連づけられてよい。例えば、一のリコンフィギュラブルデバイス内にPRリージョンがない場合は、一のリコンフィギュラブルデバイスを一の演算単位としてよく、かかる一のリコンフィギュラブルデバイスを特定する情報と通信に係る情報は、関連付けられてよく、監視部はかかる情報をタスクマネージャから取得し、記憶してよい。また、例えば、一のリコンフィギュラブルデバイス内に一又は複数のPRリージョンを含む場合は、かかる一又は複数のPRリージョンの各々を一の演算単位としてよく、かかる一又は複数のPRリージョンを特定する情報と対応する通信に係る情報は、関連付けられてよく、監視部はかかる情報をタスクマネージャから取得し、記憶してよい。
 タスクマネージャは、例えば、NFV(Network Functions Virtualization)におけるEM(Element Manager)に該当してよい。
 タスクマネージャは、各リコンフィギュラブルデバイス内の通信に係る情報を、継続的又は定期的に取得してよい。
 通信に係る情報は、通信ビット数、通信回数、通信量、通信頻度、通信比率、通信料金、所定単位毎の通信ビット数、所定単位毎の通信回数、所定単位毎の通信量、所定単位毎の通信頻度、所定単位毎の通信比率、所定単位毎の通信料金、及び/又は、これらの一部又は全部に基づく統計情報、を含んでよい(「通信間情報」ということもある)。また、通信に係る情報は、これらの通信間情報における通信について、通信元情報と、通信先情報と、に区別して含んでもよい。通信に係る情報は、通信間情報と、かかる通信間情報における通信の通信元情報と、かかる通信間情報における通信の通信先情報と、を関連付けて含んでよい。所定単位は、所定時間単位、及び/又は、所定イベント単位、などであってよい。統計情報は、各情報を用いた、合計値、最大値、最小値、中央値、最頻値、中点値、代表値、種々の平均値、重みづけ計算、及び/又は、閾値計算、などの処理を適宜一又は複数回適用した情報を含んでよい。
 タスクマネージャは、通信に係る情報を、監視部に所定のタイミングで送信してよい。送信のタイミングは、定期的又は所定の条件が充足されたタイミングであってよい。所定の条件は、通信に係る情報が、所定の閾値を超えた場合を含んでよい。例えば、通信ビット数、通信回数、通信量、通信頻度、通信比率、通信料金、所定単位毎の通信ビット数、所定単位毎の通信回数、所定単位毎の通信量、所定単位毎の通信頻度、所定単位毎の通信比率、所定単位毎の通信料金、及び/又は、これらの一部又は全部に基づく統計情報、が所定の閾値を超えた場合であってよい。
 図12は、監視部と、一又は複数のリコンフィギュラブルデバイス内に格納されたタスクマネージャ、を開示する一例である。本図において、一例のシステム001内の監視部010は、リコンフィギュラブルデバイス002内のタスクマネージャ011Aから通信に係る情報を取得し、リコンフィギュラブルデバイス003内のタスクマネージャ011Bから通信に係る情報を取得してよい。タスクマネージャ011Aは、PRリージョン1乃至6についての通信に係る情報を取得してよい。タスクマネージャ011Bは、PRリージョン1乃至4についての通信に係る情報を取得してよい。
 以下では、一例のシステムの監視部を用いた一例を、図13を用いて、説明する。まず、計算ノード群A内の各計算ノードが、リコンフィギュラブルデバイス内に書き込まれ、計算が実行できる状態とされているとする。ここで、各計算ノードの一部又は全部は、ソフトマージされていなくてよい。また、各計算ノードの一部は、ソフトマージされていてもよい。後者は、計算ノードの一部についてソフトマージされた後において、再度ソフトマージする対象となる計算ノードを選定する場合が考えられる。
ステップ311
 一又は複数のリコンフィギュラブルデバイス内の各タスクマネージャは、各タスクマネージャが実装されているリコンフィギュラブルデバイス内の一又は複数の演算単位についての通信に係る情報を、一例のシステムの監視部に直接的または間接的に送信する(ステップ1301)。
ステップ312
 一例のシステムの監視部は、通信に係る情報を取得し、統計処理をしてよい。監視部は、タスクマネージャ内から取得した通信に係る情報を用いて、統計情報を生成してよい(ステップ1302)。統計情報は、各情報を用いた、合計値、最大値、最小値、中央値、最頻値、中点値、代表値、種々の平均値、重みづけ計算、及び/又は、閾値計算、などの処理を適宜一又は複数回適用した情報を含んでよい。
ステップ313
 一例のシステムは、計算ノード間の通信に係る情報を用いて、計算ノードを、マージの対象として決定してよい(ステップ1303)。
 一例のシステムは、例えば、第1計算ノードと第2計算ノードの間の通信に係る情報が、所定の閾値よりも高い場合に、前記第1計算ノードと前記第2計算ノードをソフトリソースマージする対象となる計算ノードとして処理、ソフトマージする対象となる計算ノードとして処理、及び/又は、ハードマージする対象となる計算ノードとして処理、をしてよい。
 また、一例のシステムは、一のデータフロー列が、N1、N2、N3、N4、N5、という計算ノードがこの順によって構成されている場合、N1-N2-N3-N4-N5、N1-N2-N3-N4、N2-N3-N4-N5、N1-N2-N3、N3-N4-N5、N2-N3-N4、などのような各データフロー列を特定する情報と、対応するデータフロー列に沿った計算ノード間の通信に係る情報に基づく情報と、を関連付けて記憶したデータベース(かかるデータベースを、本願書類において、測定情報データベース(Measured Information Database, MI-DB)ということもある。)を備えてもよい。なお、ここで一のデータフロー列に沿った計算ノード間の通信に係る情報は、一のデータフロー列に沿った各2つの計算ノード間の通信に係る情報を用いて計算された、一のデータフロー列に対応する通信に係る情報であってよい。例えば、一のデータフロー列がN1、N2、N3の順のデータフロー列である場合、一のデータフロー列の通信に係る情報の合計情報は、N1とN2の通信に係る情報と、N2とN3の通信に係る情報と、を合計したものでよい。また、かかる合計にとどまらず、かかる合計に代えて、N1とN2の通信に係る情報と、N2とN3の通信に係る情報を用いた統計処理された情報であってもよい。
 一例のシステムは、
 一又は複数のリコンフィギュラブルデバイスから通信に係る情報を取得する監視部と、
 前記通信に係る情報を用いて、前記通信に係る情報についての複数の計算ノードについて、ソフトリソースマージ、ソフトマージ、及び/又は、ハードマージを行う処理部と、
を備えるシステムであってよい。
 前記通信に係る情報は、例えば、第1リコンフィギュラブルデバイス内の第1PRリージョンと、前記第1リコンフィギュラブルデバイス内の前記第1PRリージョンとは異なる第2PRリージョンと、の間の通信に係る情報であってよい。この場合、同一のリコンフィギュラブルデバイス内の異なるPRリージョン間の情報を利用できる利点がある。
 前記通信に係る情報は、例えば、第1リコンフィギュラブルデバイス内の第1PRリージョンと、前記第1リコンフィギュラブルデバイスとは異なる第2リコンフィギュラブルデバイス内の第2PRリージョンと、の間の通信に係る情報であってよい。この場合、異なるリコンフィギュラブルデバイス内の異なるPRリージョン間の情報を利用できる利点がある。
 前記通信に係る情報は、前記一又は複数のリコンフィギュラブルデバイス内に書き込まれたタスクマネージャが送信したものであってよい。タスクマネージャは、リコンフィギュラブルデバイス内に書き込まれたものであって、前記リコンフィギュラブルデバイスの外の情報処理装置との間で、送信及び/又は受信などの通信をする機能を有してよい。また、タスクマネージャは、前記タスクマネージャが書き込まれたリコンフィギュラブルデバイス内に書き込まれた一又は複数のPRリージョンが、前記リコンフィギュラブルデバイスの外部の情報処理装置との間で行う通信に係る情報を、取得する機能を有してよい。
 一例のシステムは、上述のとおり、通信に係る情報を用いて、ソフトマージする対象を特定するため、より通信の実情に合わせてオーバーヘッドを減少できる可能性がある利点がある。特に、通信に係る情報として、現実にリコンフィギュラブルデバイスに書き込まれて対象HDLプログラムが実行された場合の情報が利用された場合、現実の情報に基づいて、ハードマージする対象を特定できる利点がある。また、通信に係る情報は、シミュレーションによって得られてもよく、この場合、シミュレーションによって得られた情報の範囲内で、オーバーヘッドを減少できる可能性がある利点がある。
 一例のリコンフィギュラブルデバイスは、監視部が得た通信に係る情報に基づいて特定された複数の計算ノードに基づくビットストリームが書き込まれたものであってよい。かかるリコンフィギュラブルデバイスは、計算ノード間のオーバーヘッドを減少して処理ができる可能性がある利点がある。
 一例のリコンフィギュラブルデバイスは、MI-RDBが利用されて特定された複数の計算ノードに基づくビットストリームが書き込まれたものであってよい。かかるリコンフィギュラブルデバイスは、計算ノード間のオーバーヘッドを減少して処理ができる可能性がある利点がある。
5.実施形態4
 実施形態4に係る本例のシステムは、2以上のN数の計算ノードを、M数の計算ノードに変更を支援する技術である(N及びMは自然数であり、MはNより小さい)。ソフトマージされる計算ノードの一部又は全部は、自動的に決定されてよい。
 一例のシステムは、実施形態2に係るシステムの一部又は全部、及び、実施形態3に係るシステムの一部または全部、の機能を含むものでよい。
 例えば、実施形態2に係るシステムにおけるDFL-RDBの一部又は全部と、実施形態3に係るシステムにおけるMI-DBの一部または全部と、を対応するデータフロー列を対応させて格納し(かかるデータベースを、本願書類において、測定情報データベース(Measured Information Resource Database, MI-RDBということもある。)、一のデータフロー列についての、データフロー列を構成する計算ノードをソフトマージした場合の合成リソース情報及び前記計算ノード間についての通信に係る情報を用いて、前記データフロー列を構成する計算ノードの一部又は全部を、マージの対象として決定してよい。
 MI-RDBの具体例としては、一のデータフロー列が、N1、N2、N3、N4、N5、という計算ノードがこの順によって構成されている場合、N1-N2-N3-N4-N5、N1-N2-N3-N4、N2-N3-N4-N5、N1-N2-N3、N3-N4-N5、N2-N3-N4、などのような各データフロー列を特定する情報と、対応するデータフロー列を構成する計算ノードをソフトマージした場合の合成リソース情報と、前記対応するデータフロー列に沿った計算ノード間の通信に係る情報に基づく情報と、を関連付けて記憶したデータベースであってよい。例えば、図14は、かかるMI-RDBの一例である。
 かかるMI-RDBを用いた例としては、本例の一例のシステムは、一のハードウェア資源に書き込み可能な一又は複数のデータフロー列を、前記一のハードウェア資源とMI-RDB内の合成リソース情報との比較に基づいて特定し、かかる一又は複数のデータフロー列についての通信に係る情報を用いて、計算ノードを、マージの対象として決定してよい。
 一例のリコンフィギュラブルデバイスは、MI-RDBが利用されて特定された複数の計算ノードに基づくビットストリームが書き込まれたものであってよい。かかるリコンフィギュラブルデバイスは、計算ノード間のオーバーヘッドを減少して処理ができる可能性がある利点がある。
6.実施形態5
 実施形態5に係る本例のシステムは、2以上のN数の計算ノードを、M数の計算ノードに変更を支援する技術である(N及びMは自然数であり、MはNより小さい)。また、一例のシステムは、一部手動的な部分を含む例である。
 一例のシステムは、ソフトマージの選定に関する情報を、利用者に提供する技術であってよい。
 図11を用いて一例のシステムに関する背景を説明する。本図において、計算ノード112A、113A、114Aから構成されるデータフロー列100Aと、計算ノード112B、113B、114B、115Bから構成されるデータフロー列100Bと、が開示されている。ここで、仮に、データフロー列100Aがハードマージされたとしても、データフロー列100Bがハードマージされない場合を考える。データフロー列100Aからの出力があっても、データフロー列100Bからの出力がない場合に、計算ノード116は計算処理ができず、計算ノード116がデータフロー列100Bの出力を待つのであればデータフロー列100Aのみをハードマージしてもオーバーヘッドを低下できる可能性が低下する場合がある。このような場合においては、データフロー列100Aについてハードマージを行い、データフロー列100Bについてハードマージしない場合には、データフロー列100Aについてハードマージする意義は低い場合がある。
 例えば、一例のシステムは、計算ノード群に対してデータフロー解析を行い、データフロー列を表示装置に表示し、ソフトマージされる計算ノード候補を図示してよい。図15は、一例のシステムが利用者に対して表示する表示画面の一部の一例である。この場合、表示装置を閲覧する利用者は、ソフトマージされる計算ノードの全体のデータフロー列における位置づけを理解することができ、例えば、並列計算が行われるデータフロー列のうち、一方のデータフロー列の計算ノードのみがソフトマージされ、並列計算のうちソフトマージされないデータフロー列があるかどうかを理解できる利点がある。
 また、追加的に、又は、代替的に、一例のシステムは、ソフトリソースマージにおいて生成される情報を、利用者が理解できるよう、表示装置に表示してもよい。例えば、一例のシステムは、ソフトリソースマージされる計算ノードに係るリソース情報、及び/又は、ソフトリソースマージされた場合における合成リソース情報、を表示装置に表示してもよい。この場合、利用者は、ソフトリソースマージが行われる前と、ソフトリソースマージが行われた後のリソース情報について、理解できる利点がある。
 また、一例のシステムは、ソフトリソースマージされる計算ノードに係るリソース情報、及び、ソフトリソースマージされた場合における合成リソース情報、を対比させて、表示装置に表示してもよい。かかる対比される情報は、リソース情報でもよいし、リソース情報の一属性についての対応する情報であってもよい。この場合、ソフトリソースマージの前後において対応する属性についてのリソース情報を、利用者は分かりやすくなる利点がある。例えば、ソフトリソースマージされる2つの計算ノードに係るリソース情報として、ロジックブロック数が各々A1とA2であり、ソフトリソースマージされた場合における合成リソース情報のブロック数がA3である場合、A1及びA2、と対比して、A3を対応付けて表示装置に表示してもよい。また、例えば、ソフトリソースマージされる2つの計算ノードに係るリソース情報として、周波数が各々B1とB2であり、ソフトリソースマージされた場合における合成リソース情報の周波数がB3である場合、B1及びB2、と対比して、B3を対応付けて表示装置に表示してもよい。この場合、周波数がB1よりB2が大きい場合、周波数が小さいものが合成リソース情報として利用される場合、B3がB1と同じものになるところ、このように周波数がB2よりも小さいB3が表示装置において強調表示されてよい。このように、ソフトリソースマージの前と比較して、ソフトリソースマージの後のハードウェアの機能が低下する場合、かかる低下する部分を強調表示してよい。この場合、利用者は、容易にソフトマージによって機能が低下することを理解できる利点がある。
 なお、上記では、低い周波数のものに適用する場合について説明したが、かかる場合に限定されず、ソフトリソースマージされた場合における合成リソース情報は、複数の異なる周波数を含んでよい。
 また、一例のシステムは、ソフトマージ又はハードマージされる計算ノードに係るリソース情報と、書き込まれる予定の対応するハードウェア資源のリソース情報と、を対比させて、表示装置に表示してもよい。かかる対比される情報は、リソース情報でもよいし、リソース情報の一属性についての対応する情報であってもよい。例えば、ソフトマージ又はハードマージされる計算ノードに係るリソース情報の内部メモリ数がA1であり、書き込まれる予定の対応するハードウェア資源のリソース情報がA2である場合、A1とA2が対比されて表示装置に表示されてよい。
 また、一例のシステムは、ソフトマージ又はハードマージされる計算ノードに係るリソース情報と、書き込まれる候補の一又は複数のハードウェア資源のリソース情報と、を対比させて、表示装置に表示してもよい。かかる対比される情報は、リソース情報でもよいし、リソース情報の一属性についての対応する情報であってもよい。また、かかる場合、一例のシステムは、ソフトマージ又はハードマージされる計算ノードに係るリソース情報と、書き込まれる候補の一又は複数のハードウェア資源のリソース情報と、の関係を示す情報、例えば、利用情報、を表示装置に表示してもよい。例えば、ソフトマージ又はハードマージされる計算ノードに係るリソース情報のレジスタのビット数がA1であり、書き込まれる一候補のハードウェア資源のリソース情報におけるレジスタのビット数がA2であり、書き込まれる他の候補のハードウェア資源のリソース情報におけるレジスタのビット数がA3である場合、書き込まれる他の候補のハードウェア資源のリソース情報におけるレジスタのビット数がA4である場合、A1とA2に基づく利用情報、A1とA3に基づく利用情報、及び/又は、A1とA4に基づく利用情報、が表示装置に表示されてよい。この場合、複数のハードウェア資源の候補について、書き込まれる場合の関係を利用者は理解できる利点がある。
 一例のシステムは、マージの対象として決定する過程についての一部又は全部の情報を、表示装置に表示してよい。
 一例のシステムは、ソフトリソースマージにおいて生成される情報を、表示装置に表示してよい。
7.実施形態6
 本例のシステムは、ソフトリソースマージ、ソフトマージ、及び/又は、ハードマージ、のタイミングを規定するものである。
 一例のシステムは、上述の実施形態1~5のいずれか一つと共に実装されてもよいし、上述の実施形態1~5が実装されずに、単独で実装されてもよい。
 また、一例のシステムは、実施形態3において説明した監視部を備えてもよい。この場合、監視部は、一又は複数のリコンフィギュラブルデバイスに係る通信に係る情報を取得してよい。
ステップ611
 一例のシステムは、所定の条件が充足するか判定する。
ステップ612
 一例のシステムは、所定の条件を充足した複数の計算ノードについて、ソフトリソースマージを行う。
ステップ621
 一例のシステムは、所定の条件が充足するか判定する。
ステップ622
 一例のシステムは、所定の条件を充足した複数の計算ノードについて、ソフトマージを行う。
ステップ631
 一例のシステムは、所定の条件が充足するか判定する。
ステップ632
 一例のシステムは、所定の条件を充足した複数の計算ノードについて、ハードマージを行う。
 所定の条件は、上述の通信に係る情報を用いた条件であってよい。例えば、所定の条件は、通信に係る情報が、所定の対応する閾値を超えた場合であってよい。
 また、所定の条件は、通信に係る情報に基づいたリコンフィギュラブルデバイスに係る利用料金を用いたものであってもよい。例えば、一例のシステムが、リコンフィギュラブルデバイスの通信に係る情報に基づいた利用料金を算定する機能を備える場合において、所定の条件は、かかる利用料金が所定の閾値を超える場合に、充足するものであってよい。
 一例のシステムは、
 一又は複数のリコンフィギュラブルデバイスから通信に係る情報を取得する監視部と、
 前記通信に係る情報が、所定の条件を充足するか、所定の条件を充足しないか、を判定する判定部と、
 前記判定の結果に対応して、前記通信に係る情報についての複数の計算ノードについて、ソフトリソースマージ、ソフトマージ、及び/又は、ハードマージを行う処理部と、
を備えるシステムであってよい。
 前記所定の条件の充足性が判定される通信に係る情報は、例えば、第1リコンフィギュラブルデバイス内の第1PRリージョンと、前記第1リコンフィギュラブルデバイス内の前記第1PRリージョンとは異なる第2PRリージョンと、の間の通信に係る情報であってよい。この場合、同一のリコンフィギュラブルデバイス内の異なるPRリージョン間の情報を利用できる利点がある。
 前記所定の条件の充足性が判定される通信に係る情報は、例えば、第1リコンフィギュラブルデバイス内の第1PRリージョンと、前記第1リコンフィギュラブルデバイスとは異なる第2リコンフィギュラブルデバイス内の第2PRリージョンと、の間の通信に係る情報であってよい。この場合、異なるリコンフィギュラブルデバイス内の異なるPRリージョン間の情報を利用できる利点がある。
 前記通信に係る情報は、前記一又は複数のリコンフィギュラブルデバイス内に書き込まれたタスクマネージャが送信したものであってよい。タスクマネージャは、リコンフィギュラブルデバイス内に書き込まれたものであって、前記リコンフィギュラブルデバイスの外の情報処理装置との間で、送信及び/又は受信などの通信をする機能を有してよい。また、タスクマネージャは、前記タスクマネージャが書き込まれたリコンフィギュラブルデバイス内に書き込まれた一又は複数のPRリージョンが、前記リコンフィギュラブルデバイスの外部の情報処理装置との間で行う通信に係る情報を、取得する機能を有してよい。
 一例のシステムは、例えば、第1計算ノードと第2計算ノードの間の通信に係る情報が、所定の閾値よりも高い場合に、前記第1計算ノードと前記第2計算ノードを、ソフトリソースマージする対象となる計算ノードとして処理、ソフトマージする対象となる計算ノードとして処理、及び/又は、ハードマージする対象となる計算ノードとして処理、をしてよい。
8.実施形態7
 実施形態7に係るシステムは、実施形態1乃至6とは異なるものであり、リコンフィギュラブルデバイスによる処理を効率的に実施するものである。
 本例のシステムは、一又は複数のリコンフィギュラブルデバイスと、一又は複数のプログラム可変デバイスと、を含み、前記一又は複数のリコンフィギュラブルデバイスの一部又は全部と、前記一又は複数のプログラム可変デバイスは、情報の通信が可能なシステムであってよい。
 以下では、かかるシステムの具体例をいくつか説明する。
実施形態7-1
 一例のシステムは、一又は複数のリコンフィギュラブルデバイスと、一又は複数のプログラム可変デバイスと、を含み、前記一又は複数のリコンフィギュラブルデバイスの一部又は全部と、前記一又は複数のプログラム可変デバイスは、情報の通信が可能なシステムであり、
 前記一又は複数のリコンフィギュラブルデバイスは、
  前記一又は複数のリコンフィギュラブルデバイスの外から取得したパケットの処理において、前記パケットの送信元が所定の送信元であるか否か、及び/又は、前記パケットの送信先が所定の送信先であるか否か、の判定を行う処理を行い、
  前記判定の処理に対応して、前記パケットの送信元が所定の送信元である場合、及び/又は、前記パケットの送信先が所定の送信先である場合、前記パケットを前記一又は複数のプログラム可変デバイスに送信し、前記パケットの送信元が所定の送信元でない場合、及び/又は、前記パケットの送信先が所定の送信先でない場合、前記パケットを前記一又は複数のプログラム可変デバイスには送信せず、
 前記一又は複数のプログラム可変デバイスは、前記パケット内のパターンマッチング処理を行う、システムである。
 情報の通信が可能とは、ネットワークを介した通信であってよい。また、前記一又は複数のプログラム可変デバイスには送信しない場合、かかるパケットを第三の送信先に送信してもよいし、かかるパケットを破棄してもよい。かかる構成によって実現可能な機能の一例は、ファイヤウォールであってよい。
 例えば、図16のとおり、リコンフィギュラブルデバイスの外から通信回路1600を通じてリコンフィギュラブルデバイス1601がパケットを取得し、リコンフィギュラブルデバイス1601が判定処理を行い、前記パケットの送信元が所定の送信元である場合、及び/又は、前記パケットの送信先が所定の送信先である場合、前記パケットを通信回線1603を介して前記一又は複数のプログラム可変デバイス1602に送信し、プログラム可変デバイス1602はパターンマッチング処理をしてよい。通信回線1603は、汎用回線でも専用回線でもよく、無線でも有線でもよい。
 パケットの送信元・送信先のようなパケットの送受信に関する処理をパターンマッチング処理が、リコンフィギュラブルデバイスによってされないため、複雑な実装が不要となりリコンフィギュラブルによる処理の高速化の恩恵を得つつ実装が容易になる利点があり、かつ、かかる前のパケットを利用する処理はプログラム可変デバイスによって実現することで、かかるシステム全体して、要求される(送信元・送信先の判定とパターンマッチングの処理)を適切に役割分担できる利点がある。
実施形態7-2
 一例のシステムは、一又は複数のリコンフィギュラブルデバイスと、一又は複数のプログラム可変デバイスと、を含み、前記一又は複数のリコンフィギュラブルデバイスの一部又は全部と、前記一又は複数のプログラム可変デバイスは、情報の通信が可能なシステムであり、
 前記一又は複数のリコンフィギュラブルデバイスは、前記一又は複数のリコンフィギュラブルデバイスの外から取得した第1パケットの処理においてかかる第1パケットより前の第2パケットを利用しない処理を行い、
 前記一又は複数のプログラム可変デバイスは、前記一又は複数のプログラム可変デバイスの外から取得した第1パケットの処理においてかかる第1パケットより前の第2パケットを利用する処理を行う、システムである。
 前記一又は複数のリコンフィギュラブルデバイスは、前記一又は複数のプログラム可変デバイスより時間的に先に、前記第1パケット及び前記第2パケットを取得してよい。
 また、前記一又は複数のリコンフィギュラブルデバイスは、前記第1パケット及び前記第2パケットを、前記一又は複数のプログラム可変デバイスに伝達してよい。
 前記一又は複数のリコンフィギュラブルデバイスは、前記第2パケットを、前記第1パケットより、時間的前に取得してよい。
 例えば、図16を利用して説明すると、リコンフィギュラブルデバイスの外から通信回路1600を通じてリコンフィギュラブルデバイス1601が第1及び第2パケットを取得し、リコンフィギュラブルデバイス1601が第1パケットの処理においてかかる第1パケットより前の第2パケットを利用しない処理を行い、前記第1及び第2パケットを前記一又は複数のプログラム可変デバイス1602に送信し、プログラム可変デバイス1602は第1パケットの処理においてかかる第1パケットより前の第2パケットを利用する処理をしてよい。
 前のパケットを利用しない処理が、リコンフィギュラブルデバイスによってされないため、複雑な実装(例えば、前のパケットを記憶、復元、などを行う処理の実装)が不要となりリコンフィギュラブルによる処理の高速化の恩恵を得つつ実装が容易になる利点があり、かつ、かかる前のパケットを利用する処理はプログラム可変デバイスによって実現することで、かかるシステム全体して、要求される(前のパケットを利用する処理と利用しない処理)を適切に役割分担できる利点がある。
実施形態7-3
 一例のシステムは、一又は複数のリコンフィギュラブルデバイスと、一又は複数のプログラム可変デバイスと、を含み、前記一又は複数のリコンフィギュラブルデバイスの一部又は全部と、前記一又は複数のプログラム可変デバイスは、情報の通信が可能なシステムであり、
 前記一又は複数のリコンフィギュラブルデバイスは、前記一又は複数のリコンフィギュラブルデバイス外から取得したパケットの判定処理において、前記パケット内の参照する位置及び/又は範囲が決定済みの処理を行い、
 前記一又は複数のプログラム可変デバイスは、前記一又は複数のプログラム可変デバイス外から取得したパケットの処理において、前記パケット内の参照する位置及び/又は範囲が決定済みではない処理を行う、システムである。
 例えば、図16を利用して説明すると、リコンフィギュラブルデバイスの外から通信回路1600を通じてリコンフィギュラブルデバイス1601がパケットを取得し、リコンフィギュラブルデバイス1601が前記パケット内の参照する位置及び/又は範囲が決定済みの処理を行い、前記第1及び第2パケットを前記一又は複数のプログラム可変デバイス1602に送信し、プログラム可変デバイス1602は前記パケット内の参照する位置及び/又は範囲が決定済みではない処理をしてよい。
 パケット内の参照する位置及び/又は範囲が決定済みではない処理が、リコンフィギュラブルデバイスによってされないため、複雑な実装(例えば、パケット内の参照する位置が動的に変化する場合におけるかかる変化に対応する処理の実装)が不要となりリコンフィギュラブルによる処理の高速化の恩恵を得つつ実装が容易になる利点があり、かつ、かかる前のパケットを利用する処理はプログラム可変デバイスによって実現することで、かかるシステム全体して、要求される処理を適切に役割分担できる利点がある。
実施形態7-4
 一例のシステムは、一又は複数のリコンフィギュラブルデバイスと、一又は複数のプログラム可変デバイスと、を含み、前記一又は複数のリコンフィギュラブルデバイスの一部又は全部と、前記一又は複数のプログラム可変デバイスは、情報の通信が可能なシステムであり、
 前記一又は複数のリコンフィギュラブルデバイスは、前記一又は複数のリコンフィギュラブルデバイス外から取得したパケットに対する処理が、所定の演算の所定数内の組み合わせによる処理であり、
 前記一又は複数のプログラム可変デバイスは、前記一又は複数のプログラム可変デバイス外から取得したパケットに対する処理が、所定外の演算又は所定の演算の所定数を超えた数の組み合わせによる処理である、システムである。
 例えば、図16を利用して説明すると、リコンフィギュラブルデバイスの外から通信回路1600を通じてリコンフィギュラブルデバイス1601がパケットを取得し、リコンフィギュラブルデバイス1601が前記パケットに対して所定の演算の所定数内の組み合わせによる処理を行い、前記第1及び第2パケットを前記一又は複数のプログラム可変デバイス1602に送信し、プログラム可変デバイス1602は前記パケットに対して所定外の演算又は所定の演算の所定数を超えた数の組み合わせによる処理をしてよい。
 所定外の演算又は所定の演算の所定数を超えた数の組み合わせによる処理が、リコンフィギュラブルデバイスによってされないため、複雑な実装(例えば、正規表現マッチングの実装)が不要となりリコンフィギュラブルによる処理の高速化の恩恵を得つつ実装が容易になる利点があり、かつ、かかる所定外の演算又は所定の演算の所定数を超えた数の組み合わせによる処理はプログラム可変デバイスによって実現することで、かかるシステム全体して、要求される処理を適切に役割分担できる利点がある。
9.様々な実施態様について
 第1の態様によるシステムは、「
 第1計算ノードに係る一又は複数のビットストリームが、リコンフィギュラブルデバイスに書き込まれた場合に利用されうるハードウェアリソースについての情報である第1リソース情報と、
 第2計算ノードに係る一又は複数のビットストリームが、リコンフィギュラブルデバイスに書き込まれた場合に利用されうるハードウェアリソースについての情報である第2リソース情報と、
  を取得する取得部と、
 前記第1リソース情報と前記第2リソース情報を用いて、前記第1計算ノード及び前記第2計算ノードに基づく一又は複数のビットストリームが、リコンフィギュラブルデバイスに書き込まれた場合に利用されうるハードウェアリソースについての情報である合成リソース情報を生成する生成部と、
 を備えるシステム
」である。
 第2の態様によるシステムは、上記第1の態様において「
 前記第1リソース情報は、第1ロジックブロック数を含み、
 前記第2リソース情報は、第2ロジックブロック数を含み、
 前記生成部は、前記第1ロジックブロック数と前記第2ロジックブロック数を合計したロジックブロック数を算出し、前記合計したロジックブロック数を含む前記合成リソース情報を生成する、
」ものである。
 第3の態様によるシステムは、上記第1の態様又は上記第2の態様において「
 前記第1リソース情報は、第1周波数情報を含み、
 前記第2リソース情報は、第2周波数情報を含み、
 前記生成部は、前記第1周波数情報と前記第2周波数情報のうちの小さい周波数又は両方の周波数を含む、前記合成リソース情報を生成する、
」ものである。
 第4の態様によるシステムは、上記第1乃至上記第3のいずれか一の態様において「
 前記生成部は、前記第1計算ノードと前記第2計算ノードとの入出力関係に基づいて、前記合成リソース情報を生成する、
」ものである。
 第5の態様によるシステムは、上記第1乃至上記第4のいずれか一の態様において「
 前記合成リソース情報に対応する計算ノードを実行可能な、一のハードウェア資源を特定する特定部を更に含む、
」ものである。
 第6の態様によるシステムは、上記第1乃至上記第5のいずれか一の態様において「
 前記特定部は、前記合成リソース情報内の少なくとも一の属性と、前記一のハードウェア資源に係るリソース情報内の前記少なくとも一の属性に対応する属性と、を比較し、後者が前者を実行可能であると判定する判定部を含む、
」ものである。
 第7の態様によるシステムは、上記第1乃至上記第6のいずれか一の態様において「
 前記特定部は、前記合成リソース情報内の少なくとも一の属性と、前記一のハードウェア資源に係るリソース情報内の前記少なくとも一の属性に対応する属性と、に基づく利用情報を用いて、前記一のハードウェア資源を特定する、
」ものである。
 第8の態様によるシステムは、上記第1乃至上記第7のいずれか一の態様において「
 前記第1計算ノード及び前記第2計算ノードを含む複数の計算ノードから構成される第1計算ノード群から、前記第1計算ノード群における少なくとも一部の計算ノード間の入出力経路に係る情報を用いて、前記第1計算ノード群の部分集合である、前記第1計算ノード及び前記第2計算ノードを含む計算ノード群を選定する選定部、
」ものである。
 第9の態様によるシステムは、上記第1乃至上記第8のいずれか一の態様において「
 前記第1計算ノード及び前記第2計算ノードを含む複数の計算ノードから構成される第1計算ノード群から、リコンフィギュラブルデバイスのリソース情報又は前記リコンフィギュラブルデバイス内のPRリージョンのリソース情報を利用して、前記第1計算ノード群の部分集合である、前記第1計算ノード及び前記第2計算ノードを含む計算ノード群を選定する選定部、
」ものである。
 第10の態様によるプログラムは、「
 一又は複数の情報処理装置を、
 第1計算ノードに係る一又は複数のビットストリームが、リコンフィギュラブルデバイスに書き込まれた場合に利用されうるハードウェアリソースについての情報である第1リソース情報と、
 第2計算ノードに係る一又は複数のビットストリームが、リコンフィギュラブルデバイスに書き込まれた場合に利用されうるハードウェアリソースについての情報である第2リソース情報と、
  を取得する取得手段、
 前記第1リソース情報と前記第2リソース情報を用いて、前記第1計算ノード及び前記第2計算ノードに基づく一又は複数のビットストリームが、リコンフィギュラブルデバイスに書き込まれた場合に利用されうるハードウェアリソースについての情報である合成リソース情報を生成する生成手段、
として動作させるためのプログラム。
」である。
 第11の態様によるプログラムは、上記第10の態様において「
前記情報処理装置は、前記第1リソース情報及び/又は前記第2リソース情報を格納するメモリを備える、
」ものである。
 第12の態様によるプログラムは、上記第10又は11の態様において「
前記情報処理装置は、前記生成処理を行う演算装置を備える、
」である。
 第13の態様による方法は、「
 一又は複数の情報処理装置が、
 第1計算ノードに係る一又は複数のビットストリームが、リコンフィギュラブルデバイスに書き込まれた場合に利用されうるハードウェアリソースについての情報である第1リソース情報と、
 第2計算ノードに係る一又は複数のビットストリームが、リコンフィギュラブルデバイスに書き込まれた場合に利用されうるハードウェアリソースについての情報である第2リソース情報と、
  を取得する取得ステップ、
 前記第1リソース情報と前記第2リソース情報を用いて、前記第1計算ノード及び前記第2計算ノードに基づく一又は複数のビットストリームが、リコンフィギュラブルデバイスに書き込まれた場合に利用されうるハードウェアリソースについての情報である合成リソース情報を生成する生成ステップ、
を実行する方法
」ものである。
 第14の態様による方法は、上記第13の態様において「
前記情報処理装置は、前記第1リソース情報及び/又は前記第2リソース情報を格納するメモリを備える、
」である。
 第15の態様による方法は、上記第14又は15の態様において「
前記情報処理装置は、前記生成処理を行う演算装置を備える、
」ものである。
10.プログラム可変デバイスの構成例
 図17のように、プログラム可変デバイス10は、演算装置12、記憶装置13、通信IF16、及びこれらを接続するバス11を備えてよい。また、プログラム可変デバイス10は、更に、入力装置14、表示装置15、及びこれらも接続するバス11を備えてよい。また、プログラム可変デバイス10は、他の情報処理装置とネットワーク19を介して、直接的又は間接的に接続されてよい。
 プログラム可変デバイス10は、サーバ、クラウド、などの情報処理装置であってよい。専用装置であってもよいし、汎用装置であってもよい。また、プログラム可変デバイス10自体、リコンフィグラブルデバイスにおいて回路が書き込まれたものであってもよい。この場合、上述の種々の実施態様のプログラムの実行をより迅速に実行できる利点がある。
 上述では、一例のシステムが実施する構成として説明したが、これらは、システム内の一又は複数の情報処理装置が実施する構成であってもよい。また、本願書類に係るシステムは、種々の態様で情報を提示してよい。例えば、情報の提示は、情報の表示を含んでよい。例えば、一例のシステムは、一例のシステムに含まれる表示装置が表示してもよいし、一例のシステムが直接的又は間接的に接続する他の情報処理装置内の表示装置において表示させてもよい。
 本願書類の実施例において述べた発明例は、本願書類で説明されたものに限らず、その技術的思想の範囲内で、種々の例に適用できることはいうまでもない。
 また、本願書類で説明される処理及び手順は、実施形態において明示的に説明されたものによってのみならず、ソフトウェア、ハードウェア又はこれらの組み合わせによっても実現可能なものであってよい。また、本願書類で説明される処理及び手順は、それらの処理・手順をコンピュータプログラムとして実装し、各種のコンピュータに実行させることが可能であってよい。またこれらのコンピュータプログラムは、記憶媒体に記憶されてよい。また、これらのプログラムは、非一過性又は一時的な記憶媒体に記憶されてよい。

Claims (15)

  1.  第1計算ノードに係る一又は複数のビットストリームが、リコンフィギュラブルデバイスに書き込まれた場合に利用されうるハードウェアリソースについての情報である第1リソース情報と、
     第2計算ノードに係る一又は複数のビットストリームが、リコンフィギュラブルデバイスに書き込まれた場合に利用されうるハードウェアリソースについての情報である第2リソース情報と、
      を取得する取得部と、
     前記第1リソース情報と前記第2リソース情報を用いて、前記第1計算ノード及び前記第2計算ノードに基づく一又は複数のビットストリームが、リコンフィギュラブルデバイスに書き込まれた場合に利用されうるハードウェアリソースについての情報である合成リソース情報を生成する生成部と、
     を備えるシステム。
  2.  前記第1リソース情報は、第1ロジックブロック数を含み、
     前記第2リソース情報は、第2ロジックブロック数を含み、
     前記生成部は、前記第1ロジックブロック数と前記第2ロジックブロック数を合計したロジックブロック数を算出し、前記合計したロジックブロック数を含む前記合成リソース情報を生成する、
    請求項1に記載のシステム。
  3.  前記第1リソース情報は、第1周波数情報を含み、
     前記第2リソース情報は、第2周波数情報を含み、
     前記生成部は、前記第1周波数情報と前記第2周波数情報のうちの小さい周波数又は両方の周波数を含む、前記合成リソース情報を生成する、
    請求項1又は2に記載のシステム。
  4.  前記生成部は、前記第1計算ノードと前記第2計算ノードとの入出力関係に基づいて、前記合成リソース情報を生成する、
    請求項1乃至3のいずれか一項に記載のシステム。
  5.  前記合成リソース情報に対応する計算ノードを実行可能な、一のハードウェア資源を特定する特定部を更に含む、
    請求項1乃至4のいずれか一項に記載のシステム。
  6.  前記特定部は、前記合成リソース情報内の少なくとも一の属性と、前記一のハードウェア資源に係るリソース情報内の前記少なくとも一の属性に対応する属性と、を比較し、後者が前者を実行可能であると判定する判定部を含む、
    請求項5に記載のシステム。
  7.  前記特定部は、前記合成リソース情報内の少なくとも一の属性と、前記一のハードウェア資源に係るリソース情報内の前記少なくとも一の属性に対応する属性と、に基づく利用情報を用いて、前記一のハードウェア資源を特定する、
    請求項5に記載のシステム。
  8.  前記第1計算ノード及び前記第2計算ノードを含む複数の計算ノードから構成される第1計算ノード群から、前記第1計算ノード群における少なくとも一部の計算ノード間の入出力経路に係る情報を用いて、前記第1計算ノード群の部分集合である、前記第1計算ノード及び前記第2計算ノードを含む計算ノード群を選定する選定部、
    を備える請求項1乃至7のいずれか1項に記載のシステム。
  9.  前記第1計算ノード及び前記第2計算ノードを含む複数の計算ノードから構成される第1計算ノード群から、リコンフィギュラブルデバイスのリソース情報又は前記リコンフィギュラブルデバイス内のPRリージョンのリソース情報を利用して、前記第1計算ノード群の部分集合である、前記第1計算ノード及び前記第2計算ノードを含む計算ノード群を選定する選定部、
    を備える請求項1乃至8のいずれか1項に記載のシステム。
  10.  一又は複数の情報処理装置を、
     第1計算ノードに係る一又は複数のビットストリームが、リコンフィギュラブルデバイスに書き込まれた場合に利用されうるハードウェアリソースについての情報である第1リソース情報と、
     第2計算ノードに係る一又は複数のビットストリームが、リコンフィギュラブルデバイスに書き込まれた場合に利用されうるハードウェアリソースについての情報である第2リソース情報と、
      を取得する取得手段、
     前記第1リソース情報と前記第2リソース情報を用いて、前記第1計算ノード及び前記第2計算ノードに基づく一又は複数のビットストリームが、リコンフィギュラブルデバイスに書き込まれた場合に利用されうるハードウェアリソースについての情報である合成リソース情報を生成する生成手段、
    として動作させるためのプログラム。
  11.  前記情報処理装置は、前記第1リソース情報及び/又は前記第2リソース情報を格納するメモリを備える、
    請求項10に記載のプログラム。
  12.  前記情報処理装置は、前記生成処理を行う演算装置を備える、
    請求項10又は11に記載のプログラム。
  13.  一又は複数の情報処理装置が、
     第1計算ノードに係る一又は複数のビットストリームが、リコンフィギュラブルデバイスに書き込まれた場合に利用されうるハードウェアリソースについての情報である第1リソース情報と、
     第2計算ノードに係る一又は複数のビットストリームが、リコンフィギュラブルデバイスに書き込まれた場合に利用されうるハードウェアリソースについての情報である第2リソース情報と、
      を取得する取得ステップ、
     前記第1リソース情報と前記第2リソース情報を用いて、前記第1計算ノード及び前記第2計算ノードに基づく一又は複数のビットストリームが、リコンフィギュラブルデバイスに書き込まれた場合に利用されうるハードウェアリソースについての情報である合成リソース情報を生成する生成ステップ、
    を実行する方法。
  14.  前記情報処理装置は、前記第1リソース情報及び/又は前記第2リソース情報を格納するメモリを備える、
    請求項13に記載の方法。
  15.  前記情報処理装置は、前記生成処理を行う演算装置を備える、
    請求項13又は14に記載の方法。
PCT/JP2022/014551 2022-03-25 2022-03-25 情報処理システム、情報処理装置、サーバ装置、プログラム、リコンフィグラブルデバイス、又は方法 WO2023181380A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2022/014551 WO2023181380A1 (ja) 2022-03-25 2022-03-25 情報処理システム、情報処理装置、サーバ装置、プログラム、リコンフィグラブルデバイス、又は方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2022/014551 WO2023181380A1 (ja) 2022-03-25 2022-03-25 情報処理システム、情報処理装置、サーバ装置、プログラム、リコンフィグラブルデバイス、又は方法

Publications (1)

Publication Number Publication Date
WO2023181380A1 true WO2023181380A1 (ja) 2023-09-28

Family

ID=88100298

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2022/014551 WO2023181380A1 (ja) 2022-03-25 2022-03-25 情報処理システム、情報処理装置、サーバ装置、プログラム、リコンフィグラブルデバイス、又は方法

Country Status (1)

Country Link
WO (1) WO2023181380A1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006046711A1 (ja) * 2004-10-28 2006-05-04 Ipflex Inc. 再構成可能な論理回路を有するデータ処理装置
US20200192723A1 (en) * 2017-08-22 2020-06-18 Huawei Technologies Co., Ltd. Field-Programmable Gate Array (FPGA) Acceleration Resource Conservation

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006046711A1 (ja) * 2004-10-28 2006-05-04 Ipflex Inc. 再構成可能な論理回路を有するデータ処理装置
US20200192723A1 (en) * 2017-08-22 2020-06-18 Huawei Technologies Co., Ltd. Field-Programmable Gate Array (FPGA) Acceleration Resource Conservation

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
MATSUDA, KAZUYA; MIYOSHI, TAKEFUMI; FUNADA, SATOSHI; NAKAJO, HIRONORI: "Implementation and Evaluation for Circuit Partitioning with a Java-based High-Level Synthesis Tool", TRANSACTIONS OF INFORMATION PROCESSING SOCIETY OF JAPAN, INFORMATION PROCESSING SOCIETY OF JAPAN, JP, vol. 56, no. 8, 31 July 2015 (2015-07-31), JP , pages 1582 - 1592, XP009549372, ISSN: 1882-7764 *

Similar Documents

Publication Publication Date Title
US11068318B2 (en) Dynamic thread status retrieval using inter-thread communication
Ben-Nun et al. Groute: An asynchronous multi-GPU programming model for irregular computations
US8661455B2 (en) Performance event triggering through direct interthread communication on a network on chip
US20110289485A1 (en) Software Trace Collection and Analysis Utilizing Direct Interthread Communication On A Network On Chip
US7694290B2 (en) System and method for partitioning an application utilizing a throughput-driven aggregation and mapping approach
US20090307714A1 (en) Network on chip with an i/o accelerator
JP2014059905A (ja) 再構成可能なプログラマブルロジックデバイスコンピュータシステム
Goudarzi Heterogeneous architectures for big data batch processing in mapreduce paradigm
US20060095894A1 (en) Method and apparatus to provide graphical architecture design for a network processor having multiple processing elements
Chen et al. ReGraph: Scaling graph processing on HBM-enabled FPGAs with heterogeneous pipelines
Silvano et al. 2PARMA: parallel paradigms and run-time management techniques for many-core architectures
WO2023181380A1 (ja) 情報処理システム、情報処理装置、サーバ装置、プログラム、リコンフィグラブルデバイス、又は方法
WO2016017111A1 (ja) 情報処理システム及びシステム設計方法
Grudnitsky et al. COREFAB: Concurrent reconfigurable fabric utilization in heterogeneous multi-core systems
Lorenz et al. Extending Scalasca’s analysis features
KR20160037737A (ko) 스케쥴러 컴퓨팅 장치, 그것을 포함하는 분산 컴퓨팅 시스템의 데이터 노드 및 그것의 방법
Yang et al. Automatic construction of program-optimized FPGA memory networks
US10031946B2 (en) Limiting tuple creation at the tuple level
Vasiljevic et al. Using buffer-to-BRAM mapping approaches to trade-off throughput vs. memory use
Tomašić et al. Using Hadoop MapReduce in a multicluster environment
Lancaster et al. TimeTrial: A low-impact performance profiler for streaming data applications
Sahebi et al. Distributed large-scale graph processing on FPGAs
CN112395249A (zh) 用于多个异步消耗者的方法和装置
US8020139B1 (en) Method and apparatus for implementing a dataflow circuit model using application-specific memory implementations
Wakabayashi et al. Environment for multiprocessor simulator development

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 22933518

Country of ref document: EP

Kind code of ref document: A1