WO2018074444A1 - 分散処理システム - Google Patents

分散処理システム Download PDF

Info

Publication number
WO2018074444A1
WO2018074444A1 PCT/JP2017/037460 JP2017037460W WO2018074444A1 WO 2018074444 A1 WO2018074444 A1 WO 2018074444A1 JP 2017037460 W JP2017037460 W JP 2017037460W WO 2018074444 A1 WO2018074444 A1 WO 2018074444A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
distributed processing
partition
processing system
metadata
Prior art date
Application number
PCT/JP2017/037460
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 US16/339,792 priority Critical patent/US20200183756A1/en
Priority to JP2018546342A priority patent/JP7014173B2/ja
Publication of WO2018074444A1 publication Critical patent/WO2018074444A1/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/5083Techniques for rebalancing the load in a distributed system
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • 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]
    • 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/5061Partitioning or combining of resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/561Adding application-functional data or data for application control, e.g. adding metadata
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20021Dividing image into blocks, subimages or windows

Definitions

  • the present invention relates to a distributed processing system, a distributed processing method, and a program recording medium, and more particularly to a distributed processing system, a distributed processing method, and a program recording medium for dividing and distributing data.
  • the distributed processing system shown in FIG. 1 includes slave computers 321 to 323 that perform distributed processing of data, and a master computer 310 that controls the slave computers.
  • the number of slave computers is not limited to three as long as it is plural.
  • the distributed processing system having such a configuration operates as follows.
  • the slave computers 321 to 323 divide and hold one piece of data.
  • the divided data is called a data partition.
  • the master computer 310 generates a process to be executed on the data partitions held by the slave computers 321 to 323 as a task, and instructs each slave computer to execute the task.
  • the slave computers 321 to 323 execute the designated task on the data partition to be held. As a result, desired processing is performed on all data partitions.
  • Patent Document 1 discloses a system that divides image data and performs distributed processing.
  • the divided image data and parameters (processing procedure, identification tag) attached to the image data are transmitted to a workstation for distributed processing, and distributed image processing is executed.
  • the method of performing data partition processing during distributed processing differs depending on the data format of the data to be distributed.
  • the data format of the data to be distributed is not taken into consideration, there is a problem that the distributed processing of various data formats cannot be performed, and there is no versatility.
  • an object of the present invention is to solve the above-described problem that distributed processing of various data formats cannot be performed and there is no versatility.
  • a distributed processing system is: Interface means for receiving a data format of data to be distributed and a parameter depending on the data format of the data to be distributed; In addition to creating a data partition that is a processing unit when the data is distributed from the data, the parameter corresponding to each data partition and depending on the data format of the data from which the data partition is created Split data creation means for creating metadata including information based on With The configuration is as follows.
  • a program recording medium is In the information processing device, Interface means for receiving a data format of data to be distributed and a parameter depending on the data format of the data to be distributed; In addition to creating a data partition that is a processing unit when the data is distributed from the data, the parameter corresponding to each data partition and depending on the data format of the data from which the data partition is created Split data creation means for creating metadata including information based on Record the program that realizes
  • the configuration is as follows.
  • a distributed processing method includes: Information processing device Receives the data format of the data to be distributed and the parameters depending on the data format of the data to be distributed, In addition to creating a data partition that is a processing unit when the data is distributed from the data, the parameter corresponding to each data partition and depending on the data format of the data from which the data partition is created Create metadata containing information based on,
  • the configuration is as follows.
  • the present invention is configured as described above, so that distributed processing depending on the data format of data to be distributed can be performed, and versatility can be improved.
  • FIG. 2 is a diagram for explaining the configuration of the distributed processing system according to the first embodiment.
  • 3 to 6 are diagrams for explaining the contents of processing by the distributed processing system.
  • FIG. 7 is a flowchart showing the distributed processing method.
  • the distributed processing system includes accelerators 21 to 23 that divide data and perform distributed processing, and a host 1 that controls processing to be performed by the accelerators 21 to 23. Yes.
  • the number of accelerators is not limited to three but may be more than one.
  • this embodiment can be adopted when there is one accelerator.
  • the description of “accelerator 2” means one of accelerators 21 to 23 that loads data and executes processing.
  • the description of “plural accelerators 2” means the whole accelerators 21 to 23.
  • the accelerator 21 includes a processor 21a that includes one or more arithmetic cores and performs data partition processing, and a memory 21b that is used for arithmetic operations of the processor.
  • the other accelerators 22 and 23 have the same configuration.
  • accelerators are equipped with a larger number of computing cores than computer CPUs, and are therefore known to provide higher computing power than CPUs.
  • the accelerators 21 to 23 are, for example, GPU (Graphics Processing Unit) provided by NVIDIA.
  • data obtained by dividing the data to be distributed is called a “data partition”.
  • the distributed processing handled in the present embodiment is realized by executing the processing on the data partition in a distributed manner with a plurality of accelerators.
  • the host 1 is an information processing device including an arithmetic device and a storage device. As shown in FIG. 2, the host 1 provides a user program 11 that is an application program for performing distributed processing using a plurality of accelerators 2 and an interface for using the plurality of accelerators 2 for the user program 11.
  • An API (Application Programming Interface) unit 12 a data storage unit 13 that stores data that causes a plurality of accelerators 2 to perform distributed processing, and an accelerator control unit 14 that controls distributed processing of the plurality of accelerators 2.
  • the user program 11, the API unit 12, and the accelerator control unit 14 are constructed by the arithmetic device executing the program.
  • the data storage unit 13 is configured as a storage device.
  • the accelerator control unit 14 further includes a program analysis unit 141 that analyzes a distributed process in which the user program 11 requests execution of a plurality of accelerators 2, and a data partition to the accelerator 2.
  • the accelerator control unit 14 reads a portion corresponding to the data partition of data to be processed from the data storage unit 13, creates a data partition, and loads it into the memory held by the accelerator 2. 2 and a task scheduler unit 143 for instructing data partition processing to 2.
  • the accelerator control unit 14 includes a task execution unit 145 that controls the accelerator 2 and executes data partition processing, and a metadata storage unit 146 that holds metadata of the data partition.
  • the API unit 12 (interface unit) provides an application program interface for creating a program for causing the plurality of accelerators 2 to perform distributed processing for the user program 11.
  • the API unit 12 requests the accelerator control unit 14 to execute the user program 11 created using the interface provided by the API unit 12 to the user program 11.
  • FIG. 3 shows an example of pseudo code of the user program 11 created using the interface provided by the API unit 12.
  • “ImageReader” on the first line is an object that reads data when the data format of the data to be distributed is “image”. It includes “FileName1” which is the name of the file storing the image to be distributed, and “Param1” and “Param2” which are parameters necessary for reading the image. These parameters may be three or more.
  • the name “Image1” is given as an instance of a data object “DDD” and instantiated.
  • the “map” process is performed on the instantiated “Image1”, and the output data subjected to the map process is stored in a file.
  • the map process is an interface for performing the same process on each data element included in the data.
  • the process specified by “ProcessFunc” is applied to each element of the image.
  • “ProcessFunc” is a user-defined function given by the user program 11 and is a specific process applied to each element of the image. Note that any user program 11 is provided from the outside, and therefore any user-defined function is provided from the outside. Also, the name “FileName2” is assigned to the output data file. In this program, when the “outputFile” is called, the accelerator control unit 14 is requested to execute the accelerator process specified in the first to third lines.
  • the API unit 12 defines an interface that triggers (starts) a processing request as in the example of “outputFile”. As described above, a process with a delay in which an actual process is executed by a plurality of accelerators 2 after the user program 11 calls an interface is generally called a delay evaluation. Further, it is generally known to those skilled in the art that an API unit 12 provides processing other than “map” and realizes various forms of processing for data elements included in “DDD”. It is.
  • the “pixel data type” of the image indicates the data type of each pixel.
  • Examples of data types are integer types and floating point types.
  • Image size is the vertical and horizontal width of an image. The unit of width is the number of pixels.
  • Data partition size is the vertical and horizontal widths of the divided images included in each data partition.
  • the “partition sleeve width” (redundant portion size) is the width of the image area that each data partition holds redundantly with another adjacent partition.
  • the “element data type” of the dense matrix is the data type of the element of the matrix.
  • the “matrix size” is the vertical and horizontal width of the matrix.
  • the “partition matrix size” is the vertical and horizontal widths of the block matrix included in the data partition obtained by dividing the matrix.
  • the unit of width is the number of elements in the matrix.
  • the “number of non-zero elements” is the number of non-zero elements included in the sparse matrix.
  • the API unit 12 receives from the user program 11 the data format of the data to be distributed and the parameters depending on the data format of the data to be distributed.
  • the parameter depending on the data format includes information based on the data structure of the data such as the image size, the matrix size, and the non-zero element as described above.
  • the data storage unit 13 stores data to be distributed before the division.
  • the data storage unit 13 is, for example, a file system, and stores and manages data using a storage device held by the host 1.
  • the program analysis unit 141 receives an execution request for the user program 11 from the API unit 12.
  • the process specified by the user program 11 is executed for each data partition obtained by dividing the data to be processed.
  • the process for the entire data designated by the user program 11 is called a “task”
  • the process for the data partition obtained by dividing the data is called a “subtask”.
  • Subtasks are generated from tasks.
  • the program analysis unit 141 generates the number of subtasks necessary for data processing, and requests the data scheduler unit 142 to prepare the accelerator 2 for the data partition to be processed.
  • the image obtained by dividing the image “Image1” is a data partition
  • the subtask that performs the process specified by the user-defined function “ProcessFunc” on each pixel included in the data partition is the number of data partitions. Only generated.
  • the data scheduler unit 142 requests the divided data creation unit 144 to prepare the input data partition of the subtask requested to be executed by the accelerator 2.
  • the data scheduler unit 142 determines an optimal preparation order when the program analysis unit 141 requests the preparation of input data partitions related to a plurality of subtasks.
  • the divided data creation unit 144 receives a request for preparation of an input data partition from the data scheduler unit 142 to the accelerator 2. At this time, an accelerator for preparing an input data partition is also specified.
  • the divided data creation unit 144 creates a data partition, which is a processing unit for distributed processing, by reading data in the range corresponding to the input data partition of the subtask from the data storage unit 13 and loading it into the designated accelerator 2 To do. For reading data, an identifier such as a file name passed from the user program 11 to the interface of the API unit 12 is used. At this time, metadata relating to the loaded data partition is created and registered in the metadata storage unit 146 (metadata storage means).
  • FIGS. 5A and 5B Examples of data partitions created by the divided data creation unit 144 are shown in FIGS. 5A and 5B.
  • image in FIG. 5A, the image is divided into 3 ⁇ 3.
  • a sleeve redundant portion that holds pixels redundantly with the adjacent data partition is created.
  • the sleeve portion is indicated by diagonal lines.
  • the M ⁇ N matrix is divided into a block matrices in parallel in the row direction.
  • these division methods can be expanded to three-dimensional or more divisions for one-dimensional, two-dimensional, or high-dimensional array data in the number and direction of division. It is as generally recognized.
  • the metadata created for each data partition is information corresponding to each data partition, and is information that depends on the data format of the original data that created the data partition. This means that the types of parameters included in the metadata depend on the data format.
  • the data information and the metadata information depending on the data format are created from the information transferred from the user program 11 by the API unit 12 shown in FIG. 4 and the data information read from the data storage unit 13.
  • Fig. 6 shows the metadata created for each data format.
  • the metadata includes the same parameters received by the API unit shown in FIG. 4 (for example, “image size”, “data partition size”). For this reason, the description of the same information as the parameters received by the API unit among the pieces of metadata information is omitted.
  • the “offset from the beginning” of the data format “image” indicates a relative position of the divided image included in the data partition with respect to the entire image.
  • the “partition matrix non-zero element count” of the data format “sparse matrix” indicates the number of non-zero elements included in the block matrix obtained by dividing the sparse matrix included in the data partition.
  • the API unit 12 shown in FIG. 4 displays both the information passed from the user program 11 (information received by the API unit 12) and the information of the data read from the data storage unit 13.
  • An example of use will be described using a sparse matrix.
  • the “partition matrix size” can be acquired from the “partition matrix size” in the parameters of the interface provided by the API unit 12 shown in FIG.
  • the “partition matrix non-zero element count” is the actual number of non-elements in the block matrix obtained by dividing the original matrix included in the corresponding data partition unless the sparse matrix as the original data is read from the data storage unit 13. I don't know if it contains zero elements. Accordingly, the “number of non-partition matrix non-zero elements” is set based on the data information read from the data storage unit 13.
  • the metadata created by the divided data creation unit 144 includes parameters that depend on the data format of the original data before creating the data partition and information based on the data structure of the data partition. .
  • the task scheduler unit 143 receives the notification of the subtask whose input data partition is ready from the data scheduler unit 142, and requests the task execution unit 145 to execute the subtask. When there are a plurality of subtasks being executed or waiting for execution, scheduling is performed to determine the execution order of these subtasks.
  • the task execution unit 145 executes the subtask specified by the task scheduler unit 143 with the specified accelerator. That is, the task execution unit 145 passes metadata along with the data partition to the program function that processes the data partition.
  • the metadata is transferred from the metadata storage unit 146.
  • the processor 21a that executes the subtask receives the user-defined function of the subtask, the address in the memory 21b of the data partition that is the processing target that executes the user-defined function, and the metadata of the data partition.
  • the processor 21a can implement processing depending on the data format by executing the user-defined function using the metadata.
  • the processor 21a executes “ProcessFunc” passed to “map” on the third line in FIG. 3 as a user-defined function for the data elements included in the data partition.
  • the data element is a pixel included in the divided image.
  • the metadata stored in the metadata storage unit 146 as an argument called “ProcessFunc” is passed from the task execution unit 145. “ProcessFunc” can determine the size of the divided image to be processed from the data partition size included in the metadata.
  • an interface provided by the API unit 12 is used inside the user program 11 (step S1). At this time, the data format of the data to be distributed and the parameters depending on the data format are passed to the interface.
  • step S2 When a command that triggers processing is called on the interface provided by the API unit 12, the accelerator control unit 14 is requested to execute the processing of the user program 11 that has been instructed to the API unit 12 so far. In other words, the processing of the user program 11 is delayed and evaluated (step S2).
  • the program analysis unit 141 that has received the request to execute the user program 11 creates a subtask entry for executing the processing of the user program 11 for each data partition into which the processing data is divided (step S3). Then, it requests the data scheduler unit 142 to prepare one of the accelerators 2 as a data partition as an input of the subtask.
  • the data scheduler unit 142 selects an accelerator that prepares the input data partition, and requests the divided data creation unit 144 to prepare the input data partition (step S4).
  • the data scheduler unit 142 receives a request for preparation of input data partitions for a plurality of subtasks from the program analysis unit 141, a schedule for determining the optimum order of data partition preparation is performed.
  • the divided data creation unit 144 reads the portion corresponding to the input data partition of the subtask from the processing data stored in the data storage unit 13, and loads it into the memory of the accelerator 2 designated by the data scheduler unit 142 (step S5). Further, metadata depending on the processing data loaded with the data partition is created and stored in the metadata storage unit 146 (step S6).
  • the task scheduler unit 143 receives from the data scheduler unit 142 the notification of the subtask whose input data partition has been prepared, and requests the task execution unit 145 to execute the subtask. At this time, if there are a plurality of unexecuted subtasks, a schedule for determining the order of executing the subtasks is performed (step S7).
  • the task execution unit 145 executes the subtask notified from the task scheduler unit 143 on the accelerator 2 that has completed the preparation of the input data partition (step S8). At this time, the metadata of the input data partition stored in the metadata storage unit 146 is passed to the user-defined function executed by the subtask. A user-defined function is then executed using the passed metadata.
  • the present embodiment includes the API unit 12 that provides the data format of the data to be distributed from the user program and an interface for receiving information depending on the data format. Further, data that performs distributed processing for each data partition by combining the information received from the user program by the API unit 12 when creating a data partition, which is a unit for executing distributed processing, and the information acquired in creating the data partition.
  • a divided data creation unit 144 that creates metadata depending on the format is provided. Furthermore, when executing a user-defined function given from the user program on the data partition by an accelerator, a task execution unit 145 is provided that passes metadata to the user-defined function.
  • the present embodiment receives from the user program the data format of the data to be distributed and the information dependent on the data format, and creates metadata for each data partition together with the information acquired when creating the data partition
  • a data partition is processed using a user-defined function, it operates to pass metadata to the user-defined function.
  • distributed processing depending on the data format becomes possible, and distributed processing in various data formats can be performed.
  • FIG. 8 is a block diagram showing the configuration of the distributed processing system in the present invention.
  • the distributed processing system 200 includes an interface unit 201 and a divided data creation unit 202 that are constructed by incorporating a program into an arithmetic device (not shown).
  • the interface unit 201 receives a data format of data to be distributed and a parameter depending on the data format of the data to be distributed.
  • the divided data creation unit 202 creates a data partition which is a processing unit when the data is distributed from the data, and corresponds to each data partition and depends on the data format of the data from which the data partition is created. Metadata including information based on the parameters to be created is created.
  • the divided data creation unit 202 creates metadata based on, for example, information received by the interface unit 201 and information obtained by reading data that is a source for creating a data partition.
  • the data format of the data to be distributed and the information depending on the data format are received from the user program, and the metadata for each data partition is combined with the information acquired when the data partition is created.
  • a data partition is created and processed using a user-defined function, it operates to pass metadata to the user-defined function.
  • distributed processing depending on the data format becomes possible, and distributed processing in various data formats can be performed.
  • Each part of the host 1 shown in FIG. 2 is realized by the hardware resources illustrated in FIG. That is, the configuration shown in FIG. 9 includes a processor 50, a RAM (Random Access Memory) 51, a ROM (Read Only Memory) 52, an external connection interface 53, a recording device 54, and a bus 55 for connecting each component.
  • the user program 11 in FIG. 2 may be stored in the ROM 52 or the recording device 54.
  • the supplied computer program may be stored in a computer-readable storage device such as a readable / writable memory (temporary storage medium) or a hard disk device.
  • a computer-readable storage device such as a readable / writable memory (temporary storage medium) or a hard disk device.
  • the present invention can be understood as being configured by a code representing the computer program or a storage medium storing the computer program.
  • Interface means for receiving a data format of data to be distributed and a parameter depending on the data format of the data to be distributed;
  • the parameter corresponding to each data partition and depending on the data format of the data from which the data partition is created
  • Split data creation means for creating metadata including information based on Distributed processing system with
  • Appendix 4 The distributed processing system according to appendix 2 or 3, The divided data creation means generates the metadata based on the data structure of the data partition. Distributed processing system.
  • Appendix 5 The distributed processing system according to any one of appendices 1 to 4, The parameter includes information based on a data structure of the data. Distributed processing system.
  • the distributed processing system according to any one of appendices 1 to 5,
  • the data format of the data is an image
  • the parameters include an image size of the data, an image size of the data partition to be created, and a redundant part size of the data partition to be created.
  • Distributed processing system
  • the metadata includes an image size of the data, an image size of the data partition to be created, and an offset of the data partition to be created from the top of the data.
  • Distributed processing system A distributed processing system according to appendix 5.1, The metadata includes an image size of the data, an image size of the data partition to be created, and an offset of the data partition to be created from the top of the data.
  • the distributed processing system according to any one of appendices 1 to 5,
  • the data format of the data is a dense matrix;
  • the parameters include a matrix size of the data and a matrix size of the data partition to be created.
  • Distributed processing system
  • the metadata includes a matrix size of the data partition to be created.
  • Distributed processing system
  • the distributed processing system according to any one of appendices 1 to 5,
  • the data format of the data is a sparse matrix;
  • the parameters include a matrix size of the data, a matrix size of the data partition to be created, and the number of non-zero elements in the data.
  • Distributed processing system
  • the distributed processing system according to attachment 5.5, The metadata includes a matrix size of the data partition to be created and a number of non-zero elements in the data partition to be created. Distributed processing system.
  • the distributed processing system according to any one of appendices 1 to 5, Furthermore, the program function for processing the data partition comprises task execution means for passing the metadata together with the data partition, Distributed processing system.
  • Appendix 8 The distributed processing system according to appendix 6 or 7, When storing the metadata created by the divided data creation unit and when the task execution unit executes the program function for processing the data partition, the task execution unit stores the metadata stored therein. Further provided metadata storage means to provide, Distributed processing system.
  • Interface means for receiving a data format of data to be distributed and a parameter depending on the data format of the data to be distributed;
  • the parameter corresponding to each data partition and depending on the data format of the data from which the data partition is created Split data creation means for creating metadata including information based on The program recording medium which records the program for realizing.
  • the program recording medium according to attachment 9.1 The divided data creation means creates the metadata including the parameters that depend on the data format of the data from which the data partition is created. Program recording medium.
  • Appendix 9.3 A program recording medium according to appendix 9.1 or 9.2, The divided data creation means generates the metadata based on the data structure of the data partition. Program recording medium.
  • Appendix 9.4 A program recording medium according to any one of appendices 9 to 9.3, The parameter includes information based on a data structure of the data. Program recording medium.
  • Information processing device Receives the data format of the data to be distributed and the parameters depending on the data format of the data to be distributed, In addition to creating a data partition that is a processing unit when the data is distributed from the data, the parameter corresponding to each data partition and depending on the data format of the data from which the data partition is created Create metadata containing information based on, Distributed processing method.
  • Appendix 10.3 The distributed processing method according to appendix 10.1 or 10.2, Generating the metadata based on the data structure of the data partition; Distributed processing method.
  • Appendix 10.4 The distributed processing method according to any one of appendices 10 to 10.3,
  • the parameter includes information based on a data structure of the data.
  • the information processing apparatus further includes: Passing the metadata along with the data partition to a program function that processes the data partition; Distributed processing method.
  • the information processing apparatus further includes: Storing the created metadata and providing the stored metadata to the task execution unit when the task execution unit causes the program function to process the data partition to be executed; Distributed processing method.
  • the above-described program recording medium is a computer-readable recording medium.
  • the program recording medium is a portable medium such as a flexible disk, an optical disk, a magneto-optical disk, and a semiconductor memory.
  • data of various data formats can be used for distributed processing using an accelerator.
  • Applications include computers for image processing and data analysis.

Abstract

様々なデータ形式の分散処理を行うことができないこと。 本発明である分散処理システム200は、分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取るインターフェース手段201と、データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、データパーティション毎に対応し、当該データパーティションを作成した元となるデータのデータ形式に依存するパラメータに基づく情報を含むメタデータを作成する分割データ作成手段202と、を備える。

Description

分散処理システム
 本発明は、分散処理システム、分散処理方法及びプログラム記録媒体にかかり、特に、データを分割して分散処理する分散処理システム、分散処理方法及びプログラム記録媒体に関する。
 データを分散して処理するシステムとして、図1に示すような分散処理システムがある。図1に示す分散処理システムは、データの分散処理を行うスレーブコンピュータ321~323と、スレーブコンピュータを制御するマスタコンピュータ310と、を含む。なお、スレーブコンピュータの数は複数であればよく、3つに限定されない。
 このような構成を有する分散処理システムは、次のように動作する。スレーブコンピュータ321~323は、1つのデータを分割して保持する。分割したデータをデータパーティションと呼ぶ。マスタコンピュータ310は、スレーブコンピュータ321~323が保持するデータパーティションに対して実行する処理をタスクとして生成し、各スレーブコンピュータにタスクを実行するよう指示を行う。スレーブコンピュータ321~323は、指示されたタスクを、保持するデータパーティションに対して実行する。これにより、全てのデータパーティションに対して所望の処理が行われる。
 また、特許文献1には、画像データを分割して分散処理するシステムが開示されている。この分散処理システムでは、分割した画像データと、当該画像データに付随するパラメータ(処理手順、識別タグ)と、を分散処理するワークステーションに送信して、分散画像処理を実行している。
特開平8-16766号公報 特開2000-020327号公報
 ここで、分散処理の際にデータパーティションの処理を行う方法は、分散処理を行うデータのデータ形式に応じて異なる。そして、上述した分散処理システムでは、分散処理を行うデータのデータ形式を考慮していないため、様々なデータ形式の分散処理を行うことができず、汎用性がない、という問題が生じる。
 このため、本発明の目的は、上述した課題である、様々なデータ形式の分散処理を行うことができず汎用性がない、ということを解決することにある。
 本発明の一形態である分散処理システムは、
 分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取るインターフェース手段と、
 前記データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、前記データパーティション毎に対応し、当該データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する分割データ作成手段と、
を備えた、
という構成をとる。
 また、本発明の一形態であるプログラム記録媒体は、
 情報処理装置に、
 分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取るインターフェース手段と、
 前記データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、前記データパーティション毎に対応し、当該データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する分割データ作成手段と、
を実現させるプログラムを記録する、
という構成をとる。
 また、本発明の一形態である分散処理方法は、
 情報処理装置が、
 分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取り、
 前記データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、前記データパーティション毎に対応し、当該データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する、
という構成をとる。
 本発明は、以上のように構成されることにより、分散処理を行うデータのデータ形式に依存した分散処理が可能となり、汎用性の向上を図ることができる。
本発明に関連する分散処理システムの構成を示すブロック図である。 本発明の第1の実施形態における分散処理システムの構成を示すブロック図である。 図1に開示した分散処理システムにて用いられる情報の一例を示す図である。 図1に開示した分散処理システムにて用いられる情報の一例を示す図である。 図1に開示した分散処理システムにて用いられる情報の一例を示す図である。 図1に開示した分散処理システムにて用いられる情報の一例を示す図である。 図1に開示した分散処理システムにて用いられる情報の一例を示す図である。 図1に開示した分散処理システムの動作を示すフローチャートである。 本発明の第2の実施形態における分散処理システムの構成を示すブロック図である。 各実施形態に示した分散処理システムを構成する装置を実現するハードウエア構成の一例を示す図である。
 <実施形態1>
 本発明の第1の実施形態を、図2乃至図7を参照して説明する。図2は、実施形態1における分散処理システムの構成を説明するための図である。図3乃至図6は、分散処理システムによる処理の内容を説明するための図である。図7は、分散処理方法を示すフローチャートである。
 [構成]
 本実施形態における分散処理システムは、図2に示すように、データを分割して分散処理を行うアクセラレータ21~23と、当該アクセラレータ21~23に行わせる処理を制御するホスト1と、を備えている。なお、アクセラレータの数は3つに制限されず、複数であればよい。また、アクセラレータが1つの場合に本実施の形態を採用することも可能である。以後、「アクセラレータ2」と記述する場合は、データのロードや処理の実行を行うアクセラレータ21~23のいずれかを意味する。また「複数のアクセラレータ2」と記述する場合は、アクセラレータ21~23の全体を意味する。
 上記アクセラレータ21は、図2に示すように、単数又は複数の演算コアを搭載しデータパーティションの処理を行うプロセッサ21aと、当該プロセッサの演算のために用いられるメモリ21bと、の組で構成されており、他のアクセラレータ22,23も同様の構成である。一般的に、アクセラレータは、コンピュータのCPUより多数の演算コアを実装しているため、CPUより高い計算能力を提供することが知られている。アクセラレータ21~23は、例えば、NVIDIA社が提供するGPU(Graphics Processing Unit)である。
 ここで、本実施の形態では、分散処理対象のデータを分割したものを「データパーティション」と呼ぶ。本実施の形態で扱う分散処理は、データパーティションに対する処理を単位として、複数のアクセラレータで分散して実行することで実現する。
 上記ホスト1は、演算装置と記憶装置とを備えた情報処理装置である。そして、ホスト1は、図2に示すように、複数のアクセラレータ2を用いて分散処理を行うアプリケーションプログラムであるユーザプログラム11と、ユーザプログラム11に複数のアクセラレータ2を利用するためのインターフェースを提供するAPI(Application Programming Interface)部12と、複数のアクセラレータ2に分散処理を行わせるデータを格納するデータ格納部13と、複数のアクセラレータ2の分散処理を制御するアクセラレータ制御部14と、を備えている。上記ユーザプログラム11と、API部12と、アクセラレータ制御部14とは、演算装置がプログラムを実行することで構築される。また、上記データ格納部13は、記憶装置に構成されている。
 上記アクセラレータ制御部14は、さらに、図2に示すように、ユーザプログラム11が複数のアクセラレータ2に対して実行を要求する分散処理の解析を行うプログラム解析部141と、アクセラレータ2へのデータパーティションの準備を指示するデータスケジューラ部142と、を備える。また、アクセラレータ制御部14は、データ格納部13から処理を行うデータのデータパーティションに該当する部分を読み込み、データパーティションを作成してアクセラレータ2が保持するメモリにロードする分割データ作成部144と、アクセラレータ2に対しデータパーティションの処理を指示するタスクスケジューラ部143と、を備える。さらに、アクセラレータ制御部14は、アクセラレータ2を制御しデータパーティションの処理を実行するタスク実行部145と、データパーティションのメタデータを保持するメタデータ格納部146と、を備える。
 以下、上述したホスト1の構成について、さらに詳しく説明する。
 上記API部12(インターフェース部)は、ユーザプログラム11に対して、複数のアクセラレータ2に分散処理を行わせるプログラムを作成するためのアプリケーションプログラムインターフェースを提供する。また、API部12は、当該API部12がユーザプログラム11に提供するインターフェースを用いて作成したユーザプログラム11の実行を、アクセラレータ制御部14に要求する。
 図3に、API部12が提供するインターフェースを用いて作成したユーザプログラム11の疑似コードの一例を示す。1行目の「ImageReader」は、分散処理を行うデータのデータ形式が「画像」である場合に、データを読み込むオブジェクトである。分散処理を行う画像を格納しているファイルの名前である「FileName1」や、画像を読み込むために必要なパラメータである「Param1」や「Param2」を含む。これらのパラメータは3つ以上でも良い。2行目では、「ImageReader」によって、読み込むデータをプログラム上で扱うために、「DDD」というデータオブジェクトとして「Image1」という名前を付与してインスタンス化している。3行目では、インスタンス化した「Image1」に対し「map」処理を実施し、map処理を実施した出力データをファイルに格納している。
 具体的に、上記map処理は、データが含む各データ要素に同じ処理を実施するためのインターフェースである。この場合、「ProcessFunc」で指定された処理が、画像の各要素に適用される。「ProcessFunc」は、ユーザプログラム11が与えるユーザ定義関数であり、画像の各要素に適用する具体的な処理である。なお、ユーザプログラム11は外部から任意のものが提供されるため、ユーザ定義関数も外部から任意のものが提供される。また、出力データのファイルには、「FileName2」という名前が付与される。このプログラムでは、「outputFile」が呼ばれた時点で、1行目~3行目で指定したアクセラレータの処理の実行がアクセラレータ制御部14に対して要求される。
 API部12は、「outputFile」の例のように、処理の要求をトリガ(開始)するインターフェースを規定している。このように、ユーザプログラム11がインターフェースを呼ぶより後に、実際の処理が複数のアクセラレータ2で実行されるような遅延を伴う処理を一般に遅延評価と呼ぶ。また、API部12が提供する処理として「map」以外を定義し、「DDD」が含むデータ要素に対し様々な形態の処理を実現することは本分野の技術者であれば一般的に知る所である。
 本実施の形態では、分散処理を行うデータのデータ形式として、上述した「画像」以外に、「密行列」や「疎行列」等の様々なデータ形式を扱うことが可能である。その場合、密行列では、図3に示した「ImageReader」に変わり「DenseMatrixReader」を、疎行列では、「ImageReader」に変わり「SparseMatrixReader」を使用する。つまり、データ形式に依存した「Reader」を用いる。また各「Reader」に与えるパラメータは、ファイル名以外はデータ形式に依存する。ここで、データ形式に依存するパラメータの一例を図4に示す。
 図4において、画像の「ピクセルデータ型」は、各ピクセルのデータ型を示す。データ型の例は、整数型や浮動小数点型である。「画像サイズ」は、画像の縦と横の幅である。
幅の単位はピクセル数である。「データパーティションサイズ」は、各データパーティションが含む分割画像の縦と横の幅である。「パーティション袖幅」(冗長部分サイズ)は、各データパーティションが隣接する他のパーティションと重複して冗長に保持する画像の領域の幅である。
 図4において、密行列の「要素データ型」は、行列の要素のデータ型である。「行列サイズ」は、行列の縦と横の幅である。「分割行列サイズ」は、行列を分割したデータパーティションが含むブロック行列の縦と横の幅である。幅の単位は行列の要素数である。疎行列では、密行列と名前が同じパラメータの意味は同じである。また、「非ゼロ要素数」は、疎行列が含む非ゼロ要素の数である。また同様の方法で、画像、密行列、疎行列以外にも、様々なデータ形式に対応したインターフェースをAPI部12に拡張していくことが可能である。
 以上のように、API部12は、ユーザプログラム11から、分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取る。そして、データ形式に依存するパラメータは、例えば、上述したように画像サイズや行列サイズ、非ゼロ要素など、データのデータ構造に基づく情報を含んでいる。
 上記データ格納部13は、分割前の分散処理対象となるデータを格納する。そして、データ格納部13は、例えば、ファイルシステムであり、ホスト1が保持する記憶デバイスを使用してデータの格納及び管理を行う。
 上記プログラム解析部141は、API部12からユーザプログラム11の実行要求を受信する。ユーザプログラム11で指定された処理は、処理対象となるデータを分割したデータパーティション毎に実行される。ここで、ユーザプログラム11が指定するデータ全体に対する処理を「タスク」、データを分割したデータパーティションに対する処理を「サブタスク」と呼ぶ。サブタスクはタスクから生成される。プログラム解析部141は、データの処理に必要な数のサブタスクを生成し、データスケジューラ部142に処理対象となるデータパーティションのアクセラレータ2への準備を依頼する。図3の例では、「Image1」の画像を分割した画像がデータパーティションであり、そのデータパーティションが含む各画素に「ProcessFunc」のユーザ定義関数で指定された処理を行うサブタスクが、データパーティションの数だけ生成される。
 上記データスケジューラ部142は、アクセラレータ2に実行が要求されたサブタスクの入力データパーティションを準備するよう分割データ作成部144に依頼する。データスケジューラ部142は、プログラム解析部141から複数のサブタスクに関する入力データパーティションの準備が要求された場合、最適な準備の順番を決定する。
 上記分割データ作成部144(分割データ作成手段)は、データスケジューラ部142からアクセラレータ2への入力データパーティションの準備の要求を受ける。このとき、入力データパーティションを準備するアクセラレータも指定される。分割データ作成部144は、データ格納部13からサブタスクの入力データパーティションに該当する範囲のデータを読み込み、指定されたアクセラレータ2にロードすることで、分散処理するときの処理単位であるデータパーティションを作成する。データの読み込みにはユーザプログラム11からAPI部12のインターフェースに渡されたファイル名等の識別子を用いる。またこのとき、ロードしたデータパーティションに関するメタデータを作成し、メタデータ格納部146(メタデータ格納手段)に登録する。
 上記分割データ作成部144にて作成するデータパーティションの例を、図5Aおよび図5Bに示す。図5Aの「画像」の例では、3×3に画像を分割している。また、隣接データパーティションと冗長にピクセルを保持する袖(冗長部分)を作成する。袖部分は斜線で示している。図5Bの「疎行列」の例では、M×Nの行列を、行方向に並行にa個のブロック行列に分割している。なお、これらの分割の仕方は、その数や分割の方向が1次元や2次元、あるいは高次元のアレイデータに対しては3次元以上の分割に拡張できることは、本分野の技術者であれば一般的に認識している通りである。
 また、データパーティション毎に作成するメタデータは、データパーティション毎に対応する情報であり、当該データパーティションを作成した元データのデータ形式に依存する情報である。これはメタデータが含むパラメータの種類がデータ形式に依存するという意味である。これらのデータ形式やデータ形式に依存するメタデータの情報は、図4に示したAPI部12がユーザプログラム11から渡された情報と、データ格納部13から読み込んだデータの情報から作成する。
 図6にデータ形式毎に作成するメタデータを示す。なお、メタデータは、図4に示したAPI部が受け取るパラメータと同じものも含む(例えば、「画像サイズ」、「データパーティションサイズ」)。このため、メタデータの各情報のうち、API部が受け取るパラメータと同じものについては、説明を省略する。データ形式「画像」の「先頭からのオフセット」は、データパーティションが含む分割画像の全体の画像に対する相対的な位置を示す。データ形式「疎行列」の「分割行列非ゼロ要素数」は、データパーティションが含む疎行列を分割したブロック行列が含む非ゼロ要素数を示す。
 メタデータを作成する際に、図4に示したAPI部12がユーザプログラム11から渡された情報(API部12が受け取った情報)と、データ格納部13から読み込んだデータの情報、の両方を使用する例を、疎行列で説明する。図6に示す疎行列のデータパーティションメタデータが含むパラメータの中で、「分割行列サイズ」は、図4に示すAPI部12が提供するインターフェースのパラメータにある「分割行列サイズ」から取得できる。一方、「分割行列非ゼロ要素数」は、データ格納部13から元データとなる疎行列を読み込まなければ、該当するデータパーティションが含む元の行列を分割したブロック行列の中に実際にいくつの非ゼロ要素数が含まれているかわからない。従って、「分割行列非ゼロ要素数」は、データ格納部13から読み込んだデータの情報をもとに設定される。
 このように、分割データ作成部144が作成するメタデータは、データパーティションを作成した分割前の元となるデータのデータ形式に依存するパラメータや、データパーティションのデータ構造に基づく情報を含むこととなる。
 上記タスクスケジューラ部143は、データスケジューラ部142から入力データパーティションの準備ができたサブタスクの通知を受け、サブタスクを実行するようタスク実行部145に依頼する。実行中のサブタスクや実行待ちのサブタスクが複数存在する場合はそれらの実行順を決めるスケジューリングを行う。
 上記タスク実行部145(タスク実行手段)は、タスクスケジューラ部143から指定されたサブタスクを、指定されたアクセラレータで実行する。つまり、タスク実行部145は、データパーティションを処理するプログラム関数に、データパーティションと共にメタデータを渡す。なお、メタデータは、上記メタデータ格納部146から渡すこととなる。ここで例として、サブタスクをアクセラレータ21で実行する場合を考える。サブタスクを実行するプロセッサ21aは、サブタスクのユーザ定義関数と、ユーザ定義関数を実行する処理対象であるデータパーティションのメモリ21bでのアドレスと、データパーティションのメタデータを受け取る。プロセッサ21aは、メタデータを使用してユーザ定義関数を実行することにより、データ形式に依存した処理が実現できる。
 データ形式に依存した処理を実行する例として、図3に示した画像に対する処理を説明する。プロセッサ21aは、図3の3行目で「map」に渡される「ProcessFunc」をユーザ定義関数として、データパーティションが含むデータ要素に対して実行する。この場合、データ要素は分割画像が含むピクセルである。このとき「ProcessFunc」が呼ばれる引数としてメタデータ格納部146に格納されたメタデータが、タスク実行部145から渡される。「ProcessFunc」は、メタデータが含むデータパーティションサイズから処理すべき分割画像の大きさが判別できる。また、画像サイズと先頭からのオフセット、つまり分割画像の画像全体に対する相対位置から、処理対象の分割画像のどの周辺部分に袖があるかを判別することができ、袖を考慮した処理が行える。袖を考慮する処理の例として、画像のピクセル値を周囲のピクセル値を用いて平均化するステンシル処理がある。
 [動作]
 次に本発明の実施の形態の動作について、主に図7のフローチャートを参照して詳細に説明する。
 ユーザプログラム11を実行すると、ユーザプログラム11の内部でAPI部12が提供するインターフェースが使用される(ステップS1)。このとき、分散処理を行うデータのデータ形式とデータ形式に依存したパラメータがインターフェースに渡される。
 API部12が提供するインターフェースで、処理をトリガするコマンドが呼ばれると、それまでにAPI部12に対し指示されたユーザプログラム11の処理の実行が、アクセラレータ制御部14に要求される。つまり、ユーザプログラム11の処理が遅延評価される(ステップS2)。
 ユーザプログラム11の実行の要求を受信したプログラム解析部141は、ユーザプログラム11の処理を実行するサブタスクのエントリを、処理データを分割したデータパーティション毎に作成する(ステップS3)。そして、サブタスクの入力となるデータパーティションをアクセラレータ2のいずれかに準備するようデータスケジューラ部142に要求する。
 データスケジューラ部142は、入力データパーティションを準備するアクセラレータを選択し、分割データ作成部144に入力データパーティションを準備するよう要求する(ステップS4)。ここで、データスケジューラ部142がプログラム解析部141から複数のサブタスクの入力データパーティションの準備の要求を受けている場合は、最適なデータパーティションの準備の順番を決定するスケジュールを行う。
 分割データ作成部144は、データ格納部13が格納する処理データから、サブタスクの入力データパーティションに該当する部分を読み込み、データスケジューラ部142に指定されたアクセラレータ2のメモリにロードする(ステップS5)。また、データパーティションをロードした処理データに依存するメタデータを作成し、メタデータ格納部146に格納する(ステップS6)。
 タスクスケジューラ部143は、データスケジューラ部142から入力データパーティションの準備が完了したサブタスクの通知を受信し、サブタスクの実行をタスク実行部145に要求する。このとき、未実行のサブタスクが複数存在する場合は、サブタスクを実行する順番を決定するスケジュールを行う(ステップS7)。
 タスク実行部145は、タスクスケジューラ部143から通知を受けたサブタスクを入力データパーティションの準備が完了したアクセラレータ2で実行する(ステップS8)。このとき、サブタスクが実行するユーザ定義関数に、メタデータ格納部146に格納されている入力データパーティションのメタデータを渡す。そして、ユーザ定義関数が、渡されたメタデータを用いて実行される。
 以上のように、本実施形態では、ユーザプログラムから分散処理を行うデータのデータ形式と当該データ形式に依存した情報を受け取るインターフェースを提供するAPI部12を備えている。また、分散処理を実行する単位であるデータパーティションを作成する際にAPI部12がユーザプログラムから受け取った情報と、データパーティションの作成において取得した情報を合わせて、データパーティション毎に分散処理を行うデータ形式に依存したメタデータを作成する分割データ作成部144を備えている。さらに、アクセラレータでユーザプログラムから与えられたユーザ定義関数をデータパーティションに対し実行する場合に、ユーザ定義関数にメタデータを渡すタスク実行部145を備えている。これにより、本実施形態は、ユーザプログラムから分散処理を行うデータのデータ形式とデータ形式に依存した情報を受け取り、データパーティションを作成する際に取得した情報と合わせてデータパーティション毎にメタデータを作成し、データパーティションをユーザ定義関数を用いて処理を行う場合に、ユーザ定義関数にメタデータを渡すように動作する。その結果、データ形式に依存した分散処理が可能となり、様々なデータ形式の分散処理を行うことが可能となる。
 <実施形態2>
 次に、本発明の第2の実施形態を、図8を参照して説明する。図8は、本発明における分散処理システムの構成を示すブロック図である。
 図8に示すように、分散処理システム200は、図示しない演算装置にプログラムが組み込まれることで構築された、インターフェース手段201と、分割データ作成手段202と、を備える。インターフェース手段201は、分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取る。分割データ作成手段202は、データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、データパーティション毎に対応し、当該データパーティションを作成した元となるデータのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する。
 上記分割データ作成手段202は、例えば、インターフェース手段201にて受け取った情報と、データパーティションを作成する元となるデータを読み込むことで得られた情報と、に基づいてメタデータを作成する。
 上記構成の分散処理システムによると、ユーザプログラムから分散処理を行うデータのデータ形式とデータ形式に依存した情報を受け取り、データパーティションを作成する際に取得した情報と合わせてデータパーティション毎にメタデータを作成し、データパーティションをユーザ定義関数を用いて処理を行う場合に、ユーザ定義関数にメタデータを渡すように動作する。その結果、データ形式に依存した分散処理が可能となり、様々なデータ形式の分散処理を行うことが可能となる。
 図2に示したホスト1の各部は、図9に例示するハードウエア資源において実現される。すなわち、図9に示す構成は、プロセッサ50、RAM(Random Access Memory)51、ROM(Read Only Memory)52、外部接続インタフェース53、記録装置54および各構成要素を接続するバス55を備える。図2のユーザプログラム11は、ROM52または記録装置54に格納されてもよい。
 上述した各実施形態では、図9に示すプロセッサ50が実行する一例として、ホスト1に対して、上述した機能を実現可能なコンピュータ・プログラムを供給した後、そのコンピュータ・プログラムを、プロセッサ50がRAM51に読み出して実行することによって実現する場合について説明した。しかしながら、上記各図に示した各ブロックに示す機能は、一部または全部を、ハードウエアとして実現してもよい。
 係る供給されたコンピュータ・プログラムは、読み書き可能なメモリ(一時記憶媒体)またはハードディスク装置等のコンピュータ読み取り可能な記憶デバイスに格納すればよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムを表すコード或いは係るコンピュータ・プログラムを格納した記憶媒体によって構成されると捉えることができる。
 <付記>
 上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明における分散処理システム、プログラム記録媒体、分散処理方法の構成の概略を説明する。但し、本発明は、以下の構成に限定されない。
(付記1)
 分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取るインターフェース手段と、
 前記データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、前記データパーティション毎に対応し、当該データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する分割データ作成手段と、
を備えた分散処理システム。
(付記2)
 付記1に記載の分散処理システムであって、
 前記分割データ作成手段は、前記インターフェース手段にて受け取った情報と、前記データパーティションを作成する元となる前記データを読み込むことで得られた情報と、に基づいて前記メタデータを作成する、
分散処理システム。
(付記3)
 付記2に記載の分散処理システムであって、
 前記分割データ作成手段は、前記データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータを含めて前記メタデータを作成する、
分散処理システム。
(付記4)
 付記2又は3に記載の分散処理システムであって、
 前記分割データ作成手段は、前記データパーティションのデータ構造に基づいて前記メタデータを生成する、
分散処理システム。
(付記5)
 付記1乃至4のいずれかに記載の分散処理システムであって、
 前記パラメータは、前記データのデータ構造に基づく情報を含む、
分散処理システム。
(付記5.1)
 付記1乃至5のいずれかに記載の分散処理システムであって、
 前記データの前記データ形式は、画像であり、
 前記パラメータは、前記データの画像サイズ、作成する前記データパーティションの画像サイズ、及び、作成する前記データパーティションの冗長部分サイズ、を含む、
分散処理システム。
(付記5.2)
 付記5.1に記載の分散処理システムであって、
 前記メタデータは、前記データの画像サイズ、作成する前記データパーティションの画像サイズ、及び、前記データの先頭から作成する前記データパーティションのオフセット、を含む、
分散処理システム。
(付記5.3)
 付記1乃至5のいずれかに記載の分散処理システムであって、
 前記データの前記データ形式は、密行列であり、
 前記パラメータは、前記データの行列サイズ、及び、作成する前記データパーティションの行列サイズ、を含む、
分散処理システム。
(付記5.4)
 付記5.3に記載の分散処理システムであって、
 前記メタデータは、作成する前記データパーティションの行列サイズ、を含む、
分散処理システム。
(付記5.5)
 付記1乃至5のいずれかに記載の分散処理システムであって、
 前記データの前記データ形式は、疎行列であり、
 前記パラメータは、前記データの行列サイズ、作成する前記データパーティションの行列サイズ、及び、前記データ内の非ゼロ要素数、を含む、
分散処理システム。
(付記5.6)
 付記5.5に記載の分散処理システムであって、
 前記メタデータは、作成する前記データパーティションの行列サイズ、及び、作成する前記データパーティション内の非ゼロ要素数、を含む、
分散処理システム。
(付記6)
 付記1乃至5のいずれかに記載の分散処理システムであって、
 さらに、前記データパーティションを処理するプログラム関数に、前記データパーティションと共に前記メタデータを渡すタスク実行手段を備えた、
分散処理システム。
(付記7)
 付記6に記載の分散処理システムであって、
 前記データパーティションを処理する前記プログラム関数は、外部から受け取ったユーザ定義関数である、
分散処理システム。
(付記8)
 付記6又は7に記載の分散処理システムであって、
 前記分割データ作成手段が作成した前記メタデータを格納すると共に、前記タスク実行手段が前記データパーティションを処理する前記プログラム関数を実行させる場合に、当該タスク実行手段に、格納している前記メタデータを提供するメタデータ格納手段をさらに備えた、
分散処理システム。
(付記9)
 情報処理装置に、
 分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取るインターフェース手段と、
 前記データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、前記データパーティション毎に対応し、当該データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する分割データ作成手段と、
を実現させるためのプログラムを記録するプログラム記録媒体。
(付記9.1)
 付記9に記載のプログラム記録媒体であって、
 前記分割データ作成手段は、前記インターフェース手段にて受け取った情報と、前記データパーティションを作成する元となる前記データを読み込むことで得られた情報と、に基づいて前記メタデータを作成する、
プログラム記録媒体。
(付記9.2)
 付記9.1に記載のプログラム記録媒体であって、
 前記分割データ作成手段は、前記データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータを含めて前記メタデータを作成する、
プログラム記録媒体。
(付記9.3)
 付記9.1又は9.2に記載のプログラム記録媒体であって、
 前記分割データ作成手段は、前記データパーティションのデータ構造に基づいて前記メタデータを生成する、
プログラム記録媒体。
(付記9.4)
 付記9乃至9.3のいずれかに記載のプログラム記録媒体であって、
 前記パラメータは、前記データのデータ構造に基づく情報を含む、
プログラム記録媒体。
(付記9.5)
 付記9乃至9.4のいずれかに記載のプログラム記録媒体であって、
 前記情報処理装置に、さらに、
 前記データパーティションを処理するプログラム関数に、前記データパーティションと共に前記メタデータを渡すタスク実行手段、
を実現させるためのプログラム記録媒体。
(付記9.6)
 付記9.5に記載のプログラム記録媒体であって、
 前記情報処理装置に、さらに、
 前記分割データ作成手段が作成した前記メタデータを格納すると共に、前記タスク実行手段が前記データパーティションを処理する前記プログラム関数を実行させる場合に、当該タスク実行手段に、格納している前記メタデータを提供するメタデータ格納手段、
を実現させるためのプログラム記録媒体。
(付記10)
 情報処理装置が、
 分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取り、
 前記データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、前記データパーティション毎に対応し、当該データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する、
分散処理方法。
(付記10.1)
 付記10に記載の分散処理方法であって、
 受け取った情報と、前記データパーティションを作成する元となる前記データを読み込むことで得られた情報と、に基づいて前記メタデータを作成する、
分散処理方法。
(付記10.2)
 付記10.1に記載の分散処理方法であって、
 前記データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータを含めて前記メタデータを作成する、
分散処理方法。
(付記10.3)
 付記10.1又は10.2に記載の分散処理方法であって、
 前記データパーティションのデータ構造に基づいて前記メタデータを生成する、
分散処理方法。
(付記10.4)
 付記10乃至10.3のいずれかに記載の分散処理方法であって、
 前記パラメータは、前記データのデータ構造に基づく情報を含む、
分散処理方法。
(付記10.5)
 付記10乃至10.4のいずれかに記載の分散処理方法であって、
 前記情報処理装置が、さらに、
 前記データパーティションを処理するプログラム関数に、前記データパーティションと共に前記メタデータを渡す、
分散処理方法。
(付記10.6)
 付記10.5に記載の分散処理方法であって、
 前記情報処理装置が、さらに、
 作成した前記メタデータを格納すると共に、タスク実行手段が前記データパーティションを処理する前記プログラム関数を実行させる場合に、当該タスク実行手段に、格納している前記メタデータを提供する、
分散処理方法。
 なお、上述したプログラム記録媒体は、コンピュータが読み取り可能な記録媒体である。例えば、プログラム記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
 以上、上記実施形態等を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることができる。
 この出願は、2016年10月19日に出願された日本出願特願2016-204770を基礎とする優先権を主張し、その開示のすべてをここに取り込む。
 本発明によれば、様々なデータ形式のデータをアクセラレータを用いて分散処理する用途に使用できる。応用分野として画像処理やデータ解析向けの計算機がある。
1 ホスト
11 ユーザプログラム
12 API部
13 データ格納部
14 アクセラレータ制御部
141 プログラム解析部
142 データスケジューラ部
143 タスクスケジューラ部
144 分割データ作成部
145 タスク実行部
146 メタデータ格納部
21,22,23 アクセラレータ
21a,22a,23a プロセッサ
21b,22b,23b メモリ
200 分散処理システム
201 インターフェース部
202 分割データ作成部
310 マスタコンピュータ
321,322,323 スレーブコンピュータ
 

Claims (28)

  1.  分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取るインターフェース手段と、
     前記データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、前記データパーティション毎に対応し、当該データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する分割データ作成手段と、
    を備えた分散処理システム。
  2.  請求項1に記載の分散処理システムであって、
     前記分割データ作成手段は、前記インターフェース手段にて受け取った情報と、前記データパーティションを作成する元となる前記データを読み込むことで得られた情報と、に基づいて前記メタデータを作成する、
    分散処理システム。
  3.  請求項2に記載の分散処理システムであって、
     前記分割データ作成手段は、前記データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータを含めて前記メタデータを作成する、
    分散処理システム。
  4.  請求項2又は3に記載の分散処理システムであって、
     前記分割データ作成手段は、前記データパーティションのデータ構造に基づいて前記メタデータを生成する、
    分散処理システム。
  5.  請求項1乃至4のいずれかに記載の分散処理システムであって、
     前記パラメータは、前記データのデータ構造に基づく情報を含む、
    分散処理システム。
  6.  請求項1乃至5のいずれかに記載の分散処理システムであって、
     前記データの前記データ形式は、画像であり、
     前記パラメータは、前記データの画像サイズ、作成する前記データパーティションの画像サイズ、及び、作成する前記データパーティションの冗長部分サイズ、を含む、
    分散処理システム。
  7.  請求項6に記載の分散処理システムであって、
     前記メタデータは、前記データの画像サイズ、作成する前記データパーティションの画像サイズ、及び、前記データの先頭から作成する前記データパーティションのオフセット、を含む、
    分散処理システム。
  8.  請求項1乃至5のいずれかに記載の分散処理システムであって、
     前記データの前記データ形式は、密行列であり、
     前記パラメータは、前記データの行列サイズ、及び、作成する前記データパーティションの行列サイズ、を含む、
    分散処理システム。
  9.  請求項8に記載の分散処理システムであって、
     前記メタデータは、作成する前記データパーティションの行列サイズ、を含む、
    分散処理システム。
  10. 請求項1乃至5のいずれかに記載の分散処理システムであって、
     前記データの前記データ形式は、疎行列であり、
     前記パラメータは、前記データの行列サイズ、作成する前記データパーティションの行列サイズ、及び、前記データ内の非ゼロ要素数、を含む、
    分散処理システム。
  11.  請求項10に記載の分散処理システムであって、
     前記メタデータは、作成する前記データパーティションの行列サイズ、及び、作成する前記データパーティション内の非ゼロ要素数、を含む、
    分散処理システム。
  12.  請求項1乃至11のいずれかに記載の分散処理システムであって、
     さらに、前記データパーティションを処理するプログラム関数に、前記データパーティションと共に前記メタデータを渡すタスク実行手段を備えた、
    分散処理システム。
  13.  請求項12に記載の分散処理システムであって、
     前記データパーティションを処理する前記プログラム関数は、外部から受け取ったユーザ定義関数である、
    分散処理システム。
  14.  請求項12又は13に記載の分散処理システムであって、
     前記分割データ作成手段が作成した前記メタデータを格納すると共に、前記タスク実行手段が前記データパーティションを処理する前記プログラム関数を実行させる場合に、当該タスク実行手段に、格納している前記メタデータを提供するメタデータ格納手段をさらに備えた、
    分散処理システム。
  15.  情報処理装置に、
     分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取るインターフェース手段と、
     前記データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、前記データパーティション毎に対応し、当該データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する分割データ作成手段と、
    を実現させるためのプログラムを記録するプログラム記録媒体。
  16.  請求項15に記載のプログラム記録媒体であって、
     前記分割データ作成手段は、前記インターフェース手段にて受け取った情報と、前記データパーティションを作成する元となる前記データを読み込むことで得られた情報と、に基づいて前記メタデータを作成する、
    プログラム記録媒体。
  17.  請求項16に記載のプログラム記録媒体であって、
     前記分割データ作成手段は、前記データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータを含めて前記メタデータを作成する、
    プログラム記録媒体。
  18.  請求項16又は請求項17に記載のプログラム記録媒体であって、
     前記分割データ作成手段は、前記データパーティションのデータ構造に基づいて前記メタデータを生成する、
    プログラム記録媒体。
  19.  請求項15乃至請求項18のいずれかに記載のプログラム記録媒体であって、
     前記パラメータは、前記データのデータ構造に基づく情報を含む、
    プログラム記録媒体。
  20.  請求項15乃至請求項19のいずれかに記載のプログラム記録媒体であって、
     前記情報処理装置に、さらに、
     前記データパーティションを処理するプログラム関数に、前記データパーティションと共に前記メタデータを渡すタスク実行手段、
    を実現させるためのプログラム記録媒体。
  21.  請求項20に記載のプログラム記録媒体であって、
     前記情報処理装置に、さらに、
     前記分割データ作成手段が作成した前記メタデータを格納すると共に、前記タスク実行手段が前記データパーティションを処理する前記プログラム関数を実行させる場合に、当該タスク実行手段に、格納している前記メタデータを提供するメタデータ格納手段、
    を実現させるためのプログラム記録媒体。
  22.  情報処理装置が、
     分散処理を行うデータのデータ形式と、分散処理を行うデータのデータ形式に依存するパラメータと、を受け取り、
     前記データから当該データを分散処理するときの処理単位であるデータパーティションを作成すると共に、前記データパーティション毎に対応し、当該データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータに基づく情報を含むメタデータを作成する、
    分散処理方法。
  23.  請求項22に記載の分散処理方法であって、
     受け取った情報と、前記データパーティションを作成する元となる前記データを読み込むことで得られた情報と、に基づいて前記メタデータを作成する、
    分散処理方法。
  24.  請求項23に記載の分散処理方法であって、
     前記データパーティションを作成した元となる前記データのデータ形式に依存する前記パラメータを含めて前記メタデータを作成する、
    分散処理方法。
  25.  請求項23又は請求項24に記載の分散処理方法であって、
     前記データパーティションのデータ構造に基づいて前記メタデータを生成する、
    分散処理方法。
  26.  請求項22乃至請求項25のいずれかに記載の分散処理方法であって、
     前記パラメータは、前記データのデータ構造に基づく情報を含む、
    分散処理方法。
  27.  請求項22乃至請求項26のいずれかに記載の分散処理方法であって、
     前記情報処理装置が、さらに、
     前記データパーティションを処理するプログラム関数に、前記データパーティションと共に前記メタデータを渡す、
    分散処理方法。
  28.  請求項27に記載の分散処理方法であって、
     前記情報処理装置が、さらに、
     作成した前記メタデータを格納すると共に、タスク実行手段が前記データパーティションを処理する前記プログラム関数を実行させる場合に、当該タスク実行手段に、格納している前記メタデータを提供する、
    分散処理方法。
PCT/JP2017/037460 2016-10-19 2017-10-17 分散処理システム WO2018074444A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US16/339,792 US20200183756A1 (en) 2016-10-19 2017-10-17 Distributed processing system
JP2018546342A JP7014173B2 (ja) 2016-10-19 2017-10-17 分散処理システム

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2016-204770 2016-10-19
JP2016204770 2016-10-19

Publications (1)

Publication Number Publication Date
WO2018074444A1 true WO2018074444A1 (ja) 2018-04-26

Family

ID=62018482

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2017/037460 WO2018074444A1 (ja) 2016-10-19 2017-10-17 分散処理システム

Country Status (3)

Country Link
US (1) US20200183756A1 (ja)
JP (1) JP7014173B2 (ja)
WO (1) WO2018074444A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022032307A (ja) * 2020-08-11 2022-02-25 Kddi株式会社 情報処理装置、情報処理方法及びコンピュータプログラム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013025392A (ja) * 2011-07-15 2013-02-04 Nec Corp 情報処理装置、データ配置方法及びプログラム
JP2014153935A (ja) * 2013-02-08 2014-08-25 Nippon Telegr & Teleph Corp <Ntt> 並列分散処理制御装置、並列分散処理制御システム、並列分散処理制御方法および並列分散処理制御プログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013025392A (ja) * 2011-07-15 2013-02-04 Nec Corp 情報処理装置、データ配置方法及びプログラム
JP2014153935A (ja) * 2013-02-08 2014-08-25 Nippon Telegr & Teleph Corp <Ntt> 並列分散処理制御装置、並列分散処理制御システム、並列分散処理制御方法および並列分散処理制御プログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022032307A (ja) * 2020-08-11 2022-02-25 Kddi株式会社 情報処理装置、情報処理方法及びコンピュータプログラム
JP7326234B2 (ja) 2020-08-11 2023-08-15 Kddi株式会社 情報処理装置、情報処理方法及びコンピュータプログラム

Also Published As

Publication number Publication date
JPWO2018074444A1 (ja) 2019-08-29
US20200183756A1 (en) 2020-06-11
JP7014173B2 (ja) 2022-02-01

Similar Documents

Publication Publication Date Title
US11907691B2 (en) Method and system of command buffer between a CPU and GPU
JP4715654B2 (ja) 画像データ生成装置および画像形成装置
CN111488205B (zh) 面向异构硬件架构的调度方法和调度系统
JP6918919B2 (ja) 自動的にコンパイルされたコンピュートシェーダを用いるプリミティブカリング
JP5744574B2 (ja) 画像処理装置、画像処理方法及びプログラム
JP2012168951A (ja) タイルベースのグラフィックスシステム及びこのようなシステムの動作方法
JP2014059862A (ja) データフローのリソース割り当て装置および方法
EP4318221A1 (en) Driving control instruction generation method, heterogeneous computing method, related apparatuses and system
KR101869939B1 (ko) 멀티-쓰레딩을 사용하는 그래픽 처리를 위한 방법 및 장치
US9542127B2 (en) Image processing method and image processing apparatus
WO2018074444A1 (ja) 分散処理システム
US10496585B2 (en) Accelerator control apparatus, accelerator control method, and storage medium
US20130342549A1 (en) Apparatus and method for processing rendering data
US10580106B2 (en) Graphics processing method utilizing predefined render chunks
CN104572596A (zh) 光栅化处理方法、处理装置和处理系统
JP4964219B2 (ja) 画像処理装置、方法及びプログラム
JP5251995B2 (ja) 画像データ生成装置、画像形成装置およびプログラム
US11340949B2 (en) Method and node for managing a request for hardware acceleration by means of an accelerator device
KR101131636B1 (ko) 커맨드 실행 순서 결정 방법 및 이를 수행하기 위한 컴퓨팅 디바이스와 컴퓨터 판독가능 기록 매체
JP5968497B2 (ja) 制御方法、システム及びプログラム
US10387757B2 (en) Multicore printer definition language processing
JP5212566B2 (ja) 画像データ生成装置、画像形成装置およびプログラム
JP5252136B2 (ja) 画像データ生成装置
CN115048192A (zh) 工作流调度方法和系统及工作流引擎
JP5252116B2 (ja) 画像データ生成装置

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2018546342

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 17863028

Country of ref document: EP

Kind code of ref document: A1