Information processing device, information processing method, and program

JPWO2024181010A5Pending Publication Date: 2025-07-25
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025503673
Authority / Receiving Office
JP · JP
Patent Type
Applications
Priority Date
2024-02-01
Filing Date
2024-02-01
Publication Date
2025-07-25

AI Technical Summary

Technical Problem

Conventional distributed processing systems face challenges in efficiently and optimally distributing jobs across multiple servers, leading to inefficiencies in resource utilization and execution times.

Method used

An information processing device and method that acquire jobs from client devices, utilize multiple indicators for optimal job assignment and transfer, allowing flexible allocation across various job execution servers, including on-premises, cloud, and third-party servers, to optimize job distribution and execution.

Benefits of technology

This approach enables efficient and optimal job distribution, reducing waiting times and resource vacancies, while allowing for flexible and scalable use of computational resources, improving overall processing efficiency and adaptability.

✦ Generated by Eureka AI based on patent content.
Patent Text Reader

Abstract

The objective of the present invention is to distribute jobs efficiently and optimally between a plurality of servers when distributed processing is being performed by the plurality of servers. A job acquiring unit 51 of a distributed processing master server 2 acquires one or more jobs from each of one or more executor terminals 4 operated by a calculation executor. A job allocating unit 52 carries out, as job allocation, processing for allocating the one or more jobs to an allocation destination, where at least some of a plurality of job execution servers 3 serve as the allocation destinations, on the basis of M (M is an integer value less than or equal to N) types of indicators from among N (N is an integer value greater than or equal to 2) types of predetermined indicators. A job transferring unit 53 distributes and transfers the one or more jobs to the allocation destinations in accordance with the job allocation.
Need to check novelty before this filing date? Find Prior Art

Description

Information processing device, information processing method, and program

[0001] The present invention relates to an information processing device, an information processing method, and a program.

[0002] Conventionally, distributed processing has been performed in which a large number of jobs are distributed among a plurality of servers and executed (for example, Patent Document 1).

[0003] Japanese Patent Application Laid-Open No. 2020-095340

[0004] However, with conventional techniques including the technique described in Patent Document 1, when distributed processing is performed by a plurality of servers, it is difficult to distribute jobs to the plurality of servers efficiently and optimally.

[0005] The present invention has been made in view of the above circumstances, and has as its object to distribute jobs efficiently and optimally to a plurality of servers when distributed processing is performed by the plurality of servers.

[0006] In order to achieve the above object, an information processing device according to one embodiment of the present invention comprises: a job acquisition means for acquiring one or more jobs from each of one or more client devices on a client side that makes a computation request for a specified job; a job allocation means for performing a process of assigning the one or more jobs to at least some of a plurality of computation execution devices as assignment destinations based on M types of indicators (M is an integer value equal to or less than N) out of N types of predetermined indicators (N is an integer value equal to or greater than 2), and a job transfer means for distributing and transferring the one or more jobs to the assignment destinations in accordance with the job allocation.

[0007] An information processing method and a program according to one aspect of the present invention are respectively a method and a program corresponding to the information processing system according to one aspect of the present invention described above.

[0008] According to the present invention, when distributed processing is performed by a plurality of servers, jobs can be distributed to the plurality of servers efficiently and optimally.

[0009] 1 is a diagram showing an example of the configuration of a distributed processing system according to an embodiment of the information processing system of the present invention. FIG. 2 is a block diagram showing an example of the hardware configuration of a distributed processing master server in the distributed processing system of FIG. 1. FIG. 3 is a functional block diagram showing an example of the functional configuration of the distributed processing master server of FIG. 2. FIG. 4 is a diagram showing a specific example of job allocation by the job allocation unit of FIG. 3, which is an example different from that of FIG. 4. FIG. 5 is a specific example of job allocation by the job allocation unit of FIG. 3, which is an example different from that of FIG. 4 and FIG. 5. FIG. 6 is a diagram for explaining features of the distributed processing system of FIG. 1, which is a diagram for explaining a conventional distributed processing system. FIG. 7 is a diagram for explaining features of the distributed processing system of FIG. 1 compared to the conventional distributed processing system of FIG. 8.

[0010] Hereinafter, an embodiment of the present invention will be described with reference to the drawings.

[0011] FIG. 1 is a diagram showing an example of the configuration of a distributed processing system according to an embodiment of the information processing system of the present invention.

[0012] 1 is configured by interconnecting via a predetermined network a distributed processing infrastructure web server 1, management units m1 to mn managed by n (n is an integer greater than or equal to 1) administrators mu1 to mun, and executor terminals 4-1 to 4-q managed by q (q is an integer greater than or equal to 1) calculation executors eu1 to euq. The management unit mk (k is an integer greater than or equal to 1) is configured to include a distributed processing master server 2-k and p (p is an integer greater than or equal to 1) job execution servers 3-k1 to 3-kp.

[0013] In the following, when there is no need to distinguish between multiple machines or multiple people, the terms will be referred to as follows: That is, administrators mu1 to mun will be collectively referred to as "administrator mu." Management units m1 to mn will be collectively referred to as "management unit m." Distributed processing master servers 2-1 to 2-n will be collectively referred to as "distributed processing master servers 2." Job execution servers 3-11 to 3-1p...3-n1 to 3-np will be collectively referred to as "job execution servers 3." Calculation executors eu1 to euq will be collectively referred to as "calculation executors eu." Executor terminals 4-1 to 4-q will be collectively referred to as "executor terminals 4."

[0014] 1 , when a job provided by a computation executor eu is submitted, the distributed processing system of FIG. 1 can distribute the job efficiently and optimally to multiple computational resources and execute the computation fairly. Here, a job refers to, for example, a computation process or a series of processes in rendering, machine learning including deep learning, or scientific computation such as fluid or structural simulation.

[0015] Furthermore, the computing resources to which each job distributed by the distributed processing system of FIG. 1 is assigned are multiple job execution servers 3 installed in physically separate spaces. Specifically, in the distributed processing system of FIG. 1, one or more job execution servers 3 are installed for each of multiple management units m managed by multiple administrators mu. For example, p job execution servers 3-11 to 3-1p are installed in management unit m1 managed by administrator mu1. The multiple job execution servers 3 can be installed anywhere as long as IP communication is established, such as by installing them on a LAN and connecting them via a VPN, or by publishing them on a DMZ. In other words, the job execution servers 3 can be installed flexibly, whether on-premise or in the cloud. Furthermore, the job execution servers 3 may be machines provided by a third party. In addition, the job execution servers 3 may be a combination of these machines. For example, the execution server 3 may be configured solely on-premise and managed by the administrator mu, or may be configured solely in a cloud environment, or may be configured solely with machines provided by a third party. Furthermore, the job execution server 3 may be configured with both on-premise and cloud machines, or may be configured with both on-premise and third-party machines, or may be configured with the cloud and third-party machines. The job execution server 3 may also be configured with both on-premise and cloud machines, and with machines provided by a third party. The management costs of on-premise and cloud environments differ, and the optimal configuration varies depending on the administrator mu's intended use. The appropriateness of using a third-party server also depends on the administrator mu's security policy, budget, and other factors. The present invention makes it possible to combine such complex requirements and environments into a job execution server 3 without burdening the user. This is achieved using a distributed processing infrastructure web server, as described below.The present invention allows use regardless of the installation state, such as on-premise or cloud, and therefore simplifies or eliminates the process of selecting a server for execution of calculations, which has been conventionally performed by the calculation executor eu. The job execution server 3 is connected to storage (not shown) directly (via InfiniBand, PCIE, or external) or via VPN, and temporarily stores data.

[0016] In the distributed processing system of FIG. 1 , a distributed processing master server 2 is provided for each of multiple management units m managed by multiple administrators mu. The distributed processing master server 2 in a given management unit m monitors the status of multiple job execution servers 3 within the same management unit m. In the example of FIG. 1 , one distributed processing master server 2 is provided for each management unit m, but this is not a limitation. That is, there may be one or more distributed processing master servers 2 within a network. Having one or a small number of distributed processing master servers 2 per management unit m reduces capital investment and simplifies monitoring of all aspects of computation executors, jobs, etc. Having multiple or many distributed processing master servers 2 per management unit m is effective for maintaining functionality in the event of a shutdown or failure of some of the distributed processing master servers 2, as well as for maintaining functionality in the event of increased access loads from multiple computation executors eu. When multiple distributed processing master servers 2 exist, priority is determined among the distributed processing master servers 2 based on a preset algorithm, and a distributed processing master server 2 with a lower priority can follow instructions from a distributed processing master server 2 with a higher priority. The priority at this time may be fixed from the beginning of installation, or may change over time. This allows jobs to be assigned to appropriate job execution servers when, for example, the suitability of the job execution servers managed by the distributed processing master server 2 is predicted in advance from the perspective of N types of indices described below, or when suitability can be determined during the process of job submission, execution, completion, etc.

[0017] In the distributed processing system of Fig. 1, the computation executor eu can operate the executor terminal 4 to access the distributed processing infrastructure web server 1 and request the execution of a specified job. In other words, when the executor terminal 4 requests the execution of a job, it is sufficient to access the distributed processing infrastructure web server 1 via IP communication such as the Internet. This eliminates the need for the computation executor eu to issue a distribution instruction himself, and the execution of a job involving distributed processing can be started in the distributed processing system of Fig. 1.

[0018] The distributed processing infrastructure web server 1 cooperates with the distributed processing master server 2 via IP communication and provides the distributed processing master server 2 with jobs sent from the user terminal 4. In other words, the distributed processing master server 2 cooperates with the distributed processing infrastructure web server 1 to acquire jobs sent from the user terminal 4, assigns two or more job execution servers 3 to the job execution servers 3, and distributes and transfers the jobs to the two or more assignment servers. The distributed processing master server 2 within a given management unit m can naturally assign job execution servers 3 within the same management unit m as assignment destinations, as in the past (see FIG. 8, described below). Furthermore, if necessary, it can also assign job execution servers 3 belonging to another management unit m with a different administrator mu as assignment destinations (see FIG. 9, described below). Each of the multiple job execution servers 3 assigned by the distributed processing master server 2 executes the job that has been distributed and transferred from the distributed processing master server 2.

[0019] FIG. 2 is a block diagram showing an example of the hardware configuration of the distributed processing master server in the distributed processing system of FIG.

[0020] The distributed processing master server 2 includes a CPU (Central Processing Unit) 11, a ROM (Read Only Memory) 12, a RAM (Random Access Memory) 13, a bus 14, an input / output interface 15, an input unit 16, an output unit 17, a memory unit 18, a communication unit 19, and a drive 20.

[0021] The CPU 11 executes various processes according to programs recorded in the ROM 12 or programs loaded from the storage unit 18 into the RAM 13. The RAM 13 also stores data and the like necessary for the CPU 11 to execute various processes.

[0022] The CPU 11, ROM 12, and RAM 13 are interconnected via a bus 14. An input / output interface 15 is also connected to this bus 14. An input unit 16, an output unit 17, a storage unit 18, a communication unit 19, and a drive 20 are connected to the input / output interface 15.

[0023] The input unit 16 is made up of various hardware buttons etc. and inputs various information in response to instructions and operations by the operator. The output unit 17 is made up of a display such as a liquid crystal display and displays various images.

[0024] The storage unit 18 is configured with a dynamic random access memory (DRAM) or the like and stores various data. The communication unit 19 controls communication with other devices (e.g., the distributed processing infrastructure web server 1 and the job execution server 3) via a network N including the Internet.

[0025] The drive 20 is provided as needed. Removable media 31, such as a magnetic disk, optical disk, magneto-optical disk, or semiconductor memory, is appropriately attached to the drive 20. Programs read from the removable media 31 by the drive 20 are installed in the storage unit 18 as needed. The removable media 31 can also store various data stored in the storage unit 18 in the same way as the storage unit 18.

[0026] Although not shown, the distributed processing infrastructure web server 1 and the executor terminal 4 of the distributed processing system in Fig. 2 also have the hardware configuration shown in Fig. 2. The job execution server 3 basically has the same hardware configuration as that shown in Fig. 2, but may have one or more GPUs (Graphics Processing Units) in addition to one or more CPUs 11. The job execution server 3 may also have any other computing unit, such as an NPU (Neural Network Processing Unit), a TPU (Tensor Processing Unit), or a QPU (Quantum Processing Unit).

[0027] FIG. 3 is a functional block diagram showing an example of the functional configuration of the distributed processing master server of FIG.

[0028] As shown in FIG. 3, a job acquisition unit 51, a job allocation unit 52, a job transfer unit 53, and a job execution control unit 54 function in the CPU 11 of the distributed processing master server 2.

[0029] The job acquisition unit 51 cooperates with the distributed processing infrastructure web server 1 to acquire one or more jobs transmitted from one or more user terminals 4 and store the one or more jobs in the storage unit 18 or the like. The job allocation unit 52 optimizes the one or more stored jobs by allocating the jobs to the one or more job execution servers 3 using various indicators, such as information about the destination job execution servers 3, as constraints. Here, "job allocation" refers to selecting a destination job from among multiple job execution servers 3. In accordance with the job allocation, the job transfer unit 53 transfers one or more jobs to one job execution server 3 designated as the destination, or distributes and transfers the jobs to multiple job execution servers 3 designated as the destination job servers. The job execution control unit 54 controls the execution of one or more jobs by one or more job execution servers 3 designated as the destination job servers.

[0030] For example, the job allocation unit 52 may perform job allocation such that jobs are immediately submitted (transferred) in the order in which they are received, taking into account the indicators described below. This allows job allocation to be performed based on the order in which the jobs were received, an indicator that is easy for the computational operator to understand. Furthermore, for example, jobs that are completed in a short time are submitted sporadically and there is a large proportion of idle time (time during which a job execution server is available to accept jobs but no jobs are assigned). Furthermore, the job allocation unit 52 may perform job allocation such that jobs are accepted within a set time period and multiple jobs accepted at any given time are optimized. This allows job submission based on arbitrary weights for multiple indicators and arbitrary priority criteria, which is not possible when submitting jobs in the order in which they are accepted. In addition, the job allocation unit 52 may set interrupt constraints and immediately execute jobs that satisfy the constraints, even if a scheduled job is already in progress. This allows a newly generated job that needs to be executed with priority to be executed as soon as possible, even if a job is already being executed and the job execution server 3 is occupied.

[0031] Further details of job allocation by the job allocation unit 52 will be described below. The job allocation unit 52 can optimize jobs by allocating jobs based on M types of indices (M is an integer equal to or less than N) out of N types of indices (N is an integer equal to or greater than 2) that are predetermined.

[0032] Here, the N types of indices are not particularly limited, and the following indices can be used. For example, the specifications (CPU, GPU, memory, etc.) of the job execution servers 3 that are candidates for allocation can be used as indices. This allows, for example, appropriate allocation of job execution servers with computational performance suited to the scale and computation content of the job, based on the data size and execution period of the job. For example, the communication speed of the network to which the job execution servers 3 are connected can be used as an indices. This allows, for example, appropriate allocation of job execution servers with communication performance suited to the data size and communication frequency of the job. For example, information related to the device settings of the job execution servers 3 (security information, OS, implemented compiler, etc.) can be used as indices. This allows, for example, appropriate allocation of job execution servers with device settings suited to the application content and version of the job. For example, information about the power supply to the job execution servers 3 (stability of the power supply, whether or not the power is renewable energy, etc.) can be used as indices. This allows, for example, jobs to be executed while reducing power costs. Furthermore, for example, situations where the power supply is interrupted due to weather or other factors can be avoided, allowing jobs to be executed in an environmentally friendly manner. For example, geographical information about the location of the job execution server 3 (such as the data handling policies of the local government or management organization, or the climate and air conditioning environment that affect the server operating temperature) can be used as an index. This allows, for example, appropriate allocation of job execution servers that operate stably while taking into account cooling conditions. Furthermore, it is also possible to appropriately allocate job execution servers that comply with laws, regulations, or organizational rules regarding data handling and export control. For example, job execution efficiency and execution speed can be used as an index. This allows, for example, the history of similar jobs to be used as an index to appropriately estimate the execution time and completion time of similar jobs, and then appropriate allocation of job execution servers can be made. For example, the operational performance of the job execution server 3 can be used as an index. This allows, for example, appropriate allocation of job execution servers, avoiding servers that are prone to failure.For example, the type of owner (e.g., administrator mu) of the job execution server 3 can be used as an index. This makes it possible to match, for example, a calculation executor eu with an administrator mu, or a job with an administrator mu, when there are many administrators mu. This makes it possible to use a job execution server according to the desired industry or purpose of the job, or to use a job execution server based on an individual contract. For example, the type of job owner (e.g., calculation executor eu) can be used as an index. This makes it possible to match a calculation executor eu with an administrator mu, or a calculation executor eu with a job execution server, and makes it possible to use a job execution server according to the desired industry or purpose of the job, or to use a job execution server based on an individual contract. For example, the date and time of the installation location of the job execution server 3 can be used as an index. This makes it possible to determine the start or end time of a job and appropriately allocate a job execution server. Specifically, for example, the computation executor eu may be presented with a date and time input field (using a calendar or numeric input format), and the job allocation unit 52 may allocate jobs using the date and time specified by the computation executor eu (e.g., the start or end date and time of a job) as an index. For example, when submitting a job, information about previously started jobs and already scheduled jobs (such as date and time, execution time, execution efficiency, execution speed, and other indicators described above) may be used as an index. As a result, for example, when the time required for each job is estimated in advance, the start or end date and time of a currently running job may be referenced. If it is predicted that a job will take longer than originally estimated, each subsequently scheduled job may be automatically postponed or appropriately assigned to a different job execution server than the original. Such changes to job schedules may be made when a new job is submitted (assigned) or periodically, such as every few minutes. By updating the latest job schedule, computation executors can more accurately grasp the congestion and available time of job execution servers, contributing to the formulation of efficient job execution plans (experimental plans).

[0033] The M types of indices used for optimization (job allocation) may be a specific one of the N types of indices described above, or multiple types may be used. When multiple types of indices are used, the job allocation unit 52 can combine multiple types with arbitrary weighting to optimize jobs (job allocation). The weighting may be determined automatically using an arbitrary algorithm. Also, some or all of the M types may be determined by arbitrary input. Automatic determination can reduce the burden on the person performing the calculation and can perform job allocation based on more accurate numerical indices. On the other hand, when the indices are determined by arbitrary input, job allocation can be performed by more accurately reflecting the intentions of the person performing the calculation.

[0034] 4A and 4B show a specific example of job allocation by the job allocation unit of FIG. 3. FIG. 4A shows an example of a job allocation table, with the vertical axis representing time and the horizontal axis representing the "resource amount" of the job execution server 3a as a server specification. In the table of FIG. 4A, each square represents one unit of resource amount. One unit of resource amount can be set arbitrarily, such as the number of GPU or CPU units. That is, in the example of FIG. 4A, the job execution server 3a, whose server specification states that the resource amount is 2, and the job execution server 3b, whose server specification states that the resource amount is 4, are considered to be candidates for allocation.

[0035] The example in FIG. 4 illustrates an example in which job allocation is performed using only the index (M = one type of index) of the server specifications (resource amount) of the allocation destination. Specifically, FIG. 4B illustrates a table immediately after job allocation when jobs J1 to J4 with a resource amount of 2 and job J5 with a resource amount of 4 are acquired. Because job allocation is performed using only the index (resource amount) of the server specifications (resource amount), jobs J1 to J4 with a resource amount of 2 are assigned to job execution server 3a, whose server specifications specify a resource amount of 2, while job J5 with a resource amount of 4 is assigned to job execution server 3b, whose server specifications specify a resource amount of 4. In this case, after a certain period of time has elapsed, jobs J1 and J2 are executed by job execution server 3a, while job J5 is executed by job execution server 3b. As a result, as shown in FIG. 4C, there is a resource vacancy on job execution server 3b, even though jobs J3 and J4 remain on job execution server 3a.

[0036] As shown in Fig. 4, using only one index (M = 1) for job allocation can make optimization difficult. In other words, to achieve optimization, it is preferable to combine multiple indexes (M is 2 or more) for job allocation, as shown in Fig. 5 and Fig. 6.

[0037] Fig. 5 shows a specific example of job allocation by the job allocation unit of Fig. 3, and is an example different from Fig. 4. The example of Fig. 5 also shows a table immediately after job allocation when jobs J1 to J4 with a resource amount of 2 and job J5 with a resource amount of 4 are acquired. Here, jobs J1 to J4 are assumed to be capable of parallel processing, like jobs related to rendering, which will be described later, i.e., part of a job and the remaining part can be executed in parallel simultaneously using different computing resources.

[0038] 5A shows an example of job allocation using M=2 indices: the destination server specifications (resource amount) and job execution efficiency. In the example of FIG. 5A, jobs J1, J2, and J4, each with a resource amount of 2, are assigned to job execution server 3a, whose server specifications also specify a resource amount of 2. On the other hand, job J5, also with a resource amount of 4, is assigned to job execution server 3b, whose server specifications specify a resource amount of 4, and job J3, also with a resource amount of 2, is assigned to be executed in parallel. This achieves optimization that prevents resource shortages like those shown in FIG. 4. In other words, job allocation can be implemented so that all jobs J1 through J5 can be efficiently calculated immediately after submission.

[0039] FIG. 5B shows an example of job allocation using M=3 indicators: the destination server specifications (resource amount), and job execution efficiency and execution speed. In this embodiment, it is assumed that temporary resource expansion, i.e., a temporary increase in the number of destination job execution servers 3, is possible. Note that in this embodiment, as shown in FIG. 9 (described later), job execution servers 3 belonging to a management unit m with a different administrator mu can also be used for temporary expansion. In this case, an indicator indicating whether job execution servers 3 belonging to a management unit m with a different administrator mu are available as destinations is also used appropriately during job allocation. In the example of FIG. 5B, jobs J1 and J2, each with a resource amount of 2, are assigned to job execution server 3a, whose server specifications specify a resource amount of 2. Job J5, with a resource amount of 4, is assigned to job execution server 3b, whose server specifications specify a resource amount of 4. Furthermore, jobs J3 and J4, each with a resource amount of 2, are assigned to temporarily expanded job execution server 3c, whose server specifications specify a resource amount of 3, so that they are executed in parallel. This achieves optimization without the resource shortages seen in FIG. 4. That is, it is possible to implement job allocation that allows efficient calculation of all jobs J1 to J5 immediately after submission. In this way, it is possible to temporarily expand resources and implement job allocation that allows all jobs J1 to J5 to be completed early.

[0040] Here, jobs J1 to J4 can be processed in parallel, like jobs related to rendering, which will be described later, so it is also possible to allocate jobs by allocating some of the jobs and the remaining part to different job execution servers 3a, as shown in Fig. 6. Fig. 6 shows a specific example of job allocation by the job allocation unit in Fig. 3, and is an example different from Figs. 4 and 5. The example in Fig. 6 also shows a table immediately after job allocation when jobs J1 to J4 with a resource amount of 2 and job J5 with a resource amount of 4 are acquired.

[0041] 6 shows an example of job allocation using M=2 indices: the destination server specifications (resource amount) and job execution speed. In the example of FIG. 6, jobs J1 and J2, each with a resource amount of 2, are assigned to job execution server 3a, whose server specifications specify a resource amount of 2. Job J5-1, a part of job J5 with a resource amount of 4, is assigned to job execution server 3b, whose server specifications specify a resource amount of 4, and job J3, whose resource amount is 2, is assigned to be executed in parallel. Furthermore, job J5-2, another part of job J5 with a resource amount of 4, is assigned to temporarily expanded job execution server 3c, whose server specifications specify a resource amount of 4, and job J4, whose resource amount is 2, is assigned to be executed in parallel.

[0042] Further, a specific example of job allocation as shown in FIG. 5 and FIG. 6, that is, job allocation using multiple types of indexes (M is 2 or more), will be described below.

[0043] As an example of a job for which job execution efficiency can be used as part of an index, a rendering-related job will be described. Because rendering-related jobs are collections of frames regardless of data volume, they have high parallel processing efficiency. In other words, jobs can be executed by distributing each frame to multiple job execution servers 3. Distributing such frames (see, for example, job J3 in FIG. 5A ) can shorten the overall calculation time. In addition, when other jobs are executed simultaneously, assigning them to different job execution servers 3 (see, for example, FIG. 6 ) may reduce waiting time and potentially shorten the overall time from job submission to processing completion. The job allocation unit 52 may determine the parallelization efficiency of such jobs (in this example, the efficiency achieved by distributing and processing frames) from prior input by the calculation executor eu, or may estimate it without input from the calculation executor eu using statistical processing, etc. Alternatively, the job allocation unit 52 may execute only the first few seconds of a job, obtain the time required for that processing, and then estimate the parallelization efficiency and the overall time required from that time. This process allows automatic execution time prediction even in situations where the calculation executor eu cannot predict the overall execution time. This is an effective method not only for rendering but also for other types of jobs. In addition, for rendering-related jobs, the data may be specified by the renderer in a combination that maximizes the performance of the job execution server 3. Therefore, the job allocation unit 52 may allocate jobs using the combination of the renderer and the hardware as an index.

[0044] Next, we will explain machine learning jobs as another example in which job execution efficiency can be used as part of an index. Jobs related to machine learning model generation may require distribution across multiple job execution servers 3, depending on the model data size and the data size required for learning, from the perspective of data transfer speed over the network, the storage capacity and auxiliary storage capacity of the job execution servers 3, and other factors. However, some machine learning models require communication between distributed processes. Distributing such jobs across physically separated job execution servers 3 reduces parallel processing efficiency, so it is better not to distribute them in order to shorten calculation time. On the other hand, for jobs with high parallel processing efficiency, distributing them increases the number of job execution servers 3 that can be used simultaneously, thereby shortening overall calculation time. In addition, when other jobs are executed simultaneously, assigning them to different job execution servers 3 may reduce waiting time and potentially shorten the overall time from job submission to processing completion. The job allocation unit 52 may determine the parallelization efficiency of a job (in this example, the efficiency of parallel processing due to job distribution) from prior input by the computation executor eu, or from job-related information arbitrarily received from the computation executor eu (e.g., an input method such as selecting from "it seems better to distribute this computation," "it seems better not to distribute," or "it doesn't matter"). The job allocation unit 52 may also estimate the parallelization efficiency of a job without input from the executor eu, based on the experience of past jobs (results of computation time according to input information) or statistical processing based on the accumulated experience. This processing allows the computation executor eu to efficiently execute a job regardless of whether or not he or she is familiar with the job content. The job allocation unit 52 can also execute only the first few seconds of a job and estimate the parallelization efficiency and the overall time required from the time required for that processing. As described above, when allocating jobs to machine learning jobs, it is preferable to use not only job execution efficiency but also various information exemplified as the N types of indicators described above.Furthermore, in jobs related to machine learning, conditions for storing input data are determined by the laws of each country, etc. Therefore, the job allocation unit 52 may allocate jobs by adding location information of devices provided by third parties (e.g., a third-party server described later), laws, etc. as indicators.

[0045] Next, we will explain scientific computing jobs as another example in which job execution efficiency can be used as part of an index. Because scientific computing jobs require more advanced computational processing than rendering or machine learning, they may need to be distributed to multiple job execution servers 3 to reduce computation time. In calculations in which computational processing is distributed between the CPU and GPU according to the function system within the scientific computing, the job allocation unit 52 can predict server specifications that can reduce computation time based on the parallelization efficiency of the CPU and GPU, and the frequency and volume of communication between the CPU and GPU, and can optimize jobs (job allocation) based on the prediction results. Furthermore, the job execution servers 3 may determine distribution allocation based on experience with previously executed jobs (calculation time results according to input information) and related information for jobs that are optionally accepted. For example, the job execution server 3 may select options such as "submit jobs with low parallelization efficiency to a serial CPU," "use multiple GPUs for processes with low CPU-GPU communication frequency," or "perform parallel processing on the same job execution server 3 or job execution servers 3 in the same room that are close to each other on the network for processes with high communication volume," and then allocate jobs based on the selection results. As described above, job allocation for scientific computing jobs preferably uses not only job execution efficiency but also various pieces of information exemplified as the N types of indicators described above. Furthermore, for scientific computing jobs, conditions for retaining codes, input data, etc., may be determined by national laws and regulations. Therefore, the job allocation unit 52 may also use location information of devices provided by third parties (e.g., the third-party server described below) and laws and regulations as indicators when allocating jobs.

[0046] As another example, consider a case where a molecular dynamics calculation is performed in which part of the calculation of multi-particle interactions is performed by the GPU and the rest by the CPU, and the premise is that "it is desired to shorten the calculation time while ensuring a certain amount of calculation volume on the GPU." In this case, the job allocation unit 52 can extract information on the size of the analysis model from the input file based on experience with past jobs, for example, experience that "GPU calculation efficiency is low when the analysis model is small and high when the analysis model is large," and determine the number of GPUs to be used based on that information. In this example of job allocation, it is preferable to use not only job execution efficiency but also various information exemplified as the N types of indicators described above.

[0047] As described above, the job allocation unit 52 can optimize jobs by allocating jobs based on M types of indicators (M is an integer equal to or less than N) out of N types of predetermined indicators (N is an integer equal to or greater than 2). Here, M may be 1, but as described above, it is preferable that M is 2 or greater. When the job allocation unit 52 allocates jobs based on M (=2) or more types of indicators, it is preferable to implement it as follows, for example. That is, it is preferable that the job allocation unit 52 groups a plurality of job execution servers 3 for each of M types of indicators out of the N types of indicators, and allocates jobs based on the results of grouping for each of the M types of indicators.

[0048] For example, the horizontal axis in Fig. 4A is an example of an axis showing the results of grouping based on the server specification index, which is the amount of resources. In the example in Fig. 4A, the servers are grouped into a group with a server specification of 2 resources and a group with a server specification of 4 resources.

[0049] While the example in FIG. 4 is an example in which M=1 type of index, the example in FIG. 7 is an example in which M=2 types of index. That is, FIG. 7 shows a specific example of job allocation by the job allocation unit in FIG. 3 , which is different from the example in FIG. 4 . FIG. 7A is an example of a job allocation table, in which the vertical axis indicates the results of grouping based on the first index (hereinafter referred to as "Grouping A"), and the horizontal axis indicates the results of grouping based on the second index (hereinafter referred to as "Grouping B"). In the table in FIG. 7A , each square represents one unit of resource amount of the job execution server 3. That is, on the vertical axis, each of the three groups A-1 to A-3 obtained as a result of grouping based on the first index is arranged downward from the origin in the figure. On the horizontal axis, each of the three groups B-1 to B-3 obtained as a result of grouping based on the second index is arranged rightward from the origin in the figure.

[0050] 7B shows an example of the results of job allocation performed by the job allocation unit 52. Specifically, as shown in FIG. 7B, the job in the lower left of the figure is assigned to group A-3 in grouping A, and to group B-1 in grouping B. Furthermore, the job in the upper right of the figure is assigned to group A-1 or group A-2 in grouping A, and to group B-3 in grouping B.

[0051] The job allocation using M types of indexes out of N types of indexes has been described above as a feature of the distributed processing system of this embodiment. Further, other features of the distributed processing system of this embodiment will be described below with reference to FIGS. 8 and 9. FIG. 8 is a diagram for explaining the features of the distributed processing system of FIG. 1, and is a diagram for explaining a conventional distributed processing system. FIG. 9 is a diagram for explaining the features of the distributed processing system of FIG. 1 compared to the conventional distributed processing system of FIG. 8.

[0052] As shown in FIG. 8 , a conventional distributed processing system performs, for example, job allocation, schedule management, and execution monitoring in a group of servers with a common administrator mu. Here, the "group of servers" refers to multiple job execution servers 3-a through 3-d in the example of FIG. 8 , but in reality refers to a single job execution server 3 equipped with multiple computing units, or a computational resource consisting of multiple job execution servers 3. Conventional distributed processing systems assign any job to a specific computing unit within multiple job execution servers 3 within the same management unit m, or assign it to a specific computing unit from among the computational resources spanning multiple job execution servers 3 within the same management unit m. For example, in the example of FIG. 8 , the distributed processing master server 2 of a given management unit m accepts a request from a computation executor euA to execute job A on server 3-a, and also accepts a request from a computation executor euB to execute job B on server 3-d. The distributed processing master server 2 then assigns job A to the computing unit on server 3-a within the same management unit m, and job B to the computing unit on server 3-d within the same management unit m, thereby performing job assignment. In this way, conventional distributed processing systems accept the desired computing unit from the computation executor eu, assign the tasks to the computing units, and schedule multiple computation tasks in the order in which they are received. In this process, conventional distributed systems monitor the availability of computing units and execute a process to put other jobs into a waiting state when a job is currently being executed. As described above, conventional distributed processing systems determine the execution order when there are many jobs. However, in conventional distributed processing systems, the specifications and number of job execution servers 3 within a server group are fixed. Therefore, when there are few jobs, time is lost when multiple job execution servers 3 are not assigned. Furthermore, when there are an excess of jobs, there are problems such as long wait times until the jobs are executed. In addition, when advanced computation processing is required, there are jobs that are executed with low execution efficiency on multiple job execution servers 3.Therefore, it has been difficult to efficiently execute a large number of jobs using schedule management that determines the execution order based on the order in which jobs are received.

[0053] For this reason, as described above, the distributed processing system of this embodiment realizes job allocation using M types of indices out of N types of indices, thereby enabling efficient job execution as shown in Figures 4 to 7. Furthermore, in the distributed processing system of this embodiment, as shown in Figure 9, even if the calculation executor eu does not specify a job execution server 3, the distributed processing master server 2 can perform job allocation by setting multiple appropriate job execution servers 3, including not only its own management unit m but also other management units m, as the allocation destination.

[0054] For example, when a computation executor euA simply requests the execution of job A, job allocation as shown in Figure 9 is automatically performed. That is, the distributed processing master server 2-1 of management unit m1 can perform job allocation such as allocating part of job A to a job execution server 3-1b in the same management unit m1, and allocating the remaining part of job A to a job execution server 3-2a in a different management unit m2. Also, when a computation executor euB simply requests the execution of job B, job allocation as shown in Figure 9 is automatically performed. That is, the distributed processing master server 2-2 of management unit m2 can perform job allocation such as allocating job B to a job execution server 3-3b in a different management unit m3.

[0055] In this way, the distributed processing system of this embodiment can submit jobs in parallel to job execution servers 3 with different administrators mu. This makes it possible to expand computing resources and respond to changes in the amount of computing resources (see FIGS. 5 and 6).

[0056] Furthermore, in the distributed processing system of this embodiment, the calculation executor eu does not need to specify the job execution server 3. This reduces the burden on the calculation executor eu who is a natural person, and enables the calculation to be executed more efficiently than by a calculation executor eu who is a natural person.

[0057] Specifically, for example, job execution servers 3 are broadly classified into on-premise servers, cloud servers, and machines provided by third parties (third-party servers). The three types of servers, on-premise servers, cloud servers, and third-party servers, are generally not clearly separated or defined. However, in this specification, the job execution server 3 corresponds to any of the three types, and specifically refers to the following: An on-premise server refers to a job execution server 3 whose physical location is managed or known by a calculation executor eu or an administrator mu. A cloud server refers to a job execution server 3 that can be used via communication such as the Internet using a service that publicly solicits users. A third-party server refers to a server that is not used for a service that publicly solicits users, and is permitted for use by an individual calculation executor eu or administrator mu.

[0058] 9, for example, assume that the administrator mu1 is organization A (or a person belonging to organization A), the calculation executor euA belongs to organization A, and the job execution servers 3-1a to 3-1d within the management unit m1 managed by organization A are located at locations a to d within organization A. In this case, when the calculation executor euA, who is located at location a within organization A, uses the job execution servers 3-1a and 3-1b located at locations a and b, respectively, the job execution servers 3-1a and 3-1b are on-premise servers. If the administrator mu2 is organization B (or a person belonging to organization B), which publicly provides a server rental service that operates over the Internet, when the calculation executor euA uses the job execution server 3-2a belonging to the management unit m2, the job execution server 3-2a is a cloud server. If the administrator mu3 is an organization C (or a person belonging to said organization C) that does not provide a publicly known server rental service, and the job execution servers 3-3a and 3-3b belonging to that management unit m3 are individually permitted for use by organization A, when a calculation executor euA of organization A uses job execution server 3-3a, job execution server 3-a is a third-party server.

[0059] In job execution, an on-premises server is composed of multiple nodes. For example, in the processing unit m1 of organization A, each of the job execution servers 3-1a to 3-1d is a node. In this case, parallel processing is possible within each node, but processing is also possible by using multiple nodes simultaneously. There is a limit to the memory size that can be used by a single node, and some jobs cannot be calculated without using multiple nodes depending on the learning model and input data size. The distributed processing system (job allocation unit 52) ​​of this embodiment can perform job allocation by optimally distributing multiple submitted jobs across multiple nodes operated on-premises as integrated computational resources. If the job allocation unit 52 determines that a submitted job cannot be processed using the computational power of the on-premises system alone, it can perform job allocation by simultaneously using a cloud server (e.g., job execution server 3-2a, etc.). Depending on the type of submitted job, if there is a job that can be processed on a cloud server, the job allocation unit 52 can perform job allocation by distributing the job across integrated computational resources that include on-premises servers and cloud servers. At this time, the job allocation unit 52 can measure the communication speed with the cloud server to be allocated and calculate the total calculation time including the communication speed. This function is provided to the calculation executor eu, and the calculation executor eu can decide whether to wait until on-premise calculation resources become available before executing the calculation, or to tolerate the communication time and use the cloud resources. In addition, this total calculation time is also used as an index when the job allocation unit 52 automatically allocates jobs.

[0060] Furthermore, as a means of enhancing computing resources, the job allocation unit 52 can also perform job allocation in which jobs are distributed as a single resource that also includes a third-party server (e.g., job execution server 3-3a). Here, the third-party server may be a computing server or a laptop, or it may be a device with computing capabilities, such as a smartphone, or a computer installed in an electric vehicle. The third-party server must have software installed that allows the distributed processing master server 2 to determine it as an available device, and this software allows it to exchange jobs with the distributed processing master server 2 using a common distributed processing protocol. A third party (administrator mu3 in the example of FIG. 9 ) connects the device it provides (job execution servers 3-3a and 3-3b in the example of FIG. 9 ) to the network and specifies a time period during which it will be used as a distributed processing allocation destination. During that time, the distributed processing master server 2 (distributed processing master server 2-1 in the example of FIG. 9 ) recognizes the third-party server (job execution servers 3-3a and 3-3b in the example of FIG. 9 ) as an allocation destination. The job allocation unit 52 of the distributed processing master server 2 allocates jobs to third-party servers using indicators related to the third party or the third party. The indicators related to the third party or the third party may be, for example, the N types exemplified above. Specifically, for example, the third-party user type, the destination server specifications (CPU, GPU, memory, etc.), network communication speed, information about device settings (security information, OS, implementation compiler, etc.), power supply information (power supply stability, whether or not the power is renewable, etc.), and geographical information about the server installation location (data handling policies of the local government or management organization, climate and air conditioning environment that affect the server operating temperature) may be used. Naturally, these indicators are also used for on-premise servers and cloud servers. Furthermore, the job allocation unit 52 may allocate jobs using the past operational performance of each of the on-premise server, cloud server, and third-party server as indicators.

[0061] As explained above, for example, if organization A has a job execution server 3-1a at its location a (located in country a) and a job execution server 3-1b at its location b (located in country b), then the calculation executor euA at organization A's location a can use the job execution servers 3-1a and 3-1b as well as cloud servers (e.g., job execution server 3-2a) and third-party servers (e.g., job execution server 3-3a) as allocation destinations. Furthermore, the calculation executor euA can selectively limit the allocation destinations, such as using only the job execution server 3-1a, using only the job execution server 3-1b, using the job execution server 3-1a and a cloud server, using the job execution server 3-1a and a third-party server, or using the job execution servers 3-1a and 3-2a. Similarly, a computation executor euB located at location b of organization A can use not only job execution servers 3-1a and 3-1b, but also cloud servers (e.g., job execution server 3-2a) and third-party servers (e.g., job execution server 3-3a) as allocation destinations. Furthermore, computation executor euB can selectively limit allocation destinations, such as using only job execution server 3-1a, only job execution server 3-1b, job execution server 3-1a and a cloud server, job execution server 3-1a and a third-party server, or job execution servers 3-1a and 3-2a. In one example of a network configuration in this case, job execution servers 3-1a and 3-1b are located within organization A's LAN, and are capable of IP communication with the distributed processing master server 2-1 and the respective computation executor terminals 4 of computation executors euA and euB via a VPN connection. Furthermore, the third-party server is publicly accessible on a DMZ or WAN, allowing IP communication. This allows the calculation executors euA and euB to connect to the job execution servers 3-1a and 3-1b and the third-party server. Actual access depends on the settings on the distributed processing master server 2-1 side of the distributed processing system of this embodiment. Note that the allocation destinations of the calculation executors euA and euB can be set independently.

[0062] As described above, the distributed processing system of this embodiment realizes job allocation using M of N indices. Here, we will explain a representative algorithm for optimizing any two or more items. For example, when performing the process of assigning destinations based on the results of grouping each of the M indices (e.g., the process described above in FIG. 7 ), statistical methods such as filtering each indices based on separately input priorities or Bayesian optimization can be used. Hereinafter, as an example, we will explain how the M indices used are the degree of stability of power supply to the computation execution device, the degree of security of the computation execution device, the computational capacity of the computation execution device, and the cost of operating the computation execution device, and how a greedy algorithm or other method is used to optimize the distributed processing. In this case, the priorities of the four indices can be determined in advance, and the computation execution devices can be evaluated in descending order of priority. That is, for example, the priorities of the four indices are first determined in advance by the computation execution user eu or a predetermined information processing device (e.g., the distributed processing master server 2), etc. The job allocation unit 52 then ranks the job execution servers 3 in descending order of priority using each of the M types (four types in this example) of indices, thereby determining the job execution server 3 to which the job will be assigned and performing job allocation. For example, the job allocation unit 52 first ranks the job execution servers 3 that will be candidates for distribution based on the highest priority level of power supply stability. Then, it ranks the job execution servers 3 that will be candidates for distribution based on the next highest priority level of security. Similarly, it ranks the job execution servers 3 that will be candidates for distribution based on the next highest priority level of computing power. Finally, it ranks the job execution servers 3 that will be candidates for distribution based on the cost of operating the computation execution device. The job is distributed to the distribution destination in descending order of average ranking across these four categories. Because optimization problems using more than four types of indices have complex solutions, it is difficult for the computation executor eu to manually and effectively distribute jobs. Several effective methods have been developed for solving such multi-objective optimization problems, and the greedy algorithm is one of them. By using optimization methods that can handle multiple indices, such as the greedy method, more effective job distribution becomes possible.

[0063] Although one embodiment of the present invention has been described above, the present invention is not limited to the above-described embodiment, and modifications, improvements, etc. within the scope of achieving the object of the present invention are included in the present invention.

[0064] For example, the configuration of the distributed processing system shown in FIG. 1 and the hardware configuration of the distributed processing master server 2 shown in FIG. 2 are merely examples for achieving the object of the present invention, and are not particularly limited.

[0065] 3 is merely an example and is not particularly limited. In other words, it is sufficient for the distributed processing system to have the functionality to execute the above-described series of processes as a whole, and the functional blocks used to realize this functionality are not particularly limited to the example in FIG.

[0066] Furthermore, the locations of the functional blocks are not limited to those shown in Fig. 3 and may be arbitrary. For example, at least some of the functional blocks shown in Fig. 3 may be transferred from the distributed processing master server 2 to the distributed processing infrastructure web server 1. Furthermore, one functional block may be configured as a single piece of hardware, a single piece of software, or a combination of both.

[0067] When the processing of each functional block is executed by software, the programs constituting the software are installed onto a computer or the like via a network or a recording medium. The computer may be a computer built into dedicated hardware. Furthermore, the computer may be a computer capable of executing various functions by installing various programs, such as a server, a general-purpose smartphone, or a personal computer. Jobs distributed using this technology are not limited to numerical simulation and machine learning jobs, and various types of jobs are targeted. Some types of jobs require large computers, while others can be executed on small hardware such as the smartphone. While the individual capabilities of small hardware such as smartphones are inferior to those of large computers, they can achieve performance equivalent to that of large computers by using multiple pieces of hardware simultaneously, making them highly effective as job distribution destinations.

[0068] The recording medium containing such a program may not only be composed of removable media that is distributed separately from the device itself in order to provide the program to each user, but may also be composed of recording media that are provided to each user in a state where they are pre-installed in the device itself.

[0069] In this specification, the steps describing the program to be recorded on the recording medium include not only processes that are performed in chronological order, but also processes that are not necessarily performed in chronological order but are performed in parallel or individually.

[0070] In addition, in this specification, the term "system" refers to an overall device that is made up of a plurality of devices, a plurality of means, etc.

[0071] To sum up, the information processing device to which the present invention is applied only needs to have the following configuration, and can take on a variety of different embodiments. That is, the information processing device to which the present invention is applied (for example, the distributed processing master server 2 in FIG. 2) comprises: a job acquisition means (for example, the job acquisition unit 51 in FIG. 3) that acquires one or more jobs from one or more client devices (for example, the executor terminals 4-1 to 4-q in FIG. 1) on the client side (for example, the computation executors eu1 to euq in FIG. 1) that make computation requests for the predetermined jobs; It is sufficient to have job allocation means (e.g., job allocation unit 52 in FIG. 3) that performs a process of assigning the one or more jobs to at least some of a plurality of calculation execution devices (e.g., job execution servers 3-1a to 3-1d of management unit m1, job execution servers 3-2a and 3-2b of management unit m2, and job execution servers 3-3a and 3-3b of management unit m3 in FIG. 9) as assignment destinations based on M types of indexes (M is an integer value of 2 or less) out of N types of predetermined indexes (N is an integer value of 2 or more), and job transfer means (e.g., job transfer unit 53 in FIG. 3) that distributes and transfers the one or more jobs to the assignment destinations in accordance with the job allocation.

[0072] The job allocation means may perform, as the job allocation, a process of grouping the plurality of computation execution devices for each of the M types of indices, and assigning at least some of the plurality of computation execution devices as the assignment destinations based on the grouping results for each of the M types of indices (e.g., the process of FIG. 7).

[0073] The multiple computation execution devices include devices managed separately by multiple administrators (for example, job execution servers 3-1a to 3-1d of management unit m1 in Figure 9, job execution servers 3-2a and 3-2b of management unit m2, and job execution servers 3-3a and 3-3b of management unit m3), and the job allocation means can perform job allocation across the devices of each of the multiple administrators (for example, perform job allocation as shown in Figure 9).

[0074] The multiple computation execution devices may include on-premise servers (e.g., job execution servers 3-1a to 3-1d of management unit m1 in Figure 9), cloud servers (e.g., job execution servers 3-2a and 3-2b of management unit m2 in Figure 9), and third-party servers (e.g., job execution servers 3-3a and 3-3b of management unit m3 in Figure 9).

[0075] 1: Web server for distributed processing infrastructure, 2: Distributed processing master server, 3: Job execution server, 4: Executor terminal, 11: CPU, 12: ROM, 13: RAM, 14: Bus, 15: Input / output interface, 16: Input unit, 17: Output unit, 18: Storage unit, 19: Communication unit, 20: Drive, 31: Removable media, 51: Job acquisition unit, 52: Job allocation unit, 53: Job transfer unit, 54: Job execution control unit, m: Management unit, mu: Administrator, eu: Calculation executor

Claims

1. Job acquisition means for acquiring one or more of the jobs from each of one or more client devices on the client side that make a calculation request for a predetermined job; A job allocation step of allocating the one or more jobs to the allocation destination by using at least a part of a plurality of calculation execution devices as the allocation destination based on M types (M is an integer value less than or equal to N) of indicators out of N types (N is an integer value of 2 or more) of predetermined indicators, and performing an optimal distribution process of the job as the job allocation; Job transfer means for dispersing and transferring the one or more jobs to the allocation destination according to the job allocation; An information processing apparatus comprising:

2. When M is 4 or more, the job allocation means performs, as the job allocation, a process of allocating the one or more jobs to the allocation destination by using a statistical optimization method as the allocation destination. The information processing apparatus according to claim 1.

3. The N types of indicators include the date and time of start or end of the job. The information processing apparatus according to claim 1.

4. The job allocation means groups the plurality of calculation execution devices for each of the M types of indicators, and performs, as the job allocation, a process of allocating at least a part of the plurality of calculation execution devices as the allocation destination based on the grouping result for each of the M types of indicators. The information processing apparatus according to claim 1.

5. The plurality of calculation execution devices include devices separately managed by each of a plurality of administrators, and the job allocation means performs the job allocation across the devices of each of the plurality of administrators. The information processing apparatus according to any one of claims 1 to 4.

6. The plurality of calculation execution devices include at least one of an on-premises server, a cloud server, and a third-party server. The information processing apparatus according to claim 5.

7. In an information processing method executed by an information processing apparatus, a job acquisition step of acquiring one or more of the jobs from each of one or more client devices on the client side that make a calculation request for a predetermined job; a job allocation step of allocating the one or more jobs to the allocation destination by using at least a part of a plurality of calculation execution devices as the allocation destination based on M types (M is an integer value less than or equal to N) of indicators out of N types (N is an integer value of 2 or more) of predetermined indicators, and performing an optimal distribution process of the job as the job allocation; A job transfer step of distributing and transferring the one or more jobs to the assignee according to the job assignment; An information processing method including the above.

8. On a computer, A job acquisition step of acquiring one or more of the jobs from each of one or more client devices on the client side that make a calculation request for a predetermined job; A job assignment step of assigning the one or more jobs to at least a part of a plurality of calculation execution devices as an assignee based on M types (M is an integer value less than or equal to N) of indicators out of N types (N is an integer value of 2 or more) of predetermined indicators, and performing an optimal distribution process of the job as the job assignment; A job transfer step of distributing and transferring the one or more jobs to the assignee according to the job assignment; A program for causing the computer to execute control processing including the above.