EP2450788A1 - Algorithm selection program, algorithm selection device, and method - Google Patents

Algorithm selection program, algorithm selection device, and method Download PDF

Info

Publication number
EP2450788A1
EP2450788A1 EP09846820A EP09846820A EP2450788A1 EP 2450788 A1 EP2450788 A1 EP 2450788A1 EP 09846820 A EP09846820 A EP 09846820A EP 09846820 A EP09846820 A EP 09846820A EP 2450788 A1 EP2450788 A1 EP 2450788A1
Authority
EP
European Patent Office
Prior art keywords
algorithm
program
call
command
selection
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
EP09846820A
Other languages
German (de)
French (fr)
Other versions
EP2450788A4 (en
Inventor
Ikuo Miyoshi
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of EP2450788A1 publication Critical patent/EP2450788A1/en
Publication of EP2450788A4 publication Critical patent/EP2450788A4/en
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/423Preprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address

Definitions

  • the present invention relates to an algorithm selection program, an algorithm selection device and an algorithm selection method.
  • a library interface which is an interface for calling out a library, links the library and the computer program so as to import a function provided by the library to the computer program.
  • the library interface is conventionalized as a standard specification in order to realize compatibility with a predetermined standard and to facilitate porting to another platform.
  • An example of the standard specification includes an MPI (Message Passing Interface).
  • Functions provided by the conventionalized library interface are generalized and abstracted to improve the compatibility and the portability.
  • the generalization and abstraction of functions denote providing a plurality of processes executed in the library as one function to a program for using the library. As a result, considering an implementation of more efficient processing of the provided functions, the information obtained by the library interface may not be sufficient in selecting a processing algorithm.
  • the library interface does not provide sufficient information for a requested selection in an access pattern of a file I/O, a communication algorithm in network communication, and the like. More specifically, even if a plurality of algorithms for attaining one processing object are prepared, the library interface does not provide means for selecting the algorithm.
  • An example of a conventional solution to the problem includes a method in which a program as a call-out source of a library presents additional information called an environment variable to the library.
  • a creator or an executioner of a call-out source program presents additional information related to an item defined in the implementation of the library.
  • the additional information is provided to the library as an argument upon execution, and as a result, an internal processing algorithm of the library can be changed.
  • the selection of the processing algorithm becomes stereotypical according to the method of presenting the additional information based on the environment variable. For example, when a plurality of different communication processes are executed in one program, only a processing algorithm designated by the additional information is selected for the communication processes. Therefore, even if the library includes processing algorithms suitable for the plurality of communication processes, appropriate processing algorithms are not selected for the communication processes.
  • the present invention has been made to solve the problem, and an object of the present invention is to provide an algorithm selection program, an algorithm selection device, and an algorithm selection method that can improve algorithm selection grading of call-out of a function by a program.
  • an algorithm selection program for selecting one of algorithm among of a plurality of algorithms included in an extension program for executing a predetermined function when a call-out source program calls out the extension program, the program causing an information processing device including a storage device to execute: acquiring, from the storage device, selection information in which a command for calling out the extension program in the call-out source program and the one of algorithm are correlated; and selecting an algorithm for executing the predetermined function based on the acquired selection information.
  • Algorithm selection grading of call-out of a function by a program can be improved.
  • FIG. 1 is a diagram showing a hardware configuration of a processing device according to the present embodiment.
  • a information processing device 901 includes a CPU (Central Processing Unit) 901a, a memory 901b, and a storage unit 901c.
  • the information processing device 901 functions as an algorithm selection device that selects an algorithm of a library function described later.
  • FIG. 2 shows a functional configuration of a library interface according to the present embodiment.
  • a library 205 receives call-out through a library interface 2.
  • the library interface 2 includes a call-out reception unit 201, an execution profile information generation unit 202, an algorithm selection information generation unit 203, and an algorithm selection unit 204.
  • the call-out reception unit 201 receives a call-out for the library 205 from a call-out source program 1 as a call-out source.
  • the library 205 has a plurality of standardized functions (library functions).
  • the library functions in the library 205 have at least one or more algorithms.
  • the algorithms denote, for example, functions in the library functions.
  • the execution profile information generation unit 202 generates execution profile information 206 described later based on processing times of the algorithms of the library functions acquired by a method described later.
  • the algorithm selection information generation unit 203 generates algorithm selection information 207 described later based on the execution profile information 206.
  • the algorithm selection unit 204 selects an algorithm to be executed in the execution of a library function by library call-out of a call-out source program based on the algorithm selection information 207.
  • the CPU 901a executes and realizes the functions of the call-out reception unit 201, the execution profile information generation unit 202, the algorithm selection information generation unit 203, the algorithm selection unit 204, and the library 205.
  • the execution profile information 206 and the algorithm selection information 207 are stored in the storage unit 901c. Examples of the storage unit 901c include a hard disk and a flash memory.
  • the call-out reception unit 201, the execution profile information generation unit 202, the algorithm selection information generation unit 203, and the algorithm selection unit 204 as a whole function as a library interface for the library 205.
  • FIG. 3 shows execution profile information according to the present embodiment.
  • the execution profile information 206 is information in which a call-out source command address, a called out library function, a use algorithm 1, a processing time 1, a use algorithm 2, and a communication processing time 2 are correlated as a table.
  • the call-out source command address is an address of a command that has called out a library function in the call-out source program.
  • the called out library function is a library function called out based on the call-out source command address.
  • the use algorithm 1 is an algorithm executed as the library function.
  • the processing time 1 is a processing time based on the use algorithm 1.
  • the use algorithm 2 is an algorithm executed as a library function and is an algorithm different from the use algorithm 1.
  • the processing time 2 is a processing time based on the use algorithm 2.
  • the processing time here denotes, for example, a computation time, a communication time, or a total time of the times based on the use algorithm and is acquired by a method described later.
  • the execution profile information 206 a processing time in a combination of the call-out source command address and the algorithm executed as the library function is indicated.
  • the execution profile information 206 is generated for the call-out source program 1.
  • FIG. 4 shows algorithm selection information according to the present embodiment.
  • the algorithmselection information 207 is information in which a library function, a call-out source command address, and a processing algorithm are correlated as a table.
  • the processing algorithm is an algorithm selected for a combination of the library function and the call-out source command address.
  • the algorithm selection information 207 is generated for the call-out source program 1.
  • FIG. 5 shows an operation for library function call-out by a call-out source program.
  • the call-out source program calls out a predetermined library function in the library based on a command of a predetermined address.
  • the call-out reception unit 201 determines whether there are a plurality of algorithms correlated to a library function called out by the call-out source program 1 (S101).
  • the call-out reception unit 201 determines, for the call-out source command address, whether the number of times of call-out of the library function is equal to or smaller than the number of algorithms included in the library function (S102).
  • the call-out source reception unit 201 determines whether there is the algorithm selection information 207 correlated to the call-out source program 1 (S103).
  • the call-out reception unit 201 determines whether there is a call-out source command address in the algorithm selection information 207 (S104).
  • the algorithm selection unit 204 executes an algorithm selection process described later (S105).
  • the algorithm selection information generation unit 203 executes analgorithm selection information generation process described later (S106).
  • step S103 if there is no algorithm selection information 207 correlated to the call-out source program 1 (S103, NO), the algorithm selection information generation unit 203 executes the algorithm selection information generation process described later (S106).
  • the execution profile information generation unit 202 executes an execution profile information generation process described later (S107) .
  • the algorithm selection unit 204 selects the algorithm correlated to the called out function (S108).
  • FIG. 6 shows an operation of the execution profile information generation process.
  • FIG. 7 shows an acquisition method of a processing time.
  • the execution profile information generation unit 202 determines whether there is the execution profile information 206 correlatedto the call-out source program 1 (S201).
  • the execution profile information generation unit 202 If there is no execution profile information 206 correlated to the call-out source program 1 (S201, NO), the execution profile information generation unit 202 generates execution profile information correlated to the call-out source program 1 (S202). The execution profile information generation unit 202 selects one unselected algorithm in the function called out by the call-out source program 1 (S203). The execution profile information generation unit 202 acquires a processing time based on the selected algorithm (S204). The execution profile information generation unit 202 correlates the processing time of the acquired algorithm to the call-out source command address, the function called out by the call-out source program 1, and the selected and executed algorithm and stores the processing time in the execution profile information 206 (S205).
  • step S203 If there is the execution profile information 206 correlated to the call-out source program 1 in step S201 (S201, YES), one unselected algorithm is selected (S203).
  • An example of the acquisition method of the processing time includes a method shown in FIG. 7 .
  • the processing time can be acquired by causing all algorithms in the library 205 to acquire the execution start time and the execution end time and to calculate and store the processing time based on the difference between the execution start time and the execution end time.
  • the call-out source command addresses are also acquired at the same time and stored with the use algorithms in the storage unit 901c. It is assumed that the call-out source command addresses, the use algorithms, and the processing times are correlated and stored in the storage unit 901c. As a result, the number of times of call-out and the number of algorithms in relation to the call-out source command address can be compared in step S102.
  • the unselected algorithm denotes an algorithm without the processing time stored in the execution profile information 206 among the algorithms correlated to the call-out source command address.
  • FIG. 8 shows an operation of the algorithm selection information generation process.
  • the algorithm selection information generation unit 202 determines whether there is the algorithm selection information 207 correlated to the call-out source program 1 (S301).
  • the algorithm selection information generation unit 203 If there is no algorithm selection information 207 correlated to the call-out source program 1 (S301, NO), the algorithm selection information generation unit 203 generates the algorithm selection information 207 correlated to the call-out source program 1 (S302).
  • the algorithm selection information generation unit 203 refers to the processing times of the use algorithms correlated to the call-out source command addresses in the execution profile information 206 correlated to the call-out source program 1 (S303) .
  • the algorithm selection information generation unit 203 stores, in the algorithm selection information 207, the use algorithm with the shortest processing time among the use algorithms correlated to the call-out source command addresses (S304).
  • the algorithm selection information generation unit 202 stores the use algorithm with the shortest processing time as a processing algorithm in the algorithm selection information 207 in association with the function called out by the call-out source program 1 and the call-out source command address.
  • the algorithm selection information generation unit 203 refers to the processing times of the use algorithms correlated to the call-out source command addresses (S303).
  • FIG. 9 shows an operation of the algorithm selection process.
  • the algorithm selection unit 204 refers to the algorithm selection information 207 correlated to the call-out source program 1 (S401) .
  • the algorithm selection unit 204 determines whether there is a call-out source command address that has called out the function in the referenced algorithm selection information 207 (S402).
  • the algorithm selection unit 204 selects the processing algorithm correlated to the call-out source command address that has called out the function in the referenced algorithm selection information 207 (S403).
  • the algorithm selection unit 204 selects the algorithm correlated to the function called out by the call-out source program 1 (S404).
  • the library interface 2 acquires the processing times of the use algorithms based on the call-out source commands in the function called out by the call-out source program 1 and selects the algorithm with the shortest processing time.
  • the function is executed by an algorithm optimal for the call-out source command, and the execution of the library 205 by the call-out source program 1 is optimized.
  • the optimal algorithm may be determined based on, for example, a higher-level call-out source command that calls out the call-out source command or a function including the command.
  • FIG. 10 shows the higher-level call-out source command.
  • FIG. 11 shows algorithm selection information using the call-out source function.
  • FIG. 12 shows algorithm selection information using a call-out source command address sequence.
  • the higher-level call-out source command is a command (command address 0x070) that calls out a program Y including a call-out source address 0x100 that actually calls out the library function A.
  • a function name including the higher-level call-out source command is func2.
  • the algorithm selection information 207 may be stored as a table as shown in FIG. 11 .
  • the algorithm selection information 207 shown in FIG. 11 is information correlating the library functions, the call-out source functions, and the processing algorithms.
  • the algorithm selection information 207 may be stored as a table as shown in FIG.
  • the algorithm selection information 207 shown in FIG. 12 is information correlating the library functions, the call-out source command address sequences, and the processing algorithms.
  • the call-out source command address sequence is described so that the level of a command address described further to the left from the direct call-out source command address is higher. In this way, the grading for selecting the algorithm can be changed by changing the process correlated to the processing algorithm within, for example, a range from a process based on a single command to a process based on a plurality of commands in the algorithm selection information 207.
  • the grading for selecting the algorithm is always the same between the execution profile information 206 and the algorithm selection information 207. For example, when the call-out source function is correlated to the processing algorithm in the algorithm selection information 207, the processing time is acquired based on the call-out source function. Therefore, the processing time is correlated to the call-out source function in the execution profile information 206.
  • the number of algorithms for comparing the processing times may be narrowed down in advance .
  • the user of the library 205 may select in advance the algorithms for comparing the processing times based on the summary or the like of the algorithms in the library 205 presented in advance.
  • a list indicating the algorithms selected by the user may be stored in the storage unit 901c, and the processing times may be compared only for the algorithms indicated in the list.
  • the commands shown in FIG. 7 may be written only in the algorithms to be compared.
  • a library 2 according to the present embodiment is different from the first embodiment in that information related to a source file of the call-out source program is stored in the algorithm selection information.
  • the algorithm selection information according to the present embodiment will be described.
  • FIG. 13 shows the algorithm selection information according to the present embodiment.
  • the algorithm selection information 207 is information correlating and storing call-out source file names and call-out source line numbers in addition to library functions, call-out source command addresses, and processing algorithms.
  • the call-out source file names denote source file names of the call-out source program 1.
  • the call-out source line numbers indicate locations of the call-out source commands in the source files of the call-out source program 1 by line numbers.
  • the algorithm selection information generation unit 203 generates the algorithm selection information 207 based on debug information output by a compiler that compiles the call-out source program 1.
  • FIG. 14 shows the debug information.
  • FIG. 15 shows an operation of the algorithm selection information generation process according to the present embodiment.
  • the debug information in a DWARF format or the like includes a source file name, a call-out line number, and a call-out command address correlated to the call-out line number.
  • the algorithm selection information generation unit 203 uses the debug information to add information related to the source file to the algorithm selection information 207.
  • the algorithm selection information generation unit 203 determines whether there is the algorithm selection information 207 correlated to the call-out source program 1 (S501).
  • the algorithm selection information generation unit 203 If there is no algorithm selection information 207 correlated to the call-out source program 1 (S501, NO), the algorithm selection information generation unit 203 generates the algorithm selection information 207 correlated to the call-out source program 1 (S502).
  • the algorithm selection information generation unit 203 refers to the processing times of the use algorithms correlated to the call-out source command addresses in the execution profile information 206 correlated to the call-out source program 1 (S503) .
  • the algorithm selection information generation unit 203 stores, in the algorithm selection information 207, the use algorithm with the shortest processing time among the use algorithms correlated to the call-out source command addresses (S504).
  • the algorithm selection information generation unit 203 refers to the debug information of the source file of the call-out source program 1 (S505) . After referring to the debug information, the algorithm selection information generation unit 203 correlates, to the call-out source command address, the call-out line number correlated to the call-out source command address in the debug information and the source file name and stores the call-out source command address in the algorithm selection information 207 (S506).
  • the algorithm selection information generation unit 203 refers to the processing time of the use algorithm correlated to the call-out source command address (S503).
  • the call-out source command address, the call-out line number, and the source file name are correlated. Therefore, the creator of the call-out source program 1 can easily specify the code for calling out the library function in the source file. As a result, the creator can easily recognize and examine the algorithm in the library function. For example, in which source file line a process based on a specific data transfer algorithm is executed, in which subroutine the process is executed, and in which software module the process is executed can be easily examined.
  • the algorithm selection information generation unit of the library 2 generates the algorithm selection information.
  • a compiler generates the algorithm selection information.
  • FIG. 16 shows a configuration of a library interface and a compiler according to the present embodiment.
  • the library interface 2 according to the present embodiment is different from the library interface 2 according to the first and second embodiments in that the execution profile information generation unit 202 and the algorithm selection information generation unit 203 are not included.
  • a compiler 3 includes at least information used to select the algorithm with the shortest processing time when the source code of the call-out source program 1 is compiled.
  • the compiler 3 generates the algorithm selection information 207 based on comprehensive information and information at a high abstraction level in relation to the source code of the call-out source program 1. More specifically, the compiler 3 calculates the processing times of the algorithms based on the source code of the call-out source program 1.
  • An example of the information includes information related to the presence of the data dependence and a method of caching data of other nodes for reference.
  • the compiler 3 additionally generates the algorithm selection information 207 when the call-out source program 1 is compiled, and the library interface 2 selects the algorithm based on the algorithm selection information 207 upon the call-out of the library 205 by the call-out source program 1.
  • both the high processing efficiency and the standard specification can be realized by utilizing, to the maximum extent, useful information that can be extracted from the source code.
  • the executing binary operated on the distributed memory parallel computer is realized by a parallelizing compiler
  • Such an issue can be solved by following a standard specification, that is, using a library with standardized executing binary. The determination of whether the standard specification is followed depends on whether the executing binary efficiently operates.
  • the call-out source program 1 can efficiently operate using the library 2 without acquiring the processing time when the library 205 is actually called out and executed.
  • the algorithm selection information 207 provided with the line numbers shown in the second embodiment may be used.
  • the creator of the call-out source program 1 can designate an algorithm by including, in the source code, a description indicating the algorithm to be executed for a function to be called out.
  • FIG. 17 shows a description for designating an algorithm in the source code of the call-out source program.
  • the creator of the call-out source program 1 writes a code for designating the algorithm in, for example, a comment format immediately after the command for calling out the function.
  • the compiler 3 correlates the algorithm designated by the description and the command immediately before the description to generate the algorithm selection information 207.
  • the compiler 3 may automatically embed the description to the source code based on the algorithm selection information 207 provided with the line numbers shown in the second embodiment. As a result, an algorithm with a short processing time is selected, and at the same time, the creator can check which algorithm is selected for the call-out command just by looking at the source code.
  • FIG. 18 is a diagram showing an example of a computer system to which the present invention is applied.
  • a computer system 900 shown in FIG. 18 includes: a main body (information processing device) 901 including a CPU 901a, a disk drive, and the like; a display 902 that displays an image based on an instruction from the main body 901; a keyboard 903 for inputting various information to the computer system 900; a mouse 904 for designating an arbitrary position on a display screen 902a of the display 902; and a communication device 905 that accesses an external database and the like to download a program and the like stored in another computer system.
  • a network communication card, amodem, and the like can be the communication device 905.
  • a program for causing the computer system that forms the algorithm selection device to execute steps described above can be provided as an algorithm selection program.
  • the program can be stored in a recording medium readable by the computer system to cause the computer system that forms the algorithm selection device to execute the program.
  • the program for executing steps described above is stored in a portable recording medium such as a disk 910 or downloaded by the communication device 905 from a recordingmedium 906 of another computer system.
  • An algorithm selection program (algorithm selection software) for providing at least an algorithm selection function to the computer system 900 is input and compiled on the computer system 900.
  • the program causes the computer system 900 to operate as an algorithm selection device with an algorithm selection function.
  • the program may be stored in a computer-readable recording medium such as the disk 910.
  • Examples of the recording medium readable by the computer system 900 include internal storage devices implemented inside the computer such as a ROM and a RAM, portable storage media such as the disk 910, a flexible disk, a DVD disk, a magneto-optical disk, and an IC card, a database that holds computer programs, another computer system, a database of the computer system, and various recording media accessible by a computer system connected through communication means such as the communication device 905.
  • internal storage devices implemented inside the computer such as a ROM and a RAM
  • portable storage media such as the disk 910, a flexible disk, a DVD disk, a magneto-optical disk, and an IC card
  • a database that holds computer programs
  • another computer system a database of the computer system
  • various recording media accessible by a computer system connected through communication means such as the communication device 905.

Abstract

Provided are an algorithm selection program, an algorithm selection device, and an algorithm selection method which can improve the algorithm selection grading for call-out of a function by the program. When a call-out source program calls out an extension program which executes a predetermined function, the algorithm selection program selects one of algorithm among of a plurality of algorithms of the extension program by executing: acquiring from a storage device, a command which calls out an extension program in the call-out source program to an information processing device having the storage device and selection information correlated to the one of algorithm; and selecting the algorithm which performs a predetermined function in accordance with the acquired selection information.

Description

    Technical Field
  • The present invention relates to an algorithm selection program, an algorithm selection device and an algorithm selection method.
  • Background Art
  • In creating a computer program, a library interface, which is an interface for calling out a library, links the library and the computer program so as to import a function provided by the library to the computer program. The library interface is conventionalized as a standard specification in order to realize compatibility with a predetermined standard and to facilitate porting to another platform. An example of the standard specification includes an MPI (Message Passing Interface). Functions provided by the conventionalized library interface are generalized and abstracted to improve the compatibility and the portability. The generalization and abstraction of functions denote providing a plurality of processes executed in the library as one function to a program for using the library. As a result, considering an implementation of more efficient processing of the provided functions, the information obtained by the library interface may not be sufficient in selecting a processing algorithm. For example, the library interface does not provide sufficient information for a requested selection in an access pattern of a file I/O, a communication algorithm in network communication, and the like. More specifically, even if a plurality of algorithms for attaining one processing object are prepared, the library interface does not provide means for selecting the algorithm.
  • An example of a conventional solution to the problem includes a method in which a program as a call-out source of a library presents additional information called an environment variable to the library. In the method, a creator or an executioner of a call-out source program presents additional information related to an item defined in the implementation of the library. The additional information is provided to the library as an argument upon execution, and as a result, an internal processing algorithm of the library can be changed.
  • Citation List Patent Documents
    • Patent Document 1: Japanese Laid-Open Patent Publication No. 2007-109044
    • Patent Document 2: Japanese Laid-Open Patent Publication No. 11-212837
    • Patent Document 3: Japanese Laid-Open Patent Publication No. 9-101899
    Summary of Invention Technical Problem
  • However, there is a problem that the selection of the processing algorithm becomes stereotypical according to the method of presenting the additional information based on the environment variable. For example, when a plurality of different communication processes are executed in one program, only a processing algorithm designated by the additional information is selected for the communication processes. Therefore, even if the library includes processing algorithms suitable for the plurality of communication processes, appropriate processing algorithms are not selected for the communication processes.
  • The present invention has been made to solve the problem, and an object of the present invention is to provide an algorithm selection program, an algorithm selection device, and an algorithm selection method that can improve algorithm selection grading of call-out of a function by a program.
  • Solution to Problem
  • To solve the problem, provided is an algorithm selection program for selecting one of algorithm among of a plurality of algorithms included in an extension program for executing a predetermined function when a call-out source program calls out the extension program, the program causing an information processing device including a storage device to execute: acquiring, from the storage device, selection information in which a command for calling out the extension program in the call-out source program and the one of algorithm are correlated; and selecting an algorithm for executing the predetermined function based on the acquired selection information.
  • Advantageous Effect of Invention
  • Algorithm selection grading of call-out of a function by a program can be improved.
  • Brief Description of Drawings
    • [FIG. 1] FIG. 1 is a diagram showing a hardware configuration of a processing device according to a first embodiment.
    • [FIG. 2] FIG. 2 shows a functional configuration of a library interface according to the first embodiment.
    • [FIG. 3] FIG. 3 shows execution profile information according to the first embodiment.
    • [FIG. 4] FIG. 4 shows algorithm selection information according to the first embodiment.
    • [FIG. 5] FIG. 5 shows an operation for library function call-out by a call-out source program.
    • [FIG. 6] FIG. 6 shows an operation of an execution profile information generation process according to the first embodiment.
    • [FIG. 7] FIG. 7 shows an acquisition method of a processing time.
    • [FIG. 8] FIG. 8 shows an operation of an algorithm selection information generation process according to the first embodiment.
    • [FIG. 9] FIG. 9 shows an operation of an algorithm selection process.
    • [FIG. 10] FIG. 10 shows a higher-level call-out source command.
    • [FIG. 11] FIG. 11 shows algorithm selection information using call-out source functions.
    • [FIG. 12] FIG. 12 shows algorithm selection information using a call-out source command address sequence.
    • [FIG. 13] FIG. 13 shows algorithm selection information according to a second embodiment.
    • [FIG. 14] FIG. 14 shows debug information.
    • [FIG. 15] FIG. 15 shows an operation of an algorithm selection information generation process according to the second embodiment.
    • [FIG. 16] FIG. 16 shows a configuration of the library interface and a compiler according to a third embodiment.
    • [FIG. 17 FIG. 17 shows descriptions for designating an algorithm in a source code of a call-out source program.
    • [FIG. 18] FIG. 18 is a diagram showing an example of a computer system to which the present invention is applied.
    Description of Embodiments (First Embodiment)
  • Hereinafter,the presentembodimentwillbe described with reference to the drawings.
  • A hardware configuration of a processing device according to the present embodiment will be described. FIG. 1 is a diagram showing a hardware configuration of a processing device according to the present embodiment.
  • As shown in FIG. 1, a information processing device 901 according to the present embodiment includes a CPU (Central Processing Unit) 901a, a memory 901b, and a storage unit 901c. The information processing device 901 functions as an algorithm selection device that selects an algorithm of a library function described later.
  • A functional configuration of a library interface according to the present embodiment will be described. FIG. 2 shows a functional configuration of a library interface according to the present embodiment.
  • As shown in FIG. 2, a library 205 according to the present embodiment receives call-out through a library interface 2. The library interface 2 includes a call-out reception unit 201, an execution profile information generation unit 202, an algorithm selection information generation unit 203, and an algorithm selection unit 204. The call-out reception unit 201 receives a call-out for the library 205 from a call-out source program 1 as a call-out source. The library 205 has a plurality of standardized functions (library functions). The library functions in the library 205 have at least one or more algorithms. The algorithms denote, for example, functions in the library functions. The execution profile information generation unit 202 generates execution profile information 206 described later based on processing times of the algorithms of the library functions acquired by a method described later. The algorithm selection information generation unit 203 generates algorithm selection information 207 described later based on the execution profile information 206. The algorithm selection unit 204 selects an algorithm to be executed in the execution of a library function by library call-out of a call-out source program based on the algorithm selection information 207. The CPU 901a executes and realizes the functions of the call-out reception unit 201, the execution profile information generation unit 202, the algorithm selection information generation unit 203, the algorithm selection unit 204, and the library 205. The execution profile information 206 and the algorithm selection information 207 are stored in the storage unit 901c. Examples of the storage unit 901c include a hard disk and a flash memory. The call-out reception unit 201, the execution profile information generation unit 202, the algorithm selection information generation unit 203, and the algorithm selection unit 204 as a whole function as a library interface for the library 205.
  • Execution profileinformation according to the present embodiment will be described. FIG. 3 shows execution profile information according to the present embodiment.
  • As shown in FIG. 3, the execution profile information 206 is information in which a call-out source command address, a called out library function, a use algorithm 1, a processing time 1, a use algorithm 2, and a communication processing time 2 are correlated as a table. The call-out source command address is an address of a command that has called out a library function in the call-out source program. The called out library function is a library function called out based on the call-out source command address. The use algorithm 1 is an algorithm executed as the library function. The processing time 1 is a processing time based on the use algorithm 1. The use algorithm 2 is an algorithm executed as a library function and is an algorithm different from the use algorithm 1. The processing time 2 is a processing time based on the use algorithm 2. The processing time here denotes, for example, a computation time, a communication time, or a total time of the times based on the use algorithm and is acquired by a method described later. According to the execution profile information 206, a processing time in a combination of the call-out source command address and the algorithm executed as the library function is indicated. The execution profile information 206 is generated for the call-out source program 1.
  • The algorithm selection information according to the present embodiment will be described. FIG. 4 shows algorithm selection information according to the present embodiment.
  • As shown in FIG. 4, the algorithmselection information 207 is information in which a library function, a call-out source command address, and a processing algorithm are correlated as a table. The processing algorithm is an algorithm selected for a combination of the library function and the call-out source command address. The algorithm selection information 207 is generated for the call-out source program 1.
  • An operation for the library function call-out by the call-out source program will be described. FIG. 5 shows an operation for library function call-out by a call-out source program. In FIG. 5, it is assumed that the call-out source program calls out a predetermined library function in the library based on a command of a predetermined address.
  • As shown in FIG. 5, the call-out reception unit 201 determines whether there are a plurality of algorithms correlated to a library function called out by the call-out source program 1 (S101).
  • If there are a plurality of algorithms (S101, YES), the call-out reception unit 201 determines, for the call-out source command address, whether the number of times of call-out of the library function is equal to or smaller than the number of algorithms included in the library function (S102).
  • If the number of algorithms included in the library function is smaller than the number of times of call-out of the library function (S102, NO), the call-out source reception unit 201 determines whether there is the algorithm selection information 207 correlated to the call-out source program 1 (S103).
  • If there is the algorithm selection information 207 correlated to the call-out source program 1 (S103, YES), the call-out reception unit 201 determines whether there is a call-out source command address in the algorithm selection information 207 (S104).
  • If there is a call-out source command address in the algorithm selection information 207 (S104, YES), the algorithm selection unit 204 executes an algorithm selection process described later (S105).
  • Meanwhile, if there is no call-out source command address in the algorithm selection information 207 (S104, NO), the algorithm selection information generation unit 203 executes analgorithm selection information generation process described later (S106).
  • In step S103, if there is no algorithm selection information 207 correlated to the call-out source program 1 (S103, NO), the algorithm selection information generation unit 203 executes the algorithm selection information generation process described later (S106).
  • If the number of algorithms included in the library function is equal to or greater than the number of times of call-out of the library function in step S102 (S102, YES), the execution profile information generation unit 202 executes an execution profile information generation process described later (S107) .
  • If there is one algorithm correlated to the library function called out by the call-out source program 1 in step S101 (S101, NO), the algorithm selection unit 204 selects the algorithm correlated to the called out function (S108).
  • An operation of the execution profile information generation process will be described. FIG. 6 shows an operation of the execution profile information generation process. FIG. 7 shows an acquisition method of a processing time.
  • As shown in FIG. 6, the execution profile information generation unit 202 determines whether there is the execution profile information 206 correlatedto the call-out source program 1 (S201).
  • If there is no execution profile information 206 correlated to the call-out source program 1 (S201, NO), the execution profile information generation unit 202 generates execution profile information correlated to the call-out source program 1 (S202). The execution profile information generation unit 202 selects one unselected algorithm in the function called out by the call-out source program 1 (S203). The execution profile information generation unit 202 acquires a processing time based on the selected algorithm (S204). The execution profile information generation unit 202 correlates the processing time of the acquired algorithm to the call-out source command address, the function called out by the call-out source program 1, and the selected and executed algorithm and stores the processing time in the execution profile information 206 (S205).
  • If there is the execution profile information 206 correlated to the call-out source program 1 in step S201 (S201, YES), one unselected algorithm is selected (S203).
  • An example of the acquisition method of the processing time includes a method shown in FIG. 7. As shown in FIG. 7, the processing time can be acquired by causing all algorithms in the library 205 to acquire the execution start time and the execution end time and to calculate and store the processing time based on the difference between the execution start time and the execution end time. The call-out source command addresses are also acquired at the same time and stored with the use algorithms in the storage unit 901c. It is assumed that the call-out source command addresses, the use algorithms, and the processing times are correlated and stored in the storage unit 901c. As a result, the number of times of call-out and the number of algorithms in relation to the call-out source command address can be compared in step S102. In step S203, the unselected algorithm denotes an algorithm without the processing time stored in the execution profile information 206 among the algorithms correlated to the call-out source command address.
  • An operation of the algorithm selection information generation process will be described. FIG. 8 shows an operation of the algorithm selection information generation process.
  • As shown in FIG. 8, the algorithm selection information generation unit 202 determines whether there is the algorithm selection information 207 correlated to the call-out source program 1 (S301).
  • If there is no algorithm selection information 207 correlated to the call-out source program 1 (S301, NO), the algorithm selection information generation unit 203 generates the algorithm selection information 207 correlated to the call-out source program 1 (S302). The algorithm selection information generation unit 203 refers to the processing times of the use algorithms correlated to the call-out source command addresses in the execution profile information 206 correlated to the call-out source program 1 (S303) . The algorithm selection information generation unit 203 stores, in the algorithm selection information 207, the use algorithm with the shortest processing time among the use algorithms correlated to the call-out source command addresses (S304). The algorithm selection information generation unit 202 stores the use algorithm with the shortest processing time as a processing algorithm in the algorithm selection information 207 in association with the function called out by the call-out source program 1 and the call-out source command address.
  • On the other hand, if there is the algorithm selection information 207 correlated to the call-out source program 1 (S301, YES), the algorithm selection information generation unit 203 refers to the processing times of the use algorithms correlated to the call-out source command addresses (S303).
  • An operation of the algorithm selection process will be described. FIG. 9 shows an operation of the algorithm selection process.
  • As shown in FIG. 9, the algorithm selection unit 204 refers to the algorithm selection information 207 correlated to the call-out source program 1 (S401) . The algorithm selection unit 204 determines whether there is a call-out source command address that has called out the function in the referenced algorithm selection information 207 (S402).
  • If there is a call-out source command address that has called out the function (S402, YES), the algorithm selection unit 204 selects the processing algorithm correlated to the call-out source command address that has called out the function in the referenced algorithm selection information 207 (S403).
  • On the other hand, if there is no call-out source command address that has called out the function (S402, NO), the algorithm selection unit 204 selects the algorithm correlated to the function called out by the call-out source program 1 (S404).
  • As described, the library interface 2 according to the present embodiment acquires the processing times of the use algorithms based on the call-out source commands in the function called out by the call-out source program 1 and selects the algorithm with the shortest processing time. In this way, the function is executed by an algorithm optimal for the call-out source command, and the execution of the library 205 by the call-out source program 1 is optimized. The optimal algorithm may be determined based on, for example, a higher-level call-out source command that calls out the call-out source command or a function including the command. FIG. 10 shows the higher-level call-out source command. FIG. 11 shows algorithm selection information using the call-out source function. FIG. 12 shows algorithm selection information using a call-out source command address sequence.
  • When a library function A is called out as shown in FIG. 10, the higher-level call-out source command is a command (command address 0x070) that calls out a program Y including a call-out source address 0x100 that actually calls out the library function A. In FIG. 10, a function name including the higher-level call-out source command is func2. To determine the processing algorithm based on the function including the higher-level call-out source command, the algorithm selection information 207 may be stored as a table as shown in FIG. 11. The algorithm selection information 207 shown in FIG. 11 is information correlating the library functions, the call-out source functions, and the processing algorithms. The algorithm selection information 207 may be stored as a table as shown in FIG. 12 if a different algorithm needs to be selected when the higher-level call-out source addresses are different even if the call-out source addresses are the same. The algorithm selection information 207 shown in FIG. 12 is information correlating the library functions, the call-out source command address sequences, and the processing algorithms. The call-out source command address sequence is described so that the level of a command address described further to the left from the direct call-out source command address is higher. In this way, the grading for selecting the algorithm can be changed by changing the process correlated to the processing algorithm within, for example, a range from a process based on a single command to a process based on a plurality of commands in the algorithm selection information 207. The grading for selecting the algorithm is always the same between the execution profile information 206 and the algorithm selection information 207. For example, when the call-out source function is correlated to the processing algorithm in the algorithm selection information 207, the processing time is acquired based on the call-out source function. Therefore, the processing time is correlated to the call-out source function in the execution profile information 206.
  • In the present embodiment, the number of algorithms for comparing the processing times may be narrowed down in advance . For example, the user of the library 205 may select in advance the algorithms for comparing the processing times based on the summary or the like of the algorithms in the library 205 presented in advance. In this case, a list indicating the algorithms selected by the user may be stored in the storage unit 901c, and the processing times may be compared only for the algorithms indicated in the list. The commands shown in FIG. 7 may be written only in the algorithms to be compared.
  • (Second Embodiment)
  • A library 2 according to the present embodiment is different from the first embodiment in that information related to a source file of the call-out source program is stored in the algorithm selection information. The algorithm selection information according to the present embodiment will be described. FIG. 13 shows the algorithm selection information according to the present embodiment.
  • As shown in FIG. 13, the algorithm selection information 207 according to the present embodiment is information correlating and storing call-out source file names and call-out source line numbers in addition to library functions, call-out source command addresses, and processing algorithms. The call-out source file names denote source file names of the call-out source program 1. The call-out source line numbers indicate locations of the call-out source commands in the source files of the call-out source program 1 by line numbers. The algorithm selection information generation unit 203 generates the algorithm selection information 207 based on debug information output by a compiler that compiles the call-out source program 1. Hereinafter, the debug information and an operation of the algorithm selection information generation unit according to the present embodiment will be described. FIG. 14 shows the debug information. FIG. 15 shows an operation of the algorithm selection information generation process according to the present embodiment.
  • As shown in FIG. 14, for example, the debug information in a DWARF format or the like includes a source file name, a call-out line number, and a call-out command address correlated to the call-out line number. The algorithm selection information generation unit 203 uses the debug information to add information related to the source file to the algorithm selection information 207.
  • As shown in FIG. 15, the algorithm selection information generation unit 203 determines whether there is the algorithm selection information 207 correlated to the call-out source program 1 (S501).
  • If there is no algorithm selection information 207 correlated to the call-out source program 1 (S501, NO), the algorithm selection information generation unit 203 generates the algorithm selection information 207 correlated to the call-out source program 1 (S502). The algorithm selection information generation unit 203 refers to the processing times of the use algorithms correlated to the call-out source command addresses in the execution profile information 206 correlated to the call-out source program 1 (S503) . The algorithm selection information generation unit 203 stores, in the algorithm selection information 207, the use algorithm with the shortest processing time among the use algorithms correlated to the call-out source command addresses (S504).
  • The algorithm selection information generation unit 203 refers to the debug information of the source file of the call-out source program 1 (S505) . After referring to the debug information, the algorithm selection information generation unit 203 correlates, to the call-out source command address, the call-out line number correlated to the call-out source command address in the debug information and the source file name and stores the call-out source command address in the algorithm selection information 207 (S506).
  • If there is the algorithm selection information 207 correlated to the call-out source program 1 in step S501 (S501, YES), the algorithm selection information generation unit 203 refers to the processing time of the use algorithm correlated to the call-out source command address (S503).
  • In this way, the call-out source command address, the call-out line number, and the source file name are correlated. Therefore, the creator of the call-out source program 1 can easily specify the code for calling out the library function in the source file. As a result, the creator can easily recognize and examine the algorithm in the library function. For example, in which source file line a process based on a specific data transfer algorithm is executed, in which subroutine the process is executed, and in which software module the process is executed can be easily examined.
  • (Third Embodiment)
  • In the first and second embodiments, the algorithm selection information generation unit of the library 2 generates the algorithm selection information. In the present embodiment, a compiler generates the algorithm selection information. FIG. 16 shows a configuration of a library interface and a compiler according to the present embodiment.
  • As shown in FIG. 16, the library interface 2 according to the present embodiment is different from the library interface 2 according to the first and second embodiments in that the execution profile information generation unit 202 and the algorithm selection information generation unit 203 are not included. A compiler 3 includes at least information used to select the algorithm with the shortest processing time when the source code of the call-out source program 1 is compiled. The compiler 3 generates the algorithm selection information 207 based on comprehensive information and information at a high abstraction level in relation to the source code of the call-out source program 1. More specifically, the compiler 3 calculates the processing times of the algorithms based on the source code of the call-out source program 1. An example of the information includes information related to the presence of the data dependence and a method of caching data of other nodes for reference. The compiler 3 additionally generates the algorithm selection information 207 when the call-out source program 1 is compiled, and the library interface 2 selects the algorithm based on the algorithm selection information 207 upon the call-out of the library 205 by the call-out source program 1.
  • In this way, upon the call-out of the library 205 by the call-out source program 1, both the high processing efficiency and the standard specification can be realized by utilizing, to the maximum extent, useful information that can be extracted from the source code. For example, when the executing binary operated on the distributed memory parallel computer is realized by a parallelizing compiler, there is an issue of realizing an open operating platform and reducing the cost of the software maintenance. Such an issue can be solved by following a standard specification, that is, using a library with standardized executing binary. The determination of whether the standard specification is followed depends on whether the executing binary efficiently operates. According to the library 2 and the compiler 3 of the present embodiment, the call-out source program 1 can efficiently operate using the library 2 without acquiring the processing time when the library 205 is actually called out and executed.
  • If the compiler used to compile the source code is formed by a plurality of components, such as a back-end compiler and an assembler, the algorithm selection information 207 provided with the line numbers shown in the second embodiment may be used.
  • The creator of the call-out source program 1 can designate an algorithm by including, in the source code, a description indicating the algorithm to be executed for a function to be called out. FIG. 17 shows a description for designating an algorithm in the source code of the call-out source program.
  • As shown in FIG. 17, the creator of the call-out source program 1 writes a code for designating the algorithm in, for example, a comment format immediately after the command for calling out the function. The compiler 3 correlates the algorithm designated by the description and the command immediately before the description to generate the algorithm selection information 207. The compiler 3 may automatically embed the description to the source code based on the algorithm selection information 207 provided with the line numbers shown in the second embodiment. As a result, an algorithm with a short processing time is selected, and at the same time, the creator can check which algorithm is selected for the call-out command just by looking at the source code.
  • The present invention can be applied to a computer system as shown below. FIG. 18 is a diagram showing an example of a computer system to which the present invention is applied. A computer system 900 shown in FIG. 18 includes: a main body (information processing device) 901 including a CPU 901a, a disk drive, and the like; a display 902 that displays an image based on an instruction from the main body 901; a keyboard 903 for inputting various information to the computer system 900; a mouse 904 for designating an arbitrary position on a display screen 902a of the display 902; and a communication device 905 that accesses an external database and the like to download a program and the like stored in another computer system. A network communication card, amodem, and the like can be the communication device 905.
  • A program for causing the computer system that forms the algorithm selection device to execute steps described above can be provided as an algorithm selection program. The program can be stored in a recording medium readable by the computer system to cause the computer system that forms the algorithm selection device to execute the program. The program for executing steps described above is stored in a portable recording medium such as a disk 910 or downloaded by the communication device 905 from a recordingmedium 906 of another computer system. An algorithm selection program (algorithm selection software) for providing at least an algorithm selection function to the computer system 900 is input and compiled on the computer system 900. The program causes the computer system 900 to operate as an algorithm selection device with an algorithm selection function. The program may be stored in a computer-readable recording medium such as the disk 910. Examples of the recording medium readable by the computer system 900 include internal storage devices implemented inside the computer such as a ROM and a RAM, portable storage media such as the disk 910, a flexible disk, a DVD disk, a magneto-optical disk, and an IC card, a database that holds computer programs, another computer system, a database of the computer system, and various recording media accessible by a computer system connected through communication means such as the communication device 905.
  • The present invention can be implemented in various other forms without departing from the scope or main features of the present invention. Therefore, the embodiments are to be considered in all aspects as illustrative and not restrictive. The scope of the present invention is indicated by the claims and is not limited by the specification. Furthermore, all modifications, various improvements, replacements, and refinements belonging to the range of equivalency of the claims are within the scope of the present invention.
  • Reference Signs List
  • 1 call-out source program, 2 library interface, 3 compiler, 201 call-out reception unit, 202 execution profile information generation unit, 203 algorithm selection information generation unit, 204 algorithm selection unit, 205 library, 206 execution profile information, 207 algorithm selection information, 901 information processing device, 901a CPU, 901b memory, 901c storage unit

Claims (20)

  1. An algorithm selection program for selecting one of algorithm among of a plurality of algorithms included in an extension program for executing a predetermined function when a call-out source program calls out the extension program, the algorithm selection program causing an information processing device including a storage device to execute:
    acquiring, from the storage device, selection information in which a command for calling out the extension program in the call-out source program and the one of algorithm are correlated; and
    selecting an algorithm for executing the predetermined function based on the acquired selection information.
  2. The algorithm selection program according to claim 1, wherein
    the command for calling out the extension program correlated to the one of algorithm in the selection information is a function including a command for directly calling out the extension program or a command for calling out the command upon execution, and
    the selecting comprises selecting an algorithm correlated to the function in the selection information.
  3. The algorithm selection program according to claim 1, wherein
    the command for calling out the extension program correlated to the one of algorithm in the selection information is a combination of a command for directly calling out the extension program and a command for calling out the command upon execution, and
    the selecting comprises selecting an algorithm correlated to the combination in the selection information.
  4. The algorithm selection program according to any of claims 1 to 3, further causing the processing device to execute
    generating the selection information and storing the selection information in the storage unit based on an algorithm with a shortest processing time among the processing times of the plurality of algorithms included in the extension program called out in advance by the call-out source program and based on the command that has called out the extension program.
  5. The algorithm selection program according to claim 4, wherein
    the storing comprises adding a line number, which is correlated to the command for calling out the extension program in a source code of the call-out source program, to the command for calling out the extension program in the selection information based on debug information output by a compiler in compiling of the source code of the call-out source program.
  6. The algorithm selection program according to any of claims 1 to 3, wherein
    the selection information is generated by the compiler that compiles the source code and is stored in the storage unit based on the source code of the call-out source program.
  7. The algorithm selection program according to claim 6, wherein
    the source code of the call-out source program includes a description indicating the algorithm to be executed in the call-out of the extension program, and
    the compiler generates the selection information based on the description included in the source code.
  8. An algorithm selection device that selects one of algorithm among of a plurality of algorithms included in an extension program for executing a predetermined function when a call-out source program calls out the extension program, the algorithm selection device comprising:
    an acquisition unit that acquires selection information in which a command for calling out the extension program in the call-out source program and the one of algorithm are correlated; and
    a selection unit that selects an algorithm for executing the predetermined function based on the acquired selection information.
  9. The algorithm selection device according to claim 8, wherein
    the command correlated to the one of algorithm in the selection information is a function including a command for directly calling out the extension program or a higher-level command for calling out the command upon execution, and
    the selection unit selects an algorithm correlated to the function in the selection information.
  10. The algorithm selection device according to claim 8, wherein
    the command for calling out the extension program correlated to the one of algorithm in the selection information is a combination of a command for directly calling out the extension program and a command for calling out the command upon execution, and
    the selection unit selects an algorithm correlated to the combination in the selection information.
  11. The algorithm selection device according to any of claims 8 to 10, further comprising
    a generation unit that gene rates the selection information based on an algorithm with a shortest processing time among the processing times of the plurality of algorithms included in the extension program called out in advance by the call-out source program and based on the command that has called out the extension program.
  12. The algorithm selection device according to claim 11, wherein
    the generation unit adds a line number, which is correlated to the command for calling out the extension program in a source code of the call-out source program, to the command for calling out the extension program in the selection information based on debug information output by a compiler in compiling of the source code of the call-out source program.
  13. The algorithm selection device according to any of claims 8 to 10, wherein
    the selection information is generated by the compiler that compiles the source code based on the source code of the call-out source program.
  14. The algorithm selection device according to claim 13, wherein
    the source code of the call-out source program includes a description indicating the algorithm to be executed in the call-out of the extension program, and
    the compiler generates the selection information based on the description included in the source code.
  15. An algorithm selection device that selects one of algorithm among of a plurality of algorithms included in an execution program for executing a predetermined function, the algorithm selection device comprising:
    a call-out unit that uses a command to call out the extension program;
    an acquisition unit that acquires selection information in which the command used for calling out the extension program by the call-out unit and the one of algorithm are correlated; and
    a selection unit that selects an algorithm for executing the predetermined function based on the acquired selection information.
  16. An algorithm selection method of selecting one of algorithm among of a plurality of algorithms included in an extension program for executing a predetermined function when a call-out source program calls out the extension program, the algorithm selection method causing an information processing device including a storage device to execute:
    acquiring, from the storage device, selection information in which a command for calling out the extension program in the call-out source program and the one of algorithm are correlated; and
    selecting an algorithm for executing the predetermined function based on the acquired selection information.
  17. The algorithm selection method according to claim 16, wherein
    the command correlated to the one of algorithm in the selection information is a function including a command for directly calling out the extension program or a command for calling out the command upon execution, and
    the selecting comprises selecting an algorithm correlated to the function in the selection information.
  18. The algorithm selection method according to claim 16, wherein
    the command correlated to the one of algorithm in the selection information is a combination of a command for directly calling out the extension program and a higher-level command for calling out the command upon execution, and
    the selecting comprises selecting an algorithm correlated to the combination in the selection information.
  19. The algorithm selection method according to any of claims 16 to 18, further causing the processing device to execute
    generating information and storing the selection information in the storage unit based on an algorithm with a shortest processing time among the processing times of the plurality of algorithms included in the extension program called out in advance by the call-out source program and based on the command that has called out the extension program.
  20. The algorithm selection method according to claim 19, wherein
    the storing comprises adding a line number, which is correlated to the command for calling out the extension program in a source code of the call-out source program, to the command for calling out the extension program in the selection information based on debug information output by a compiler in compiling of the source code of the call-out source program.
EP09846820.0A 2009-07-02 2009-07-02 Algorithm selection program, algorithm selection device, and method Withdrawn EP2450788A4 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2009/062122 WO2011001527A1 (en) 2009-07-02 2009-07-02 Algorithm selection program, algorithm selection device, and method

Publications (2)

Publication Number Publication Date
EP2450788A1 true EP2450788A1 (en) 2012-05-09
EP2450788A4 EP2450788A4 (en) 2013-08-07

Family

ID=43410625

Family Applications (1)

Application Number Title Priority Date Filing Date
EP09846820.0A Withdrawn EP2450788A4 (en) 2009-07-02 2009-07-02 Algorithm selection program, algorithm selection device, and method

Country Status (4)

Country Link
US (1) US8739139B2 (en)
EP (1) EP2450788A4 (en)
JP (1) JP5553070B2 (en)
WO (1) WO2011001527A1 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2776926A1 (en) * 2011-11-08 2014-09-17 Intel Corporation Message passing interface tuning using collective operation modeling
JP5842693B2 (en) * 2012-03-19 2016-01-13 株式会社リコー Program selection device, program selection method, and selection program
CN104252391B (en) * 2013-06-28 2017-09-12 国际商业机器公司 Method and apparatus for managing multiple operations in distributed computing system
US9152536B1 (en) * 2014-05-19 2015-10-06 International Business Machines Corporation Validating correctness of expression evaluation within a debugger

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070169002A1 (en) * 2005-12-15 2007-07-19 International Business Machines Corporation Profile-driven lock handling

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2636665B2 (en) * 1993-02-26 1997-07-30 日本電気株式会社 Execution information collection device
JPH09101899A (en) 1995-10-05 1997-04-15 Fujitsu Ltd Processing system for procedure
JP3339317B2 (en) * 1996-07-24 2002-10-28 日本電気株式会社 Dynamic information utilization type program optimization device
JP3199013B2 (en) 1998-01-26 2001-08-13 日本電気株式会社 Language processing method, language processing apparatus, and storage medium storing language processing program
JP3640081B2 (en) * 1999-12-27 2005-04-20 日本電気株式会社 Optimization method for compiling MPI programs
JP4712512B2 (en) 2005-10-14 2011-06-29 富士通株式会社 Program conversion program, program conversion apparatus, and program conversion method
JP2007233805A (en) * 2006-03-02 2007-09-13 Oki Electric Ind Co Ltd Program conversion system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070169002A1 (en) * 2005-12-15 2007-07-19 International Business Machines Corporation Profile-driven lock handling

Non-Patent Citations (7)

* Cited by examiner, † Cited by third party
Title
AHMAD FARAJ ET AL: "STAR-MPI: Self Tuned Adaptive Adaptive Routines for MPI Collective Operations", PROCEEDINGS OF THE 20TH ANNUAL INTERNATIONAL CONFERENCE ON SUPERCOMPUTING , ICS '06, June 2006 (2006-06), pages 199-208, XP055068374, New York, New York, USA DOI: 10.1145/1183401.1183431 ISBN: 978-1-59-593282-2 *
EDGAR GABRIEL ET AL: "Runtime Optimization of Application Level Communication Patterns", PARALLEL AND DISTRIBUTED PROCESSING SYMPOSIUM, 2007. IPDPS 2007. IEEE INTERNATIONAL, IEEE, PI, March 2007 (2007-03), pages 1-8, XP031175455, ISBN: 978-1-4244-0909-9 *
JASON ANSEL, CY CHAN, YEE LOK WONG, MAREK OLSZEWSKI, QIN ZHAO, ALAN EDELMAN AND SAMAN AMARASINGHE: "PetaBricks: a language and compiler for algorithmic choice", ACM SIGPLAN NOTICES, vol. 44, no. 6, 28 May 2009 (2009-05-28), pages 38-49, XP002699754, ACM, New York, NY, USA DOI: 10.1145/1543135.1542481 *
MAMADOU H N ET AL: "A robust dynamic optimization for MPI Alltoall operation", PARALLEL&DISTRIBUTED PROCESSING, 2009. IPDPS 2009. IEEE INTERNATIONAL SYMPOSIUM ON, IEEE, PISCATAWAY, NJ, USA, 23 May 2009 (2009-05-23), pages 1-15, XP031487362, ISBN: 978-1-4244-3751-1 *
OLIVEIRA P ET AL: "SPMD image processing on Beowulf clusters: directive and libraries", PARALLEL AND DISTRIBUTED PROCESSING SYMPOSIUM, 2003. PROCEEDINGS. INTE RNATIONAL APRIL 22-26, 2003, PISCATAWAY, NJ, USA,IEEE, 22 April 2003 (2003-04-22), pages 230-237, XP010645269, ISBN: 978-0-7695-1926-5 *
PJESIVAC-GRBOVIC ET AL: "MPI collective algorithm selection and quadtree encoding", PARALLEL COMPUTING, ELSEVIER PUBLISHERS, AMSTERDAM, NL, vol. 33, no. 9, 20 September 2007 (2007-09-20), pages 613-623, XP022259230, ISSN: 0167-8191, DOI: 10.1016/J.PARCO.2007.06.005 *
See also references of WO2011001527A1 *

Also Published As

Publication number Publication date
EP2450788A4 (en) 2013-08-07
JP5553070B2 (en) 2014-07-16
US20120167064A1 (en) 2012-06-28
US8739139B2 (en) 2014-05-27
JPWO2011001527A1 (en) 2012-12-10
WO2011001527A1 (en) 2011-01-06

Similar Documents

Publication Publication Date Title
CN110678846B (en) Dynamic task allocation for neural networks
US8627303B2 (en) Memory optimization of virtual machine code by partitioning extraneous information
CN104412229B (en) Adaptive portable library
US8645930B2 (en) System and method for obfuscation by common function and common function prototype
US8407667B2 (en) Inferring missing type information for reflection
US20030093780A1 (en) Annotations to executable images for improved dynamic optimization of functions
US8843920B2 (en) Systems and methods for deferring software implementation decisions until load time
CN108874924B (en) Method and device for creating search service and computer-readable storage medium
KR101962484B1 (en) Extensible data parallel semantics
US20030237080A1 (en) System and method for improved register allocation in an optimizing compiler
CN109154908B (en) Dynamically sized locality with accurate garbage collection reporting
US8739139B2 (en) Algorithm selection device and algorithm selection method
CN109196476A (en) Seamless high-performance interoperability between the different type figure of shared garbage collector
US8266416B2 (en) Dynamic reconfiguration supporting method, dynamic reconfiguration supporting apparatus, and dynamic reconfiguration system
CN109558121A (en) Development approach, device, equipment and the storage medium of interface drive program
US20130152049A1 (en) Warning of register and storage area assignment errors
US9135027B1 (en) Code generation and execution for dynamic programming languages
JP4870956B2 (en) Embedded program generation method, embedded program development system, and information table section
US8949802B1 (en) Sharding program compilation for large-scale static analysis
KR101670916B1 (en) Method for storing function and system device using the same
JP5551868B2 (en) Executable file creation device
JP2017010077A (en) Computer, compiler program, link program and compilation method
CN113626071B (en) Function registration method, system, electronic device and storage medium
Babynyuk Efficient Data Structures with GraalVM Native Image
CN115469917A (en) File processing method, device, equipment and storage medium

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20120130

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO SE SI SK SM TR

DAX Request for extension of the european patent (deleted)
A4 Supplementary search report drawn up and despatched

Effective date: 20130710

RIC1 Information provided on ipc code assigned before grant

Ipc: G06F 9/44 20060101AFI20130702BHEP

Ipc: G06F 9/45 20060101ALI20130702BHEP

17Q First examination report despatched

Effective date: 20160818

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: EXAMINATION IS IN PROGRESS

GRAP Despatch of communication of intention to grant a patent

Free format text: ORIGINAL CODE: EPIDOSNIGR1

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: GRANT OF PATENT IS INTENDED

RIC1 Information provided on ipc code assigned before grant

Ipc: G06F 8/41 20180101AFI20180629BHEP

Ipc: G06F 9/448 20180101ALI20180629BHEP

INTG Intention to grant announced

Effective date: 20180717

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20181128