WO2022172365A1 - リソース制御装置、リソース制御システム、および、リソース制御方法 - Google Patents

リソース制御装置、リソース制御システム、および、リソース制御方法 Download PDF

Info

Publication number
WO2022172365A1
WO2022172365A1 PCT/JP2021/004998 JP2021004998W WO2022172365A1 WO 2022172365 A1 WO2022172365 A1 WO 2022172365A1 JP 2021004998 W JP2021004998 W JP 2021004998W WO 2022172365 A1 WO2022172365 A1 WO 2022172365A1
Authority
WO
WIPO (PCT)
Prior art keywords
user
queue
unit
task
resource control
Prior art date
Application number
PCT/JP2021/004998
Other languages
English (en)
French (fr)
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 日本電信電話株式会社
Priority to US18/275,344 priority Critical patent/US20240095067A1/en
Priority to PCT/JP2021/004998 priority patent/WO2022172365A1/ja
Priority to JP2022581083A priority patent/JPWO2022172365A1/ja
Publication of WO2022172365A1 publication Critical patent/WO2022172365A1/ja

Links

Images

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/48Program initiating; Program switching, e.g. by interrupt
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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

Definitions

  • the present invention relates to an FPGA resource control device, resource control system, and resource control method.
  • FPGAs Field-Programmable Gate Arrays
  • IP core IP core
  • Extellectual Property Core IP core
  • Such FPGAs can be used in multiple use cases (eg: pose identification, person detection, object detection, etc.).
  • End-users can use the FPGA for each task with similar execution time order without rewriting those IP core functions.
  • Common processing executed in FPGA is started by each end user's host CPU program passing processing to FPGA, and each processing in FPGA is executed as a non-preemptive task and then executed by CPU (Central Processing Unit) A result is returned.
  • CPU Central Processing Unit
  • an object of the present invention is to appropriately share the functions of an FPGA among multiple users and improve the resource efficiency of the FPGA.
  • the resource control device of the present invention comprises a controller unit that sets resources related to an IP core of an FPGA in which a program executes a task, and a queue that has a plurality of priorities for each program.
  • a common unit that creates a set of user queues and stores tasks in the user queues, and a scheduler unit that selects tasks to be executed by any of the IP cores by multistage scheduling within the user queues and between the user queues.
  • the present invention it is possible to preferably share the functions of the FPGA among multiple users and improve the resource efficiency of the FPGA.
  • FIG. 1 is a configuration diagram of a resource control device for sharing accelerator devices in this embodiment;
  • FIG. It is a figure which shows an example of the operation
  • FIG. 10 is a diagram illustrating an example of an IP core exclusive use operation by a resource control device;
  • FIG. 4 is a diagram showing an example of a resource control device deployed in the user space of a host machine;
  • FIG. 3 is a diagram illustrating an example of a resource control device deployed in an OS kernel of a host machine;
  • FIG. FIG. 10 is a diagram showing an example of a resource control system in which a controller is arranged in the user space of another host machine;
  • FIG. 11 is a configuration diagram of a resource control device of a comparative example;
  • FIG. 7 is a configuration diagram of a resource control device 1G of a comparative example.
  • the resource control device 1G includes an FPGA 8 implemented as hardware, and a queue set 5G and a scheduler section 7G are implemented by a CPU (not shown) executing a software program.
  • This resource control device 1G is, for example, a cloud server that is installed in a data center and provides services to each user via the Internet.
  • the FPGA 8 is configured including a plurality of IP cores 81 to 83 and simultaneously executes a plurality of tasks non-preemptively.
  • the IP core 81 is described as "IP core #0”
  • the IP core 82 is described as “IP core #1”
  • the IP core 83 is described as “IP core #2”. is doing.
  • the queue set 5G comprises a plurality of queues 50, 51-5F. Since the priority of the queue 50 is lower than that of any other queue, it is indicated as “queue #0" in FIG. The priority of the queue 51 is higher than that of the queue 50, but lower than that of any other queue, so it is indicated as “queue #1" in FIG. Since the priority of queue 5F is higher than that of any other queue, it is described as "queue #15" in FIG.
  • the scheduler section 7G has a fixed priority scheduler section 74, schedules the tasks 6a to 6d stored in the queues 50, 51 to 5F in order of priority of each queue, and causes the FPGA 8 to execute them.
  • the resource control device 1G receives tasks 6a to 6d from a plurality of user programs 3a and 3b and causes the FPGA 8 to execute them. Therefore, the user programs 3 a and 3 b have an IP core mask setting section 31 and a task priority setting section 32 .
  • Task 6a is a task of identifying a person.
  • Tasks 6b and 6c are pose identification tasks. These tasks 6a to 6c are executed by the FPGA 8 upon receiving instructions from the user program 3a.
  • Task 6d is a task of recognizing an object. The task 6d is executed by the FPGA 8 upon receiving instructions from the user program 3b.
  • the IP core mask setting unit 31 sets which of the IP cores 81 to 83 of the FPGA 8 is to execute the task and which is not to execute the task.
  • the user programs 3a, 3b and the like can directly specify the core mask for the desired IP core. Therefore, there is a drawback that the internal information of the cloud server is exposed to the user and lacks abstraction.
  • the task priority setting unit 32 sets the priority of tasks.
  • the task priority setting unit 32 determines in which of the queues 50, 51 to 5F of the queue set 5G the task is to be stored.
  • the task priority setting unit 32 allows each user to set the priority of a task relative to other tasks of this user. Specifically, tasks 6b and 6c for identifying poses can be executed prior to task 6a for identifying a person.
  • the resource amount of the FPGA 8 to be used is determined inside the user programs 3a and 3b, it cannot be dynamically changed from outside the user programs 3a and 3b, resulting in a lack of flexibility.
  • the fixed-priority scheduler unit 74 simply takes out tasks in order from those stored in the queue with the highest priority and allocates them to IP cores. Therefore, users cannot specify the amount of resources they want to use for a task. Then, a difference may occur between the resource amount of the FPGA 8 requested by the user program and the expected value of the actually obtained execution time, which may result in a lack of fairness.
  • FIG. 1 is a configuration diagram of a resource control device 1 for sharing accelerator devices in this embodiment.
  • the resource control device 1 includes an FPGA 8 implemented as hardware, and a CPU (not shown) executes a software program to implement a controller section 2, a common section 4, user queues 5a and 5b, and a scheduler section 7. It is
  • This resource control device 1 is, for example, a cloud server that is installed in a data center and provides services to each user via the Internet.
  • the controller unit 2 includes a command reception unit 21, a user queue management unit 22, and a used IP core control unit 23.
  • the controller unit 2 has a function related to IP core setting, and sets resources related to the IP cores 81 to 83 of the FPGA 8 on which the program executes tasks.
  • the controller unit 2 checks the idle state of the IP cores, internally designates an IP core mask, and sets it in the scheduler unit 7 . Therefore, the information inside the cloud server is not exposed to the user programs 3a and 3b.
  • the controller unit 2 since the controller unit 2 includes the command reception unit 21, the resources can be dynamically controlled, so flexibility can be provided.
  • the command reception unit 21 dynamically receives resource control instructions from the user from outside the program.
  • the resource control instruction is an instruction describing the number of IP cores to be used, whether to exclusively use the IP cores, and the like. If the resource control instruction is not accepted, the command accepting unit 21 notifies the user of that fact.
  • the user queue management unit 22 notifies the user queue creation unit 41 of the common unit 4 to create a user queue for this program each time the user programs 3a, 3b, etc. start up.
  • the used IP core control unit 23 manages the occupied/empty state of the IP cores 81 to 83 of the FPGA 8 in the physical host, secures the number of IP cores specified by the command reception unit 21, Creates and manages a fixedly assigned map that is exclusive to In addition, the used IP core control unit 23 notifies the scheduler unit 7 of the allocation information each time the allocation information in which one of the IP cores 81 to 83 is allocated to the task is updated. When the number of free IP cores is insufficient for the task to be executed by the user program, the used IP core control unit 23 notifies the command receiving unit 21 that this designation cannot be accepted. Then, the command receiving unit 21 notifies the user that the resource control command from the user has not been received.
  • the common section 4 includes a user queue creation section 41 and a user queue allocation section 42 .
  • the common unit 4 creates a user queue, which is a set of queues each having a plurality of priorities, for each program, and stores tasks in this user queue.
  • the user queue creating unit 41 receives information about usable user queues from the controller unit 2, and creates a user queue for this program each time a new program is deployed and activated.
  • the user queue allocation unit 42 Upon receiving a task from a program, the user queue allocation unit 42 selects a user queue corresponding to the user identifier assigned to this program, and based on the priority of the tasks in the user programs 3a and 3b, assigns the corresponding priority. Store the task in a queue of degrees.
  • the user programs 3a and 3b are provided with a task priority setting unit 32 to set the priority of each task.
  • the task priority setting unit 32 of the user program 3a sets priority #0 to the tasks 6a and 6b and transfers them to the common unit 4, and sets priority #1 to the task 6c and transfers them to the common unit 4.
  • FIG. The task priority setting unit 32 of the user program 3 b sets the priority #1 to the task 6 d and hands it over to the common unit 4 .
  • Tasks 6a and 6b are stored in queue 50 of user queue 5a
  • task 6c is stored in queue 51 of user queue 5a.
  • a task 6d is stored in the queue 51 of the user queue 5b.
  • the scheduler section 7 includes an inter-user-queue scheduler section 71 , an intra-user-queue scheduler section 72 , and an IP core mask setting section 73 .
  • the scheduler unit 7 selects a task to be executed by one of the IP cores 81 to 83 by multistage scheduling within and between user queues.
  • the inter-user-queue scheduler unit 71 selects the user queues 5a and 5b from which tasks are to be extracted by a fair algorithm such as round robin. These user queues 5a, 5b are a set of queues 50, 51 having multiple priorities. Although the user queues 5a and 5b are queue sets having 16 levels of priority, only two queues are shown.
  • the intra-user-queue scheduler unit 72 selects tasks to be executed by an algorithm that takes priority into account, such as retrieving tasks from the queue with the highest priority within the user queue selected by the inter-user-queue scheduler unit 71 .
  • the intra-user-queue scheduler unit 72 schedules user tasks in the user queues 5a and 5b independently of the inter-user-queue scheduler unit 71, thereby enabling priority control of each task.
  • the intra-user-queue scheduler unit 72 and inter-user-queue scheduler unit 71 implement the controllability of the resource control device 1 .
  • the IP core mask setting unit 73 receives information from the controller unit 2, sets an IP core mask for each task, and controls so that IP cores not specified are not used.
  • the IP core mask means designation of an IP core for a task.
  • the common unit 4 prepares a plurality of independent user queues 5a and 5b containing queues of each priority. Further, the scheduler section 7 includes an inter-user-queue scheduler section 71 which determines which user queues 5a and 5b are selected. The common unit 4 schedules the priority control algorithm of the intra-user-queue scheduler unit 72 and the algorithm of the inter-user-queue scheduler unit 71 together in multiple stages, thereby ensuring fairness in resource allocation of the FPGA 8 .
  • FIG. 2 is a diagram showing an example of operations in the resource control device 1.
  • Resource control instructions 20a to 20c are sequentially notified to the controller unit 2 in FIG.
  • the controller section 2 is notified of the resource control instruction 20a.
  • the resource control instruction 20a describes that it is a deploy request related to user program A (user program 3a) and that the number of IP cores to be used is two.
  • the controller unit 2 manages mapping between the two IP cores in the FPGA 8 and the user program 3a. At this time, two IP cores in the FPGA 8 are assigned to task execution of the user program 3a.
  • the controller section 2 is notified of the resource control instruction 20b.
  • the resource control instruction 20b describes that it is a deployment request related to user program B (user program 3b) and that the number of IP cores to be used is one. Even if the user program 3a is already running, by notifying the controller unit 2 of the resource control instruction 20b together with the user program 3b, the user program 3b is deployed and its execution is started.
  • the controller unit 2 manages mapping between one IP core in the FPGA 8 and the user program 3b.
  • the controller unit 2 is notified of the resource control instruction 20c.
  • the resource control instruction 20c is a command related to the user program C (not shown).
  • User programs 3a and 3b are already running, and all IP cores in FPGA 8 are assigned to these user programs 3a and 3b. Therefore, since the deployment request exceeds the resource capacity, the controller unit 2 notifies the user to that effect and does not deploy the user program C.
  • FIG. 1
  • the user queue scheduler section 72 of the scheduler section 7 adjusts the execution time ratio of the user programs 3a and 3b to 2:1 using an algorithm such as round robin.
  • This execution time ratio is equal to the ratio of the number of IP cores in the resource control instructions 20a and 20b.
  • the controller unit 2 can fairly allocate the IP cores of the FPGA 8 to the user programs 3a and 3b.
  • FIG. 3 is a diagram showing an example of an IP core exclusive use operation by the resource control device 1.
  • Resource control commands 20a and 20b are notified to the controller unit 2 in FIG.
  • the resource control instruction 20a states that it is a deploy request related to user program A (user program 3a), that the number of IP cores to be used is two, and that the IP cores are exclusively used. .
  • the user program 3a is deployed and its execution is started.
  • the controller unit 2 manages two IP cores in the FPGA 8 and manages exclusive mapping between the user program 3a and the IP cores. At this time, two IP cores in the FPGA 8 are exclusively assigned to task execution of the user program 3a.
  • the resource control instruction 20b describes that it is a deploy request related to user program B (user program 3b), that the number of IP cores to be used is one, and that the IP core is exclusively used. . Even if the user program 3a is already running, the user notifies the controller unit 2 of the resource control instruction 20b together with the user program 3b, thereby deploying the user program 3b and starting its execution.
  • the controller unit 2 manages mapping between the IP cores in the FPGA 8 and the user programs 3a and 3b. At this time, two IP cores in the FPGA 8 are exclusively assigned to execute the task of the user program 3a, and the remaining one IP core is exclusively assigned to execute the task of the user program 3b.
  • FIG. 4 is a diagram showing an example of the resource control device 1 deployed in the user space of the host machine 1B.
  • the host machine 1B has a CPU 93 and an FPGA 8 as hardware layers, and an OS (Operating System) 92 is installed.
  • the controller section 2 and FPGA library 91 are embodied, and user programs 3a and 3b are deployed.
  • the FPGA library 91 includes the multiqueue 5 and the scheduler section 7, and in combination with the controller section 2 operates as the resource control device 1 described above.
  • a new user queue is generated in the multiqueue 5 each time a user program is deployed.
  • the scheduler section 7 includes parts corresponding to the inter-user-queue scheduler section 71, the intra-user-queue scheduler section 72, and the IP core mask setting section 73 shown in FIG.
  • the controller section 2 notifies the multiqueue 5 and the scheduler section 7 of the command.
  • FPGA library 91 causes FPGA 8 and IP cores 81 to 83 to execute tasks via FPGA driver 94 installed in OS 92 .
  • FIG. 5 is a diagram showing an example of the resource control device 1 arranged in the kernel space of the OS 92 of the host machine 1C.
  • the host machine 1C has a CPU 93 and an FPGA 8 as hardware layers, and an OS 92 is installed.
  • a controller unit 2, a CPU scheduler 921, and an FPGA driver 94 are installed in the kernel space of the OS 92 of the host machine 1B.
  • An FPGA library 91 and user programs 3a and 3b are deployed in the user space of the host machine 1C.
  • the controller unit 2 includes a CPU control unit 24 , a device control unit 25 , a GPU (Graphic Processing Unit) control unit 26 and an FPGA control unit 27 .
  • the CPU control unit 24 is a unit that controls the cores 931 to 932 configured in the CPU 93 and notifies the CPU scheduler 921 of instructions.
  • the GPU control unit 26 is a part that controls the GPU (not shown).
  • the FPGA control section 27 is a section that controls the FPGA 8, and includes sections corresponding to the command reception section 21, the user queue management section 22, and the used IP core control section 23 shown in FIG.
  • the FPGA driver 94 includes a multiqueue 5 and a scheduler section 7.
  • the multiqueue 5 and scheduler section 7 are controlled by the FPGA control section 27 .
  • a new user queue is generated in the multiqueue 5 each time a user program is newly deployed.
  • the scheduler section 7 includes parts corresponding to the inter-user-queue scheduler section 71, the intra-user-queue scheduler section 72, and the IP core mask setting section 73 shown in FIG.
  • FIG. 6 is a diagram showing an example of a resource control system in which the controller section 2 is arranged in the user space of another host machine 1D.
  • the resource control system shown in FIG. 6 includes a host machine 1D in which a controller section 2 is arranged in addition to the host machine 1E.
  • the host machine 1D has a CPU 93 as a hardware layer, and an OS 92 is installed.
  • a controller unit 2 is embodied in the user space of the host machine 1D. This controller section 2 has the same functions as the controller section 2 shown in FIG.
  • the host machine 1E has a CPU 93 and an FPGA 8 as hardware layers, and an OS 92 is installed.
  • An FPGA library 91 is embodied in the user space of the host machine 1E, and user programs 3a and 3b are deployed. This FPGA library 91 has the same functions as the FPGA library 91 shown in FIG.
  • the FPGA library 91 includes the multiqueue 5 and the scheduler section 7, and operates as the resource control device 1 described above in combination with the controller section 2 of the host machine 1D. Each time a user program is deployed in the multiqueue 5, a new user queue corresponding to this user program is generated.
  • the scheduler section 7 includes parts corresponding to the inter-user-queue scheduler section 71, the intra-user-queue scheduler section 72, and the IP core mask setting section 73 shown in FIG.
  • the controller section 2 notifies the multiqueue 5 and the scheduler section 7 of the command.
  • FPGA library 91 causes FPGA 8 and IP cores 81 to 83 to execute tasks via FPGA driver 94 installed in OS 92 .
  • ⁇ Claim 1>> a controller unit that sets resources related to the IP core of the FPGA in which the program executes tasks; a common unit that creates a user queue, which is a set of queues each having a plurality of priorities, for each program and stores tasks in the user queue; a scheduler unit that selects a task to be executed by one of the IP cores by multistage scheduling within the user queue and between the user queues;
  • a resource control device comprising:
  • the scheduler unit an inter-user-queue scheduler that selects a user queue from which a task is taken; an intra-user-queue scheduler unit that extracts a task from a queue having the highest priority among queues in which tasks are registered, in the user queue selected by the inter-user-queue scheduler unit;
  • the resource control device characterized by comprising:
  • the scheduler unit Further comprising an IP core mask setting unit that controls not to use IP cores that are not specified for each task, 2.
  • the resource control device characterized by:
  • the controller unit The IP cores to be used secure the number of IP cores specified by the program, and create and manage a map in which the IP cores are fixedly assigned to each program when a specification for exclusive use of the IP cores is received. Equipped with a control unit, The used IP core control unit If the total number of IP cores newly specified by the program exceeds the number of IP cores of the FPGA, this specification is not accepted. 2.
  • the resource control device characterized by:
  • the common part is A user queue creation unit that creates a user queue for the program each time the program is newly started, 2.
  • the resource control device characterized by:
  • FPGA resources can be shared fairly among multiple users.
  • the common part is When a task is received from the program, selecting a user queue related to the program based on the identifier, and registering the task in the user queue based on task priority; 2.
  • the resource control device characterized by:
  • FPGA resources can be shared fairly among multiple users.
  • ⁇ Claim 7>> a controller unit that sets resources related to the IP core of the FPGA in which the program executes tasks; a common unit that creates a user queue, which is a set of queues each having a plurality of priorities, for each program and stores tasks in the user queue; a scheduler unit that selects a task to be executed by one of the IP cores by multistage scheduling within the user queue and between the user queues;
  • a resource control system comprising:

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

リソース制御装置(1)は、ユーザプログラム(3a,3b)がタスク(6a~6d)を実行するFPGA8のIPコア(81~83)に係るリソースを設定するコントローラ部(2)と、 ユーザプログラム(3a,3b)毎に、それぞれ複数の優先度を持つキューのセットであるユーザキュー(5a,5b)を作成し、ユーザキュー(5a,5b)にタスク(6a~6d)を格納する共通部(4)と、ユーザキュー(5a,5b)内およびユーザキュー(5a,5b)間にて多段スケジューリングによりIPコアの何れかに実行させるタスクを選択するスケジューラ部(7)と、を備える。

Description

リソース制御装置、リソース制御システム、および、リソース制御方法
 本発明は、FPGAのリソース制御装置、リソース制御システム、および、リソース制御方法に関する。
 近年、推論用畳み込みニューラルネットワークがIPコア(Intellectual Property Core)単位で複数搭載されたFPGA(Field-Programmable Gate Array)が使われるようになっている(非特許文献1,2参照)。このようなFPGAは、複数のユースケース(例えば:ポーズ同定・人物検出・物体検出など)で使用可能である。エンドユーザはそれらIPコア機能を書き換えることなく、同程度の実行時間オーダを持つタスク毎にFPGAを利用することが可能である。FPGAで実施される共通処理は各エンドユーザのホストCPUプログラムがFPGAに処理を渡すことで開始され、FPGAでの各処理は非プリエンプティブなタスクとして実行された後、CPU(Central Processing Unit)に実行結果が返却される。FPGAの共通機能で実現できない各エンドユーザ固有の処理は、CPUプログラム内で実施される。
Xilinx Vitis-AI,[令和3年2月1日検索日],インターネット<URL:https://github.com/Xilinx/Vitis-AI> M. Bacis, R. Brondolin and M. D. Santambrogio, "BlastFunction: an FPGA-as-a-Service system for Accelerated Serverless Computing," 2020 Design, Automation & Test in Europe Conference & Exhibition (DATE), Grenoble, France, 2020, pp. 852-857, doi: 10.23919/DATE48585.2020.9116333.
 FPGAをクラウドサーバに搭載して、サービスを提供するときには、抽象性と柔軟性と制御性と公平性の要件を満たすことが望ましい。
 抽象性とは、IPコアマスクなどのクラウド内部の情報がユーザに露呈しないことをいう。柔軟性とは、FPGAの中のIPコア数などのように必要なリソース量について、プログラムの外部から動的に変更できることをいう。制御性とは、各ユーザがそのユーザのもつ他のタスクに対してあるタスクの優先度を相対的に設定できることをいう。公平性とは、ユーザの要求するFPGAリソース量と実際に得られる実行時間に差がないことをいう。
 単に各ユーザのプログラムをマルチプロセスとして複数動作させた場合、抽象性と柔軟性と制御性と公平性の要件を同時に満たせないという問題がある。
 そこで、本発明は、マルチユーザ間でFPGAの機能を好適に共用し、FPGAのリソース効率を高めることを課題とする。
 前記した課題を解決するため、本発明のリソース制御装置は、プログラムがタスクを実行するFPGAのIPコアに係るリソースを設定するコントローラ部と、前記プログラム毎に、それぞれ複数の優先度を持つキューのセットであるユーザキューを作成し、前記ユーザキューにタスクを格納する共通部と、前記ユーザキュー内および前記ユーザキュー間にて多段スケジューリングにより前記IPコアの何れかに実行させるタスクを選択するスケジューラ部と、を備えることを特徴とする。
 その他の手段については、発明を実施するための形態のなかで説明する。
 本発明によれば、マルチユーザ間でFPGAの機能を好適に共用し、FPGAのリソース効率を高めることが可能となる。
本実施形態におけるアクセラレータデバイス共有のためのリソース制御装置の構成図である。 リソース制御装置における動作の一例を示す図である。 リソース制御装置によるIPコアの排他的使用動作の一例を示す図である。 ホストマシンのユーザ空間に配備されたリソース制御装置の一例を示す図である。 ホストマシンのOSカーネルに配備されたリソース制御装置の一例を示す図である。 コントローラ部を他のホストマシンのユーザ空間に配備したリソース制御システムの一例を示す図である。 比較例のリソース制御装置の構成図である。
 以降、比較例と本発明を実施するための形態とを、各図を参照して詳細に説明する。
《比較例》
 図7は、比較例のリソース制御装置1Gの構成図である。
 リソース制御装置1Gは、ハードウエアとして実装されたFPGA8を含み、不図示のCPUがソフトウエアプログラムを実行することによって、キューセット5Gおよびスケジューラ部7Gが具現化されている。このリソース制御装置1Gは、例えばデータセンタに設置されて、各ユーザに対してインターネット経由でサービスを提供するクラウドサーバである。
 FPGA8は、複数のIPコア81~83を含んで構成されており、同時に複数のタスクを非プリエンプティブに実行する。図7では、IPコア81のことを「IPコア#0」と記載し、IPコア82のことを「IPコア#1」と記載し、IPコア83のことを「IPコア#2」と記載している。
 キューセット5Gは、複数のキュー50,51~5Fを備えている。キュー50の優先度は、他の何れのキューの優先度よりも低いため、図7では「キュー#0」と記載している。キュー51の優先度は、キュー50の優先度よりも高いが、その他の何れのキューの優先度よりも低いため、図7では「キュー#1」と記載している。キュー5Fの優先度は、他の何れのキューの優先度よりも高いため、図7では「キュー#15」と記載している。
 スケジューラ部7Gは、固定優先度スケジューラ部74を備えており、キュー50,51~5Fに格納されたタスク6a~6dを、各キューの優先度順にスケジューリングしてFPGA8に実行させる。
 リソース制御装置1Gは、複数のユーザプログラム3a,3bからタスク6a~6dなどを受け付けて、FPGA8に実行させる。そのため、ユーザプログラム3a,3bは、IPコアマスク設定部31と、タスク優先度設定部32とを備えている。タスク6aは、人物を特定するタスクである。タスク6b,6cは、ポーズを同定するタスクである。これらタスク6a~6cは、ユーザプログラム3aの指示を受けてFPGA8が実行する。タスク6dは、物体を認識するタスクである。タスク6dは、ユーザプログラム3bの指示を受けてFPGA8が実行する。
 IPコアマスク設定部31は、FPGA8のIPコア81~83のうち、何れにタスクを実行させるか、または何れにタスクを実行させないかを設定するものである。つまり、使用したいIPコアについて、コアマスクがユーザプログラム3a,3bなどから直接指定できてしまう。そのため、クラウドサーバの内部情報がユーザに露呈してしまい、抽象性に欠けるという欠点がある。
 タスク優先度設定部32は、タスクの優先度を設定するものである。タスク優先度設定部32は、キューセット5Gのキュー50,51~5Fのうち、何れにタスクを格納するかを決定する。タスク優先度設定部32により、各ユーザは、このユーザの他のタスクに対して、或るタスクの優先度を相対的に設定できる。具体的にいうと、人物を特定するタスク6aよりもポーズを同定するタスク6b,6cを先に実行させることができる。
 しかし、使用したいFPGA8のリソース量がユーザプログラム3a,3bの内部で決定されてしまうため、ユーザプログラム3a,3bの外部から動的に変更することができず、柔軟性がないという欠点がある。
 固定優先度スケジューラ部74は、単に優先度の高いキューに格納されているタスクから順に取り出してIPコアに割り当てる。よってユーザは、タスクに対して使用したいリソース量を指定できない。そして、ユーザプログラムが要求するFPGA8のリソース量と、実際に得られる実行時間の期待値に差が発生し、公平性に欠けるおそれがある。
 つまり、単にユーザプログラムをマルチプロセスとして複数動作させた場合、抽象性と柔軟性と制御性と公平性の要件を同時に満たせないおそれがある。
《本実施形態》
 図1は、本実施形態におけるアクセラレータデバイス共有のためのリソース制御装置1の構成図である。
 リソース制御装置1は、ハードウエアとして実装されたFPGA8を含み、不図示のCPUがソフトウエアプログラムを実行することによって、コントローラ部2、共通部4、ユーザキュー5a,5bおよびスケジューラ部7が具現化されている。このリソース制御装置1は、例えばデータセンタに設置されて、各ユーザに対してインターネット経由でサービスを提供するクラウドサーバである。
 コントローラ部2は、コマンド受付部21と、ユーザキュー管理部22と、使用IPコア制御部23とを含んでいる。コントローラ部2は、IPコア設定に関する機能を有しており、プログラムがタスクを実行するFPGA8のIPコア81~83に係るリソースを設定する。コントローラ部2がIPコアの空き状態を見て内部でIPコアマスクを指定し、スケジューラ部7に設定する。そのため、クラウドサーバ内部の情報がユーザプログラム3a,3bなどに露呈しなくなる。また、コントローラ部2がコマンド受付部21を備えることにより、リソースが動的に制御できるので、柔軟性を持たせることができる。
 コマンド受付部21は、ユーザからのリソース制御命令についてプログラム外から動的に受け付ける。リソース制御命令は、使用IPコア数やIPコアを排他的に使用するか否かなどが記載された命令である。コマンド受付部21は、リソース制御命令が受け付けられなかった場合、ユーザにその旨を報知する。
 ユーザキュー管理部22は、ユーザプログラム3a,3bなどが立ち上がるごとに、このプログラム用のユーザキューの作成を、共通部4のユーザキュー作成部41に通達する。
 使用IPコア制御部23は、物理ホスト内のFPGA8のIPコア81~83の占有/空き状態を管理し、コマンド受付部21から指定された数のIPコアを確保し、必要に応じてユーザ毎に排他的となるように固定的に割り当てたマップを作成して管理する。また、使用IPコア制御部23は、タスクにIPコア81~83のうち何れかを割り当てた割り当て情報を更新する度に、スケジューラ部7に割り当て情報を通達する。使用IPコア制御部23は、ユーザプログラムが実行しようとするタスクに対して空きIPコアの数が足りない場合、この指定が受け付けられない旨をコマンド受付部21に通達する。そしてコマンド受付部21は、ユーザからのリソース制御命令が受け付けられなかった旨を、このユーザに報知する。
 共通部4は、ユーザキュー作成部41と、ユーザキュー振分部42とを含んでいる。共通部4は、プログラム毎に、それぞれ複数の優先度を持つキューのセットであるユーザキューを作成し、このユーザキューにタスクを格納する。
 ユーザキュー作成部41は、コントローラ部2から使用可能なユーザキューに関する情報を受け取り、新たにプログラムがデプロイされて起動する毎に、このプログラム用のユーザキューを作成する。
 ユーザキュー振分部42は、プログラムからタスクを受け付けると、このプログラムに付与されたユーザ識別子に対応するユーザキューを選択し、ユーザプログラム3a,3b内のタスクの優先度を元に、該当する優先度のキューにタスクを格納する。なお、ユーザプログラム3a,3bは、タスク優先度設定部32を備え、各タスクに優先度を設定する。
 ユーザプログラム3aのタスク優先度設定部32は、タスク6a,6bに優先度#0を設定して共通部4に引き渡し、タスク6cに優先度#1を設定して共通部4に引き渡す。
 ユーザプログラム3bのタスク優先度設定部32は、タスク6dに優先度#1を設定して共通部4に引き渡す。タスク6a,6bがユーザキュー5aのキュー50に格納され、タスク6cがユーザキュー5aのキュー51に格納されている。タスク6dがユーザキュー5bのキュー51に格納されている。
 スケジューラ部7は、ユーザキュー間スケジューラ部71と、ユーザキュー内スケジューラ部72と、IPコアマスク設定部73とを含んでいる。スケジューラ部7は、ユーザキュー内およびユーザキュー間にて多段スケジューリングによりIPコア81~83の何れかに実行させるタスクを選択する。
 ユーザキュー間スケジューラ部71は、ラウンドロビン等の公平なアルゴリズムによって、タスクの取り出し元とのなるユーザキュー5a,5bを選択する。これらユーザキュー5a,5bは、複数の優先度を持つキュー50,51のセットである。なお、ユーザキュー5a,5bは、16段階の優先度を持つキューセットであるが、そのうち2つのキューのみを図示している。
 ユーザキュー内スケジューラ部72は、ユーザキュー間スケジューラ部71が選択したユーザキュー内で、最も優先度の高いキューからタスクを取り出す等、優先度を考慮したアルゴリズムによって、実行するタスクを選択する。ユーザキュー内スケジューラ部72は、ユーザキュー5a,5bの中で、ユーザキュー間スケジューラ部71とは独立にユーザのタスクのスケジューリングを行うことで、各タスクの優先制御が可能となる。つまり、ユーザキュー内スケジューラ部72とユーザキュー間スケジューラ部71は、リソース制御装置1の制御性を実現している。
 IPコアマスク設定部73は、コントローラ部2からの情報を受け取り、各タスクにIPコアマスクを設定し、指定されていないIPコアを使用しないように制御する。ここでIPコアマスクとは、タスクに対するIPコアの指定のことをいう。
 共通部4は、各優先度のキューを内包する独立したユーザキュー5a,5bを複数用意する。さらにスケジューラ部7は、どのユーザキュー5a,5bを選択するか決定するユーザキュー間スケジューラ部71を含んでいる。共通部4は、ユーザキュー内スケジューラ部72の優先制御アルゴリズムとユーザキュー間スケジューラ部71のアルゴリズムを併せて多段でスケジュールすることで、FPGA8のリソース割り当ての公平性を担保する。
 図2は、リソース制御装置1における動作の一例を示す図である。
 図2のコントローラ部2には、リソース制御命令20a~20cが順番に通知される。
 最初、コントローラ部2に、リソース制御命令20aが通知される。リソース制御命令20aは、ユーザプログラムA(ユーザプログラム3a)に係るデプロイ要求である旨と、使用するIPコア数が2個であることが記載されている。ユーザプログラム3aと一緒にリソース制御命令20aをコントローラ部2に通知することで、ユーザプログラム3aがデプロイされて、その実行が開始される。コントローラ部2は、FPGA8内の2個のIPコアとユーザプログラム3aとのマッピングを管理する。このとき、FPGA8内の2個のIPコアが、ユーザプログラム3aのタスク実行に割り当てられている。
 次にコントローラ部2には、リソース制御命令20bが通知される。リソース制御命令20bは、ユーザプログラムB(ユーザプログラム3b)に係るデプロイ要求である旨と、使用するIPコア数が1個であることが記載されている。既にユーザプログラム3aが実行中でも、ユーザプログラム3bと一緒にリソース制御命令20bをコントローラ部2に通知することで、ユーザプログラム3bがデプロイされて、その実行が開始される。コントローラ部2は、FPGA8内の1個のIPコアとユーザプログラム3bとのマッピングを管理する。
 このとき、FPGA8内の2個のIPコアが、ユーザプログラム3aのタスク実行に割り当てられており、残り1個のIPコアが、ユーザプログラム3bのタスク実行に割り当てられている。
 最後にコントローラ部2には、リソース制御命令20cが通知される。リソース制御命令20cは、不図示のユーザプログラムCに係るコマンドである。既にユーザプログラム3a,3bが実行中であり、FPGA8内の全てのIPコアが、これらユーザプログラム3a,3bに割り当てられている。よってリソース容量を超えたデプロイリクエストであるため、コントローラ部2は、その旨をユーザに通知し、かつ当該ユーザプログラムCをデプロイしない。
 ユーザプログラム3a,3bがデプロイされているとき、スケジューラ部7のユーザキュー内スケジューラ部72は、ラウンドロビン等のアルゴリズムにより、ユーザプログラム3a,3bの実行時間の比を2:1に調整する。この実行時間の比は、リソース制御命令20a,20bにおけるIPコアの個数の比と等しい。これにより、コントローラ部2は、ユーザプログラム3a,3bに対して公平にFPGA8のIPコアを割り当てることができる。
 図3は、リソース制御装置1によるIPコアの排他的使用動作の一例を示す図である。
 図3のコントローラ部2には、リソース制御命令20a,20bが通知されている。
 リソース制御命令20aは、ユーザプログラムA(ユーザプログラム3a)に係るデプロイリクエストである旨と、使用するIPコア数が2個であることと、IPコアを排他的に使用することが記載されている。
 ユーザがユーザプログラム3aと一緒にリソース制御命令20aをコントローラ部2に通知することで、ユーザプログラム3aがデプロイされて、その実行が開始される。コントローラ部2は、FPGA8内の2個のIPコアを管理し、ユーザプログラム3aとIPコアとの排他的なマッピングを管理する。このとき、FPGA8内の2個のIPコアが、ユーザプログラム3aのタスク実行に排他的に割り当てられている。
 リソース制御命令20bは、ユーザプログラムB(ユーザプログラム3b)に係るデプロイリクエストである旨と、使用するIPコア数が1個であることと、IPコアを排他的に使用することが記載されている。
 既にユーザプログラム3aが実行中でも、ユーザがユーザプログラム3bと一緒にリソース制御命令20bをコントローラ部2に通知することで、ユーザプログラム3bがデプロイされて、その実行が開始される。コントローラ部2は、FPGA8内のIPコアとユーザプログラム3a,3bとのマッピングを管理する。このとき、FPGA8内の2個のIPコアが排他的にユーザプログラム3aのタスク実行に割り当てられており、残り1個のIPコアが排他的にユーザプログラム3bのタスク実行に割り当てられている。
 図4は、ホストマシン1Bのユーザ空間に配備されたリソース制御装置1の一例を示す図である。
 ホストマシン1Bは、ハードウエア層としてCPU93とFPGA8を備え、OS(Operating System)92がインストールされている。ホストマシン1Bのユーザ空間には、コントローラ部2とFPGAライブラリ91が具現化されており、ユーザプログラム3a,3bがデプロイされている。
 FPGAライブラリ91は、マルチキュー5とスケジューラ部7を含んでおり、コントローラ部2と組み合わせて、前述したリソース制御装置1として動作する。マルチキュー5には、ユーザプログラムがデプロイされるごとに、新たなユーザキューが生成される。スケジューラ部7は、図1に示したユーザキュー間スケジューラ部71と、ユーザキュー内スケジューラ部72と、IPコアマスク設定部73に相当する部位を含んでいる。
 コントローラ部2は、マルチキュー5とスケジューラ部7にコマンドを通達する。FPGAライブラリ91は、OS92にインストールされたFPGAドライバ94を介して、FPGA8とIPコア81~83にタスクを実行させる。
 図5は、ホストマシン1CのOS92のカーネル空間に配備されたリソース制御装置1の一例を示す図である。
 ホストマシン1Cは、ハードウエア層としてCPU93とFPGA8を備え、OS92がインストールされている。ホストマシン1BのOS92のカーネル空間には、コントローラ部2と、CPUスケジューラ921と、FPGAドライバ94とがインストールされている。ホストマシン1Cのユーザ空間には、FPGAライブラリ91とユーザプログラム3a,3bがデプロイされている。
 コントローラ部2は、CPU制御部24と、デバイス制御部25と、GPU(Graphic Processing Unit)制御部26と、FPGA制御部27とを含んで構成される。
 CPU制御部24は、CPU93内に構成されているコア931~932に対して制御を行う部位であり、CPUスケジューラ921に対して指示を通達する。
 GPU制御部26は、不図示のGPUを制御する部位である。FPGA制御部27は、FPGA8を制御する部位であり、図1に示したコマンド受付部21とユーザキュー管理部22と使用IPコア制御部23に相当する部位を含んでいる。
 FPGAドライバ94は、マルチキュー5とスケジューラ部7を含んでいる。マルチキュー5とスケジューラ部7は、FPGA制御部27によって制御される。マルチキュー5には、ユーザプログラムが新たにデプロイされるごとに、新たなユーザキューが生成される。スケジューラ部7は、図1に示したユーザキュー間スケジューラ部71と、ユーザキュー内スケジューラ部72と、IPコアマスク設定部73に相当する部位を含んでいる。
 図6は、コントローラ部2を他のホストマシン1Dのユーザ空間に配備したリソース制御システムの一例を示す図である。
 図6に示すリソース制御システムは、ホストマシン1Eに加えて、コントローラ部2が配備されているホストマシン1Dを含んで構成される。ホストマシン1Dは、ハードウエア層としてCPU93を備え、OS92がインストールされている。ホストマシン1Dのユーザ空間には、コントローラ部2が具現化されている。このコントローラ部2は、図1に示したコントローラ部2と同様の機能を有している。
 ホストマシン1Eは、ハードウエア層としてCPU93とFPGA8を備え、OS92がインストールされている。ホストマシン1Eのユーザ空間には、FPGAライブラリ91が具現化されており、ユーザプログラム3a,3bがデプロイされている。このFPGAライブラリ91は、図1に示したFPGAライブラリ91と同様の機能を有している。
 FPGAライブラリ91は、マルチキュー5とスケジューラ部7を含んでおり、ホストマシン1Dのコントローラ部2と組み合わせて、前述したリソース制御装置1として動作する。マルチキュー5には、ユーザプログラムがデプロイされるごとに、このユーザプログラムに対応した新たなユーザキューが生成される。スケジューラ部7は、図1に示したユーザキュー間スケジューラ部71と、ユーザキュー内スケジューラ部72と、IPコアマスク設定部73に相当する部位を含んでいる。
 コントローラ部2は、マルチキュー5とスケジューラ部7にコマンドを通達する。FPGAライブラリ91は、OS92にインストールされたFPGAドライバ94を介して、FPGA8とIPコア81~83にタスクを実行させる。
《効果》
 以下、本発明に係るリソース制御装置、リソース制御システム、および、リソース制御方法等の効果について説明する
《請求項1》
 プログラムがタスクを実行するFPGAのIPコアに係るリソースを設定するコントローラ部と、
 前記プログラム毎に、それぞれ複数の優先度を持つキューのセットであるユーザキューを作成し、前記ユーザキューにタスクを格納する共通部と、
 前記ユーザキュー内および前記ユーザキュー間にて多段スケジューリングにより前記IPコアの何れかに実行させるタスクを選択するスケジューラ部と、
 を備えることを特徴とするリソース制御装置。
 これにより、マルチユーザ間でFPGAの機能を好適に共用し、FPGAのリソース効率を高めることができる。
《請求項2》
 前記スケジューラ部は、
 タスクの取り出し元となるユーザキューを選択するユーザキュー間スケジューラ部と、
 前記ユーザキュー間スケジューラ部が選択した前記ユーザキュー内で、タスクが登録されているキューのうち最も優先度の高いキューからタスクを取り出すユーザキュー内スケジューラ部と、
 を備えることを特徴とする請求項1に記載のリソース制御装置。
 これにより、マルチユーザ間とユーザ内の多段スケジューリングを実現し、FPGAのリソース効率を高めることができる。
《請求項3》
 前記スケジューラ部は、
 各タスクに対して、指定されていないIPコアを使用しないように制御するIPコアマスク設定部を更に備える、
 ことを特徴とする請求項1に記載のリソース制御装置。
 これにより、マルチユーザ間とユーザ内の多段スケジューリングを実現し、FPGAのリソース効率を高めることができる。
《請求項4》
 前記コントローラ部は、
 前記プログラムによって指定された数のIPコアを確保すると共に、IPコアの排他的使用の指定を受け付けると、各プログラムに対してIPコアを固定的に割り当てたマップを作成して管理する使用IPコア制御部を備え、
 前記使用IPコア制御部は、
 前記プログラムによって新たに指定されたIPコアの数の総和がFPGAのIPコアの数を超えたならば、この指定を受け付けない、
 ことを特徴とする請求項1に記載のリソース制御装置。
 これにより、マルチユーザ間でFPGAの機能を好適に共用することができる。
《請求項5》
 前記共通部は、
 新たにプログラムが起動する毎に、当該プログラム用のユーザキューを作成するユーザキュー作成部を備える、
 ことを特徴とする請求項1に記載のリソース制御装置。
 これにより、マルチユーザ間で公平にFPGAのリソースを共用することができる。
《請求項6》
 前記共通部は、
 前記プログラムからタスクを受け付けると、識別子に基づいて当該プログラムに係るユーザキューを選択し、タスク優先度を元に前記ユーザキューに前記タスクを登録する、
 ことを特徴とする請求項1に記載のリソース制御装置。
 これにより、マルチユーザ間で公平にFPGAのリソースを共用することができる。
《請求項7》
 プログラムがタスクを実行するFPGAのIPコアに係るリソースを設定するコントローラ部と、
 前記プログラム毎に、それぞれ複数の優先度を持つキューのセットであるユーザキューを作成し、前記ユーザキューにタスクを格納する共通部と、
 前記ユーザキュー内および前記ユーザキュー間にて多段スケジューリングにより前記IPコアの何れかに実行させるタスクを選択するスケジューラ部と、
 を備えることを特徴とするリソース制御システム。
 これにより、マルチユーザ間でFPGAの機能を好適に共用し、FPGAのリソース効率を高めることができる。
《請求項8》
 プログラムがタスクを実行するFPGAのIPコアに係るリソースをコントローラ部が設定するステップと、
 共通部が、前記プログラム毎に、それぞれ複数の優先度を持つキューのセットであるユーザキューを作成し、前記ユーザキューにタスクを格納するステップと、
 スケジューラ部が、前記ユーザキュー内および前記ユーザキュー間にて多段スケジューリングにより前記IPコアの何れかに実行させるタスクを選択するステップと、
 を実行することを特徴とするリソース制御方法。
 これにより、マルチユーザ間でFPGAの機能を好適に共用し、FPGAのリソース効率を高めることができる。
1,1G リソース制御装置
1B,1C,1D,1E ホストマシン
2 コントローラ部
20a~20c リソース制御命令
21 コマンド受付部
22 ユーザキュー管理部
23 使用IPコア制御部
24 CPU制御部
25 デバイス制御部
26 GPU制御部
27 FPGA制御部
3a ユーザプログラム
3b ユーザプログラム
31 IPコアマスク設定部
32 タスク優先度設定部
4 共通部
41 ユーザキュー作成部
42 ユーザキュー振分部
5 マルチキュー
5a,5b ユーザキュー
5G キューセット
50,51,5F キュー
6a~6d タスク
7 スケジューラ部
7G スケジューラ部
71 ユーザキュー間スケジューラ部
72 ユーザキュー内スケジューラ部
73 IPコアマスク設定部
74 固定優先度スケジューラ部
8 FPGA
81~83 IPコア
91 FPGAライブラリ
92 OS
921 CPUスケジューラ
93 CPU
931~933 コア
94 FPGAドライバ

Claims (8)

  1.  プログラムがタスクを実行するFPGAのIPコアに係るリソースを設定するコントローラ部と、
     前記プログラム毎に、それぞれ複数の優先度を持つキューのセットであるユーザキューを作成し、前記ユーザキューにタスクを格納する共通部と、
     前記ユーザキュー内および前記ユーザキュー間にて多段スケジューリングにより前記IPコアの何れかに実行させるタスクを選択するスケジューラ部と、
     を備えることを特徴とするリソース制御装置。
  2.  前記スケジューラ部は、
     タスクの取り出し元となるユーザキューを選択するユーザキュー間スケジューラ部と、
     前記ユーザキュー間スケジューラ部が選択した前記ユーザキュー内で、タスクが登録されているキューのうち最も優先度の高いキューからタスクを取り出すユーザキュー内スケジューラ部と、
     を備えることを特徴とする請求項1に記載のリソース制御装置。
  3.  前記スケジューラ部は、
     各タスクに対して、指定されていないIPコアを使用しないように制御するIPコアマスク設定部を更に備える、
     ことを特徴とする請求項1に記載のリソース制御装置。
  4.  前記コントローラ部は、
     前記プログラムによって指定された数のIPコアを確保すると共に、IPコアの排他的使用の指定を受け付けると、各プログラムに対してIPコアを固定的に割り当てたマップを作成して管理する使用IPコア制御部を備え、
     前記使用IPコア制御部は、
     前記プログラムによって新たに指定されたIPコアの数の総和がFPGAのIPコアの数を超えたならば、この指定を受け付けない、
     ことを特徴とする請求項1に記載のリソース制御装置。
  5.  前記共通部は、
     新たにプログラムが起動する毎に、当該プログラム用のユーザキューを作成するユーザキュー作成部を備える、
     ことを特徴とする請求項1に記載のリソース制御装置。
  6.  前記共通部は、
     前記プログラムからタスクを受け付けると、識別子に基づいて当該プログラムに係るユーザキューを選択し、タスク優先度を元に前記ユーザキューに前記タスクを登録する、
     ことを特徴とする請求項1に記載のリソース制御装置。
  7.  プログラムがタスクを実行するFPGAのIPコアに係るリソースを設定するコントローラ部と、
     前記プログラム毎に、それぞれ複数の優先度を持つキューのセットであるユーザキューを作成し、前記ユーザキューにタスクを格納する共通部と、
     前記ユーザキュー内および前記ユーザキュー間にて多段スケジューリングにより前記IPコアの何れかに実行させるタスクを選択するスケジューラ部と、
     を備えることを特徴とするリソース制御システム。
  8.  プログラムがタスクを実行するFPGAのIPコアに係るリソースをコントローラ部が設定するステップと、
     共通部が、前記プログラム毎に、それぞれ複数の優先度を持つキューのセットであるユーザキューを作成し、前記ユーザキューにタスクを格納するステップと、
     スケジューラ部が、前記ユーザキュー内および前記ユーザキュー間にて多段スケジューリングにより前記IPコアの何れかに実行させるタスクを選択するステップと、
     を実行することを特徴とするリソース制御方法。
PCT/JP2021/004998 2021-02-10 2021-02-10 リソース制御装置、リソース制御システム、および、リソース制御方法 WO2022172365A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US18/275,344 US20240095067A1 (en) 2021-02-10 2021-02-10 Resource control device, resource control system, and resource control method
PCT/JP2021/004998 WO2022172365A1 (ja) 2021-02-10 2021-02-10 リソース制御装置、リソース制御システム、および、リソース制御方法
JP2022581083A JPWO2022172365A1 (ja) 2021-02-10 2021-02-10

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2021/004998 WO2022172365A1 (ja) 2021-02-10 2021-02-10 リソース制御装置、リソース制御システム、および、リソース制御方法

Publications (1)

Publication Number Publication Date
WO2022172365A1 true WO2022172365A1 (ja) 2022-08-18

Family

ID=82838435

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2021/004998 WO2022172365A1 (ja) 2021-02-10 2021-02-10 リソース制御装置、リソース制御システム、および、リソース制御方法

Country Status (3)

Country Link
US (1) US20240095067A1 (ja)
JP (1) JPWO2022172365A1 (ja)
WO (1) WO2022172365A1 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000155693A (ja) * 1998-11-18 2000-06-06 Fujitsu Ltd メッセージ制御装置
JP2007004340A (ja) * 2005-06-22 2007-01-11 Renesas Technology Corp 半導体集積回路
JP2015130135A (ja) * 2014-01-09 2015-07-16 株式会社東芝 データ配信装置、及びデータ配信方法
JP2019082819A (ja) * 2017-10-30 2019-05-30 株式会社日立製作所 アクセラレータ部の利用に対する課金を支援するシステム及び方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000155693A (ja) * 1998-11-18 2000-06-06 Fujitsu Ltd メッセージ制御装置
JP2007004340A (ja) * 2005-06-22 2007-01-11 Renesas Technology Corp 半導体集積回路
JP2015130135A (ja) * 2014-01-09 2015-07-16 株式会社東芝 データ配信装置、及びデータ配信方法
JP2019082819A (ja) * 2017-10-30 2019-05-30 株式会社日立製作所 アクセラレータ部の利用に対する課金を支援するシステム及び方法

Also Published As

Publication number Publication date
JPWO2022172365A1 (ja) 2022-08-18
US20240095067A1 (en) 2024-03-21

Similar Documents

Publication Publication Date Title
RU2530345C2 (ru) Экземпляры планировщика в процессе
US10467725B2 (en) Managing access to a resource pool of graphics processing units under fine grain control
US9465663B2 (en) Allocating resources in a compute farm to increase resource utilization by using a priority-based allocation layer to allocate job slots to projects
WO2020001320A1 (zh) 一种资源分配方法、装置及设备
US8464266B2 (en) System and method for enforcing future policies in a compute environment
CN113454614A (zh) 用于分布式计算中的资源划分的系统和方法
CN110704186A (zh) 基于混合分布架构的计算资源分配方法、装置和存储介质
US20090158299A1 (en) System for and method of uniform synchronization between multiple kernels running on single computer systems with multiple CPUs installed
Tseng et al. Task scheduling for edge computing with agile VNFs on-demand service model toward 5G and beyond
CN110503593A (zh) 多个图形处理单元的调度
KR102052964B1 (ko) 컴퓨팅 스케줄링 방법 및 시스템
Maiti et al. Internet of Things applications placement to minimize latency in multi-tier fog computing framework
US20220229695A1 (en) System and method for scheduling in a computing system
WO2022172365A1 (ja) リソース制御装置、リソース制御システム、および、リソース制御方法
CN113641448A (zh) 一种边缘计算容器分配和层下载排序体系结构及其方法
Wu et al. Abp scheduler: Speeding up service spread in docker swarm
CN116157778A (zh) 共享物理主机上混合集中分布式调度的系统和方法
Fadahunsi et al. Edge scheduling framework for real-time and non real-time tasks
CN115576683A (zh) 一种协程池调度管理方法、系统、装置及存储介质
Ho et al. GRASG-a framework for" gridifying" and running applications on service-oriented grids
CN115904673B (zh) 云计算资源并发调度方法、装置、系统、设备及介质
John et al. Novel backfilling technique with deadlock avoidance and migration for grid workflow scheduling
Listrovaya et al. Modeling Local Scheduler Operation Based on Solution of Nonlinear Boolean Programming Problems
CN115525408A (zh) 一种保障服务质量的无服务计算系统及方法
Kachris et al. The VINEYARD integrated framework for hardware accelerators in the cloud

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: 21925618

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2022581083

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 18275344

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 21925618

Country of ref document: EP

Kind code of ref document: A1