WO2016063482A1 - アクセラレータ制御装置、アクセラレータ制御方法およびプログラム記憶媒体 - Google Patents

アクセラレータ制御装置、アクセラレータ制御方法およびプログラム記憶媒体 Download PDF

Info

Publication number
WO2016063482A1
WO2016063482A1 PCT/JP2015/005149 JP2015005149W WO2016063482A1 WO 2016063482 A1 WO2016063482 A1 WO 2016063482A1 JP 2015005149 W JP2015005149 W JP 2015005149W WO 2016063482 A1 WO2016063482 A1 WO 2016063482A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
accelerator
memory
dag
processing
Prior art date
Application number
PCT/JP2015/005149
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 US15/520,979 priority Critical patent/US20170344398A1/en
Priority to JP2016555069A priority patent/JPWO2016063482A1/ja
Publication of WO2016063482A1 publication Critical patent/WO2016063482A1/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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • 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

Definitions

  • the present invention relates to a technology related to a computer system that executes calculation processing using an accelerator.
  • Non-Patent Document 1 describes an example of a computer control system. As shown in FIG. 11, the computer control system disclosed in Non-Patent Document 1 includes a driver host 6 and worker hosts 8-1 to 8-3. The driver host 6 and the worker hosts 8-1 to 8-3 are connected by a network 7. The worker hosts 8-1 to 8-3 are computers that perform calculation processing. The driver host 6 is a computer that controls calculation processing in the worker hosts 8-1 to 8-3. The number of worker hosts may be one or more, and is not limited to three illustrated in FIG.
  • the computer control system shown in FIG. 11 operates as follows.
  • the driver host 6 holds a DAG (Directed Acyclic Graph) that represents a flow of processing to be performed by the worker hosts 8-1 to 8-3.
  • FIG. 4 shows an example of a DAG.
  • Each node (node) of the DAG in FIG. 4 represents data, and an edge (side) connecting the nodes represents processing.
  • the computer performs the process 5-1 on the data (node) 4-1, thereby generating the data 4-2, and then the computer processes the data 4-2. 2 is generated to generate data 4-3.
  • the computer receives the two pieces of data 4-3 and 4-4 and applies the processing 5-3 to the two pieces of data to generate data 4-5.
  • data 4-6 is generated when the computer performs processing 5-4 on data 4-5.
  • the data 4-1 is composed of, for example, a plurality of divided data 4A-1, 4B-1,... As shown in FIG. Similarly, the other data 4-2, 4-3,... Are composed of a plurality of divided data.
  • the divided data constituting the data 4-1 to 4-6 is not limited to a plurality, and may be one. In this specification, even if there is only one piece of divided data constituting the data, that is, even if the divided data is not part of the data but the data itself, it is described as divided data.
  • the driver host 6 causes the worker hosts 8-1 to 8-3 to share data processing at each edge (processing) of the DAG in FIG. For example, regarding the process 5-1 for processing the data 4-1, the driver host 6 divides the divided data 4A-1 shown in FIG. 12 into the worker host 8-1 and the divided data 4B-1 into the worker host 8-2. The data 4C-1 is assigned to the worker host 8-3. That is, the driver host 6 controls the worker hosts 8-1 to 8-3 so as to process data in parallel.
  • the computer control system in FIG. 11 can improve the processing performance of a target process by adopting the above configuration and increasing the number of worker hosts.
  • Patent Document 1 describes a technique related to a parallel processing system.
  • the accelerator when command data is associated with a plurality of status data, the accelerator sets the command data to one according to the number of times of reading the command data and the predetermined number of times associated with the command data. Let the processor process.
  • Patent Document 2 describes a technique related to an image processing apparatus including a plurality of processors that use different memory areas.
  • the buffer module transfers the image data written in the buffer by the preceding process to the transfer buffer secured in the memory area used by the succeeding process. In the subsequent processing, the image data transferred to the transfer buffer is read and the image data is processed.
  • Patent Document 3 relates to an instruction scheduling method, and this Patent Document 3 discloses a technique for constructing a schedule for executing an instruction in units of instruction blocks.
  • Non-Patent Document 1 has a problem that calculations using worker hosts 8-1 to 8-3 (that is, accelerators) cannot be performed at high speed. This is because the memories of the worker hosts (accelerators) 8-1 to 8-3 are not efficiently used. If the output data, which is data generated by the processing, cannot be stored in the memory of the worker hosts 8-1 to 8-3, the output data is transferred from the worker hosts 8-1 to 8-3 to the driver host 6 ( evacuate). When the output data is processed, the output data is stored (loaded) in the memory of the worker hosts 8-1 to 8-3 from the driver host 6. As described above, when the output data cannot be stored in the memories of the worker hosts 8-1 to 8-3, data communication frequently occurs between the driver host 6 and the worker hosts 8-1 to 8-3. This is one reason why computer control systems cannot perform calculations at high speed.
  • the present invention has been devised to solve the above problems. That is, the main object of the present invention is to provide a technique capable of speeding up the calculation processing using an accelerator.
  • the accelerator control device of the present invention provides: A generation unit that generates a DAG (Directed Acyclic Graph) representing a flow of processing based on a computer program to be executed; When data corresponding to the node of the DAG is stored in the memory provided in the accelerator to be controlled, it corresponds to the edge of the DAG using the data stored in the memory of the accelerator And a control unit that controls the accelerator so as to execute processing.
  • DAG Directed Acyclic Graph
  • the accelerator control method of the present invention includes: Computer Generate a DAG (Directed Acyclic Graph) that represents the flow of processing based on the computer program to be executed, When data corresponding to the node of the DAG is stored in the memory provided in the accelerator to be controlled, it corresponds to the edge of the DAG using the data stored in the memory of the accelerator The accelerator is controlled to execute processing.
  • DAG Directed Acyclic Graph
  • the program storage medium of the present invention includes: A process for generating a DAG (Directed Acyclic Graph) representing a flow of a process based on a computer program to be executed;
  • DAG Directed Acyclic Graph
  • data corresponding to the node of the DAG is stored in the memory provided in the accelerator to be controlled, it corresponds to the edge of the DAG using the data stored in the memory of the accelerator
  • Processing to control the accelerator to perform processing The processing procedure for causing the computer to execute is shown.
  • the main object of the present invention is also achieved by the accelerator control method of the present invention corresponding to the accelerator control apparatus of the present invention.
  • the main object of the present invention is also achieved by a computer program corresponding to the accelerator control apparatus and accelerator control method of the present invention and a program storage medium storing the computer program.
  • FIG. 1A It is a block diagram showing schematic structure of the accelerator control apparatus which concerns on this invention. It is a block diagram showing the modification of a structure of the accelerator control apparatus in FIG. 1A. It is a block diagram showing the structural example of the computer system provided with the accelerator control apparatus of 1st Embodiment. It is a figure explaining an example of reservation API (Application Programming Interface) and execution API (Application (Programming Interface). It is a figure showing an example of DAG. It is a figure showing an example of the memory management table in 1st Embodiment. It is a figure showing an example of the data management table in 1st Embodiment. It is a figure explaining an example of the data processed with an accelerator.
  • FIG. 1A is a simplified block diagram showing a configuration of an embodiment of an accelerator control device according to the present invention.
  • the accelerator control device 1 in FIG. 1A has a function of connecting to an accelerator (not shown) and controlling the operation of the accelerator.
  • the accelerator control device 1 includes a generation unit 12 and a control unit 14.
  • the generation unit 12 has a function of generating a DAG (Directed Acyclic Graph) that represents a processing flow based on a computer program to be executed (hereinafter also referred to as a user program).
  • DAG Directed Acyclic Graph
  • the control unit 14 performs processing corresponding to the edge of the DAG using the data stored in the memory. Control the accelerator to run.
  • the accelerator may be controlled. That is, the control unit 14 does not delete (without saving) the divided data that can be processed continuously from the accelerator memory every time the processing ends, and continuously executes a plurality of processes on the data.
  • the accelerator may be controlled.
  • the accelerator control device 1 controls the accelerator so that the data (cached data) stored in the accelerator memory is used for the DAG processing. For this reason, the accelerator control device 1 can reduce the time required for loading the data, compared to the case where the accelerator control device 1 provides and stores (loads) the data to be processed each time the accelerator executes processing. . Thereby, the accelerator control apparatus 1 can achieve high-speed processing using the accelerator. In addition, the accelerator control device 1 can reduce the service cost required for loading data into the accelerator. Furthermore, by controlling the accelerator so that a plurality of processes are continuously executed on the data to be processed, the accelerator control device 1 can promote the speeding up of the process using the accelerator.
  • the accelerator control device 1 can reduce processing of data movement (evacuation) from the accelerator to the accelerator control device 1 and provision (reloading) of data to the accelerator.
  • the accelerator control apparatus 1 can promote the speeding up of the process using the accelerator, and can reduce the service cost for loading data.
  • the accelerator control device 1 may further include a memory management unit 16 as shown in FIG. 1B.
  • the memory management unit 16 has a function of managing the memory provided in the accelerator controlled by the accelerator control device 1.
  • the control unit 14 requests the memory management unit 16 for memory resources of an accelerator necessary for the processing indicated in the DAG.
  • the memory management unit 16 may release a part of the memory in order to secure a memory capacity necessary for processing (that is, permitting storing new data after deleting already stored data). is there.
  • the memory management unit 16 stores data that is not used in subsequent processing in the DAG or data that has not received a cache (temporary storage) request based on the user program in the releasable memory area. Release from the memory area to be held. Then, the memory management unit 16 secures a memory area corresponding to the memory capacity necessary for processing including the memory area thus released, and allocates the secured memory area as a memory area used for processing in the DAG. .
  • the control unit 14 controls the accelerator so that the cache data is used for DAG processing.
  • the accelerator control device 1 can reduce the number of times data is loaded into the accelerator by controlling the accelerator so as to execute processing using the cache data, and thereby the service for loading the data. Cost can be reduced. Further, the accelerator control device 1 can reduce the number of times of data loading, thereby increasing the processing speed.
  • the control unit 14 loads the accelerator into the accelerator by loading the data into the memory of the accelerator once. This process is executed continuously.
  • the accelerator control device 1 controls the accelerator so that a plurality of processes are continuously executed by one load of data to the accelerator, thereby moving (saving) data from the accelerator, The number of times of loading can be reduced. Thereby, the accelerator control apparatus 1 can reduce the service cost required for saving and loading data. Further, the accelerator control device 1 can reduce the number of times of data loading, thereby increasing the processing speed.
  • FIG. 2 is a block diagram showing a simplified configuration of a computer system including the accelerator control device 1 according to the first embodiment.
  • This computer system includes accelerators 3-1 and 3-2 that execute calculation processing, and an accelerator control device 1 that controls the accelerators 3-1 and 3-2.
  • the accelerators 3-1 and 3-2 and the accelerator control device 1 are connected by an I / O (Input / Output) bus interconnect 2.
  • an accelerator is a coprocessor connected to a computer via an I / O bus.
  • GPU GraphicsGraphProcessing Unit
  • Xeon Phi registered trademark
  • the accelerators 3-1 and 3-2 have a common configuration as will be described below, and the accelerator control device 1 performs similar control. In the following description, the accelerators 3-1 and 3-2 are also simply referred to as the accelerator 3 for easy understanding.
  • the accelerator 3 includes a processor 31 that processes data and a memory 32 that stores data.
  • the accelerator control device 1 includes an execution unit 11, a generation unit 12, a calculation unit 13, a control unit 14, a storage unit 15, a memory management unit 16, a data management unit 18, and a storage unit 20. Yes.
  • the execution unit 11 has a function of executing a user program.
  • the accelerator control device 1 is provided with a reservation API (Application Programming Interface) and an execution API (Application Programming Interface) as shown in FIG.
  • the user program is executed using (recalling) the reservation API and the execution API.
  • the reservation API corresponds to the edge of the DAG shown in FIG. 4, that is, one process.
  • the generation unit 12 has a function of generating a DAG that represents the processing order requested by the user program. For example, when the reservation API is called and executed based on the user program, the generation unit 12 generates (adds) a DAG edge and node, that is, one process and data generated by the process in the DAG. .
  • Each data of DAG is composed of divided data as shown in FIG.
  • each data portion obtained by dividing the data into a plurality of data is not only expressed as divided data, but also when the data is not divided, that is, the data itself (the entire data) is also expressed as divided data. is there.
  • the reservation API shown in FIG. 3 is an API used for reserving a process. That is, even if the reservation API is executed, the processing in the accelerator 3 is not executed, and only the DAG is generated. Further, when the execution API is called, there are cases where a new edge and node are generated in the DAG by the generation unit 12 and cases where it is not generated. When the execution API is executed, execution of the processing of the DAG generated so far is triggered (activated). As a process belonging to the execution API, for example, a process that requires data after the DAG is processed in the user program, a DAG description such as file writing is completed, and the result is written or displayed to display the program. There is a process to complete.
  • the reservation API and the execution API may have one or a plurality of arguments ⁇ , ⁇ ,.
  • One of the arguments is called a kernel function.
  • a kernel function is a function that represents a process that a user program executes on data. That is, the reservation API and the execution API represent access patterns of processing performed on the data, and the actual processing is performed based on a kernel function given as an argument of the reservation API and the execution API in the user program.
  • One of the other arguments is a parameter indicating the size of output data generated by processing by the reservation API or execution API and the kernel function given thereto.
  • the parameter indicates the capacity of the generated data 4-2.
  • a method for indicating the capacity for example, a method for giving an absolute value of the capacity of the generated data 4-2 is used.
  • a method for indicating the capacity a method of giving a relative ratio between the capacity of the data 4-1 to be processed (input data) and the capacity of the data 4-2 to be generated (output data) May be used.
  • the execution unit 11 requests (requests) the generation unit 12 to preferentially cache data in the accelerator 3 for data repeatedly used in a plurality of DAGs in response to a request based on the user program. It may be.
  • the generation unit 12 generates a DAG every time the execution unit 11 reads the reservation API and the execution API.
  • the generation unit 12 adds an edge and a node corresponding to the reservation API to the DAG. Further, when the execution API is executed, the generation unit 12 adds an edge and a node as necessary, and notifies the calculation unit 13 of the DAG generated so far.
  • the DAG generated by the generation unit 12 includes a reservation API and a type of execution API related to processing based on the user program, and a kernel function given to each API.
  • This DAG further includes information on the capacity of data generated by each process, or the capacity of the data indicated by each node, such as the capacity ratio of the data indicated by the input-side node of the process and the data indicated by the output-side node. Including. Further, based on the request from the execution unit 11, the generation unit 12 assigns information (marks) indicating that the data is to be cached to a node (data) that performs caching in the DAG.
  • the calculation unit 13 receives the DAG generated by the generation unit 12, calculates the number of threads and the memory capacity (memory resource) in the memory 32 of the accelerator 3 required for each process of the received DAG, and calculates the DAG and the necessary resources. Information is passed to the control unit 14.
  • the storage unit 15 has a configuration for storing data.
  • the storage unit 15 holds data to be provided to and stored (loaded) in the memory 32 of the accelerator 3.
  • the memory management unit 16 secures all the memory 32 of the accelerator 3 after the accelerator control device 1 is activated, and manages the secured memory resources by dividing them into pages of a certain size.
  • the page size is, for example, 4 KB or 64 KB.
  • the storage unit 20 stores a memory management table 17 that is management information used when managing the memory 32.
  • FIG. 5 is a diagram illustrating an example of the memory management table 17.
  • the memory management table 17 holds information regarding each page.
  • the page information includes an accelerator number for identifying the accelerator 3 to which the page belongs, a page number, and a use flag indicating that data being calculated or stored in the page.
  • the page information includes a lock flag indicating that the page is being used for calculation and is not allowed to be released.
  • the page information includes a swap flag that indicates that it is necessary to swap (save) the page because it is necessary for subsequent processing in the DAG when the page is released.
  • the page information when the use flag is asserted (validated), the page information includes a use data number indicating data held by the page and a divided data number indicating which divided data of each data is held. Including.
  • the usage data number is an identifier assigned to a DAG node.
  • the memory management unit 16 refers to the memory management table 17 and manages the memory 32 of the accelerator 3.
  • the memory management unit 16 receives a request from the control unit 14, it first checks whether the requested number of pages can be secured only from a page (free page) for which the use flag is not asserted. If the allocation can be ensured, the memory management unit 16 asserts the use flag and the lock flag of those pages, and responds to the control unit 14 with the completion of reservation.
  • the memory management unit 16 secures the requested number of pages as follows. That is, in addition to the free page, the memory management unit 16 secures the necessary number of pages by using a page in which the use flag is asserted and the lock flag and the swap flag required are not asserted. Then, the memory management unit 16 asserts the use flag and lock flag of the reserved page, and responds to the control unit 14 that the reservation is complete. At this time, the memory management unit 16 deletes the data held in the secured page. In addition, the memory management unit 16 notifies the data management unit 18 of the data number, the divided data number, and the page number of the data to be deleted. When the memory management unit 16 releases the memory, if one divided data of one data is distributed and held in a plurality of pages, the memory management unit 16 releases the plurality of pages collectively.
  • the memory management unit 16 also uses pages other than the lock page among the remaining pages to ensure the number of pages having a necessary capacity.
  • the memory management unit 16 saves (moves) the stored data to the storage unit 15 for the page for which the swap flag is asserted, and releases the page that stores the moved data.
  • the memory management unit 16 saves and deletes data in units of one piece of divided data.
  • the memory management unit 16 stores the data number, the divided data number, and the page number of the divided data saved in the storage unit 15 or the divided data that is deleted when the swap flag is not asserted and the memory is released. 18 is notified.
  • the memory management unit 16 also sends an error message to the control unit 14 indicating that the memory capacity cannot be secured if the number of pages requested by the control unit 14 cannot be secured due to a lack of usable pages. respond.
  • the memory management unit 16 when the memory management unit 16 receives an inquiry from the control unit 14 regarding memory information that can be secured, the memory management unit 16 responds to the control unit 14 with information on memory that can be secured at that time. Further, in response to a request from the control unit 14, the memory management unit 16 asserts the swap flag required for the managed page, and cancels the assertion of the lock flag of the page used for the calculation after the calculation is completed. To do.
  • the data management unit 18 uses the data management table 19 to manage data held in the memory 32 of the accelerator 3.
  • the storage unit 20 holds a data management table 19 used for managing data stored in the memory 32 of the accelerator 3.
  • FIG. 6 is a diagram illustrating an example of the data management table 19.
  • the data management table 19 holds information regarding each data.
  • the data information includes a data number for identifying the data, a division number of the data, a materialization flag indicating in which of the memory 32 of the accelerator 3 and the storage unit 15 the data is stored, and the data in the storage unit 15. And a swap flag indicating that it has been saved (moved).
  • the data information includes an accelerator number indicating the accelerator 3 that holds the data for which the materialize flag is asserted and the swap flag is not asserted, and the page number of the memory 32 of the accelerator 3 that holds the data. . Note that the materialize flag is asserted when data is held in the memory 32 of the accelerator 3.
  • the data management unit 18 When the data management unit 18 receives an inquiry about the existence of data from the control unit 14, the data management unit 18 uses the data management table 19 to check whether or not the inquiry target data already exists. Further, the data management unit 18 confirms whether the materialized flag and the swap flag of the data to be inquired are asserted based on the data management table 19. Then, the data management unit 18 responds to the control unit 14 with the confirmation result. Further, when receiving the notification from the memory management unit 16, the data management unit 18 sets the materialized flag of the data erased from the memory 32 of the accelerator 3 to 0. Further, the data management unit 18 asserts a swap flag of data saved from the memory 32 of the accelerator 3 to the storage unit 15.
  • control unit 14 When the control unit 14 receives the DAG generated by the generation unit 12 and the necessary resource information calculated by the calculation unit 13 from the calculation unit 13, the control unit 14 performs a process specified by the DAG. At this time, the control unit 14 inquires the data management unit 18 about the data number specified by the DAG, and checks whether the data has already been calculated and the materialize flag is asserted or the swap flag is asserted. . In addition, the control unit 14 inquires of the memory management unit 16 about the memory capacity that can be secured. And the control part 14 performs a process in the execution procedure which processes DAG at high speed.
  • control unit 14 caches data in the memory 32 of the accelerator 3 for data that has already been calculated and the materialize flag is asserted and the swap flag is not asserted. Is used. Thereby, the process of loading and generating the data is omitted.
  • control unit 14 requests the memory management unit 16 for a memory capacity necessary for loading the data saved in the storage unit 15 with respect to data for which both the materialize flag and the swap flag are asserted. Further, when receiving a reservation completion response from the memory management unit 16, the control unit 14 loads data on the designated page and uses the data. Thereby, the process which produces
  • control unit 14 gives priority to the process for the data already stored in the memory 32 of the accelerator 3 over the process for the data not existing in the memory 32. For this reason, at the time of processing, the service cost due to loading from the saved storage unit 15 into the memory 32 of the accelerator 3 is reduced.
  • both the DAG data 4-1 shown in FIG. 4 and the data 4-2 are not sufficient, so that the accelerator 3 May not be stored in the memory 32. That is, the total amount of data processed by the accelerator 3 may not fit in the memory 32 of the accelerator 3.
  • the control unit 14 controls the accelerator 3 as follows. Note that the DAG data 4-1 to 4-3 are each divided into a plurality of divided data as shown in FIG.
  • the process 5-1 is sequentially performed on the divided data 41-1 and 42-1 of the data 4-1, and then the divided data 41-2 and 42-2 of the data 4-2 are sequentially performed.
  • There is a processing order such as performing processing 5-2.
  • the control unit 14 performs the process 5-2 on the divided data 41-2 of the data 4-2 after performing the process 5-1 on the divided data 41-1 of the data 4-1.
  • the accelerator 3 is controlled so as to be in the processing order. Accordingly, the control unit 14 reduces the possibility that the divided data 41-2 of the data 4-2 is saved from the memory 32 of the accelerator 3 to the storage unit 15.
  • the control unit 14 performs control (optimization) for continuously processing the divided data, not only when two processes illustrated in FIG. 7 are continuous, but also when three or more processes are continuous. You may implement similarly.
  • control unit 14 distributes a plurality of pieces of divided data to the plurality of accelerators 3 and performs the same processing at the edge of the DAG in parallel on each piece of divided data. Make it.
  • control unit 14 performs processing 5-1 and processing on the divided data in the same manner as described above even when the number of divided data constituting the data is larger than that in FIG.
  • Each accelerator 3 is controlled so as to continuously perform 5-2.
  • control unit 14 performs the following operation when the processing at each edge of the DAG is performed by the accelerator 3 and the divided data to be processed is not stored in the memory 32 of the accelerator 3. That is, the control unit 14 loads the data to be processed into the accelerator 3 and requests the memory management unit 16 for the number of pages in the memory 32 of the accelerator 3 corresponding to the memory capacity necessary for outputting the output data. Secure. Then, the control unit 14 causes the accelerator 3 that executes the processing to load the processing target data from the storage unit 15 and execute the processing.
  • control unit 14 notifies the memory management unit 16 and the memory management unit 16 releases the lock of the memory page used. Furthermore, the control unit 14 notifies the memory management unit 16 to cancel the assertion of the lock flag and assert the swap flag with respect to data that is necessary in the subsequent process of the DAG. In addition, the control unit 14 manages the memory so as to assert the swap flag of the page number corresponding to the data in the data management table 19 for the data to which the cache request mark is added as the data used in the plurality of DAGs. Notification to the unit 16.
  • FIG. 9 is a flowchart illustrating an operation example of the accelerator control device 1 according to the first embodiment.
  • the flowchart shown in FIG. 9 represents a processing procedure executed by the accelerator control device 1.
  • the execution unit 11 executes a user program that uses the reservation API and the execution API (step A1).
  • the generation unit 12 determines whether or not the process of the user program executed by the execution unit 11 is a process called (read) and executed by the execution API (step A2).
  • the generation unit 12 checks whether the process is called and executed by the reservation API. (Step A3). If the process is called by the reservation API (Yes in step A3), the generation unit 12 generates the edge and the node corresponding to the process specified by the reservation API and the data generated by the process so far. Added to the DAG. That is, the generation unit 12 updates the DAG (Step A4).
  • the execution unit 11 confirms whether or not the instruction of the executed user program is the last instruction of the program (step A5). If it is the last command (Yes in step A5), the execution unit 11 ends the process based on the user program. On the other hand, when it is not the last command (No in Step A5), the execution unit 11 returns to Step A1 and continues executing the user program.
  • step A2 when the process of the user program executed by the execution unit 11 is a process called by the execution API (Yes in step A2), the generation unit 12 transmits the DAG generated so far. The process proceeds to steps A6 to A14.
  • the generation unit 12 updates the DAG by adding an edge and a node corresponding to the executed process and the generated data to the DAG as necessary (step A6), and transmits the DAG to the calculation unit 13.
  • the calculation unit 13 calculates the number of accelerator threads and memory capacity necessary for processing at each edge of the given DAG (step A7). Further, the calculation unit 13 adds the calculated number of threads and memory capacity to the DAG as necessary resource information, and transmits the DAG to the control unit 14.
  • the control unit 14 When receiving the DAG to which the necessary resource information is added, the control unit 14 confirms the data included in the DAG. That is, the control unit 14 checks with the data management unit 18 which data already exists. Alternatively, the control unit 14 confirms with the data management unit 18 which data is cached in the accelerator 3 or saved in the storage unit 15. Further, the control unit 14 confirms the memory capacity that can be secured with the memory management unit 16. And the control part 14 determines the order of the process to perform based on the obtained information as follows. That is, the control unit 14 makes use of already calculated data. Further, the control unit 14 gives priority to the process of calculating data existing in the memory 32 of the accelerator 3. Furthermore, the control unit 14 performs a plurality of processes on the data (divided data) continuously.
  • the control unit 14 searches for and determines the optimum processing order in consideration of the above items (step A8). That is, the control unit 14 optimizes the processing order. Note that the continuous processing on the divided data is particularly effective when the data to be processed cannot be accommodated in the memory 32 of the accelerator 3.
  • the control unit 14 controls the accelerator 3 as follows so that processing at each edge of the DAG is executed in accordance with the determined processing order.
  • the control unit 14 checks whether or not the divided data to be processed in the process at the execution target edge is already prepared (stored) in the memory 32 of the accelerator 3 (step A9).
  • the control unit 14 loads the divided data from the storage unit 15 to the memory 32 of the accelerator 3 (step A10).
  • the load for example, a case where the divided data is deleted from the memory 32 of the accelerator 3 by being saved from the memory 32 of the accelerator 3 to the storage unit 15 can be considered.
  • the load there is a case where the data is not given to the accelerator 3 because it is the divided data processed in the first process of the DAG.
  • the control unit 14 requests the memory management unit 16 to secure a memory capacity necessary for outputting the processing to be executed (step A11).
  • the control unit 14 notifies the memory management unit 16 of information (for example, a use data number and a divided data number) necessary for adding information related to output data to the memory management table 17.
  • the memory management unit 16 secures a memory capacity (page) necessary for the accelerator 3 and registers the notified information in the memory management table 17.
  • the memory management unit 16 notifies the control unit 14 of the page number of the secured page.
  • the lock flag for the reserved page of memory is asserted.
  • control unit 14 notifies the data management unit 18 of information related to the output data output by the executed process (in other words, information necessary for adding information related to the output data to the data management table 19).
  • the data management unit 18 registers the notified information in the data management table 19 (step A12).
  • control unit 14 controls the accelerator 3 so that the processing corresponding to the edge of the DAG is executed (step A13).
  • the control unit 14 notifies the memory management unit 16 of the completion of the process, and cancels the assertion of the lock flag in the page of the memory 32 used for the process.
  • the control unit 14 manages the memory so that the swap flag required in the memory management table 17 in the page where the data is stored is asserted. Request to the part 16. Further, the control unit 14 requests the memory management unit 16 to assert the swap flag required for the data requested to be cached by the execution unit 11.
  • control unit 14 continues the processes in steps A9 to A13 until the execution of all the processes specified in the DAG is completed according to the optimal process order determined in step A8.
  • Step A14 the control unit 14 returns to the operation in Step A1.
  • FIG. 10 is a flowchart illustrating an operation example of the memory management unit 16 relating to page allocation processing.
  • the memory management unit 16 refers to the memory management table 17 to check whether or not the number of free pages corresponding to the requested memory capacity exists in the memory 32 of the accelerator 3 (step B1). If the requested memory capacity can be ensured with only free pages (Yes in step B1), the memory management unit 16 allocates the page as a page to be used for processing (step B7).
  • step B1 if the number of free pages corresponding to the requested memory capacity is insufficient (No in step B1), the memory management unit 16 does not assert the lock flag and the swap slug required from the memory management table 17. Search for. Then, the memory management unit 16 checks whether or not the requested memory capacity can be secured by combining the retrieved page and the free page (step B2).
  • step B2 when the necessary memory capacity can be secured (Yes in step B2), the memory management unit 16 releases all or a part of the pages for which neither the lock flag nor the swap flag required is asserted, The retained data is deleted (step B6). Then, the memory management unit 16 notifies the data management unit 18 that the data held in the released page has been deleted.
  • the memory management unit 16 checks whether or not the requested memory capacity can be secured by including the page for which the swap flag required is included. (Step B3).
  • Step B3 If the necessary memory capacity cannot be secured in Step B3 (No in Step B3), the memory management unit 16 responds to the control unit 14 that an error has occurred (Step B4).
  • the memory management unit 16 executes the following operation when the necessary memory capacity can be secured in Step B3 (Yes in Step B3). That is, the memory management unit 16 saves (moves) data stored in all or a part of the pages for which the lock flag is not asserted and the swap flag required is asserted (step) (step). B5). Then, the memory management unit 16 releases the data that has been moved to the storage unit 15 together with the page for which the lock flag and the swap flag required are not asserted, and deletes the data of the released page (step B6). Further, the memory management unit 16 notifies the data management unit 18 that the data has been saved and the page has been released. Here, the memory management unit 16 performs data processing (steps B5 and B6) in units of divided data.
  • the data management unit 18 allocates a page corresponding to the memory capacity requested to the control unit 14 as a page to be used for processing (step B7).
  • the generation unit 12 generates a DAG (acyclic directed graph) that represents the flow of processing of the user program.
  • the control unit 14 requests and secures the memory capacity of the accelerator necessary for executing the processing indicated in the DAG from the memory management unit 16.
  • the memory management unit 16 preferentially holds data requested to be cached (that is, held in the memory 32 of the accelerator 3) or data used in subsequent processing in the DAG in the memory 32 of the accelerator 3.
  • the control unit 14 causes the accelerator 3 to execute the DAG processing, if data already exists in the memory 32 of the accelerator 3, the control unit 14 causes the accelerator 3 to use the data as cache data.
  • the control unit 14 executes a plurality of processes on the data continuously, so that a plurality of processes are collectively performed by loading data into the accelerator 3 once. Can be executed by the accelerator 3.
  • the memory management unit 16 secures the minimum memory necessary for the DAG processing (calculation) in the memory 32 of the accelerator 3, and as much as possible in the remaining memory portion. Keep the data you plan to use. For this reason, the accelerator 3 can execute processing using the data held in the memory 32 as cache data. As a result, the accelerator 3 does not need to perform a process of loading data from the storage unit 15 of the accelerator control device 1 every time a DAG process is performed. Further, the accelerator 3 can reduce processing for saving data from the memory to the storage unit 15 of the accelerator control device 1. Therefore, the accelerator control device 1 according to the first embodiment can increase the processing speed using the accelerator 3.
  • FIG. 13 is a simplified block diagram illustrating an example of hardware configuring the accelerator control device 1.
  • the accelerator control device 1 includes a CPU (Central Processing Unit) 100, a memory 110, an input / output IF (InterFace) 120, and a communication unit 130.
  • the CPU 100, the memory 110, the input / output IF 120, and the communication unit 130 are mutually connected by a bus 140.
  • the input / output IF 120 has a configuration in which peripheral devices such as an input device (such as a keyboard and a mouse) and a display device and the accelerator control device 1 are connected so as to communicate information.
  • the communication unit 130 is configured to connect so as to be able to communicate with other computers through an information communication network.
  • the memory 110 has a configuration for storing data and computer programs.
  • the memory here represents a storage device having a broad meaning, and includes a semiconductor memory and a hard disk or flash disk generally called secondary storage.
  • the CPU 100 can have various functions by executing the computer program read from the memory. For example, the execution unit 11, the generation unit 12, the calculation unit 13, the control unit 14, the memory management unit 16, and the data management unit 18 in the accelerator control device 1 according to the first embodiment are realized by the CPU 100.
  • the memory management table 17 and the data management table 19 are stored in the storage unit 20 realized by the memory 110.
  • DAG Directed Acyclic Graph
  • the accelerator is controlled to execute processing corresponding to the edge of the DAG using the data loaded in the memory of the accelerator.
  • a control unit An accelerator control device characterized by that.
  • the accelerator control device preferentially releases a memory area for storing data that is not used in subsequent processing corresponding to the edge of the DAG in the memory of the accelerator, and a memory area necessary for the calculation of the DAG
  • a storage unit that holds the storage unit, and the control unit requests the memory management unit for the memory of the accelerator necessary for the calculation of the DAG, and inquires the data management unit for data in the memory of the accelerator,
  • the accelerator is controlled according to the inquiry result. It may be.
  • the accelerator control device indicates whether or not the data held in each page of the accelerator memory is being used for processing corresponding to the edge of the DAG and whether or not the data needs to be saved.
  • a table for holding information and when the memory management unit releases the memory of the accelerator, the memory management unit refers to the table and saves data other than data in use for processing corresponding to the edge of the DAG.
  • a page holding data that does not need to be saved may be preferentially released over a page holding data that needs to be saved.
  • the memory management unit may release a plurality of pages that hold divided data that is all or part of data corresponding to the node of the DAG.
  • the user program uses two types of APIs, a reservation API (Application Programming Interface) and an execution API, and the generation unit continues to generate a DAG in response to a call to the reservation API, and is generated by the generation unit.
  • the DAG processing may be triggered in response to a call to the execution API.
  • the accelerator control device includes an execution unit that receives a request from the user program and requests the generation unit to cache data used for calculation across a plurality of DAGs in the memory of the accelerator, and the generation unit includes: Mark the requested data for the cache, and the control unit requests the memory management unit to treat it as a page that needs to be saved if the page used by the marked data is not locked. Also good.
  • the API called by the user program takes a parameter indicating the capacity of data generated by the specified process as an argument, and the DAG generated by the generating unit is the capacity of generated data, or the capacity of input data and the capacity of output data.
  • the ratio with the capacity may be included.
  • the accelerator control method can continuously execute a plurality of processes corresponding to a plurality of edges of the DAG on divided data that is all or a part of data corresponding to the node of the DAG, the accelerator control method
  • the computer causes the accelerator to execute the plurality of processes in succession on the divided data loaded on the memory of the accelerator without saving the divided data loaded on the memory.
  • a controlling step may be included.
  • the computer calculates the DAG while preferentially releasing a memory area that holds data not used in subsequent processing corresponding to the edge of the DAG in the memory of the accelerator.
  • a step of allocating a necessary memory area, a step of managing data in the memory of the accelerator, data to be loaded into the memory of the accelerator, and data saved from the memory of the accelerator during the processing of the DAG May be stored in the memory of the computer, and the accelerator may be controlled according to data on the memory of the accelerator.
  • the accelerator control method indicates information indicating whether data held in each page of the accelerator memory is being used for processing corresponding to the edge of the DAG, and whether the data needs to be saved.
  • the information is stored in the table by the computer, and when the accelerator memory is released, the table is referred to and data other than data in use for processing corresponding to the edge of the DAG is saved. A step of preferentially releasing a page holding unnecessary data over a page holding data that needs to be saved.
  • the computer when the computer releases the memory of the accelerator, the computer may release a plurality of pages holding divided data that is all or part of data corresponding to the DAG node. .
  • the computer program preferentially releases a memory area holding data that is not used in subsequent processing corresponding to the edge of the DAG in the memory of the accelerator, and stores a memory area necessary for the calculation of the DAG.
  • a process of assigning, a process of managing data in the memory of the accelerator, data to be loaded into the memory of the accelerator, and data saved from the memory of the accelerator during the DAG process The computer may execute the processing held in the memory and the processing for controlling the accelerator according to the data on the memory of the accelerator.
  • the computer program includes information indicating whether data held in each page of the memory of the accelerator is being used for processing corresponding to the edge of the DAG, and information indicating whether the data needs to be saved Is stored in the table, and when releasing the memory of the accelerator, the table is referred to, and data other than the data currently used for the processing corresponding to the edge of the DAG is stored and does not need to be saved.
  • the computer may execute processing for releasing a page to be preferentially released over a page holding data that needs to be saved.
  • the computer program When releasing the memory of the accelerator, the computer program causes the computer to execute a process of releasing a plurality of pages that hold divided data that is all or part of data corresponding to the node of the DAG. May be.

Abstract

 アクセラレータを用いた計算処理の高速化を図るために、アクセラレータ制御装置1は、生成部12と制御部14を備える。生成部12は、実行対象のコンピュータプログラムに基づいた処理の流れを表すDAG(Directed Acyclic Graph)を生成する。制御部14は、制御対象のアクセラレータに備えられているメモリに、DAGのノードに相当するデータが格納されている場合に、アクセラレータのメモリに格納されているデータを用いて、DAGのエッジに相当する処理を実行するようにアクセラレータを制御する。

Description

アクセラレータ制御装置、アクセラレータ制御方法およびプログラム記憶媒体
 本発明は、アクセラレータを用いて計算処理を実行するコンピュータシステムに係る技術に関する。
 非特許文献1には、コンピュータ制御システムの一例が記載されている。非特許文献1に示されているコンピュータ制御システムは、図11に示すように、ドライバホスト6と、ワーカホスト8-1~8-3とを備えている。ドライバホスト6と各ワーカホスト8-1~8-3は、ネットワーク7によって接続されている。ワーカホスト8-1~8-3は計算処理を行うコンピュータである。ドライバホスト6はワーカホスト8-1~8-3における計算処理を制御するコンピュータである。なお、ワーカホストの数は1つ以上であればよく、図11に例示した3つに限定されない。
 図11に示したコンピュータ制御システムは、次のように動作する。
 ドライバホスト6は、ワーカホスト8-1~8-3に行わせる処理の流れを表すDAG(Directed Acyclic Graph,無閉路有向グラフ)を保持する。図4は、DAGの一例を表す。図4におけるDAGの各ノード(節点)はデータを表し、ノード間を接続するエッジ(辺)は処理を表す。図4のDAGに従うと、コンピュータがデータ(ノード)4-1に対して処理5-1を施すことによりデータ4-2が生成され、次に、コンピュータがデータ4-2に対して処理5-2を施すことによりデータ4-3が生成される。また、コンピュータがデータ4-3およびデータ4-4の2つのデータを受け当該2つのデータに処理5-3を施すことによりデータ4-5が生成される。さらに、コンピュータがデータ4-5に対して処理5-4を施すことによりデータ4-6が生成される。
 ここで、データ4-1は、例えば、図12に表されるような複数の分割データ4A-1,4B-1,・・・・により構成される。また、他のデータ4-2,4-3,・・・・も同様に、複数の分割データにより構成される。なお、データ4-1~4-6を構成する分割データは、複数とは限らず、1つである場合もある。この明細書においては、データを構成する分割データが1つであっても、つまり、分割データがデータの一部ではなくデータそのものであっても、分割データと記載する。
 ドライバホスト6は、図4におけるDAGの各エッジ(処理)において、ワーカホスト8-1~8-3に、データの処理を分担させる。例えば、ドライバホスト6は、データ4-1を処理する処理5-1に関し、図12に示される分割データ4A-1をワーカホスト8-1に、分割データ4B-1をワーカホスト8-2に、分割データ4C-1をワーカホスト8-3にそれぞれ担当させる。つまり、ドライバホスト6は、並列にデータを処理するように各ワーカホスト8-1~8-3を制御する。
 図11におけるコンピュータ制御システムは、上記のような構成を採用し、かつ、ワーカホストの数を増加させることにより、目的とする処理の処理性能を向上させることができる。
 なお、特許文献1には並列処理システムに関する技術が記載されている。特許文献1では、コマンドデータが複数のステータスデータと関連付けられている場合には、アクセラレータは、コマンドデータを読み出す回数と、コマンドデータと関連付けされた所定の回数とに応じて、コマンドデータを一つの処理装置に処理させる。
 また、特許文献2には、互いに異なるメモリ領域を使用する複数のプロセッサを備える画像処理装置に関する技術が記載されている。特許文献2では、バッファモジュールは、前段の処理によりバッファに書き込まれた画像データを、後段の処理が使用するメモリ領域に確保した転送用バッファに転送する。後段の処理では、その転送用バッファに転送された画像データが読み出され当該画像データが処理される。
 さらに、特許文献3は、命令スケジューリング方式に関し、この特許文献3には、命令ブロックを単位として命令を実行するスケジュールが構築される技術が開示されている。
特開2014-149745号公報 特開2013-214151号公報 特開平03-135630号公報
M. Zaharia他著, "Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing," NSDI’12 Proceeding of the 9th USENIX conference on Networked Systems Design and Implementation, 2012
 非特許文献1に示されているコンピュータ制御システムには、ワーカホスト8-1~8-3(つまり、アクセラレータ)を用いた計算を高速に行うことができないという問題がある。その理由は、ワーカホスト(アクセラレータ)8-1~8-3のメモリが効率的に利用されていないからである。また、処理により生成されたデータである出力データがワーカホスト8-1~8-3のメモリに格納できない場合には、出力データは、ワーカホスト8-1~8-3からドライバホスト6に移される(退避する)。そして、その出力データが処理される場合には、当該出力データは、ドライバホスト6からワーカホスト8-1~8-3のメモリに格納(ロード)される。このように、出力データがワーカホスト8-1~8-3のメモリに格納できない場合には、ドライバホスト6とワーカホスト8-1~8-3との間でのデータの通信が頻繁に発生する。このことは、コンピュータ制御システムが計算を高速に行うことができない理由の一つである。
 本発明は上記課題を解決するために考え出された。すなわち、本発明の主な目的は、アクセラレータを用いた計算処理の高速化を図ることができる技術を提供することにある。
 上記目的を達成するために、本発明のアクセラレータ制御装置は、
 実行対象のコンピュータプログラムに基づいた処理の流れを表すDAG(Directed Acyclic Graph)を生成する生成部と、
 制御対象のアクセラレータに備えられているメモリに、前記DAGのノードに相当するデータが格納されている場合に、前記アクセラレータのメモリに格納されている前記データを用いて、前記DAGのエッジに相当する処理を実行するように前記アクセラレータを制御する制御部と
を備える。
 また、本発明のアクセラレータ制御方法は、
 コンピュータが、
 実行対象のコンピュータプログラムに基づいた処理の流れを表すDAG(Directed Acyclic Graph)を生成し、
 制御対象のアクセラレータに備えられているメモリに、前記DAGのノードに相当するデータが格納されている場合に、前記アクセラレータのメモリに格納されている前記データを用いて、前記DAGのエッジに相当する処理を実行するように前記アクセラレータを制御する。
 さらに、本発明のプログラム記憶媒体は、
 実行対象のコンピュータプログラムに基づいた処理の流れを表すDAG(Directed Acyclic Graph)を生成する処理と、
 制御対象のアクセラレータに備えられているメモリに、前記DAGのノードに相当するデータが格納されている場合に、前記アクセラレータのメモリに格納されている前記データを用いて、前記DAGのエッジに相当する処理を実行するように前記アクセラレータを制御する処理と、
をコンピュータに実行させる処理手順が表されている。
 なお、本発明の主な目的は、本発明のアクセラレータ制御装置に対応する本発明のアクセラレータ制御方法によっても達成される。また、本発明の主な目的は、本発明のアクセラレータ制御装置およびアクセラレータ制御方法に対応するコンピュータプログラムおよびそれを記憶するプログラム記憶媒体によっても達成される。
 本発明によれば、アクセラレータを用いた計算処理の高速化を図ることができる。
本発明に係るアクセラレータ制御装置の概略構成を表すブロック図である。 図1Aにおけるアクセラレータ制御装置の構成の変形例を表すブロック図である。 第1実施形態のアクセラレータ制御装置を備えたコンピュータシステムの構成例を表すブロック図である。 予約API(Application Programming Interface)と実行API(Application Programming Interface)の一例を説明する図である。 DAGの一例を表す図である。 第1実施形態におけるメモリ管理テーブルの一例を表す図である。 第1実施形態におけるデータ管理テーブルの一例を表す図である。 アクセラレータで処理されるデータの一例を説明する図である。 アクセラレータで処理されるデータの別の例を説明する図である。 第1実施形態のアクセラレータ制御装置の動作例を表すフローチャートである。 第1実施形態のアクセラレータ制御装置におけるメモリ管理部の動作例を表すフローチャートである。 コンピュータ制御システムの一構成例を説明するブロック図である。 コンピュータ制御システムで処理されるデータの構成を説明する図である。 アクセラレータ制御装置を構成するハードウェアの構成例を表すブロック図である。
 以下に、本発明に係る実施形態を図面を参照しつつ説明する。
 まず、本発明に係る実施形態の概要について説明する。
 図1Aは、本発明に係るアクセラレータ制御装置の一実施形態の構成を簡略化して表すブロック図である。図1Aにおけるアクセラレータ制御装置1は、アクセラレータ(図示せず)に接続し、当該アクセラレータの動作を制御する機能を備えている。アクセラレータ制御装置1は、生成部12と、制御部14とを備えている。生成部12は、実行対象のコンピュータプログラム(以下、ユーザプログラムとも記す)に基づいた処理の流れを表すDAG(Directed Acyclic Graph)を生成する機能を備えている。制御部14は、アクセラレータに備えられているメモリにDAGのノードに相当するデータが格納(ロード)されている場合には、メモリに格納されているデータを用いてDAGのエッジに相当する処理を実行するようにアクセラレータを制御する。
 なお、制御部14は、DAGのノードに相当するデータの全部または一部である分割データを用いて、DAGの複数のエッジに相当する各処理を連続して実行できる場合には、次のようにアクセラレータを制御してもよい。すなわち、制御部14は、連続して処理可能な分割データを処理が終了する度にアクセラレータのメモリから削除せずに(退避することなく)、そのデータに複数の処理を連続して実行するようにアクセラレータを制御してもよい。
 上記のように、アクセラレータ制御装置1は、アクセラレータのメモリに格納されているデータ(キャッシュされているデータ)をDAGの処理に用いるようにアクセラレータを制御する。このため、アクセラレータに処理を実行させる度にアクセラレータ制御装置1から処理対象のデータをアクセラレータに提供し格納(ロード)する場合に比べて、アクセラレータ制御装置1は、データのロードに掛かる時間を削減できる。これにより、アクセラレータ制御装置1は、アクセラレータを用いた処理の高速化を図ることができる。また、アクセラレータ制御装置1は、アクセラレータへのデータのロードに掛かるサービスコストを削減できる。さらに、処理対象のデータに複数の処理を連続して実行するようにアクセラレータを制御することによって、アクセラレータ制御装置1は、アクセラレータを用いた処理の高速化を促進させることができる。つまり、そのような制御によって、アクセラレータ制御装置1は、アクセラレータからアクセラレータ制御装置1へのデータの移動(退避)と、アクセラレータへのデータの提供(再ロード)との処理を減少できる。これにより、アクセラレータ制御装置1は、アクセラレータを用いた処理の高速化を促進させることができるし、データのロードに掛かるサービスコストを削減できる。
 なお、アクセラレータ制御装置1は、図1Bに表されているように、さらに、メモリ管理部16を備えていてもよい。メモリ管理部16は、アクセラレータ制御装置1が制御するアクセラレータに備えられているメモリを管理する機能を備えている。メモリ管理部16を備えている場合には、制御部14は、DAGに示された処理に必要なアクセラレータのメモリリソースをメモリ管理部16に要求する。メモリ管理部16は、処理に必要なメモリ容量を確保するためにメモリの一部を解放する(つまり、既に格納されているデータを削除した後に新規のデータを格納することを許可する)ことがある。この場合には、メモリ管理部16は、解放可能なメモリ領域のうちの、DAGにおける後工程の処理で使用しないデータや、ユーザプログラムに基づいたキャッシュ(一時保存)の要求を受けていないデータを保持するメモリ領域から解放する。そして、メモリ管理部16は、そのように解放したメモリ領域をも含めて処理に必要なメモリ容量に応じたメモリ領域を確保し、DAGにおける処理に使用するメモリ領域として、確保したメモリ領域を割り当てる。
 制御部14は、アクセラレータのメモリに、キャッシュされたデータ(キャッシュデータ)が格納されている場合には、DAGの処理にキャッシュデータを使用するようにアクセラレータを制御する。このように、アクセラレータ制御装置1は、キャッシュデータを使用して処理を実行するようにアクセラレータを制御することによって、アクセラレータへのデータのロードの回数を減少でき、これにより、データのロードに掛かるサービスコストを削減できる。また、アクセラレータ制御装置1は、データのロードの回数を減少できることにより、処理の高速化を図ることができる。
 また、制御部14は、処理に対するアクセラレータのメモリ容量が不足し、かつ、データに複数の処理を連続して実行可能である場合には、一度のアクセラレータのメモリへのデータのロードでアクセラレータに複数の処理を連続して実行させる。このように、アクセラレータ制御装置1は、アクセラレータへのデータの一度のロードで複数の処理が連続して実行されるようにアクセラレータを制御することによって、アクセラレータからのデータの移動(退避)と、データのロードとの回数を削減できる。これにより、アクセラレータ制御装置1は、データの退避とロードに掛かるサービスコストを削減できる。また、アクセラレータ制御装置1は、データのロードの回数を減少できることにより、処理の高速化を図ることができる。
 <第1実施形態>
 以下に、本発明に係る第1実施形態のアクセラレータ制御装置について説明する。
 図2は、第1実施形態のアクセラレータ制御装置1を備えたコンピュータシステムの構成を簡略化して表すブロック図である。このコンピュータシステムは、計算処理を実行するアクセラレータ3-1,3-2と、アクセラレータ3-1,3-2を制御するアクセラレータ制御装置1とを備えている。アクセラレータ3-1,3-2と、アクセラレータ制御装置1とは、I/O(Input/Output)バスインターコネクト2によって接続されている。
 なお、図2の例では、2つのアクセラレータ3-1,3-2が図示されているが、アクセラレータの数は1つ以上であればよい。ここで、アクセラレータとは、コンピュータとI/Oバスを介して接続されるコプロセッサであり、例えば、NVIDIA社のGPU(Graphics Processing Unit)やIntel社のXeon Phi (登録商標)などが知られている。
 また、各アクセラレータ3-1,3-2は、以下に説明するような共通の構成を備え、また、アクセラレータ制御装置1により同様な制御が行われる。以下では、説明を分かり易くするために、各アクセラレータ3-1,3-2を単にアクセラレータ3とも記載する。
 アクセラレータ3は、データを処理するプロセッサ31と、データを格納するメモリ32とを備えている。
 アクセラレータ制御装置1は、実行部11と、生成部12と、計算部13と、制御部14と、格納部15と、メモリ管理部16と、データ管理部18と、記憶部20とを備えている。
 実行部11は、ユーザプログラムを実行する機能を備えている。第1実施形態では、アクセラレータ制御装置1には、図3に表されるような予約API(Application Programming Interface)および実行API(Application Programming Interface)が与えられている。ユーザプログラムは、予約APIおよび実行APIを用いながら(呼び出しながら)実行される。予約APIは、図4に表されるDAGのエッジ、すなわち、1つの処理に対応する。
 生成部12は、ユーザプログラムが要求する処理順を表すDAGを生成する機能を備えている。例えば、予約APIがユーザプログラムに基づいて呼び出され実行されることにより、生成部12は、DAGのエッジとノード、すなわち、1つの処理とその処理によって生成されるデータをDAGに生成(追加)する。
 DAGの各データは、図7に表すような分割データにより構成される。なお、以下の説明では、データを複数に分割したことによる各データ部分を分割データと表すだけでなく、データが分割されない場合にも、つまり、データそのもの(データ全体)を分割データと表すこともある。
 図3に表す予約APIは、処理を予約するために利用されるAPIである。つまり、予約APIが実行されても、アクセラレータ3での処理は実行されず、DAGが生成されるに過ぎない。また、実行APIが呼び出された場合には、生成部12によってDAGに新たなエッジおよびノードが生成される場合と、生成されない場合とがある。実行APIが実行されると、それまでに生成されたDAGの処理の実行がトリガ(起動)される。実行APIに属する処理として、例えば、ユーザプログラム内でDAGが処理された後のデータが必要となる処理や、ファイル書き込み等のDAGの記述が完了して結果を書き込み、または、表示してプログラムを完了する処理等がある。
 図3に表されるように、予約APIや実行APIは、1つあるいは複数の引数α,β,…を持つ場合がある。引数のうちの1つは、カーネル関数と呼ばれる。カーネル関数は、ユーザプログラムがデータに対して実行する処理を表す関数である。すなわち、予約APIや実行APIはデータに対し行われる処理のアクセスパターンを表し、実際の処理はユーザプログラムにおいて予約APIおよび実行APIの引数として与えられるカーネル関数に基づいて行われる。また、他の引数の1つは、予約APIまたは実行APIとそれらに与えられるカーネル関数による処理が生成する出力データの大きさを示すパラメータである。
 例えば、図4におけるデータ4-1に施される処理5-1の場合には、パラメータは生成されるデータ4-2の容量を示す。なお、容量を示す方法として、例えば、生成されるデータ4-2の容量の絶対値を与える方法が用いられる。また、容量を示す方法として、処理されるデータ(入力データ)となるデータ4-1の容量と生成されるデータ(出力データ)となるデータ4-2の容量との相対的な比率を与える方法が用いられることもある。
 また、実行部11は、ユーザプログラムに基づいた要求に応じて、複数のDAGで繰り返し使用するデータに関しては、アクセラレータ3にデータを優先的にキャッシュするように生成部12に依頼(要求)するようにしてもよい。
 生成部12は、実行部11が予約APIと実行APIを読み出す度にDAGを生成する。生成部12は、予約APIが呼ばれた場合に、予約APIに応じたエッジとノードをDAGに追加する。また、生成部12は、実行APIが実行された場合に、必要に応じてエッジとノードを追加し、これまで生成したDAGを計算部13に通知する。
 なお、生成部12が生成するDAGは、ユーザプログラムに基づいた処理に関連する予約APIや実行APIの種類、各APIに与えられたカーネル関数を含む。このDAGは、さらに、各処理で生成されるデータの容量、または、処理の入力側のノードが示すデータと出力側のノードが示すデータの容量比率等の各ノードが示すデータの容量に関する情報を含む。また、生成部12は、実行部11からの依頼に基づいて、DAGにおいて、キャッシュを行うノード(データ)には、キャッシュ対象のデータであることを表す情報(マーク)を付与する。
 計算部13は、生成部12が生成したDAGを受け取り、受け取ったDAGの各処理において必要となるアクセラレータ3のメモリ32におけるスレッド数およびメモリ容量(メモリリソース)を計算し、DAGおよび必要なリソースの情報を制御部14に渡す。
 格納部15は、データを格納する構成を備えている。第1実施形態では、格納部15は、アクセラレータ3のメモリ32に提供し格納(ロード)するデータを保持する。
 メモリ管理部16は、アクセラレータ制御装置1の起動後、アクセラレータ3のメモリ32をすべて確保し、確保したメモリリソースを一定のサイズのページに分割して管理する。ページサイズは、例えば、4KBや64KBである。
 記憶部20には、メモリ32を管理する際に利用する管理情報であるメモリ管理テーブル17が格納されている。図5は、メモリ管理テーブル17の一例を表す図である。メモリ管理テーブル17は、各ページに関する情報を保持する。例えば、ページの情報は、ページが属するアクセラレータ3を識別するアクセラレータ番号と、ページ番号と、ページに計算中または計算後のデータが保持されていることを示す使用フラグとを含む。さらに、ページの情報は、ページが計算に使用中であり解放することが禁止されていることを示すロックフラグを含む。さらにページの情報は、ページを解放する場合はDAGにおける後工程の処理で必要となるためスワップ(退避)する必要があることを示す要スワップフラグを含む。さらにまた、ページの情報は、使用フラグがアサート(有効化)されている場合に、ページが保持するデータを示す使用データ番号と、各データのどの分割データを保持しているかを示す分割データ番号とを含む。使用データ番号は、DAGのノードに割り当てられる識別子である。
 メモリ管理部16は、メモリ管理テーブル17を参照して、アクセラレータ3のメモリ32を管理する。メモリ管理部16は、制御部14の要求を受けると、まず、要求された容量のページ数を使用フラグがアサートされていないページ(フリーのページ)のみから確保可能かどうかを確認する。メモリ管理部16は、確保可能である場合には、それらのページの使用フラグとロックフラグをアサートし、制御部14に確保完了を応答する。
 また、メモリ管理部16は、要求された容量のページ数をフリーのページのみから確保できない場合には、次のようにして要求された容量のページ数を確保する。つまり、メモリ管理部16は、フリーのページに加えて、使用フラグがアサートされ、かつ、ロックフラグおよび要スワップフラグがアサートされていないページをも利用して必要なページ数を確保する。そして、メモリ管理部16は、その確保したページの使用フラグとロックフラグをアサートし、制御部14に確保完了を応答する。このとき、メモリ管理部16は、確保されたページが保持していたデータを削除する。また、メモリ管理部16は、削除対象のデータのデータ番号と、分割データ番号と、ページ番号とをデータ管理部18に通知する。なお、メモリ管理部16は、メモリを解放する際には、1つのデータの1つの分割データが複数のページに分散して保持されている場合には、これら複数のページをまとめて解放する。
 さらに、フリーのページと、使用フラグがアサートされ、かつ、ロックフラグおよび要スワップフラグがアサートされていないページとを合わせても必要なページを確保できない場合がある。この場合には、メモリ管理部16は、さらに残りのページのうちのロックページ以外のページをも利用して、必要な容量のページ数を確保する。このとき、メモリ管理部16は、スワップフラグがアサートされているページに関しては、格納されているデータを格納部15に退避(移動)し、移動したデータを格納していたページを解放する。メモリ管理部16は、データの退避や削除を、1つのデータの1つの分割データを単位として行う。このとき、メモリ管理部16は、格納部15に退避した分割データ、または、要スワップフラグがアサートされておらずメモリ解放により削除した分割データにおけるデータ番号、分割データ番号、ページ番号をデータ管理部18に通知する。
 また、メモリ管理部16は、使用可能なページ数の不足により、制御部14が要求する容量のページ数を確保できない場合には、メモリ容量を確保できないことを表すエラーのメッセージを制御部14に応答する。
 さらに、メモリ管理部16は、制御部14から、確保可能なメモリの情報に関する問い合わせを受けた場合には、その時点で確保可能なメモリの情報を制御部14に応答する。また、メモリ管理部16は、制御部14からの要求に応じて、管理しているページの要スワップフラグをアサートするとともに、計算が終了し計算に使用されていたページのロックフラグのアサートを解除する。
 データ管理部18は、データ管理テーブル19を用いて、アクセラレータ3のメモリ32が保持するデータを管理する。
 記憶部20には、アクセラレータ3のメモリ32に格納されているデータの管理に利用するデータ管理テーブル19が保持されている。図6は、データ管理テーブル19の一例を表す図である。データ管理テーブル19は、各データに関する情報を保持する。データの情報は、データを識別するデータ番号と、データの分割番号と、データがアクセラレータ3のメモリ32と格納部15の何れに保持されているかを示すマテリアライズフラグと、データが格納部15に退避(移動)されていることを示すスワップフラグとを含む。さらに、データの情報は、マテリアライズフラグがアサートされ、かつ、スワップフラグがアサートされていないデータを保持するアクセラレータ3を示すアクセラレータ番号と、データを保持するアクセラレータ3のメモリ32のページ番号とを含む。なお、データがアクセラレータ3のメモリ32に保持されている場合に、マテリアライズフラグがアサートされる。
 データ管理部18は、制御部14からデータの存在に関する問い合わせを受けた場合には、問い合わせ対象のデータがすでに存在するか否かをデータ管理テーブル19を利用して確認する。かつ、データ管理部18は、データ管理テーブル19に基づいて、問い合わせ対象のデータのマテリアライズフラグとスワップフラグがそれぞれアサートされているかを確認する。そして、データ管理部18は、その確認結果を制御部14に応答する。また、データ管理部18は、メモリ管理部16の通知を受けた場合には、アクセラレータ3のメモリ32から消去されたデータのマテリアライズフラグを0とする。さらに、データ管理部18は、アクセラレータ3のメモリ32から格納部15に退避されたデータのスワップフラグをアサートする。
 制御部14は、生成部12が生成したDAG、および、計算部13が計算した必要リソースの情報を計算部13から受け取った場合には、DAGで指定された処理を行う。このとき、制御部14は、DAGで指定されたデータ番号をデータ管理部18に問合せ、そのデータが既に計算され、マテリアライズフラグがアサートされているか、または、スワップフラグがアサートされているかを調べる。また、制御部14は、確保可能なメモリ容量をメモリ管理部16に問い合わせる。そして、制御部14は、高速にDAGを処理する実行手順で処理を実行する。
 つまり、制御部14は、既に計算され、かつ、マテリアライズフラグがアサートされ、スワップフラグがアサートされていないデータに関しては、そのデータをアクセラレータ3のメモリ32にキャッシュしておき、当該キャッシュされたデータを利用する。これにより、そのデータをロードおよび生成する処理が省略される。
 また、制御部14は、マテリアライズフラグとスワップフラグが共にアサートされているデータに関しては、格納部15に退避されているデータをロードするために必要なメモリ容量をメモリ管理部16に要求する。さらに、制御部14は、メモリ管理部16から確保完了の応答を受け取ると、指定されたページにデータをロードし、そのデータを使用する。これにより、そのデータを生成する処理が省略される。
 このように、制御部14は、すでにアクセラレータ3のメモリ32に格納されているデータに対する処理を、メモリ32に存在しないデータに対する処理よりも優先する。このため、処理時に、退避していた格納部15からアクセラレータ3のメモリ32にロードされることによるサービスコストが削減される。
 また、例えば、図4に示すDAGのデータ4-1と、当該データ4-1を処理したことによるデータ(出力データ)であるデータ4-2との双方が、容量不足のために、アクセラレータ3のメモリ32に格納できない場合がある。つまり、アクセラレータ3で処理するデータの総量がアクセラレータ3のメモリ32に収まらない場合がある。このような場合には、制御部14は次のようにアクセラレータ3を制御する。なお、DAGのデータ4-1~4-3は、図7に示すように、それぞれ、複数の分割データに分割されているとする。
 すなわち、アクセラレータ3の処理順として、データ4-1の分割データ41-1,42-1に順に処理5-1を行った後に、データ4-2の分割データ41-2,42-2に順に処理5-2を行うというような処理順がある。これに対し、制御部14は、データ4-1の分割データ41-1に処理5-1を行った後に続けてデータ4-2の分割データ41-2に処理5-2を行うというような処理順となるようにアクセラレータ3を制御する。これにより、制御部14は、データ4-2の分割データ41-2がアクセラレータ3のメモリ32から格納部15に退避される可能性を低下させる。
 制御部14は、分割データに連続して処理を施す制御(最適化)を、図7に例示するような2つの処理が連続する場合に限らず、3つ以上の処理が連続する場合にも同様に実施してもよい。
 なお、制御部14は、複数のアクセラレータ3を用いて処理を実行する場合には、複数のアクセラレータ3に、複数の分割データを分散させ各分割データにDAGのエッジにおける同一の処理を並列に行わせる。
 また、制御部14は、図8に示されるように、データを構成する分割データの数が図7の場合よりも多い場合であっても、上記同様に、分割データに処理5-1と処理5-2を連続して行うように各アクセラレータ3を制御する。
 さらに、制御部14は、DAGの各エッジにおける処理をアクセラレータ3に行わせる場合に、アクセラレータ3のメモリ32に処理対象の分割データが格納されていない場合には、次の動作を行う。すなわち、制御部14は、処理対象のデータをアクセラレータ3にロードし、また、出力データを出力するために必要なメモリ容量に相当するアクセラレータ3のメモリ32におけるページ数をメモリ管理部16に依頼して確保する。そして、制御部14は、処理を実行するアクセラレータ3に処理対象のデータを格納部15からロードさせ処理を実行させる。
 また、制御部14は、処理が終了すると、メモリ管理部16に通知し、使用していたメモリページのロックをメモリ管理部16によって解除する。さらに、制御部14は、DAGの後工程の処理において必要となるデータに関しては、ロックフラグのアサートを解除し、スワップフラグをアサートするようにメモリ管理部16に通知する。また、制御部14は、複数のDAGで使用されるデータとしてキャッシュを依頼するマークが付加されたデータに関しては、データ管理テーブル19のデータに該当するページ番号のスワップフラグをアサートするようにメモリ管理部16に通知する。
 次に、第1実施形態のアクセラレータ制御装置1の動作例を、図2および図9を用いて説明する。図9は、第1実施形態のアクセラレータ制御装置1の動作例を表すフローチャートである。なお、図9に表されるフローチャートは、アクセラレータ制御装置1が実行する処理手順を表している。
 実行部11は、予約APIと実行APIを利用するユーザプログラムを実行する(ステップA1)。
 その後、実行部11が実行したユーザプログラムの処理が実行APIにより呼び出され(読み出され)実行された処理であるか否かを生成部12が判断する(ステップA2)。そして、実行されたユーザプログラムの処理が実行APIにより呼び出された処理ではない場合(ステップA2のNo)には、生成部12は、予約APIにより呼び出され実行された処理であるか否かを確認する(ステップA3)。予約APIにより呼び出された処理である場合(ステップA3のYes)には、生成部12は予約APIで指定された処理と当該処理により生成されるデータに相当するエッジとノードを、それまでに生成したDAGに追加する。つまり、生成部12は、DAGを更新する(ステップA4)。
 その後、実行部11は、実行したユーザプログラムの命令が当該プログラムの最後の命令であるか否かを確認する(ステップA5)。最後の命令である場合(ステップA5のYes)には、実行部11はユーザプログラムに基づいた処理を終了する。一方、最後の命令ではない場合(ステップA5のNo)には、実行部11は、ステップA1に戻り、ユーザプログラムの実行を継続する。
 一方、ステップA2において、実行部11が実行したユーザプログラムの処理が実行APIにより呼び出された処理である場合(ステップA2のYes)には、生成部12は、これまでに生成されたDAGを伝達する処理(ステップA6~A14)に移行する。
 すなわち、生成部12は、実行した処理および生成されたデータに相当するエッジとノードを必要に応じDAGに追加することによりDAGを更新し(ステップA6)、DAGを計算部13に伝達する。
 計算部13は、与えられたDAGの各エッジにおける処理に必要なアクセラレータのスレッド数とメモリ容量を算出する(ステップA7)。さらに、計算部13は、算出されたスレッド数とメモリ容量を必要リソース情報としてDAGに付加し、当該DAGを制御部14に伝達する。
 制御部14は、必要リソース情報が付加されたDAGを受け取ると、DAGに含まれるデータを確認する。つまり、制御部14は、どのデータがすでに存在しているかをデータ管理部18に確認する。もしくは、制御部14は、どのデータがアクセラレータ3にキャッシュされているか、または、格納部15に退避されているかをデータ管理部18に確認する。また、制御部14は、確保可能なメモリ容量をメモリ管理部16に確認する。そして、制御部14は、得られた情報に基づいて、次のように、実行する処理の順番を決定する。すなわち、制御部14は、既に計算されているデータが活用されるようにする。また、制御部14は、アクセラレータ3のメモリ32に存在するデータを計算する処理が優先されるようにする。さらに、制御部14は、データ(分割データ)に対する複数の処理が連続して行われるようにする。制御部14は、上記のような事項が考慮された最適な処理順を探索して決定する(ステップA8)。つまり、制御部14は、処理順の最適化を行う。なお、分割データに対する連続した処理は、処理するデータがアクセラレータ3のメモリ32に収容できない場合に特に有効である。
 然る後に、制御部14は、決定した処理順に従ってDAGのそれぞれのエッジにおける処理が実行されるように次のようにアクセラレータ3を制御する。まず、制御部14は、実行対象のエッジにおける処理で処理される分割データがすでにアクセラレータ3のメモリ32に用意(格納)されているか否かを確認する(ステップA9)。そして、制御部14は、処理される分割データがアクセラレータ3に用意されていない場合(ステップA9のNo)には、その分割データを格納部15からアクセラレータ3のメモリ32にロードする(ステップA10)。ここで、ロードが必要な場合として、例えば、分割データがアクセラレータ3のメモリ32から格納部15に退避されたことによってアクセラレータ3のメモリ32から削除されている場合が考えられる。また、ロードが必要な場合として、DAGの最初の処理で処理される分割データであるためにアクセラレータ3に与えられていない場合も考えられる。
 その後、制御部14は、実行する処理の出力に必要となるメモリ容量の確保をメモリ管理部16に依頼する(ステップA11)。このとき、制御部14は、出力されるデータに関する情報をメモリ管理テーブル17に追加するために必要となる情報(例えば、使用データ番号や分割データ番号)をメモリ管理部16に通知する。メモリ管理部16は、アクセラレータ3に必要なメモリ容量(ページ)を確保し、通知された情報をメモリ管理テーブル17に登録する。そして、メモリ管理部16は、確保したページのページ番号を制御部14に通知する。ここで、確保されたメモリのページに対するロックフラグがアサートされる。
 その後、制御部14は、実行した処理が出力する出力データに関する情報(換言すれば、出力データに関する情報をデータ管理テーブル19に追加するのに必要な情報)をデータ管理部18に通知する。データ管理部18は、通知された情報をデータ管理テーブル19に登録する(ステップA12)。
 然る後に、制御部14は、DAGのエッジに該当する処理が実行されるようにアクセラレータ3を制御する(ステップA13)。制御部14は、処理が完了すると、処理完了をメモリ管理部16に通知し、処理に使用していたメモリ32のページにおけるロックフラグのアサートを解除する。また、制御部14は、DAGにおける後工程のエッジ(処理)で使用することが分かっているデータについては、データが格納されるページにおけるメモリ管理デーブル17の要スワップフラグをアサートするようにメモリ管理部16に依頼する。さらに、制御部14は、実行部11からキャッシュを依頼されたデータに関しても、要スワップフラグをアサートするようにメモリ管理部16に依頼する。
 制御部14は、ステップA9~A13の処理を、ステップA8で決定した最適な処理順に従ってDAGで指定されたすべての処理の実行を完了するまで継続する。
 そして、DAGのすべての処理を実行し終えると(ステップA14のYes)、制御部14は、ステップA1の動作に戻る。
 次に、処理に必要なメモリ容量を確保するためにページを割り当てるメモリ管理部16の動作について、図10を利用して説明する。図10は、ページの割り当て処理に関するメモリ管理部16の動作例を表すフローチャートである。
 メモリ管理部16は、メモリ管理テーブル17を参照することにより、要求されたメモリ容量に相当するフリーのページ数がアクセラレータ3のメモリ32に存在するか否かを調べる(ステップB1)。メモリ管理部16は、フリーのページだけで要求されたメモリ容量を確保できる場合(ステップB1のYes)には、そのページを処理のために使用するページとして割り当てる(ステップB7)。
 一方、メモリ管理部16は、要求されたメモリ容量に相当するフリーのページ数が足りない場合(ステップB1のNo)には、メモリ管理テーブル17からロックフラグと要スワップスラグがアサートされていないページを検索する。そして、メモリ管理部16は、検索されたページと、フリーのページとを合わせることにより、要求されたメモリ容量を確保できるかどうかを調べる(ステップB2)。
 ここで、メモリ管理部16は、必要となるメモリ容量が確保できる場合(ステップB2のYes)、ロックフラグも要スワップフラグもアサートされていない全部または一部のページを解放し、解放したページが保持していたデータを削除する(ステップB6)。そして、メモリ管理部16は、解放したページが保持していたデータを削除した旨をデータ管理部18に通知する。
 また、メモリ管理部16は、ステップB2でもメモリ容量を確保できない場合(ステップB2のNo)、要スワップフラグがアサートされたページをも含めることによって要求されたメモリ容量を確保できるか否かを調べる(ステップB3)。
 メモリ管理部16は、ステップB3において必要なメモリ容量を確保できない場合(ステップB3のNo)には、エラーであることを制御部14に応答する(ステップB4)。
 また、メモリ管理部16は、ステップB3において必要なメモリ容量を確保できる場合(ステップB3のYes)には、次の動作を実行する。すなわち、メモリ管理部16は、ロックフラグがアサートされておらず、かつ、要スワップフラグがアサートされた全部または一部のページに格納されているデータを格納部15に退避(移動)する(ステップB5)。そして、メモリ管理部16は、データを格納部15に移動したページと、ロックフラグと要スワップフラグがアサートされていないページと合わせて解放し、解放したページのデータを削除する(ステップB6)。また、メモリ管理部16は、データを退避したことおよびページを解放したことをデータ管理部18に通知する。ここで、メモリ管理部16は、データに関する処理(ステップB5,B6)を、分割データを単位として行う。
 然る後に、データ管理部18は、制御部14に要求されたメモリ容量に応じたページを処理のために使用するページとして割り当てる(ステップB7)。
 以上のように、第1実施形態のアクセラレータ制御装置1では、生成部12は、ユーザプログラムの処理の流れを表すDAG(無閉路有向グラフ)を生成する。制御部14は、DAGに示された処理を実行するために必要なアクセラレータのメモリ容量をメモリ管理部16に要求して確保する。メモリ管理部16は、キャッシュ(つまり、アクセラレータ3のメモリ32に保持しておくこと)を要求されたデータやDAGにおける後工程の処理において使用されるデータを優先してアクセラレータ3のメモリ32に保持させる。これにより、制御部14は、アクセラレータ3にDAGの処理を実行させる際に、当該アクセラレータ3のメモリ32にデータが既に存在する場合、そのデータをキャッシュデータとしてアクセラレータ3に利用させる。また、制御部14は、アクセラレータ3にDAGの処理を行わせる際に、データに対して連続して複数の処理を実行させることによって、一度のアクセラレータ3へのデータのロードでまとめて複数の処理をアクセラレータ3に実行させることができる。
 すなわち、第1実施形態のアクセラレータ制御装置1では、メモリ管理部16がアクセラレータ3のメモリ32においてDAGの処理(計算)に必要な最小限のメモリ確保を行い、残りのメモリ部分に可能な限り、使用が予定されているデータを保持させる。このため、アクセラレータ3は、メモリ32に保持されているデータをキャッシュデータとして用いて処理を実行できる。これにより、アクセラレータ3は、DAGの処理を行う度にアクセラレータ制御装置1の格納部15からデータをロードするという処理を行わなくて済む。また、アクセラレータ3は、メモリからアクセラレータ制御装置1の格納部15にデータを退避する処理を削減することができる。したがって、第1実施形態のアクセラレータ制御装置1は、アクセラレータ3を用いた処理の高速化を図ることができる。
 なお、図13は、アクセラレータ制御装置1を構成するハードウェアの一例を簡略化して表すブロック図である。アクセラレータ制御装置1は、CPU(Central Processing Unit)100と、メモリ110と、入出力IF(InterFace)120と、通信部130とを有している。これらCPU100と、メモリ110と、入出力IF120と、通信部130とは、バス140によって相互に接続されている。入出力IF120は、入力装置(キーボードやマウス等)や表示装置などの周辺機器と、アクセラレータ制御装置1とが情報を通信できるように接続する構成を備えている。通信部130は、情報通信網を通して他のコンピュータと通信できるように接続する構成を備えている。メモリ110は、データやコンピュータプログラムを記憶する構成を備えている。ここでのメモリとは広義の意味を持つ記憶装置を表し、半導体メモリおよび一般に二次記憶と呼ばれるハードディスクやフラッシュディスクを含む。CPU100は、メモリから読み出したコンピュータプログラムを実行することにより、様々な機能を持つことができる。例えば、第1実施形態のアクセラレータ制御装置1における実行部11と生成部12と計算部13と制御部14とメモリ管理部16とデータ管理部18は、CPU100により実現される。メモリ管理テーブル17とデータ管理テーブル19は、メモリ110により実現される記憶部20に格納される。
 上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
 (付記1)
 ユーザプログラムを表すDAG(Directed Acyclic Graph)を生成する生成部と、
 アクセラレータのメモリに前記DAGのノードに相当するデータがロードされている場合、前記アクセラレータのメモリにロードされた前記データを用いて、前記DAGのエッジに相当する処理を実行するように前記アクセラレータを制御する制御部と、を備える、
 ことを特徴とするアクセラレータ制御装置。
 (付記2)
 前記制御部は、前記DAGのノードに相当するデータの全部または一部である分割データに対して、前記DAGの複数のエッジに相当する複数の処理を連続して実行できる場合、前記アクセラレータのメモリ上にロードされた前記分割データを退避させることなく、前記アクセラレータのメモリ上にロードされた前記分割データに対して、前記複数の処理を連続して実行するように前記アクセラレータを制御してもよい。
 (付記3)
 前記アクセラレータ制御装置は、前記アクセラレータのメモリのうちの、前記DAGのエッジに相当する以後の処理において使用されないデータを保持するメモリ領域を優先して解放しつつ、前記DAGの計算に必要なメモリ領域の割り当てを行うメモリ管理部と、前記アクセラレータのメモリのデータを管理するデータ管理部と、前記アクセラレータのメモリにロードするデータ、および、前記DAGの処理中に前記アクセラレータのメモリから退避させたデータを保持する格納部と、を備え、前記制御部は、前記DAGの計算に必要となる前記アクセラレータのメモリを前記メモリ管理部に要求するとともに、前記アクセラレータのメモリのデータを前記データ管理部に問い合わせ、問い合わせ結果に応じて前記アクセラレータを制御してもよい。
 (付記4)
 前記アクセラレータ制御装置は、前記アクセラレータのメモリの各ページが保持するデータが前記DAGのエッジに相当する処理に使用中であるか否かを示す情報と、該データの退避を要するか否かを示す情報を保持するテーブルを備え、前記メモリ管理部は、前記アクセラレータのメモリを解放する際、前記テーブルを参照して、前記DAGのエッジに相当する処理に使用中のデータ以外のデータであって退避を要しないデータを保持するページを、退避を要するデータを保持するページよりも優先的に解放してもよい。
 (付記5)
 前記メモリ管理部は、前記アクセラレータのメモリを解放する際、前記DAGのノードに相当するデータの全部または一部である分割データを保持する複数のページをまとめて解放してもよい。
 (付記6)
 前記ユーザプログラムは、予約API(Application Programming Interface)と実行APIの2種類のAPIを使用し、前記生成部は、前記予約APIの呼び出しに応じてDAGの生成を継続し、前記生成部により生成されたDAGの処理は、前記実行APIの呼び出しに応じてトリガされるようにしてもよい。
 (付記7)
 前記アクセラレータ制御装置は、前記ユーザプログラムの依頼を受け、複数のDAGに跨って計算に使用するデータを前記アクセラレータのメモリにキャッシュするように前記生成部に依頼する実行部を備え、前記生成部は、前記キャッシュの依頼を受けたデータをマークし、前記制御部は、前記マークされたデータが使用するページがロックされていない場合、退避を要するページとして扱うように前記メモリ管理部に依頼してもよい。
 (付記8)
 前記ユーザプログラムが呼び出すAPIは、指定した処理が生成するデータの容量を示すパラメータを引数とし、前記生成部が生成するDAGは、生成されるデータの容量、または、入力データの容量と出力データの容量との比率を含んでもよい。
 (付記9)
 コンピュータが、ユーザプログラムを表すDAG(Directed Acyclic Graph)を生成するステップと、
 アクセラレータのメモリ上に前記DAGのノードに相当するデータがロードされている場合、前記アクセラレータのメモリにロードされた前記データを用いて、前記DAGのエッジに相当する処理を実行するように前記アクセラレータを制御するステップと、を含む、
 ことを特徴とするアクセラレータ制御方法。
 (付記10)
 前記アクセラレータ制御方法は、前記DAGのノードに相当するデータの全部または一部である分割データに対して、前記DAGの複数のエッジに相当する複数の処理を連続して実行できる場合、前記アクセラレータのメモリ上にロードされた前記分割データを退避させることなく、前記アクセラレータのメモリ上にロードされた前記分割データに対して、前記複数の処理を連続して実行するように、前記コンピュータが前記アクセラレータを制御するステップを含んでもよい。
 (付記11)
 前記アクセラレータ制御方法は、前記コンピュータが、前記アクセラレータのメモリのうちの、前記DAGのエッジに相当する以後の処理において使用されないデータを保持するメモリ領域を優先して解放しつつ、前記DAGの計算に必要なメモリ領域の割り当てを行うステップと、前記アクセラレータのメモリ上のデータを管理するステップと、前記アクセラレータのメモリにロードするデータ、および、前記DAGの処理中に前記アクセラレータのメモリから退避させたデータを前記コンピュータのメモリに保持するステップと、前記アクセラレータのメモリ上のデータに応じて前記アクセラレータを制御するステップと、を含んでもよい。
 (付記12)
 前記アクセラレータ制御方法は、前記アクセラレータのメモリの各ページが保持するデータが前記DAGのエッジに相当する処理に使用中であるか否かを示す情報と、該データの退避を要するか否かを示す情報を、前記コンピュータがテーブルに保持するステップと、前記アクセラレータのメモリを解放する際、前記テーブルを参照して、前記DAGのエッジに相当する処理に使用中のデータ以外のデータであって退避を要しないデータを保持するページを、退避を要するデータを保持するページよりも優先的に解放するステップと、を含んでもよい。
 (付記13)
 前記アクセラレータ制御方法において、前記コンピュータは、前記アクセラレータのメモリを解放する際、前記DAGのノードに相当するデータの全部または一部である分割データを保持する複数のページをまとめて解放してもよい。
 (付記14)
 ユーザプログラムを表すDAG(Directed Acyclic Graph)を生成する処理と、
 アクセラレータのメモリ上に前記DAGのノードに相当するデータがロードされている場合、前記アクセラレータのメモリにロードされた前記データを用いて、前記DAGのエッジに相当する処理を実行するように前記アクセラレータを制御する処理と、をコンピュータに実行させる処理手順が表されているコンピュータプログラム。
 (付記15)
 前記コンピュータプログラムは、前記DAGのノードに相当するデータの全部または一部である分割データに対して、前記DAGの複数のエッジに相当する複数の処理を連続して実行できる場合、前記アクセラレータのメモリ上にロードされた前記分割データを退避させることなく、前記アクセラレータのメモリ上にロードされた前記分割データに対して、前記複数の処理を連続して実行するように前記アクセラレータを制御する処理を前記コンピュータに実行させてもよい。
 (付記16)
 前記コンピュータプログラムは、前記アクセラレータのメモリのうちの、前記DAGのエッジに相当する以後の処理において使用されないデータを保持するメモリ領域を優先して解放しつつ、前記DAGの計算に必要なメモリ領域の割り当てを行う処理と、前記アクセラレータのメモリ上のデータを管理する処理と、前記アクセラレータのメモリにロードするデータ、および、前記DAGの処理中に前記アクセラレータのメモリから退避させたデータを前記コンピュータのメモリに保持する処理と、前記アクセラレータのメモリ上のデータに応じて前記アクセラレータを制御する処理と、を前記コンピュータに実行させてもよい。
 (付記17)
 前記コンピュータプログラムは、前記アクセラレータのメモリの各ページが保持するデータが前記DAGのエッジに相当する処理に使用中であるか否かを示す情報と、該データの退避を要するか否かを示す情報をテーブルに保持する処理と、前記アクセラレータのメモリを解放する際、前記テーブルを参照して、前記DAGのエッジに相当する処理に使用中のデータ以外のデータであって退避を要しないデータを保持するページを、退避を要するデータを保持するページよりも優先的に解放する処理と、を前記コンピュータに実行させてもよい。
 (付記18)
 前記コンピュータプログラムは、前記アクセラレータのメモリを解放する際、前記DAGのノードに相当するデータの全部または一部である分割データを保持する複数のページをまとめて解放する処理を、前記コンピュータに実行させてもよい。
 以上、上記した実施形態を模範的な例として本発明を説明した。しかしながら、本発明は、上記した実施形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
 この出願は、2014年10月23日に出願された日本出願特願2014-215968を基礎とする優先権を主張し、その開示の全てをここに取り込む。
 1 アクセラレータ制御装置
 3,3-1,3-2 アクセラレータ
 11 実行部
 12 生成部
 13 計算部
 14 制御部
 15 格納部
 16 メモリ管理部
 18 データ管理部

Claims (10)

  1.  実行対象のコンピュータプログラムに基づいた処理の流れを表すDAG(Directed Acyclic Graph)を生成する生成手段と、
     制御対象のアクセラレータに備えられているメモリに、前記DAGのノードに相当するデータが格納されている場合に、前記アクセラレータのメモリに格納されている前記データを用いて、前記DAGのエッジに相当する処理を実行するように前記アクセラレータを制御する制御手段と
    を備えるアクセラレータ制御装置。
  2.  前記制御手段は、前記DAGのノードに相当するデータの全部または一部である分割データに、前記DAGの複数のエッジに相当する各処理を連続して実行できる場合には、前記アクセラレータのメモリに格納されている前記分割データを前記処理が終了する度に前記メモリから削除することなく、当該分割データに前記複数の処理を連続して実行するように前記アクセラレータを制御する請求項1に記載されているアクセラレータ制御装置。
  3.  前記DAGのエッジに相当する処理が実行される際に前記アクセラレータのメモリの一部を前記DAGの処理に必要なメモリ領域として割り当て、また、前記アクセラレータのメモリのうちの、前記DAGの後工程のエッジに相当する処理に使用されないデータを格納しているメモリ領域を解放するメモリ管理手段と、
     前記アクセラレータのメモリに格納されているデータを管理するデータ管理手段と、
     前記アクセラレータのメモリに格納するデータ、および、前記アクセラレータのメモリから移動したデータを保持する格納手段と
    をさらに備え、
     前記制御手段は、前記DAGの処理に必要となる前記アクセラレータのメモリ領域を前記メモリ管理手段に要求し、また、前記アクセラレータのメモリに格納されているデータに関する情報を前記データ管理手段に問い合わせ、問い合わせ結果に応じて前記アクセラレータのメモリに格納されているデータの移動と削除を制御する請求項1または請求項2に記載されているアクセラレータ制御装置。
  4.  前記アクセラレータのメモリを複数に分割した分割領域であるページが保持するデータが前記DAGのエッジに相当する処理に使用されているか否かを示す情報と、前記メモリから前記格納手段への前記データの移動である退避を要するか否かを示す情報とを含む管理情報を備え、
     前記メモリ管理手段は、前記アクセラレータのメモリ領域を解放する場合に、前記管理情報を参照して、前記DAGのエッジに相当する処理に使用されていないデータであって退避を要しないデータを保持するページを、退避を要するデータを保持するページよりも先に解放する請求項3に記載されているアクセラレータ制御装置。
  5.  前記メモリ管理手段は、前記アクセラレータのメモリ領域を解放する場合に、前記DAGのノードに相当するデータの全部または一部である分割データを保持する複数のページをまとめて解放する請求項4に記載されているアクセラレータ制御装置。
  6.  前記コンピュータプログラムに基づいた処理は、予約API(Application Programming Interface)と実行APIを呼び出して実行させる処理を含み、
     前記生成手段は、前記予約APIの呼び出しに応じてDAGを更新し、
     前記生成手段により生成されたDAGの処理は、前記実行APIの呼び出しに応じてトリガされる請求項1乃至請求項5の何れか一つに記載されているアクセラレータ制御装置。
  7.  前記コンピュータプログラムに基づいて、前記DAGにおける複数のエッジの処理に使用するデータを前記アクセラレータのメモリにキャッシュするように前記生成手段に依頼する実行手段をさらに備え、
     前記生成手段は、前記キャッシュの依頼を受けたことを表す情報であるマークを、キャッシュ対象のデータに付与し、
     前記制御手段は、前記マークが付与されたデータが使用するページがロックされていない場合には、退避を要するページとして扱うように前記メモリ管理手段に依頼する請求項3に記載されているアクセラレータ制御装置。
  8.  前記コンピュータプログラムに基づき呼び出されるAPIは、指定した処理が生成するデータの容量を示すパラメータを引数とし、
     前記生成手段が生成する前記DAGは、生成されるデータの容量、または、前記DAGのエッジにおける処理に使用する入力データの容量と当該処理により算出された出力データの容量との比率が付加されている請求項6に記載されているアクセラレータ制御装置。
  9.  コンピュータが、
     実行対象のコンピュータプログラムに基づいた処理の流れを表すDAG(Directed Acyclic Graph)を生成し、
     制御対象のアクセラレータに備えられているメモリに、前記DAGのノードに相当するデータが格納されている場合に、前記アクセラレータのメモリに格納されている前記データを用いて、前記DAGのエッジに相当する処理を実行するように前記アクセラレータを制御するアクセラレータ制御方法。
  10.  実行対象のコンピュータプログラムに基づいた処理の流れを表すDAG(Directed Acyclic Graph)を生成する処理と、
     制御対象のアクセラレータに備えられているメモリに、前記DAGのノードに相当するデータが格納されている場合に、前記アクセラレータのメモリに格納されている前記データを用いて、前記DAGのエッジに相当する処理を実行するように前記アクセラレータを制御する処理と、
    をコンピュータに実行させる処理手順が表されているプログラム記憶媒体。
PCT/JP2015/005149 2014-10-23 2015-10-09 アクセラレータ制御装置、アクセラレータ制御方法およびプログラム記憶媒体 WO2016063482A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US15/520,979 US20170344398A1 (en) 2014-10-23 2015-10-09 Accelerator control device, accelerator control method, and program storage medium
JP2016555069A JPWO2016063482A1 (ja) 2014-10-23 2015-10-09 アクセラレータ制御装置、アクセラレータ制御方法およびコンピュータプログラム

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2014-215968 2014-10-23
JP2014215968 2014-10-23

Publications (1)

Publication Number Publication Date
WO2016063482A1 true WO2016063482A1 (ja) 2016-04-28

Family

ID=55760543

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2015/005149 WO2016063482A1 (ja) 2014-10-23 2015-10-09 アクセラレータ制御装置、アクセラレータ制御方法およびプログラム記憶媒体

Country Status (3)

Country Link
US (1) US20170344398A1 (ja)
JP (1) JPWO2016063482A1 (ja)
WO (1) WO2016063482A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101722643B1 (ko) * 2016-07-21 2017-04-05 한국과학기술정보연구원 Rdd 관리 방법, rdd 관리 장치 및 rdd 관리 프로그램을 저장하는 저장매체
WO2018230444A1 (ja) * 2017-06-13 2018-12-20 日本電気株式会社 アクセラレータ制御装置、アクセラレータ制御方法、及び、アクセラレータ制御プログラムが格納された記録媒体
JP2019160306A (ja) * 2018-03-14 2019-09-19 三星電子株式会社Samsung Electronics Co.,Ltd. 機械学習訓練のためのスラブ基盤のメモリ管理

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10650046B2 (en) 2016-02-05 2020-05-12 Sas Institute Inc. Many task computing with distributed file system
US10795935B2 (en) 2016-02-05 2020-10-06 Sas Institute Inc. Automated generation of job flow definitions
US10331495B2 (en) * 2016-02-05 2019-06-25 Sas Institute Inc. Generation of directed acyclic graphs from task routines
US10642896B2 (en) 2016-02-05 2020-05-05 Sas Institute Inc. Handling of data sets during execution of task routines of multiple languages
US10650045B2 (en) 2016-02-05 2020-05-12 Sas Institute Inc. Staged training of neural networks for improved time series prediction performance
US10838698B2 (en) * 2018-09-24 2020-11-17 Salesforce.Com, Inc. Providing a reuse capability for visual programming logic within a building tool

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060112388A1 (en) * 2004-11-22 2006-05-25 Masaaki Taniguchi Method for dynamic scheduling in a distributed environment
JP2010108153A (ja) * 2008-10-29 2010-05-13 Fujitsu Ltd スケジューラ、プロセッサシステム、プログラム生成方法およびプログラム生成用プログラム
WO2011078162A1 (ja) * 2009-12-24 2011-06-30 日本電気株式会社 スケジューリング装置、スケジューリング方法及びプログラム
JP2014164664A (ja) * 2013-02-27 2014-09-08 Nec Corp タスク並列処理方法、装置及びプログラム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010042241A1 (en) * 2000-01-21 2001-11-15 Fujitsu Limited Apparatus and method for executing program using just-in time-compiler system
US7272626B2 (en) * 2001-06-19 2007-09-18 Hewlett-Packard Development Company, L.P. E-service management through distributed correlation
US6757790B2 (en) * 2002-02-19 2004-06-29 Emc Corporation Distributed, scalable data storage facility with cache memory
US7685396B2 (en) * 2007-03-05 2010-03-23 Research In Motion Limited System and method for dynamic memory allocation
JP2008215574A (ja) * 2007-03-07 2008-09-18 Toyota Motor Corp 自動変速機の制御装置
US8301672B2 (en) * 2008-09-22 2012-10-30 Advanced Micro Devices, Inc. GPU assisted garbage collection
US9220066B2 (en) * 2011-06-20 2015-12-22 At&T Intellectual Property I, L.P. Bundling data transfers and employing tail optimization protocol to manage cellular radio resource utilization
US9996394B2 (en) * 2012-03-01 2018-06-12 Microsoft Technology Licensing, Llc Scheduling accelerator tasks on accelerators using graphs
US9652376B2 (en) * 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9311164B2 (en) * 2013-02-14 2016-04-12 Red Hat Israel, Ltd. System and method for ballooning with assigned devices

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060112388A1 (en) * 2004-11-22 2006-05-25 Masaaki Taniguchi Method for dynamic scheduling in a distributed environment
JP2010108153A (ja) * 2008-10-29 2010-05-13 Fujitsu Ltd スケジューラ、プロセッサシステム、プログラム生成方法およびプログラム生成用プログラム
WO2011078162A1 (ja) * 2009-12-24 2011-06-30 日本電気株式会社 スケジューリング装置、スケジューリング方法及びプログラム
JP2014164664A (ja) * 2013-02-27 2014-09-08 Nec Corp タスク並列処理方法、装置及びプログラム

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101722643B1 (ko) * 2016-07-21 2017-04-05 한국과학기술정보연구원 Rdd 관리 방법, rdd 관리 장치 및 rdd 관리 프로그램을 저장하는 저장매체
WO2018230444A1 (ja) * 2017-06-13 2018-12-20 日本電気株式会社 アクセラレータ制御装置、アクセラレータ制御方法、及び、アクセラレータ制御プログラムが格納された記録媒体
JPWO2018230444A1 (ja) * 2017-06-13 2020-04-02 日本電気株式会社 アクセラレータ制御装置、アクセラレータ制御方法、及び、アクセラレータ制御プログラム
US11194618B2 (en) 2017-06-13 2021-12-07 Nec Corporation Accelerator control device, accelerator control method, and recording medium with accelerator control program stored therein
JP2019160306A (ja) * 2018-03-14 2019-09-19 三星電子株式会社Samsung Electronics Co.,Ltd. 機械学習訓練のためのスラブ基盤のメモリ管理
JP7311981B2 (ja) 2018-03-14 2023-07-20 三星電子株式会社 機械学習訓練のためのスラブ基盤のメモリ管理

Also Published As

Publication number Publication date
JPWO2016063482A1 (ja) 2017-08-17
US20170344398A1 (en) 2017-11-30

Similar Documents

Publication Publication Date Title
WO2016063482A1 (ja) アクセラレータ制御装置、アクセラレータ制御方法およびプログラム記憶媒体
JP6897574B2 (ja) アクセラレータ制御装置、アクセラレータ制御方法およびプログラム
TWI531974B (zh) 管理巢狀執行串流的方法和系統
Chisholm et al. Reconciling the tension between hardware isolation and data sharing in mixed-criticality, multicore systems
JP6138774B2 (ja) コンピュータにより実行される方法及びコンピュータシステム
JP6370218B2 (ja) メモリ管理方法、コンピュータシステム、コンピュータプログラム及び記憶媒体
JP5980916B2 (ja) コンピュータにより実行される方法及びコンピュータシステム
US20200098082A1 (en) Dynamic memory management on a graphics processing unit
US10019363B2 (en) Persistent memory versioning and merging
KR101653204B1 (ko) 멀티 코어 시스템에서 데이터 병렬 처리를 위한 동적 태스크 관리 시스템 및 방법
EP3489815B1 (en) Method and system for low latency data management
KR102338849B1 (ko) 실시간 운영 체제에서 스택 메모리 관리를 제공하는 방법 및 시스템
US20130097382A1 (en) Multi-core processor system, computer product, and control method
US6985976B1 (en) System, method, and computer program product for memory management for defining class lists and node lists for allocation and deallocation of memory blocks
Margiolas et al. Portable and transparent software managed scheduling on accelerators for fair resource sharing
US8566532B2 (en) Management of multipurpose command queues in a multilevel cache hierarchy
JP6724908B2 (ja) アクセラレータ制御装置、アクセラレータ制御方法およびプログラム
US10360079B2 (en) Architecture and services supporting reconfigurable synchronization in a multiprocessing system
JP5158576B2 (ja) 入出力制御システム、入出力制御方法、及び、入出力制御プログラム
JP5419134B2 (ja) ベクトルプロセッサ及びベクトル命令発行方法
US20150212733A1 (en) Systems and methods for swapping pinned memory buffers
US20090320036A1 (en) File System Object Node Management
CN113076180B (zh) 上行数据通路的构建方法及数据处理系统
WO2019228237A1 (zh) 数据处理方法以及计算机设备
CN113076189A (zh) 具有多数据通路的数据处理系统及用多数据通路构建虚拟电子设备

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2016555069

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 15520979

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

Country of ref document: EP

Kind code of ref document: A1