MISCELLANEOUS

Method of assisting execution of plural simulation programs for coupled simulation

5963731

Abstract

Each of a plurality of simulation programs is linked with a data conversion library and is executed as a simulation process. A data conversion process is executed in correspondence with each simulation process. In exchanging data resulted from simulation by the simulation process of one of the simulation programs with simulation processes of the other simulation programs, the data conversion process provided for a sending simulation process determines a receiving simulation process to which the data is to be sent, and sends the data to the data conversion process corresponding to the receiving simulation process. The data conversion process for the receiving simulation process performs data conversion for absorbing difference between the base of the sending simulation process and the base of the receiving simulation process, and transfers the data after the conversion to the receiving simulation process.


Claims

What is claimed is:

1. A method of assisting execution of a plurality of simulation programs for coupled simulation, wherein each simulation program is programmed so as to produce values of at least one physical quantity, defined on a base which belongs to a simulation target region, said method comprises a plurality of steps executed by a computer system, said steps including:

receiving by an interprogram data communication assist program from each simulation program, base information related to a base which said each simulation program uses;

judging by said interprogram data communication assist program, positional relationship between the base of each simulation program and a base of other one of said plurality of simulation programs, based on said base information received from each of said plurality of simulation programs;

converting by said interprogram data communication assist program, operation result data produced by one of said plurality of simulation programs and defined on a base of said one simulation program into data defined on a base of at least other one of said plurality of simulation programs which uses the operation result data; and

transferring by said interprogram data communication assist program, said data obtained by said converting step to said other simulation program which uses said operation result data;

wherein said converting step is executed based on positional relationship judged by said judging step between the base of said one simulation program which has produced said operation result data and the base of said other simulation program which uses said operation result data.

2. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 1;

wherein said converting step includes the steps of;

selecting one conversion procedure corresponding to a pair of a kind of the base of said one simulation program which has produced said operation result data and a kind of the base of said other simulation program which uses said operation result data; and

converting said operation result data according to said selected data converting procedure;

wherein said one conversion process is selected from a plurality of conversion procedures each predetermined for a pair of one of a plurality of bases which may be used by a simulation program which will produce operation result data and one of a plurality of bases which may be used by a simulation program which will use the operation result data.

3. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 1, further comprising a step of:

selecting by said conversion program, part of said operation result data;

wherein said converting step is executed for said selected part of said operation result data;

wherein said part of data comprises data relating to a portion of a simulation target region of said one simulation program which has produced said operation result data, said portion of said simulation target region overlapping a simulation target region of said other simulation program which uses said operation result data;

wherein said selecting step is executed based upon said positional relationship judged by said judging step between the base of said one simulation program which has produced said operation result data and the base of said other simulation program which uses said operation result data.

4. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 1, further comprising a step of:

detecting by said interprogram data communication assist program, whether there is at least one other simulation program which will use an operation result data which said one simulation program will produce, among said plurality of simulation programs;

wherein said detecting step is executed based on positional relationship judged by said judging step between the base of said one simulation program which has produced said operation result data and the base of said other simulation program;

wherein said transferring step includes the steps of;

transferring by said interprogram data communication assist program, said operation result data which has been produced by said one simulation program to one other simulation program, when said one other simulation program has been detected by said detecting step; and

transferring by said interprogram data communication assist program, said operation result data which has been produced by said one simulation program to each of plural other simulation programs, when said plural other simulation programs have been detected by said detecting step;

wherein said converting step includes the steps of;

converting said operation result data which has been produced by said one simulation program into data defined on the base of one other simulation program, when said one other simulation program has been detected by said detecting step; and

converting said operation result data which has been produced by said one simulation program into a plurality of data each defined on the base of a plurality of other simulation programs, when said plurality of other simulation programs have been detected by said detecting step.

5. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 4;

wherein said positional relationship judged by said judging step includes information as to whether at least part of the simulation target region of each simulation program overlaps a simulation target region of other simulation program;

wherein said detecting step includes a step of detecting by said interprogram data communication assist program, whether there is at least one other simulation program with a simulation target region at least part of which overlaps the simulation target region of said one simulation program, based upon said positional relationship judged between said one simulation program and said other simulation program.

6. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 1;

wherein said converting step is executed in response to a send request issued for said operation result data by said one simulation program which has produced said operation result data.

7. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 1;

wherein said positional relationship judged by said judging step between the base of each simulation program and the base of other simulation program includes positional relationship between a plurality of discrete points which compose the base of each simulation program and a plurality of discrete points which compose the base of the other simulation program.

8. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 7,

wherein said positional relationship between said plurality of discrete points which compose the base of each simulation program and said plurality of discrete points which compose the base of the other simulation program includes at least one of (1) distances between each of said plurality of discrete points which compose the base of each simulation program and part of said plurality of discrete points which compose the base of the other simulation program, said part of said plurality of discrete points comprising discrete points near said each discrete points which composes the base of said each simulation program, and (2) distances between each of said plurality of discrete points which compose the base of said other simulation program and part of said plurality of discrete points which compose the base of said each simulation program, said part of said plurality of discrete points comprising discrete points near said each discrete points which composes the base of said other simulation program.

9. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 1;

wherein each simulation program is executed as at least one simulation process, whereby said plurality of simulation programs are executed as a plurality of simulation processes;

wherein said interprogram data communication assist program is executed as a plurality of interprogram data communication assist processes each corresponding to one of said plurality of simulation processes.

10. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 9;

wherein said receiving step includes the steps of;

notifying by each simulation process, base information of said each simulation process to one of said plurality of interprogram data communication assist processes corresponding to said each simulation process; and

notifying by each interprogram data communication assist process, base information of one simulation process corresponding to said each interprogram data communication assist process to other interprogram data communication assist process;

wherein said judging step includes a step of judging by each interprogram data communication assist process, positional relationship between a base of one of said plurality of simulation processes corresponding to said each interprogram data communication assist process and a base of other one of said plurality of simulation processes, based on base information of said one simulation process corresponding to said each interprogram data communication assist process and base information of said other simulation process;

wherein said converting step is executed by either one of one interprogram data communication assist process corresponding to one simulation process which has produced said operation result data among said plurality of interprogram data communication assist processes and other interprogram data communication assist process corresponding to other simulation process which uses said operation result data;

wherein said method further includes a step of sending operation result data from said one interprogram data communication assist process to said other interprogram data communication assist process corresponding to said other simulation process which uses said operation result data;

wherein said operation result data sent by said sending step is data obtained by executing said converting step when said converting step is executed by said one interprogram data communication assist process, and said operation result data sent by said sending step is said operation result data which said one simulation process has produced, when said converting step is executed by said other interprogram data communication assist process.

11. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 10;

wherein said method further includes a step of;

detecting by said one interprogram data communication assist process corresponding to said one simulation process, whether there is other one or a plurality of simulation processes which use operation result data which will be produced by said one simulation process;

wherein said detecting step is executed by said one interprogram data communication assist process, based on positional relationship between said one simulation process and other simulation process judged by said judging step;

wherein said sending step of said operation result data to said other interprogram data communication assist process includes the steps of;

sending said operation result data produced by said one interprogram data communication assist process to one other interprogram data communication assist process corresponding to one other simulation process, when said one other data simulation process has been detected by said detecting step; and

sending said operation result data produced by said one interprogram data communication assist process to each of a plurality of other interprogram data communication assist processes corresponding to a plurality of other simulation processes, when said plurality of other simulation processes have been detected by said detecting step;

wherein said converting step is executed by one of said one interprogram data communication assist process and one other interprogram data communication assist process corresponding to one other simulation process, when said one simulation process has been detected by said detecting step;

wherein said converting step is executed by either one of said one interprogram data communication assist process or by a plurality of other interprogram data communication assist processes corresponding to a plurality of other simulation processes, when said plurality of other simulation processes have been detected by said detecting step.

12. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 11;

wherein said positional relationship judged by said judging step executed by each interprogram data communication assist process includes information as to whether at least part of the simulation target region of each simulation process overlaps a simulation target region of other simulation process;

wherein said detecting step executed by said one interprogram data communication assist process includes a step of detecting by said interprogram data communication assist process, whether there is at least one other simulation process with a simulation target region at least part of which overlaps the simulation target region of said one simulation process, based upon said positional relationship judged between said one simulation process and said other simulation process.

13. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 10;

wherein a plurality of libraries are further provided each corresponding to one of said plurality of simulation processes;

wherein said notifying step of the base information of each simulation process therefrom to said interprogram data communication assist process corresponding thereto includes the steps of;

notifying said base information of each simulation process therefrom by a function call to one of said plurality of libraries corresponding to said each simulation process; and

notifying said notified base information from said one library corresponding to said each simulation process to said interprogram data communication assist process corresponding to said each simulation process;

wherein said sending step of said operation result data to said other simulation process which uses said operation result data by said other interprogram data communication assist process corresponding to said other simulation process includes the steps of;

notifying said operation result data from said other interprogram data communication assist process to other one of said plurality of libraries corresponding to said other simulation process; and

notifying said operation result data from said other library to said other simulation process.

14. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 10;

wherein said sending step of said operation result data by said one interprogram data communication assist process to said other simulation processes is executed in response to a send request for said operation result data issued by said one simulation process;

wherein said notifying step of said operation result data by said other interprogram data communication assist process to said other simulation process is executed in response to a receive request for said operation result data issued by said other simulation process.

15. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 10;

wherein each simulation program is executed as a plurality of simulation processes, wherein each simulation process executes simulation to be executed by said each simulation program to part of the simulation target region of said each simulation program, whereby said plurality of simulation programs are executed as a plurality of simulation processes whose number is greater than that of said plurality of simulation programs;

wherein said interprogram data communication assist program is executed as a plurality of interprogram data communication assist processes each corresponding to one of said plurality of simulation processes.

16. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 15;

wherein said notifying step of the base information of one simulation process corresponding to each interprogram data communication assist process to other interprogram data communication assist process includes a step of notifying the base information to a plurality of other interprogram data communication assist processes corresponding to other simulation processes which belong to other simulation program than one simulation program to which said one simulation process belongs;

wherein said judging step executed by each interprogram data communication assist process includes a step of judging positional relationship between a base of one simulation process corresponding to said each interprogram data communication assist process and a base of each of a plurality of other simulation processes which belong to other simulation programs than one simulation program to which said one simulation process belongs;

wherein said judging is executed by said each interprogram data communication assist process based on base information of said corresponding simulation process of said each interprogram data communication assist process and base information of each of said plurality of other interprogram data communication assist processes.

17. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 16;

wherein said method further includes a step of;

detecting by said one interprogram data communication assist process corresponding to said one simulation process which has produced said operation result, whether there is other one or a plurality of simulation processes which use operation result data which will be produced by said one simulation process, among a plurality of other simulation processes which belong to other simulation program than one simulation program to which said one simulation process belongs;

wherein said detecting is executed by said one interprogram data communication assist process, based on positional relationship between said one simulation process and each of said other simulation processes judged by said judging step executed by said one interprogram data communication assist process.

18. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 1, wherein said plurality of simulation programs and said interprogram data communication assist program are executed on a same processor included in said computer system.

19. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 1, wherein at least plural ones within said plurality of simulation programs are executed on plural mutually different ones of a plurality of processors included in said computer system.

20. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 9, wherein said plurality of simulation processes and said plurality of interprogram data communication assist processes are executed on a same processor included in said computer system.

21. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 9;

wherein at least plural ones within said plurality of simulation processes are executed on plural mutually different ones of a plurality of processors included in said computer system;

wherein each interprogram data communication assist process and a simulation process corresponding thereto are executed on a same one of said plurality of processors.

22. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 15;

wherein at least plural ones within said plurality of simulation processes corresponding to said plurality of programs are executed on plural mutually different ones of a plurality of processors included in said computer system;

wherein each interprogram data communication assist process and a simulation process corresponding thereto are executed on a same one of said plurality of processors.

23. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 1;

wherein said interprogram data communication assist program comprises a plurality of programs each of which corresponds to one of said plurality of simulation programs and is executed as a subroutine of said corresponding one of said plurality of simulation programs;

wherein each of said plurality of programs executes processing to be executed by said interprogram data communication assist program.

24. A method of assisting execution of a plurality of simulation programs for coupled simulation, wherein each simulation program is programmed so as to produce values of at least one physical quantity, defined on a base which belongs to a simulation target region, said method comprises a plurality of steps executed by a computer system, said steps including:

receiving by an interprogram data communication assist program from each simulation program, base information related to a base which said each simulation program uses;

judging by said interprogram data communication assist program, positional relationship between the base of each simulation program and a base of other of said plurality of simulation programs, based on said base information received from each of said plurality of simulation programs;

detecting by said interprogram data communication assist program, at least one other simulation program, if there is any, which uses operation result data which will be produced by one of said plurality of simulation programs, said detecting being done based on positional relationship between said one simulation program and said one other simulation program, judged by said judging step; and

transferring by said interprogram data communication assist program, operation result data to at least one other simulation program detected by said detecting step, when said operational data has been generated by said one simulation program.

25. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 24;

wherein said positional relationship judged by said judging step includes information as to whether at least part of a simulation target region of each simulation program overlaps a simulation target region of other simulation program;

wherein said detecting step includes a step of detecting by said interprogram data communication assist program, whether there is at least one other simulation program with a simulation target region at least part of which overlaps the simulation target region of said one simulation program, based upon said positional relationship judged between said one simulation program and said other simulation program.

26. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 24;

wherein said transferring step of said operation result includes the steps of;

transferring by said interprogram data communication assist program, said operation result data produced by said one simulation program to one other simulation program, when said one other simulation program has been detected by said detecting step; and

transferring by said interprogram data communication assist program, said operation result data produced by said one simulation program to each of plural other simulation programs, when said plural other simulation programs have been detected by said detecting step.

27. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 24;

wherein each simulation program is executed as at least one simulation process, whereby said plurality of simulation programs are executed as a plurality of simulation processes;

wherein said interprogram data communication assist program is executed as a plurality of interprogram data communication assist processes each corresponding to one of said plurality of simulation processes.

28. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 27;

wherein said receiving step includes the steps of;

notifying base information of each simulation process to one of said plurality of interprogram data communication assist processes corresponding to said each simulation process from said each simulation process; and

notifying by each interprogram data communication assist process, base information of one simulation process corresponding to said each interprogram data communication assist process to other interprogram data communication assist process;

wherein said judging step includes a step of judging by each interprogram data communication assist process, positional relationship between a base of one of the plurality of simulation processes corresponding to said each interprogram data communication assist process and a base of other one of said plurality of simulation processes, based on base information of said one simulation process corresponding to said each interprogram data communication assist process and base information of said other simulation process;

wherein said transferring step includes the steps of;

sending operation result data produced by one of said plurality of simulation processes from one interprogram data communication assist process corresponding to said one simulation process to other interprogram data communication assist process corresponding to other simulation process which uses said operation result data; and

transferring said operation result data from said other interprogram data communication assist process to said other simulation process;

wherein said detecting step includes a step of detecting by said one interprogram data communication assist process corresponding to said one simulation process, whether there is other one or a plurality of simulation processes which use operation result data which said one simulation process will produce;

wherein said detecting is executed by said one interprogram data communication assist process, based on positional relationship between said one simulation process and other simulation process, judged by said judging step.

29. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 28;

wherein each simulation program is executed as a plurality of simulation processes, wherein each simulation process executes simulation to be executed by said each simulation program to part of the simulation target region of said each simulation program, whereby said plurality of simulation programs are executed as a plurality of simulation processes whose number is greater than that of said plurality of simulation programs.

30. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 29;

wherein said interprogram data communication assist program is executed as a plurality of interprogram data communication assist processes each corresponding to one of said plurality of simulation processes;

wherein said notifying step of the base information of one simulation process corresponding to each interprogram data communication assist process to other interprogram data communication assist process includes a step of notifying the base information to a plurality of other interprogram data communication assist processes corresponding to other simulation processes which belong to other simulation program than one simulation program to which said one simulation process belongs;

wherein said judging step executed by each interprogram data communication assist process includes a step of judging positional relationship between a base of one simulation process corresponding to said each interprogram data communication assist process and a base of each of a plurality of other simulation processes which belong to other simulation programs than one simulation program to which said one simulation process belongs;

wherein said judging is executed by said each interprogram data communication assist process based on base information of said one corresponding simulation process and base information of each of said other simulation processes;

wherein said detecting step includes a step of detecting by said one interprogram data communication assist process corresponding to said one simulation process, whether there is other one or a plurality of simulation processes which use said operation result data which said one simulation process will produce, among a plurality of other simulation processes which belong to other simulation program than one simulation program to which said one simulation process belongs;

wherein said detecting is executed by said one interprogram data communication assist process, based on positional relationship between said one simulation process and each of said other simulation processes, judged by said judging step executed by said one interprogram data communication assist process.

31. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 24, wherein said plurality of simulation programs and said interprogram data communication assist program are executed on a same processor included in said computer system.

32. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 24, wherein at least plural ones within said plurality of simulation programs are executed on plural mutually different ones of a plurality of processors included in said computer system.

33. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 27:

wherein at least plural ones within said plurality of simulation processes are executed on plural mutually different ones of a plurality of processors included in said computer system;

wherein each interprogram data communication assist process and a simulation process corresponding thereto are executed on a same one of said plurality of processors.

34. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 29;

wherein at least plural ones within said plurality of simulation processes corresponding to said plurality of programs are executed on plural mutually different ones of a plurality of processors included in said computer system;

wherein each interprogram data communication assist process and a simulation process corresponding thereto are executed on a same one of said plurality of processors.

35. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 24;

wherein said interprogram data communication assist program comprises a plurality of programs each of which corresponds to one of said plurality of simulation programs and is executed as a subroutine of said corresponding one of said plurality of simulation programs;

wherein each of said plurality of programs executes processing to be executed by said interprogram data communication assist program.

36. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 28;

wherein said sending step of said operation result data to said other interprogram data communication assist process from said interprogram data communication assist process corresponding to said simulation process which has produced said operation result data includes the steps of;

enciphering said operation result data by said interprogram data communication assist process with a first key for enciphering predetermined for said other simulation process;

sending said enciphered operation result data to said other interprogram data communication assist process corresponding to said other simulation process which uses said operation result data; and

deciphering said enciphered operation result data by said other interprogram data communication assist process with a second key for deciphering predetermined for said other simulation process.

37. A method of assisting execution of said plurality of simulation programs for coupled simulation according to claim 36, wherein said first and second keys comprise a secret key predetermined for said other simulation process and a public key predetermined therefor, respectively.

38. A storage medium for storing an interprogram data communication assist program programmed so as to execute said receiving step to said transferring step of claim 1.

39. A storage medium for storing an interprogram data communication assist program programmed so as to execute said receiving step to said transferring step of claim 24.

40. A method of assisting cooperative execution of a plurality of programs, said method comprises a plurality of steps executed by a computer system, said steps including:

receiving by an interprogram data communication assist program from each program, data information related to a group of data which said each program handles;

judging by said interprogram data communication assist program, relationship between one group of data handled by each program and other group of data handled by other of said plurality of programs, based on data information received from each of said plurality of programs;

converting by said interprogram data communication assist program, one group of data which has been produced by one of said plurality of programs into other group of data used by at least other one of said plurality of programs; and

transferring by said interprogram data communication assist program, said data obtained by said converting step to said other program;

wherein said converting step is executed based on data relationship judged by said judging step between the one group of data produced by said one program and other group of data used by said other program.

41. A method of assisting cooperative execution of a plurality of programs cooperatively, said method comprises a plurality of steps executed by said computer system, said steps including:

receiving by an interprogram data communication assist program from each program, data information related to a group of data used by said each program uses;

judging by said interprogram data communication assist program, relationship between a group of data handled by each program and other group of data handled by other one of said plurality of programs, based on said data information received from each of said plurality of programs;

detecting by said interprogram data communication assist program, at least one other program, if there is any, which will use a group of data which will be produced by one of said plurality of programs, said detecting being done based on relationship between a group of data handled by said one program and other group of data handled by said one other program, judged by said judging step; and

transferring by said interprogram data communication assist program, one group of data to said one other program, if said one other program has been detected by said detecting step, when said one group of data has been produced.

42. A method of assisting cooperative execution of a plurality of execution programs, said method comprising the following steps executed by a computer system which includes a plurality of processor units:

allocating each of said plurality of execution programs to at least one of said plurality of processor units selected for said each execution program, said allocating step including the sub-steps of:

determining an order of allocation of said execution programs to said plurality of processor units, based on resource consumption quantities of said plurality of execution programs so that an execution program with larger resource consumption quantity is allocated earlier,

sequentially allocating each of said plurality of execution programs to a respective one of said plurality of processor units according to said determined order of allocation, and

selecting one of said plurality of processor units, based upon a resource consumption quantity of one of said plurality of execution programs to be allocated next and resource reserve powers of said plurality of processor units;

allocating an interprogram data communication assist program to each of a plurality of processor units to each of which at least one of said plurality of execution programs has been allocated;

activating each of said plurality of execution programs as allocated to one of said plurality of processor units and said interprogram data communication assist program as allocated to each of said plurality of processor units to each of which at least one of said plurality of execution programs has been allocated;

receiving by at least one said interprogram data communication assist program allocated to at least one of said plurality of processor units to each of which at least one of said plurality of execution programs has been allocated, from each execution program as allocated to one of said processor units, data information related to a group of data which said each execution program handles;

judging, by at least one said interprogram data communication assist program as allocated to at least one of said plurality of processor units to each of which at least one of said plurality of execution programs has been allocated, relationship between one group of data handled by each execution program as allocated to one of said plurality processor units and other group of data handled by other of said plurality of execution programs as allocated to one of said plurality processor units, based on data information received from each of said plurality of execution programs as allocated to one of said plurality processor units;

converting, by at least one said interprogram data communication assist program allocated to at least one of said plurality of processor units to each of which at least one of said plurality of execution programs has been allocated, one group of data which has been produced by one of said plurality of execution programs as allocated to one of said plurality processor units into other group of data used by at least other one of said plurality of execution programs as allocated to one of said plurality processor units; and

transferring by at least one said interprogram data communication assist program allocated to at least one of said plurality of processor units to each of which at least one of said plurality of execution programs has been allocated, said data obtained by said converting step to said other execution program;

wherein said converting step is executed based on data relationship judged by said judging step between the one group of data produced by said one execution program and other group of data used by said other execution program.

43. A method of assisting execution of a plurality of simulation programs for coupled simulation, wherein each simulation program is programmed so as to produce values of at least one physical quantity, defined on a base which belongs to a simulation target region, said method comprises a plurality of steps executed by a computer system which includes a plurality of processor units, said method including the steps of:

allocating each of said plurality of simulation programs to at least one of said plurality of processor units selected for said each simulation program, including the substeps of:

determining an order of allocation of said simulation programs to said plurality of processor units, based on resource consumption quantities of said plurality of simulation programs so that a simulation program with larger resource consumption quantity is allocated earlier,

sequentially allocating each of said plurality of simulation programs to a respective one of said plurality of processor units according to said determined order to allocation,

selecting one of said plurality of processor units, based upon a resource consumption quantity of one of said plurality of simulation programs to be allocated next and resource reserve powers of said plurality of processor units;

allocating an interprogram data communication assist program to each of a plurality of processor units to each of which at least one of said plurality of simulation programs has been allocated;

activating each of said plurality of simulation programs as allocated to one of said plurality of processor units and said interprogram data communication assist program allocated to each of said plurality of processor units to each of which at least one of said plurality of simulation programs has been allocated;

receiving by at least one said interprogram data communication assist program allocated to at least one of said plurality of processor units to each of which at least one of said plurality of simulation programs has been allocated, from each simulation program as allocated to one of said plurality processor units, base information related to a base which said each simulation program as allocated to one of said plurality processor units uses;

judging by at least one said interprogram data communication assist program as allocated to one of said plurality of processor units to each of which at least one of said plurality of simulation programs has been allocated, positional relationship between the base of each simulation program as allocated to one of said plurality processor units and a base of other one of said plurality of simulation programs as allocated to one of said plurality processor units, based on said base information received from each of said plurality of simulation programs each as allocated to one of said plurality processor units;

converting by at least one said interprogram data communication assist program allocated to at least one of said plurality of processor units to each of which at least one of said plurality of simulation programs has been allocated, operation result data produced by one of said plurality of simulation programs as allocated to one of said plurality processor units and defined on a base of said one simulation program as allocated to one of said plurality processor units into data defined on a base of at least other one of said plurality of simulation programs which uses the operation result data and is allocated to one of said plurality processor units; and

transferring by at least one said interprogram data communication assist program allocated to at least one of said plurality of processor units to each of which at least one of said plurality of simulation programs has been allocated, said data obtained by said converting step to said other simulation program which uses said operation result data and is allocated to one of said plurality processor units;

wherein said converting step is executed based on positional relationship judged by said judging step between the base of said one simulation program which has produced said operation result data and the base of said other simulation program which uses said operation result data.


Description

BACKGROUND OF THE INVENTION

The present invention relates to a method of assisting execution of a plurality of numerical simulation programs for simulating physical phenomena on a computer so that the programs are executed in cooperation with each other.

Recently, a parallel computer system has become commercially available in which a plurality of processing units (hereinafter also referred to as PUs) are interconnected by way of a high-speed network to be operated simultaneously for enhanced throughput. A region to be simulated is appropriately divided into partial regions, in such a way that each PU has one partial region assigned, thereby effectively exploiting the most of the high processing speed of the parallel computer system.

Parallel computer systems are largely classified into two groups by the method of accessing the memory space from each PU. One group is of shared memory type in which all PUs can access the entire memory space. The other group is of distributed memory type in which each PU can access only a memory space accompanied therewith. Since numerical simulation aims principally at solving large-scale problems by raising computational speeds, use of a parallel computer system of a distributed-memory type is under study.

In a parallel computer system in which a region to be simulated is divided into plural portions and those portions are allocated to a plurality of Pus, exchange of data between the PUs is required during simulation. The data to be exchanged includes results of computation of a physical quantity and the like. For example, a computed value of a physical quantity at a grid point located on the border of a partial region is used for computing a value of the physical quantity at a grid point near the boundary in an adjacent partial region. With a distributed-memory parallel computer system, transfer of data between the PUs must all be described in a program. Data is transferred between the PUs in terms of a message. A program for a parallel computer system must explicitly describe an instruction such that data generated by own PU is transmitted to another PU on generation of the data, in case the data is one required by the another PU, and data held by another PU is received by own PU at a timing when own PU actually uses the data, in case the data is one required by own PU. Many parallel computer systems prepare a group of functions each called a communications library (or subroutines) for supporting the transfer of messages between the PUs. The communication can be described as a function call from C or FORTRAN programs for example. Several communications libraries are implemented across different parallel computer system hardware to provide communications environment as de facto standard. Examples are the PVM (Parallel Virtual Machine) developed by Oak Ridge National Laboratory of US and the MPI (Message Passing Interface) that is under standardization involving many organizations. The parallel programs with calls to these communications libraries are high in possibility (portability) that they can be recompiled on different parallel computer systems for operation.

In executing a simulation program by a plurality of PUs, a plurality of processes for performing simulation of partial regions are executed by the plurality of PUs. In the PVM, a process being executed on each PU is provided with process identification data (PID) that is unique in the PVM. Each of messages transferred between PUs is composed of main data, the PID, and a message ID (MID) that the user can assign to the message. Therefore, creating parallel programs each of which executes communication based on the PID and MID determined appropriately by the user enables transfer messages between PUs without interference.

A communications library such as the PVM can be implemented on a plurality of workstations interconnected by a network, in addition to parallel computer systems, thereby providing a virtual parallel computer system environment. In operating communications libraries on multiple, different hardware systems, internal data representation may differ from one hardware system to another. That is, if a plurality of workstations interconnected by a network use different central processing units (CPUs) and operating systems (OSs), data types such as integer number and real number in a same program may differ in internal bit representation between the workstations. Therefore, to allow the user of a communications library to make communication without being aware of the details of data representation, the communications libraries such as the PVM provide a capability of automatically converting data representations inside the libraries as required. Providing a PVM process with an appropriate data converting capability allows a message coming from a user process to be converted appropriately and the resultant message to be sent to a destination process. In such a constitution, the differences between OSs and between CPUs are absorbed by the PVM processes, so the user programs are highly independent of the OSs and CPUs.

It should be noted that, when a simulation region of one simulation program is divided into partial simulation regions and simulation processings for them are executed by a plurality of processors concurrently, the mesh density of each partial region may differ from that of an adjacent partial region. According to Japanese Laid-Open Patent Publication No. 4-336369, a technology is disclosed which reflect physical quantities calculated at discrete points on the boundary between of a partial region onto the simulation of an adjacent partial region. That is, a circuit is provided for converting the calculated physical quantities to values at the discrete points on the boundary, belonging to the adjacent partial region and data obtained by this circuit is transferred to an adjacent processor. Actually, the number of boundaries and contour data are entered from both input and output units to create a conversion matrix by the arithmetic unit and the above-mentioned conversion is performed based on the conversion matrix.

Numerical simulation aims at obtaining the distribution of a physical quantity concerned. Numerical simulation is largely divided into two groups by method of representation physical quantity. One is simulations of continuous system and the other is simulations of particle system.

In continuous-system simulation, a physical quantity to be obtained is expressed by f and a space is expressed by a coordinate (x, y) (or (x, y, z) for a three-dimensional space) and the problem comes to solve an equation that f(x, y) satisfies. For example, Maxwell's equations for electromagnetic field description and Navier-Stokes equations for fluid field description are known as the equations of this type. Normally, these equations take a form of partial differential equation; therefore, except for very simple cases, no solution can be obtained analytically. Consequently, an approximate solution is numerically obtained for each problem by means of a computer. To numerically express the distribution of f(x, y) in the computer, a concept of functional discretization is introduced. Discretization denotes an operation for approximately representing, in the finite number of numerical values, an originally continuous function.

An example of the mesh is one obtained by dividing the (x, y) space by a plurality of straight lines orthogonally intersecting each other into a grid. This grid is also referred to as an orthogonal grid. In this case, grid lines are straight lines and intersecting each other orthogonally. In a more general situation, the grid lines may be curved. A technique for obtaining the value of physical quantity at the grid lines in the mesh is referred to as finite differential method.

In another mesh example, a mesh has an arbitrary shape composed of a trilateral or a quadrilateral. This type is called an unstructured grid. A typical technique for obtaining the value of physical quantity in a region divided into an unstructured grid includes finite element method. In this method, a grid point is referred to as a node and a trilateral or a quadrilateral is referred to as an element.

A special example of continuous-system simulation is also known in which, instead of using a mesh, f is expressed as a linear combination of known simple functions (for example, triangular functions). In this case, a discrete value corresponding to the function value at a mesh point is considered as a value of a coefficient for each function.

The grid points of a structured grid or an unstructured grid are positions where physical quantities are calculated, and are generally referred to as discrete points. A set of discrete points is referred to as a base or a simulation base. A set of grid points to which the simulation by finite differential method or finite element method is applied is sometimes referred to as a differential base or a finite element base. If one simulation program is executed on a parallel computer system as a plurality of simulation processes that handle different partial simulation regions, a group of discrete points belonging to each partial simulation region handled by each simulation process is referred to as the base of that simulation process.

In a particle-system simulation, a physical quantity is represented as motions of particles distributed in space. Each particle may correspond to a physical entity such as an atom in a materials simulation or a star in an astronomical simulation, and a problem to be used is described by use of the first principle of physics such as equation of motion. To save computational time, a technique is sometimes used in which a group of particles are represented by a single virtual particle. The position of each particle is described by coordinates (x(t),y(t),z(t)) and their time differentials with time t being an independent variable. Therefore, an equation to be mainly solved by a particle-system simulation is an ordinary differential equation. In this case too, it is difficult to obtain an analytical solution for a system having particles more than several particles; solving a problem having a realistic scale requires to resort to a numerical solving method assisted by a computer. It should be noted that in the particle-system simulation, a set of particles provides the base of simulation.

A continuous-system simulation and a particle-system simulation may be considered that both represent the same physical phenomenon in terms of different scales. While the particle-system simulation pays attention to a microscopic motion of each component of a physical phenomenon, the continuos-system simulation grasps the same phenomenon more macroscopically to understand to a statistical behavior. The same physical phenomenon can sometimes be solved by both methods. Often, however, these two methods are used complementarily according to the size and scale of problems to be handled.

To correctly analyze a physical phenomenon which is complex and industrially interesting, it is desired to perform coupled simulation such as simulation that considers a coupling effect of a plurality of physical phenomena occurring concurrently or simulation that combines different paradigms such as the particle system and the continuous system. For example, in designing a fluid related machine, it is possible that an analysis of a flow pattern of fluid by particle-system simulation and an analysis of vibration caused by the flow pattern by continuous-system simulation be performed simultaneously.

Conventionally, when it becomes necessary to analyze a plurality of physical phenomena or combine different simulation techniques, one of the following approaches has been selected.

(1) A plurality of user programs corresponding to respective simulation are obtained, rewritten and integrated into a coupled simulation program.

(2) Two simulation programs are executed alternately to exchange data between the programs without integrating them into one program.

If the two simulation programs are no t integrated, it is necessary to send a computational result data by one program to another program for a partial region at which simulation regions of these programs overlap. In an actual known method, the output of one simulation program is once stored in a file or the like and the format of the stored data is converted to the input format of the other simulation program as required. These operations are repeated to attain the same effect as that of coupled simulation.

If the simulation programs A and B are executed separately without integrating them into one program, data obtained as a result of the execution of the simulation program A cannot be reading used by the simulation program B because these programs have different bases. That is, the result data of the simulation program A are data defined on the base of the program A. So the data needs to be converted to one defined on the base of the simulation program B. This data conversion is executed based on a positional relationship between the coordinates of a group of discrete points constituting the base of the other simulation program and the coordinates of a group of discrete points constituting the base of own simulation program.

SUMMARY OF THE INVENTION

However, integration of the simulation programs as described in (1) above is very costly in terms of time and effort even when a conventional single computer is concerned. The program for a parallel computer system is much more complicated than those for the conventional single machine, so application of this approach to the parallel computer system may become prohibitively difficult.

On the other hand, coupling the input and the output of the programs by way of a file as described in (2) above is made possible by establishing a standard format for such files. However, in a numerical simulation performed on a parallel computer system, solutions are often held in the PUs in a distributed manner. Storing the solutions in the file every time a simulation program under execution by each node is changed and then reallocating the stored solutions will reduce the simulation efficiency. Especially, when obtaining a convergence solution by repeatedly calling a plurality of simulation programs for example, the coupling of the input and output and the reallocation present a serious bottleneck.

Further, as described before, if the simulation programs A and B are executed separately without integrating them into one program, the computational result data of one program must be converted to the data defined on the base of the other program. This requires the user to rewrite the simulation program used separately so far such that the data conversion can be performed by use of the base information of both programs. This data conversion depends on combinations of the types of the simulations by the two simulation programs to be used for coupled simulation. For example, the combinations may be two of the simulation of finite differential method, the simulation by finite element method, and the particle-system simulation. Therefore, the program must be rewritten for each of the other simulation programs to be used for coupled simulation. This problem of the data conversion occurs regardless whether the simulation programs are executed on one computer or on a plurality of computers.

Another problem that is encountered when a plurality of simulation programs are executed without being integrated into one program is a speed at which data are exchanged between the programs. To increase the speed of data exchange, it is desired that these programs be executed on a plurality of computers in parallel, and the data generated by one simulation program be passed to the other simulation programs by way of communication.

A communications library such as PVM for use in parallel computer system has been useful in describing messages transfer between the PUs in a parallel program easily and with good portability. However, such a communications library is not so sophisticated enough to support a complicated program for coupled simulation. Consequently, even assisted by the communications library, the user still must create programs for coupled simulation with much more time and effort than those for conventional computers.

That is, when executing a plurality of simulation programs on a plurality of computers as simulation processes, a send request or a receive request must be described in the simulation process executed to each other simulation process executed on the other PUs, even if the PVM is used. These communication requests need to specify the process ID specified for each destination process and the message ID specified by the user. Therefore, as the number of destination processes increases, the number of communication requests to be described in the simulation process increases, thereby increasing user's burden. And, since the destination processes differ depending on the region to be simulated, the physical equation governing the physical quantity to be calculated, and the simulation technique used, the user needs to rewrite the program for each simulation to be performed.

This problem of specifying communication destination processes is extremely difficult to overcome when executing each of a plurality of simulation programs by a plurality of simulation processes in cooperation with each other on a parallel computer system. To be more specific, the user must determine which of the simulation processes of the simulation program A exchanges data with which of the simulation processes of the simulation program B. Generally, it is required to determine a desired destination process by detecting an overlap of a partial simulation region of each simulation process of one simulation program and a partial simulation region of a particular simulation process in the other simulation program. This overlap, however, depends on the mutual positional relationship between the regions to be simulated by the simulation programs A and B. This significantly increases the time and effort for rewriting the program to determine the communication destinations.

Another problem that is encountered when executing a plurality of simulation programs on different computers is the security of computational result data obtained from execution of simulation programs on processors interconnected by an open network.

Still another problem that is encountered when executing a plurality of simulation programs on different computers by loading the plurality of simulation programs in the plurality of processors is selection of the computers in which the programs are loaded in order to enhance the program execution efficiency.

It will be apparent that the above-mentioned problems are encountered not only when modifying existing simulation programs to execute a coupled simulation but also when newly creating a plurality of simulation programs for executing a coupled simulation.

It is therefore an object of the present invention to provide a method of assisting execution of a plurality of simulation programs which enables concurrent execution thereof without much modifying the programs as compared with the case in which they are executed separately.

A more specific object of the present invention is to provide a method of assisting execution of a plurality of simulation programs which enables concurrent execution thereof on different computers even if each of the programs has no data conversion procedure for compensating the difference between the bases of the programs.

Another more specific object of the present invention is to provide a method of assisting execution of plural simulation programs which does not require separate designation of the destination simulation processes to which data resulted from the execution of each simulation process is to be transmitted, when executing the simulation programs on plural computers as plural processes.

It is a different object of the present invention to provide a method of maintaining security for the data resulted from simulation, suitable for the case in which a plurality of simulation programs are executed on a plurality of processes interconnected by an open network.

It is a still different object of the present invention to provide a method of program loading for enhancing the program execution efficiency when loading a plurality of simulation programs in a plurality of processors.

In a preferred mode of operation of the method of assisting execution of simulation programs according to the present invention, an interprogram data communication assist program (or process) is activated for a plurality of simulation programs (or processes). The data conversion program (or process) converts data produced by one of the plurality of simulation programs (or processes) to data for at least another of the plurality of simulation programs (or processes) that uses the data and defined on the base of that another program (or a process). The assist program (or process) transfers the data obtained by the converting to the other simulation program (or process).

The assist program (or process) receives base information related to a base used by each simulation program (or process) therefrom beforehand. It judges a positional relationship between the base of each simulation program (or process) and the base of other simulation program (or process), based on the base information received from them. The above-mentioned data conversion step is executed depending on the judged positional relationship between the base of the one simulation program (or process) and the base of that other simulation program (or process).

In another preferred mode of operation of the method of assisting execution of simulation programs according to the present invention, the assist program (or process) detects a destination program (or process) which will use operation result data which will be produced by one of the simulation programs (or processes). When operation result data has been produced by the one simulation program (or process), the assist program (or process) transfers the data to the destination program (or process), without receiving designation of the destination program (or process) from the one simulation program (or process). The detecting is done based upon base information which the assist program (or process) receives from each simulation program (or process) and relates to a base which each simulation program (or process) uses.

Further, in the present invention, for security of simulation resultant data, the operation result data produced by one of a plurality of simulation processes are encrypted by one data conversion process provided in correspondence to the one simulation process. The encrypted data is transferred to another data conversion process provided in correspondence to another simulation process. The encrypted data are decrypted by the another data conversion process, and the decrypted data are transferred to that another simulation process.

Still further, in the present invention, in order to enhance the efficiency of executing simulation programs on processors, the processors into which the simulation programs are to be loaded are selected based on quantities of various resources consumed by the simulation programs and based on quantities of resources held by the processors.

The above and other objects, features and advantages of the present invention will become more apparent from the accompanying drawings, in which like reference numerals are used to identify the same or similar parts in several views.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is an overall block diagram illustrating a parallel computer system loaded with a plurality of simulation programs to which the method of assisting simulation program execution of the present invention is applied:

FIG. 2 is a block diagram of a parallel computer system for executing the simulation programs to which the present invention is applied;

FIG. 3A is a diagram illustrating examples of a rectangular grid and a non-rectangular grid used by two simulation programs;

FIG. 3B is a diagram illustrating a plurality of partial regions obtained by dividing the region of FIG. 3A into the partial regions for use by the two simulation programs;

FIG. 4 is an overall flowchart describing the processing in the system of FIG. 1:

FIG. 5 is a flowchart of the simulation program used in the apparatus of FIG. 1;

FIG. 6A is a diagram illustrating the argument (meshtype) of function call to the data conversion library;

FIG. 6B is a diagram illustrating the argument (meshcount) of function call to the data conversion library;

FIG. 6C is a diagram illustrating the argument (meshmodes) of function call to the data conversion library;

FIG. 6D is a diagram illustrating the argument (meshdata) of function call to the data conversion library;

FIG. 6E is a diagram illustrating the argument (meshtopol) of function call to the data conversion library;

FIG. 7A is a diagram illustrating the basic structure of a message transferred between the data conversion process and the data conversion library;

FIG. 7B is a diagram illustrating the structure of an initialization request message transferred between the data conversion process and the data conversion library;

FIG. 7C is a diagram illustrating the structure of a data registration request message transferred between the data conversion process and the data conversion library;

FIG. 7D is a diagram illustrating the structure of another data registration request message transferred between the data conversion process and the data conversion library;

FIG. 7E is a diagram illustrating the structure of further another data registration request message transferred between the data conversion process and the data conversion library;

FIG. 7F is a diagram illustrating the structure of still further another data registration request message transferred between the data conversion process and the data conversion library;

FIG. 7G is a diagram illustrating the structure of yet further another data registration request message transferred between the data conversion process and the data conversion library;

FIG. 7H is a diagram illustrating the structure of a registration cancel request message transferred between the data conversion process and the data conversion library;

FIG. 7I is a diagram illustrating the basic structure of a data send request message transferred between the data conversion process and the data conversion library;

FIG. 7J is a diagram illustrating the structure of a data receive request message transferred between the data conversion process and the data conversion library;

FIG. 7K is a diagram illustrating the structure of a data receive response message transferred between the data conversion process and the data conversion library;

FIG. 7L is a diagram illustrating the structure of a disconnect request message transferred between the data conversion process and the data conversion library;

FIG. 8 shows an example of a configuration file;

FIG. 9 is a flowchart of an activation process;

FIG. 10 is a flowchart of the communication path establishment processing in the data conversion process;

FIG. 11 is a flowchart of data conversion processing in the data conversion process;

FIG. 12 is a flowchart of base information storage processing of FIG. 11;

FIG. 13 is a flowchart of fem data read processing of FIG. 12;

FIG. 14 is a flowchart describing communication destination determining processing of FIG. 11;

FIG. 15 is a flowchart of overlap table creation processing of FIG. 14;

FIG. 16 is a flowchart of fem-to-fdm coordinate conversion of FIG. 15;

FIG. 17 is a diagram illustrating examples of a finite element base and a finite differential base to which the conversion of FIG. 16 is applied;

FIG. 18 is a diagram illustrating an example of an overlap table obtained by the conversion of FIG. 16;

FIG. 19 is a flowchart of fdm-to-fem coordinate conversion of FIG. 15;

FIG. 20 is a diagram illustrating an example of an overlap table obtained by the conversion of FIG. 19;

FIG. 21 is a flowchart of particle-to-fdm coordinate conversion of FIG. 15;

FIG. 22 is a diagram for describing a particle base and a finite element base to which the conversion of FIG. 21 is applied;

FIG. 23 is a diagram illustrating an example of an overlap table obtained by the conversion of FIG. 21;

FIG. 24 is a diagram illustrating tables generated by the data conversion process;

FIG. 25 is a flowchart of the receive processing in data conversion process;

FIG. 26 is a flowchart of the data conversion processing in data conversion process;

FIG. 27A is a diagram illustrating two adjacent bases;

FIG. 27B is a diagram illustrating one of the two bases of FIG. 27A;

FIG. 27C is a diagram illustrating the other of the two bases of FIG. 27A;

FIG. 28 is a diagram illustrating a screen for setting encryption conditions for use in the second embodiment of the present invention;

FIG. 29 is a diagram illustrating a screen for setting data attributes and a encryption range for use in the second embodiment of the present invention;

FIG. 30 is a block diagram illustrating a computer system for use in the third embodiment of the present invention;

FIG. 31 is a flowchart of an overall processing procedure adopted in the system of FIG. 30;

FIG. 32A is a diagram illustrating resource quantities of PUs;

FIG. 32B is a diagram illustrating a network resource quantities;

FIG. 32C is a diagram illustrating a constitution of the program resource database;

FIG. 33 is a diagram illustrating a constitution of a time-series usage status database for use in the system of FIG. 30;

FIG. 34A is a diagram illustrating examples of numeric values of resource quantities of various resources held by processor units of the system of FIG. 30;

FIG. 34B is a diagram illustrating an example of numerical values of network resource quantities held by processor units of the system of FIG. 30;

FIG. 34C is a diagram illustrating examples of resource quantities and numerical values thereof requested by a plurality of simulation programs to be loaded in the system of FIG. 30;

FIG. 35 is a flowchart of the program allocation processing of FIG. 31;

FIG. 36 is a diagram illustrating an example of numerical values of usage status at the program loading, held by the processor units of FIG. 30;

FIG. 37 is a diagram illustrating an example of numerical values of resource quantities at program loading, held by the processor units of the system of FIG. 30;

FIG. 38 is a flowchart of program allocation priority determining processing of FIG. 35;

FIG. 39A is a diagram illustrating a structure of an allocation queue for use by the processing of FIG. 38;

FIG. 39B is a diagram illustrating the allocation priority determined by the processing of FIG. 38;

FIG. 40 is a flowchart of the element program allocation processing based on the allocation priority of FIG. 35;

FIG. 41 is a diagram illustrating an example of computer resource quantities after one element program is allocated to the processor unit in the system of FIG. 30; and

FIG. 42 is a diagram illustrating a result of the processor allocation determined by the third embodiment of the present invention.

DETAILED DESCRIPTION OF EMBODIMENTS

The present invention will be described in further detail by way of several embodiments with reference to the accompanying drawings. It should be noted that, in the following description, the same reference numerals denote the same or similar elements. It should also be noted that the second and subsequent embodiments will be described mainly in the differences from the first embodiment.

The first embodiment

(1) Overview of the apparatus and operations

A simulation program according to the present invention is executed on a parallel computer system 3201 as shown in FIG. 2 for example. The parallel computer system 3201 is composed of a plurality of processing units (PUs) 801 through 809 and a network 820 interconnecting the PUs. The parallel computer system can have any number of PUs. In this example, nine PUs are used. In the figure, the network 82 is depicted in a grid manner; however, the network can take any topology if communication between two PUs is assured as long as the present embodiment is concerned. However, it is desirable from the viewpoint of simulation execution time that the network 820 be a high-speed network that allows parallel transfer of a plurality of messages such as the hyper crossbar network. Each of the PUs mainly has a CPU (Central Processing Unit) 3203, a memory 3205, and a disk 3204, thereby constituting the parallel computer system of distributed memory type. The parallel computer system 3201 is externally attached with a console 3202 at which commands and the like are entered in the parallel computer system.

A simulation process of the user and a data conversion process and data conversion library characteristic to the present embodiment are stored in the disk 3204. These software components are loaded when a command is entered by the user at the console into the memory of each PU for execution by each CPU.

Referring to FIG. 1, there are shown, by way of example, programs to be executed by the present embodiment. In the present embodiment, it is assumed that two simulation programs A and B be executed to execute simulations A and B in a coupled manner. The simulations A and B are finite differential simulation and finite element simulation for example. Each of the simulation programs A and B is executed as a plurality of simulation processes. For example, the simulation program A is executed as six simulation processes A (605) loaded in the PU 801 through PU 806, while the simulation program B is executed as three simulation processes A (606) loaded in the PU 807 through PU 809. Each PU is loaded with a data conversion process 603 or 604 characteristic to the present embodiment in correspondence with the simulation process A or B loaded in that PU in order to assist in data exchange between these simulation processes. The simulation process A or B is created by the user from the simulation program A or B through compilation and linking. At the time of linking, the simulation process is linked with the data conversion library 607 or 608 into an executable form. At the time of execution, the executable process is loaded in a PU for execution. These data conversion libraries relay data or requests to be passed between the simulation process linked to the library and the data conversion process corresponding to that simulation process.

The data conversion process and the data conversion library for use as mentioned above are prepared on a storage medium such as a magnetic disc device or a magnetic tape as the following files: the data conversion process of an execute form, an archive file (one already compiled and of a form to be linked to a simulation program) and a header file for the data conversion library (one including accumulation of declaration of types of variables and definition of constants used in the library). These files are copied to the disc 3204 mentioned above.

Also, at the time of execution, the data conversion processes 603 and 604 are activated in advance (as demons, for example). When the simulation process 605 or 606 of each PU gets started for execution, the data conversion library 607 or 608 links the simulation process 605 or 606 with the data conversion process 603 or 604 through a software communication path. Further, the two data conversion processes 603 and 604 are coupled with each other through a software communication path. The two simulation processes 605 and 606 belonging to the different simulation programs transfer data with the data conversion libraries 607 and 608 by way of the data conversion processes 603 and 604.

It should be noted that the above-mentioned communication by way of the data conversion processes is performed for data transfer between the simulation processes belonging to the different simulation programs. Data exchanged between the simulation processes belonging to the same simulation program A (or B) is performed by use of the PVM (Parallel Virtual Machine) or the like as with the prior-art technology. In the present embodiment, the description of the structure and operation of the program portion associated with that data exchange will be omitted.

The data conversion processes 603 and 604 provide a capability of automatically determining a data destination and converting data at the time of data communication between the simulation processes 605 and 606. The data conversion herein denotes an operation in which data calculated by one simulation program and defined on the base of that simulation program are converted to data defined on the base of the other simulation program. For example, a solution obtained on the base of finite element method is mapped one defined on the base of finite differential method. To do so, information about the base to be used by each simulation process 605 or 606 is entered in the corresponding data conversion process 603 or 604 in advance, which will be described in detail later on. Each data conversion process 603 or 604 incorporates a plurality of conversion rules for combinations of different simulation bases. At initialization of each data conversion process, the simulation process 605 of the PU 801 through PU 806 and the simulation process 606 of the PU 807 through PU 809 communicate base-related information with each other. They determine which of the incorporated conversion rules is to be used for later exchange of data between the simulation process 605 on each of the PUs 801-806 and the simulation process 606 on each of the PUs 807-809. This conversion rule is determined for a pair of a sending simulation process and a receiving simulation process. In the present embodiment, the data conversion process that receives the data applies the conversion rule to the received data for data conversion. To be specific, when the data conversion process 603 (or 604) on a PU receives from the corresponding simulation process 605 (or 606) on the sending side, operation resultant data defined on the base of that simulation process, the data conversion process transfers the received data to the data conversion process 604 (or 603) corresponding to the simulation process 606 (or 605) on the receiving side. The data conversion process 604 (or 603) converts the transferred operation resultant data to the data defined on the base of the receiving simulation process 606 (or 605) by the conversion rule determined above for the data transferred from the simulation process 605 to the simulation process 606. The result of the conversion is sent to the receiving simulation process 606 (or 605). Since this data conversion capability is incorporated in each data conversion process, no program portion for the data conversion need be incorporated in each simulation process. And, since the data conversion process has the plurality of conversion rules, the above-mentioned conversion is applicable to any combinations of different simulation programs without change.

Determination of a communication destination by the data conversion process 851 is outlined as follows. FIG. 3A shows an example of the bases to be used by the simulation programs based on finite element method and finite differential method which are executed concurrently. A grid-like mesh 901 is the base for the finite differential simulation program, while a circular mesh 902 is the base for the finite element simulation program. A coupled simulation is made possible by alternately solving problems while exchanging data for the overlapped region by use of these plural bases.

Such a coupled simulation is especially effective for analyzing an air flow around an obstacle for example. Solving the region having turbulence in air flow in the vicinity of an obstacle by the finite element method has high shape adaptability. Solving the wide region away from the obstacle by the finite differential method has a high processing speed. Execution of these solving will provide high simulation accuracy, while decreasing the amount of the computation necessary for the simulation. When executing these two types of simulations on the parallel computer system, the bases of these simulations are spatially divided and allocated to the PUs. This spatial division is determined by the user in the simulation programs or in the data to be given to the simulation programs before simulation.

In the example of the parallel computer system of FIG. 1, the simulation process based on the finite differential method is executed by each of six PUs while the simulation process based on the finite element method is executed by each of three PUs. Each of the bases is spatially divided into the portions indicated by dotted lines as shown in FIG. 3B for example. In what follows, it is assumed for the purpose of description that a region 911 be allocated to the PU 804 of FIG. 1, a region 912 to the PU 807, and a region 913 to the PU 805. To register a base from a simulation process into the data conversion process, the portion dealt with by the process concerned may only be registered among the spatially divided base portions. Accepting the registration, the data conversion process 603 or 604 on each PU exchanges information about the base with the data conversion process 604 or 603 belonging to the simulation program different from the simulation program to which the process 603 or 604 belongs. It searches for data conversion processes to communicate with. Information related to base is generally referred to herein as base information. In the present embodiment, for specific base information, base coordinates range information and base constituting grid point information are exchanged between the data conversion processes, which will be described later in detail. It should be noted that these two specific pieces of information related to base may also be referred to as base information. Now, in the present embodiment, the data conversion process 604 on the PU 807 in charge of the region 912 inquires the data conversion process on the PUs 801 through 806 on which the other simulation process is being executed as to whether the region to be calculated by that other simulation process is overlapping the region of own process. Consequently, the data conversion process 604 receives an acknowledgment from the data conversion processes 603 on the PUs 804 and 805 in charge of the regions 911 and 913 respectively to recognize the data conversion processes thereof as the destinations of communication from now on. Thus, the overlapping between the simulation region of each simulation process and the simulation region of another simulation process is determined by the data conversion process corresponding to each simulation process in cooperation with another data conversion process. Based on the result of the determination, each data conversion process determines a simulation process to which the resultant data calculated by the simulation process corresponding to each data conversion process is to be transmitted. Therefore, each simulation process need not include the program portion for determining the destination simulation processes. Namely, each simulation process may only include a send request which specifies a destination simulation program.

In FIG. 1, only one simulation process is allocated to each PU. It will be apparent that a plurality of simulation processes may also be allocated to each PU. For example, when the simulations A and B are executed alternately, a pair of the simulation process A and a data conversion process for that process A and another pair of the simulation process B and a data conversion process for that process B may be loaded on one PU for an enhanced PU usage ratio. This change of process mapping to the PUs can be easily implemented by use of a program loading capability of the operating system (OS) of the parallel computer system or by user's writing a simple shell script (that is, a file which lists commands).

(2) Overall Processing Plow

Referring to FIG. 4, there is shown a flow of the processing to be performed by the user in operating the system of FIG. 1. First, the user generates a base (or mesh) in a simulation target region of each simulation program and determines a partial region within the simulation region to be allocated to each parallel process (step 3301). Then, the user generates a plurality of simulation programs for use in the system of FIG. 1. In each simulation program, a call statement for a data conversion library is inserted in a portion where data transfer with another simulation program is required. The resultant simulation program is compiled, the complied program is linked with the data conversion library and as a result a file of an execute form is generated (step 3302). Next, the user creates a configuration file for specifying on which processor the data conversion process is to be activated (step 3303) and activates the data conversion process by use of the created activation process (step 3304). Steps 3303 and 3304 may be performed by the system administrator in advance instead of the user. Lastly, the simulation program created in step 3302 is activated to execute simulation, a result is obtained (step 3305). In what follows, the above-mentioned operations will be described in detail.

(3) Structure of Simulation Programs

Because the simulation program A or B is written as one of a so-called SPMD type in which the same program is executed on all PUs, the user may only create the simulation programs A and B. In each program, the user inserts a call statement for function-calling a data conversion library at a portion where data transfer with the other program is required.

FIG. 5 shows an outline of the simulation program written by the user in order to use the present embodiment. First, at the beginning of the simulation program, a call statement is issued for initializing the data conversion process (step 711). Then, the simulation base (or mesh) created beforehand is read from the file (step 712). In some applications, the simulation base may be created internally, rather than being read from the file. Next, a call statement is inserted for registering the simulation base read from the file (or created internally) into the data conversion process (step 701). The simulation base to be registered is determined before simulation by the user in the program or the data to be read from the program.

If the simulation program is constituted in such a way that the simulation base is changed during computation, for example, if a moving mesh which is a mesh whose position changes in time is used, the simulation program is constituted such that the call statement is repeatedly called every time meshes are changed. Thus, if meshes are changed during execution of the simulation program, destinations of computation defect data of that simulation program may change. In the present embodiment, however, the data conversion process determines a new destination every time mesh change occurs, thereby making it unnecessary for the simulation program to have a special program portion other than the portion for these three calls.

Next, the main portion of the simulation is described. In coupled simulation, this portion provides an iterative loop (step 705). In the loop, a result of the previous computation (or an initial value for the first iteration) is sent to the other simulation processes (step 702), the main simulation portion of the own process is executed in the conventional method (step 703), and results of execution of other simulation processes are received (step 704). The data transfer in step 702 or 704 is performed by a call statement to the data conversion library. These operations are repeated until a solution is converged to obtain a final result. However, if the computation is completed before the other simulation process comes to an end, a deadlock will occur, so dummy transfer is repeated until all simulation processes come to an end (steps 706, 707, 708). Upon completion of the simulation, the data conversion library is ended (step 710).

(4) Data Conversion Libraries

The data conversion libraries 607 and 608 relay data and requests between the simulation processes to which these libraries are linked and the corresponding data conversion processes. The data conversion libraries are provided to enable the data conversion processes to be used from the simulation processes. That is, the simulation process calls a function in the data conversion library and the data conversion library sends a message corresponding to the called function to the data conversion process. Likewise, the data conversion library sends the message from the corresponding data conversion process to the simulation process. In what follows, an argument and a return value required when the library user calls a function provided by the library from own program will be explained. In the following example, a C program language is assumed; it will be apparent that generally the same interface is applicable to another procedural language such as FORTRAN. The names of functions used below are examples; therefore the user can name the functions as long as the names do not overlap with those conventionally used. A type name preceding each function name indicates a type of a return value. To be specific, "void" indicates that there is no return value. It should be noted that "char" preceding each argument indicates a character argument, "int" indicates an integer argument, and "double" indicates a double-precision real argument. An asterisk "*" denotes that a variable attached therewith is of pointer type.

(a) void dex.sub.-- initialize (char*simname)

This function initializes a data conversion library and a data conversion process. The user calls this function once at the beginning of each parallel program. If this function is called twice or more, an uncertain result will occur.

(b) void dex.sub.-- register.sub.-- quantum (char*meshtype, int*meshcount, int*meshno, double*meshdata, int*meshtopol, int*range)

This function registers a simulation base in a data conversion process. The registration is made only once. To change the registered base with another, function "dex.sub.-- unregister.sub.-- quantum" which will be explained later on must be called to clear the registration. In what follows, the meanings of the arguments and a method of giving the same will be described.

meshtype: This argument denotes a type of the base. "fdm", "fem" or "particle" is given to this argument. "fem" denotes that the base is a finite element mesh, "fdm" denotes that the base is a finite differential mesh, and "particle" denotes that the base is particle. FIG. 6A shows an example of this argument in which the base "fem" is given to this argument.

meshcount: This argument specifies an array of information about the size of a base. In the first element of the array, 1, 2, or 3 indicating the dimension of the base is assigned. In the second element of the array, the number of grid points to be handled by the simulation process calling this function is assigned if the first argument is "fdm", the number of nodes to be handled by the simulation process calling this function is assigned if the first argument is "fem", or the number of particles to be handled by the simulation process calling this function is assigned if the first argument is "particle". In the following description, the grid points when the base is "fdm", the nodes when the base is "fem", and the particles when the base is "particle" are generically called grid points for simplicity. The third element of the array is significant only when the first argument is "fem", and the number of elements to be handled by the simulation process calling this function is assigned in the third element. FIG. 6B shows an example in which the first argument is "fem".

meshnodes: This argument specifies a list of the numbers of grid points to be handled by the simulation process calling this function. FIG. 6C shows an example of this argument.

meshdata: This argument specifies an array of data indicating the coordinates of the base. A list of x-coordinate of, a list of y-coordinates of, and a list of z-coordinates list of the grid points to be handled by the simulation process calling this function are assigned in this argument in this order. If the dimension of the base is 1 or 2, the y and z coordinates or the z coordinates are not required respectively. FIG. 6D shows an example of this argument. meshtopol: This argument specifies an array of a topological order of all elements of the base when the first argument is "fem". The topological order defines which node constitutes elements of each quadrilateral or trilateral in case of a two-dimensional base (or a tetrahedron, prism, or cube in case of three-dimensional base, a line in case of one-dimensional base) of the finite element method. To be more specific, this argument includes, for each element, a set of an element number, the number of nodes constituting the element, and a list of the numbers of the nodes. FIG. 6E shows an example of this argument when the first argument is "fem".

(c) void dex.sub.-- unregister.sub.-- quantum()

This function clears the registration of a simulation base in a data conversion process. Subsequently, the function dex.sub.-- register.sub.-- quantum may be called again to register the canceled base again if required.

(d) void dex.sub.-- send (double*data)

This function sends data to a simulation process in charge of a base which is spatially overlapping the base handled by own process. The data to be sent is the data resulted from the simulation in may cases. Otherwise, the data is the initial value of an array. The meaning of the argument is as follows.

data: This argument specifies an array of data to be sent. The number of pieces of data included in the array should be equal to the number of grid points (or the number of nodes or particles) of the registered base. This array holds the data about all registered grid points in the order of grid point numbers. It should be noted that, in this function call, the simulation program need not specify separately the simulation processes belonging to one or more simulation programs to which this data is to be sent. The data conversion process determines the destination simulation processes.

(e) void dex.sub.-- receive (double*data)

This function receives data sent from other simulation processes. This function performs a blocking operation and no return is made from this function until necessary data have all come. The meaning of the argument is as follows.

data: This argument specifies an array of data to be received. The number of pieces of data to be received is equal to the total number of grid points (or nodes or particles) of the registered base, so it is necessary for the array to be of a size sufficient for storing the total number of grid points.

(f) void dex.sub.-- exit (char*simname)

This function disconnects the communication path with the data conversion process.

In what follows, a method of implementing the data conversion libraries 607 and 608 will be described. These libraries are mainly intended for relaying information between a corresponding simulation process and a corresponding data conversion process. To be more specific, the data conversion library responds to a function call issued by the corresponding simulation process and sends the corresponding data conversion library a message corresponding to the function call. Most of the processing requested by the function call is performed by the corresponding data conversion process, which will be described later. The message transfer between the simulation process and the data conversion process is performed by use of a particular bit pattern (or a protocol). There is no limitation in implementing the protocol. In the present embodiment, however, the protocol is composed of a one-byte header, a succeeding message body having undefined length, and a further succeeding one-byte trailer indicating the end of this message. FIG. 7A shows a general form (10) of this protocol. Specific message generated by the data conversion library are the following.

(a) void dex.sub.-- initialize(char*simname)

This function establishes connection to a data conversion process and initializes the same. In the present embodiment, as means for transferring data between processes, communication by sockets (TCP/IP) is used. The procedure for establishing connection is based on the ordinary communication by socket. Namely, the data conversion process has been already activated at the activation of the simulation process as described above. This data process is in the state for waiting for connection by an accept system call at a preset port number. This library function issues a connect system call to that port number and establishes a software communication path. Then, using the established communication path, this function sends an initialization request message to initialize the data conversion process. FIG. 7B shows an example of this message 1102. This message has only a header and trailer for indicating an initialization request and therefore has no body.

(b) void dex.sub.-- register.sub.-- quantum(char*meshtype, int*meshcount, int*meshno, double*meshdata, int*meshtopol, int*range)

This function informs the data conversion process of a request for registering data about simulation base and sends base data thereto. One data registration request message is issued for each of the five arguments, totaling five messages. Examples of the messages 1103 to 1107 are shown in FIGS. 7C through 7G. As shown, each message is composed of one of the arguments of the present library functions shown in FIGS. 6A through 6E plus a header and a trailer.

(c) void dex.sub.-- unregister.sub.-- quantum()

This function sends a message for clearing the registration of the simulation base to the data conversion process. FIG. 7H shows an example of this message 1108. As shown the message is composed of a header and a trailer for indicating the clearing of registration and therefore has no body.

(d) void dex.sub.-- send (double*data)

This function sends a data send request message to the data conversion process. FIG. 7I shows an example of this message 1109.

(e) void dex.sub.-- receive (double*data)

This function sends a data receive request message to the data conversion process and stores data included in a data receive response message returned from the data conversion process into an array pointed by argument "data". FIG. 7J shows an example of the data receive request message 1110 and FIG. 7K shows an example of the data receive response message 1111.

(f) void dex.sub.-- exit(char*simname)

This function disconnects the communication path with the data conversion process. FIG. 7L shows an example of the message 1112.

(5) Activation of Data Conversion Processes

The data conversion process 603 or 604 needs to be positioned in each PU of the parallel computer system at the time of activation as shown in FIG. 1 and all pairs of data conversion processes need to be interconnected by a software communication path. In the present embodiment, in order to meet these conditions, one process for activating the data conversion processes is set to one of the PUs, from which all data conversion processes are activated. This activation process is started by the user from the command line or is implemented so as to automatically start as a demon at activation of the parallel computer system. The activation process is set to a special PU for system control if the same is provided on the parallel computer system; if no such PU exists, the activation process is set to any of the PUs. In either case, a configuration file listing pairs of an address of a PUs to start the data conversion process therein and a path to a file execute form for the data conversion process is prepared beforehand on the activation PU. When started, the activation process reads this configuration file to perform processing. FIG. 8 shows an example of the configuration file 12. "133.144.20.21" and so on denote the addresses of the PUs. "/usr/local /bin/dataexd" and so on denote paths to files of execute form for the data conversion process stored on the disks. This example indicates that the data conversion process is activated on eight PUs. The first four differ from the last four in the path to the execute form file. The system operator or the user duplicates the execute form file beforehand on the specified path of each PU.

FIG. 9 shows a flow of the processing of the activation process 13. First, the configuration file is read to set the ID to 0 (steps 1301 and 1302). At this moment, records are counted to obtain the total number of PUs. This ID is used as the serial identification number of each data conversion process. Then, for each pair in the configuration file 12 (step 1307), the process ID is incremented (step 1303) to activate the data conversion process on the path in the pair in the PU having processor address in the pair by use of a remote shell or the like (step 1304). When activated, each data conversion process generates a socket for the activation process 12 and enters in the state for waiting for the accept system call at the predetermined port number (for example 3001). The activation process 13 establishes connection for this socket by the connect system call (step 1305). Then, by use of this communication path, the activation process notifies that data conversion process of the process ID and the total number of PUs and sends the addresses of all PUs in the configuration file 12 thereto (step 1306). As a result of this processing, the data conversion processes are activated on the PUs specified by the configuration file 12, each data conversion process having the process ID unique to the system and a copy of the addresses of all PUs for use in the simulation. Upon completion of its job, the data activation process is terminated.

The following describes with reference to FIG. 10, a flow of the processing for the data conversion processes 603 and 604 to establish connection with each other. First, in correspondence to the above-mentioned processing by the activation process 13, each data conversion process generates a socket for receiving information from the activation process 13 and waits for connection (step 1401). When connection is established, each data conversion process receives the ID of own data conversion process, the total number of PUs, and the addresses of all PUs from the activation process 13 (step 1402). Then, the data conversion process generates a socket for mutual connection for each of all PU addresses (step 1403). Subsequently, a communication path is established by way of the socket between all pairs of different ones of the PUs. It is enough to establish the communication path by only one PU to the other in each pair because the path can be used for bilateral communication. So, if the ID of the other PU is lower than the ID of own PU, the own PU is set in a state of waiting for connection request from the other PU; otherwise, a connection request is issued from own PU to the other PU (steps 1404 and 1405). Further, in preparation for connection with the simulation process on own PU, the socket for communicating with that simulation process is generated by use of the predetermined port number and the accept system call is issued by way of that socket to set the connection wait state (step 1406). By the above-mentioned processing, the data conversion process 603 or 604 on each PU is activated, establishing the communication paths between the data conversion processes on all PUs. A communication path is also established in each PU between a simulation process 605 or 606 provided on the PU and a corresponding data conversion process 603 or 604 provided on the same PU. Thus, the preparation for the connection between the data conversion process 603 or 604 and any of the simulation processes 605 and 606 is complete.

(6) Operations of Data Conversion Processes

The following describes a flow of the processing of the data conversion processes with reference to FIG.

As described above, the data conversion library issues the connect system call to the preset port number in response to the dex.sub.-- initialize library function call issued by the simulation program, so the accept system call of the data conversion process already activated catches the connect system call and establishes the communication path.

After the communication path has been established, the data conversion process 603 or 604 enters an event loop that is activated by a request message coming from the corresponding simulation process 605 or 606 by way of the corresponding data conversion library 607 or 608. Here and in the following description, the message sent by the data conversion library in response to a function call issued by the simulation process is sometimes referred to simply as a message coming from the simulation process by way of the library or as a message coming from the simulation process. The event loop is an infinite loop (step 1501), which is normally in the state for waiting for message reception (1502). Upon receiving the message, the processing branches according to the type of the message (step 1503). When branched processing comes to an end, the data conversion process returns to the message wait state. As shown in FIG. 7A, because the first one byte of the message coming from the corresponding simulation process provides the header indicating the type of that message, checking that byte allows the branching. Since there are six types of request messages coming from the corresponding simulation process, six branch destinations are prepared (steps 1504 through 1509).

The following describes the processing performed by the data conversion process upon receiving various request messages from a simulation process.

(a) Initialization Processing (step 1504)

Receiving an initialization request message 1102 from the corresponding simulation process, each data conversion process clears all internal tables (a table group 2801 of FIG. 24). In addition, each data conversion process stores a simulation name given by this request message 1102 into a variable.

(b) Base Registration Processing (step 1505)

Base registration processing comprises two portions. The first one is processing 1505A for storing the base information coming from the simulation process corresponding to the data conversion process. The second one is processing 1505B for searching for simulation processes having spatially overlapping bases with a base of the corresponding simulation process. This search is executed by matching the base information of the corresponding simulation process with that of each of the data conversion processes on other PUs, and determines the destination simulation process of communication for data send/receive operations.

First, the base information store processing 1505A will be described with reference to FIG. 12. The data conversion process reads one message from the corresponding simulation process (step 1601) to confirm that the message header is 0x02 (FIG. 7C). Depending on whether the remaining portion of the header is "fdm", "fem", or "particle", the process branches to the corresponding read processing (steps 1603 through 1605). FIG. 13 shows details of the read processing 1604. First, from the second message, the number of dimensions d, the number of nodes m and the number of elements e are obtained. Based on the results, an array having length m for storing node numbers, an array having length m for storing node coordinates, and an array for storing topological orders are captured by use of a memory allocation function such as malloc (steps 1703 through 1705). While reading the subsequent messages sequentially, the above-mentioned data are assigned into the allocated arrays (steps 1706 through 1711). This allows the copying of the necessary portion of the base information held by each simulation process into the corresponding data conversion process. This holds true with the "fdm" read processing (step 1603) and the "particle" read processing (step 1605) except that these processing operations have no processing 1705, 1710, and 1711 associated with topological order.

The following describes the processing for determining communication destinations 1505B with reference to FIG. 14. In this communication destination determining processing, each data conversion process checks for an overlap between the base to be handled by the simulation process corresponding to that data conversion process (this base may be hereinafter referred to as the base handled by the data conversion process for simplicity) and the bases handled by all other data conversion processes. As described with reference to FIG. 10, the i-th socket in the data conversion process is connected to the data conversion process of which ID is i (step 1403 of FIG. 10). In this communication destination determining processing, the base information about the base handled by each data conversion process is exchanged among all data conversion processes by use of this connection. Using the exchanged base information, each data conversion process determines data conversion processes to which the data generated by the simulation process corresponding to the data conversion process is to be sent. To be more specific, a data conversion process obtains a coordinate range of the base thereof as the information about the base to be handled by that data conversion process (step 1800). The coordinates range of the base denotes combinations of the maximum and minimum values in the coordinates of a grid point, a node, or a particle of the base. In the two dimensions, the coordinate range corresponds to a bounding box that encloses the range handled by the base. This coordinates range is used to determine the presence or absence of the overlap between the bases to be handled by two data conversion processes. In a loop 1801, paying attention to the i-th socket, the data conversion process sends its simulation name to the mate data conversion process connected to the socket and receives a simulation name of the mate data conversion process therefrom (steps 1811 and 1812). The data conversion process compares the sent simulation name with the received simulation name and, if they are found mismatching (step 1813), performs the following processing. The data conversion process sends the information about the above-mentioned base coordinates range as the base information to the mate data conversion process connected to the socket and receives the base coordinates range information coming from the mate data conversion process (steps 1802 and 1803). The data conversion process compares the received base coordinates range with the base coordinates range of that data conversion process obtained in step 1800 to determine presence or absence of an overlap between the bases and notifies the mate data conversion process of the result of the determination. Then, the data conversion process receives the determination result obtained by the mate data conversion process from the same (step 1806). If the determination results coming from the mate data conversion process indicate the presence of the overlap, the data conversion process sends to the mate data conversion process, the information about grid points constituting the base (the base constituting grid point information) as the base information about the base of that data conversion process (step 1807). If the data conversion process notifies the mate data conversion process of the presence of the overlap, then the mate returns the base constituting grid point information. Receiving this information, the data conversion process stores this information and the number of the socket to which the mate is connected into the memory of the PU on which that data conversion process is being executed (step 1808). The base constituting grid point information transferred here is the same as the information shown in FIGS. 6A through 6E. And the base data read processing and the base data storage processing are the same as the processing shown in FIGS. 13 and 12. The abovementioned series of processing operations cause each data conversion process to have, if the overlap is found between the bases, two pieces of base constituting grid point information about the two bases of the own data conversion process and the mate data conversion process as the base information. Using these two pieces of information, the data conversion process generates a table that specifies the base overlap state in detail (step 1809). Details of this processing of step 1809 will be described later. FIG. 24 schematically shows a group of tables to be generated in the data conversion process at the final stage of this processing. These tables hold the information about the bases 2802 registered from the corresponding simulation process and to be handled by the same. They also holds the socket numbers 100 corresponding to the other data conversion processes having overlapped bases one to one, the base constituting grid point information 120, and the combinations of overlap tables 2803, 2804 and so on.

The data conversion process repeats the above-mentioned processing operations for each i and holds the tables that specify the overlap states for the other data conversion processes having bases overlapping the base of that data conversion processing.

The following describes details of the constitution and creation method of overlap tables. As shown in FIG. 15, nine coordinate conversion processing operations 1905 through 1913 are prepared from combinations of the types of bases registered in one data conversion process and the types of bases received from its mate data conversion process.

In what follows, fem-to-fdm coordinate conversion 1906 will be described with reference to FIG. 16. For the following description, the bases (namely, meshes in the finite differential method and the finite element method) shown in FIG. 17 will be used. First, a data conversion process checks to see if any grid point of a finite differential base 2002 to be handled by that data conversion process is included in a finite element base 2001 to be handled by the mate data conversion process. If the grid point is found included (step 2203), the data conversion process stores in the overlap table 200 (FIG. 21), the number of the grid point, the numbers of the nodes constituting that element, and the local coordinates of the grid point in that element (steps 2204, 2205, and 2206). As shown in FIG. 18, the overlap table 200 is a table that lists combinations of a grid point number 2101, an element constituting node number (i.e., node number around the grid point) 2102, and local coordinates of the grid point in element 2103. For example, in FIG. 17, a grid point 17 exists inside an element composed of nodes 211, 212, 254, and 253 and the local coordinates of the grid point are 0.5, 0.5, so that the contents of the overlap table 200 of FIG. 18 are those shown in the first row of the table. The local coordinates 2103 are obtained as follows. Let the coordinates of the four nodes constituting the element be (ax,ay), (bx,by), (cx,cy), and (dx,dy), the coordinates of the grid point be (nx,ny), and the local coordinates be (gz,et), then the following equations are established by the definition of the interpolating function in the element of the finite element method.

ax(1+gz)(1+et)+bx(1+gz)(1-et)

+cx(1-gz)(1-et)+dx(1-gz)(1+et)=nx

ay(1+gz)(1+et)+by(1+gz)(1-et)

+cy(1-gz)(1-et)+dy(1-gz)(1+et)=ny

Because the unknown quantities are only gz and et, the values thereof can be obtained from the above-mentioned equations. If the element is trilateral or one or three dimensional, use of an appropriate intraelement interpolating function permits the similar processing.

The following describes fdm-to-fem coordinate conversion processing 1908 with reference to FIG. 19. For the bases for the description, those shown in FIG. 21 are used as with mentioned above. First, a data conversion process checks to see if any node of the finite element base 2001 to be handled by that data conversion process is included in any of quadrilaterals (hereinafter referred to as blocks) constituting the finite differential base 2002 to be handled by the mate data conversion process. If the node is found included (step 2403), the data conversion process stores in the overlap table 200 (FIG. 20), the number of the node, the number of the grid points constituting that block, and the distance from each of the grid points to the node (steps 2404, 2405, and 2406). As shown in FIG. 20, the overlap table 200 lists the node numbers 2301, the block constituting grid point numbers 2302, and the distances 2303 from the block constituting grid points to the node. For example, in FIG. 17, the node 211 exists inside the block composed of grid points 5, 17, 18 and 6 and the distances from these grid points to the node 211 are 1.2, 0.8, 1.3, and 1.5. So the contents of the first row of the overlap table 200 of FIG. 20 can be constituted.

The following describes particle-to-fdm coordinate conversion processing 1907 with reference to FIG. 21. For the bases for the description, the bases shown in FIG. 26 are used. First, a data conversion process determines a control volume of each of the grid points of the finite differential base 2501 to be handled by that data conversion process. This control volume denotes an influential range of that grid point and is obtained by interconnecting the midpoints of the squares around the grid point. Then, the data conversion process checks if any particle to be handled by the mate data conversion process is included in the control volume of one of the grid points. If a particle is found included (step 2703), the data conversion process stores in the overlap table 200 (FIG. 23), the number of the grid points and the number of the included particles (steps 2704 and 2705). As shown in FIG. 23, the overlap table 200 lists combinations of the grid point number 2601 and the particle numbers 2602. For example, referring to FIG. 26, the control volume 2502 of the grid point 18 includes particles 453, 478, 485, 498, and 524, so that the contents of the first row of the overlap table 200 of FIG. 23 can be constituted.

The other processing operations 1905 and 1909 through 1913 of FIG. 15 are generally the same as the processing operations 1906 through 1908, the descriptions these other processing operations will be omitted.

(c) Base Registration Clear Processing 1506

A data conversion process, upon reception a base registration clearing request message 1108 (FIG. 7H) from the corresponding simulation process, performs base registration clear processing 1506. In this clear processing, the data conversion process clears both the base information created on the base registration processing 1505 and the overlap table 200.

(d) Send Processing 1507

A data conversion process, upon reception of a send request message 1109 (FIG. 7I) from the corresponding simulation process, performs send processing 1507 to send data specified by the message to the mate data conversion process. In this processing 1507, the data conversion process references the information (2803 and 2804 of FIG. 24) about the mate data conversion process created in the above-mentioned base registration processing 1505 and transfers a send request message 1109 (FIG. 7I) to each of the socket numbers contained in the information. It should be noted that, in the present embodiment, the data base conversion is performed in the mate data conversion process, not in the sending data conversion process. It should also be noted that, if send and receive operations are out of synchronization, the socket (TCP/IP) capability causes no problem. If a receive operation comes first as with ordinary socket communication, the data conversion process blocks sending until a send operation is made by the mate data conversion process. If a send operation comes first, the message is buffered in the OS.

(e) Receive Processing 1508

A data conversion process, upon reception of a receive request message 1110 (FIG. 7J) from the corresponding simulation