WO2020066375A1 - 情報処理装置、情報処理方法、プログラム - Google Patents

情報処理装置、情報処理方法、プログラム Download PDF

Info

Publication number
WO2020066375A1
WO2020066375A1 PCT/JP2019/032671 JP2019032671W WO2020066375A1 WO 2020066375 A1 WO2020066375 A1 WO 2020066375A1 JP 2019032671 W JP2019032671 W JP 2019032671W WO 2020066375 A1 WO2020066375 A1 WO 2020066375A1
Authority
WO
WIPO (PCT)
Prior art keywords
vector
instruction
information processing
mask
imaginary part
Prior art date
Application number
PCT/JP2019/032671
Other languages
English (en)
French (fr)
Inventor
健人 岩川
Original Assignee
日本電気株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 日本電気株式会社 filed Critical 日本電気株式会社
Priority to US17/277,532 priority Critical patent/US20210349719A1/en
Priority to JP2020548162A priority patent/JPWO2020066375A1/ja
Publication of WO2020066375A1 publication Critical patent/WO2020066375A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers

Definitions

  • the present invention relates to an information processing apparatus, an information processing method, and a program for generating a complex vector operation instruction.
  • Patent Document 1 exemplifies a case where multiplication of complex data is performed without loading real part data and imaginary part data into different vector registers.
  • the technique described in the literature presupposes that an instruction specialized for multiplication of complex number data is provided in advance, and other vector operation of complex number data, in particular, division of complex number data is executed by vector operation. The problem arises that it is not possible.
  • an object of the present invention is to provide an information processing apparatus, an information processing method, and a program that can solve the problem that the vector operation of complex data is slow and that the vector operation itself cannot be executed. .
  • An information processing device includes: The real part and the imaginary part constituting the complex number data are alternately arranged in the memory, and the memory is successively accessed according to the arrangement of the real part and the imaginary part, and the real part and the imaginary part are each element of the vector register.
  • An information processing method includes: The real part and the imaginary part constituting the complex number data are alternately arranged in the memory, and the memory is successively accessed according to the arrangement of the real part and the imaginary part, and the real part and the imaginary part are each element of the vector register.
  • a program includes: For information processing equipment, The real part and the imaginary part constituting the complex number data are alternately arranged in the memory, and the memory is successively accessed according to the arrangement of the real part and the imaginary part, and the real part and the imaginary part are each element of the vector register.
  • a vector processing device includes: The real part and the imaginary part constituting the complex number data are alternately arranged in the memory, and the memory is successively accessed according to the arrangement of the real part and the imaginary part, and the real part and the imaginary part are each element of the vector register.
  • An information processing method includes: An information processing method using a vector processing device, The real part and the imaginary part constituting the complex number data are alternately arranged in the memory, and the memory is successively accessed according to the arrangement of the real part and the imaginary part, and the real part and the imaginary part are each element of the vector register.
  • FIG. 2 is a diagram for explaining a background art of the present invention.
  • FIG. 2 is a diagram for explaining a background art of the present invention. It is a figure for explaining the outline of the present invention. It is a figure for explaining the outline of the present invention. It is a figure for explaining the outline of the present invention.
  • FIG. 2 is a block diagram illustrating a configuration of a compiler according to the first embodiment of the present invention.
  • FIG. 4 is a diagram for explaining a vector operation instruction generated in the first embodiment of the present invention.
  • FIG. 5 is a diagram illustrating a complex arithmetic expression for which a vector operation instruction is generated in the first embodiment of the present invention.
  • FIG. 9 is a diagram illustrating a source program for adding complex numbers disclosed in FIG. 8.
  • FIG. 8 is a diagram for adding complex numbers disclosed in FIG. 8.
  • FIG. 9 is a diagram illustrating a source program for subtraction of a complex number disclosed in FIG. 8.
  • FIG. 9 is a diagram illustrating a source program for multiplication of a complex number disclosed in FIG. 8.
  • FIG. 9 is a diagram illustrating a source program for dividing a complex number disclosed in FIG. 8.
  • FIG. 2 is a diagram illustrating a configuration of a memory according to the first embodiment of the present invention.
  • FIG. 10 is a diagram illustrating an example of a vector operation instruction generated based on the source program for adding complex numbers disclosed in FIG. 9.
  • FIG. 11 is a diagram illustrating an example of a vector operation instruction generated based on the source program for subtraction of complex numbers disclosed in FIG. 10.
  • FIG. 10 is a diagram illustrating an example of a vector operation instruction generated based on the source program for adding complex numbers disclosed in FIG. 9.
  • FIG. 11 is a diagram illustrating an example of a vector operation instruction generated based on the source program for subtraction of complex numbers disclosed in FIG. 10.
  • FIG. 12 is a diagram illustrating an example of a vector operation instruction generated based on the source program for complex number multiplication disclosed in FIG. 11.
  • FIG. 13 is a diagram illustrating an example of a vector operation instruction generated based on the source program for division of a complex number disclosed in FIG. 12.
  • FIG. 17 is a diagram illustrating a procedure of a vector operation instruction and a vector register image in complex multiplication disclosed in FIG. 16.
  • FIG. 17 is a diagram illustrating a procedure of a vector operation instruction and a vector register image in complex multiplication disclosed in FIG. 16.
  • FIG. 18 is a diagram illustrating a procedure of a vector operation instruction and a vector register image in the division of a complex number disclosed in FIG. 17.
  • FIG. 17 is a diagram illustrating a procedure of a vector operation instruction and a vector register image in the division of a complex number disclosed in FIG. 17.
  • FIG. 18 is a diagram illustrating a procedure of a vector operation instruction and a vector register image in the division of a complex number disclosed in FIG. 17.
  • FIG. 11 is a diagram for explaining a vector operation instruction generated in a second embodiment of the present invention.
  • FIG. 14 is a diagram illustrating an example of a vector operation instruction generated based on a source program for complex number multiplication in the second embodiment of the present invention.
  • FIG. 11 is a diagram illustrating an example of a vector operation instruction generated based on a source program for division of a complex number in the second embodiment of the present invention.
  • FIG. 24 is a diagram illustrating a procedure of a vector operation instruction and a vector register image in complex multiplication disclosed in FIG. 23.
  • FIG. 24 is a diagram illustrating a procedure of a vector operation instruction and a vector register image in complex multiplication disclosed in FIG. 23.
  • 25 is a diagram illustrating a procedure of a vector operation instruction and a vector register image in the division of a complex number disclosed in FIG. 24.
  • FIG. 25 is a diagram illustrating a procedure of a vector operation instruction and a vector register image in the division of a complex number disclosed in FIG. 24.
  • FIG. 25 is a diagram illustrating a procedure of a vector operation instruction and a vector register image in the division of a complex number disclosed in FIG. 24.
  • FIG. 25 is a diagram illustrating a procedure of a vector operation instruction and a vector register image in the division of a complex number disclosed in FIG. 24.
  • FIG. 14 is a block diagram illustrating a configuration of a processor according to a third embodiment of the present invention.
  • FIGS. 3 to 5 are diagrams for explaining the outline of the present invention.
  • FIG. 6 is a diagram for explaining the configuration of the present invention, and
  • FIGS. 7 to 21 are diagrams for explaining the operation of the present invention.
  • the present invention is an information processing device that generates a vector operation instruction of complex data for a vector processing device, and particularly has a function as a compiler that generates an instruction for performing four arithmetic operations on complex data.
  • the memory access is speeded up by performing continuous access instead of stride access.
  • the speed is increased by performing continuous access. Since the access is continuous rather than stride access, the vector register is not divided into the real part and the imaginary part of the complex number data, and as shown in FIG. Is stored.
  • ⁇ Circle around (4) ⁇ In a normal vector arithmetic operation instruction, operations are performed on the same element numbers as shown in FIG. Therefore, in multiplication / division of a complex number, in a vector register in which the real part and the imaginary part are adjacent to each other, the real part and the imaginary part cannot be operated because the element numbers of the real part and the imaginary part are different. Therefore, in the present invention, the real part and the imaginary part can be operated by using a vector cross operation instruction with a mask as shown in FIG. 5 in the operation with different element numbers. In addition, a vector cross operation with a mask is also used when adding and subtracting each multiplication result of a real part and an imaginary part in multiplication and division of a complex number. By combining continuous access to complex data and vector operation with a mask, it is possible to speed up memory access while enabling four arithmetic operations on complex data.
  • the compiler 1 is configured by a general information processing device including an arithmetic device and a storage device, and is constructed by the arithmetic device executing a compiler program.
  • the compiler 1 includes a loop analysis unit 10 and a vectorization execution unit 20, as shown in FIG.
  • the loop analysis unit 10 analyzes a program to be operated and analyzes whether a loop in the program can be vectorized and includes a complex number operation. Specifically, as shown in FIG. 6, the loop analysis unit 10 includes a vectorization determination unit 11 that determines whether the detected loop can be vectorized, and includes a complex number operation in the vectorizable loop. And a complex number operation recognition unit 12 that recognizes whether the
  • the vectorization execution unit 20 vectorizes a loop based on the analysis result by the loop analysis unit 10 described above.
  • the vectorization execution unit 20 includes a continuous access vector load instruction generation unit 21 that generates an instruction for reading complex number data stored in a memory into a vector register by continuous access, and a complex number A complex number operation instruction generation unit 22 for generating an instruction for executing the arithmetic operation of the above, a continuous access vector store instruction generation unit 23 for generating an instruction for writing a complex operation result from the vector register to the memory by continuous access, It has.
  • the detailed functions of each unit included in the above-described compiler 1 will be described in the following description of the operation.
  • the present invention further includes a vector processing device (not shown) that performs a vector operation in accordance with the vector operation instruction generated by the compiler 1 described above.
  • the vector processing apparatus has a function of executing a vector cross operation with a mask in addition to a general vector instruction with a mask to execute addition, subtraction, multiplication, and division of complex numbers.
  • the vector cross operation instruction with mask is an instruction for executing an operation between different element numbers as shown in FIG. 5 as described above, and the element of the designated vector mask register is 1
  • the result is stored only for the element number that becomes As an example, in the vector cross operation with mask as shown in FIG.
  • a vector operation instruction for executing addition, subtraction, multiplication, and division of a complex number shown in the equation of FIG. 8 is generated.
  • a vector operation instruction is generated based on a Fortran program code having a loop operation on an array of a real part and an imaginary part.
  • the complex array included in the Fortran program shown in FIGS. 9 to 12 has one element of 8 bytes, and each element of the real part and the imaginary part has four bytes.
  • the language specification specifies that complex data is stored in a memory by arranging real parts and imaginary parts adjacent to each other and storing them in a memory, as shown in FIG. And the imaginary part are stored in the memory.
  • the vectorization determination unit 11 determines whether a loop operation as shown by the program codes in FIGS. 9 to 12 can be vectorized.
  • the condition that can be vectorized is that there is no dependency in the definition or reference relationship of the array or variable that hinders vectorization.
  • a loop including a complex number operation is detected by the complex number operation recognition unit 12.
  • the vectorization execution unit 20 vectorizes a loop that can be vectorized and includes a complex number operation.
  • an instruction sequence is generated from the program sources of FIGS. 9 to 12.
  • the continuous access vector load instruction generation unit 21 (load instruction generation unit) generates a vector load instruction for reading the complex arrays A and B from the memory into the vector register.
  • the vector load instruction reads the data in units of 4 bytes, and the read interval specified by the second operand of the vector load instruction is set to 4 bytes so that the memory is accessed continuously as arranged. .
  • the real part and the imaginary part of the complex data are stored in successive elements of the vector register in a state of being adjacent to each other.
  • the complex operation instruction generation unit 22 (operation instruction generation unit) generates an instruction for executing a complex operation.
  • an example of generating an instruction in each of the four arithmetic operations of a complex number will be described.
  • addition and subtraction of complex numbers are addition and subtraction between real parts and addition and subtraction between imaginary parts. Therefore, as shown in FIG. Can be calculated by vector operation. Therefore, as shown in FIGS. 14 and 15, in addition and subtraction of complex numbers, a vector addition instruction with mask and a vector subtraction instruction with mask are generated. At this time, the elements of the designated vector mask register are all “1”. Hereinafter, unless otherwise specified, the mask in which all the elements are “1” is specified.
  • FIG. 16 shows an imaginary part multiplication procedure and a vector register image.
  • the division of complex numbers will be described.
  • the calculation method differs between the real part and the imaginary part as shown in the equation of FIG.
  • the calculation of the numerator is the same as the multiplication except that the addition and subtraction are switched.
  • ⁇ Operation of calculating the denominator and dividing by the calculated denominator are the same as those of dividing the imaginary part of a complex number, and thus are generated after generating the operation instruction for calculating the numerator of the imaginary part.
  • a masked vector multiplication instruction for squaring the real part and the imaginary part is generated.
  • a vector cross addition instruction with a mask is generated to add the square of the real part and the square of the imaginary part.
  • a masked vector division instruction is generated to perform the division.
  • FIG. 20 shows the division procedure of the real part and the vector register image.
  • the vector cross subtraction instruction with mask specifies a vector mask register that repeats “01” from the head element, and the result is stored only in the imaginary part element.
  • an operation instruction for calculating the denominator and an operation instruction for executing the division are generated.
  • FIG. 21 shows an imaginary part division procedure and a vector register image.
  • the continuous access vector store instruction generation unit 23 (vector store instruction generation unit) outputs the complex number array C Is generated from the vector register to the memory.
  • the vector store instruction similarly to the vector load instruction, the vector store instruction reads data in units of 4 bytes, and the read interval specified by the second operand of the vector store instruction is set to 4 bytes. For continuous access.
  • the present invention can be applied to a case where there are a plurality of operations in a loop or a combination of four arithmetic operations. This is because the result of the operation is stored in the vector register so that the real part and the imaginary part are adjacent to each other, so that the arrangement is the same as when the vector is loaded.
  • one element of the complex number array is 8 bytes in FIGS. 9 to 12, the present invention can be applied to different precisions (sizes) as long as the vector processing device has instructions of different precisions.
  • the stride access in the background art is a continuous access, so that the memory access can be speeded up.
  • the speed of the vector store for writing from the vector register to the memory can be similarly increased.
  • the vector length at the time of executing the vector operation is twice the array length of the complex number data, and the number of elements that can be continuously processed increases. Therefore, when the array length of the complex data is shorter than the maximum vector length of the computer, the processing efficiency can be improved.
  • a real part and an imaginary part can be operated by using a vector cross operation instruction with a mask in an operation between different element numbers between vector registers.
  • four arithmetic operations can be performed on complex number data.
  • the vector register performs the vector cross operation between the elements corresponding to the mutually different element numbers
  • the element numbers performing the cross operation are always different from each other by one. It is not limited to this, and may be any number.
  • the vector transfer instruction stores the vector elements of the read destination vector register in order from the top of the write destination vector register, using the value specified by the scalar register as the transfer start number. If the element number is equal to or greater than the vector length, the number returns to 0. In other words, in the example of FIG. 22, the vector transfer instruction transfers each element of the vector register to a new vector register corresponding to a new element number whose element number is shifted by one.
  • the number of elements shifted by the vector transfer instruction is not limited to one, but may be any number.
  • the complex number operation instruction generation unit 22 in the present embodiment generates the above-described vector transfer instruction as described below. Since the operation is the same as that of the previous embodiment except for the multiplication / division of a complex number, a portion different from the first embodiment will be mainly described below.
  • the complex number operation instruction generation unit 22 In the multiplication of the real part of a complex number, the complex number operation instruction generation unit 22 generates an instruction as shown in FIG. In the example of FIG. 23, a vector multiplication instruction with a mask is generated to execute multiplication between the real part and the imaginary part. Then, in order to subtract the multiplication result between the imaginary parts from the multiplication result between the real parts, a vector transfer instruction and a vector subtraction instruction with a mask are generated. The transfer start number of the vector transfer instruction is set to “1”. As the vector mask register of the vector subtraction instruction with mask, a vector mask register that repeats "10" from the head element is designated, and the result is stored only in the element of the real part.
  • FIG. 25 shows the multiplication procedure and vector register image of the real part.
  • FIG. 23 shows an instruction as shown in FIG. 23 in the multiplication of the imaginary part of a complex number.
  • a vector transfer instruction and a vector multiplication instruction with a mask are generated in order to execute multiplication of the real part and the imaginary part.
  • the transfer start numbers of the two vector transfer instructions specify the vector length "-1".
  • a vector mask register that repeats “01” from the head element is specified in the two vector multiplication instructions with a mask.
  • a vector addition instruction with a mask is generated to add the multiplication result of the two real parts and the imaginary part.
  • the vector addition instruction with mask specifies a vector mask register that repeats “01” from the head element, and the result is stored only in the element of the imaginary part.
  • FIG. 26 shows an imaginary part multiplication procedure and a vector register image.
  • an instruction as shown in FIG. 24 is generated.
  • a vector multiplication instruction with a mask is generated to execute multiplication between the real part and the imaginary part.
  • a vector transfer instruction and a vector addition instruction with mask are generated.
  • the transfer start number of the vector transfer instruction is set to “1”.
  • a vector mask register that repeats “10” from the head element is specified, and the result is stored only in the element of the real part.
  • the calculation instruction of the calculation of the denominator and the division by the calculated denominator is the same processing as the division of the imaginary part of the complex number, the calculation instruction is generated after generating the calculation instruction for calculating the numerator of the imaginary part. After generating the imaginary part numerator operation instruction, a masked vector multiplication instruction is generated to square the real part and the imaginary part. Then, a vector transfer instruction and a vector addition instruction with mask are generated to add the square of the real part and the square of the imaginary part.
  • the transfer start numbers of the two vector transfer instructions specify "1" and the vector length "-1".
  • an instruction as shown in FIG. 24 is generated.
  • a vector transfer instruction and a vector multiplication instruction with a mask are generated.
  • the transfer start numbers of the two vector transfer instructions specify the vector length “ ⁇ 1”.
  • a vector mask register that repeats “01” from the head element is specified.
  • a vector subtraction instruction with a mask is generated to subtract the multiplication result of the two real parts and the imaginary part.
  • the vector subtraction instruction with mask specifies a vector mask register that repeats “01” from the head element, and the result is stored only in the element of the imaginary part.
  • an operation instruction for calculating the denominator and an operation instruction for executing the division are generated as described in the instruction generation procedure for the division of the real part of a complex number.
  • the imaginary part division procedure and vector register image are shown in FIGS.
  • FIG. 31 is a block diagram illustrating a configuration of an information processing device (compiler) according to the first and second embodiments.
  • the outline of the configuration of the information processing apparatus described in the first and second embodiments is shown.
  • the information processing apparatus 100 includes: The real part and the imaginary part constituting the complex number data are alternately arranged in the memory, and the memory is successively accessed according to the arrangement of the real part and the imaginary part, and the real part and the imaginary part are each element of the vector register.
  • a load instruction generating unit 110 that generates an instruction to be loaded as
  • An operation instruction generation unit 120 that generates a vector operation instruction including an instruction for performing a vector operation between elements corresponding to mutually different element numbers between the two vector registers and an instruction for performing a vector operation with a mask; Is provided.
  • the load instruction generation unit 110 and the operation instruction generation unit 120 are realized by an information processing device executing a program.
  • the information processing apparatus 100 having the above configuration includes The real part and the imaginary part constituting the complex number data are alternately arranged in the memory, and the memory is successively accessed according to the arrangement of the real part and the imaginary part, and the real part and the imaginary part are each element of the vector register. Generate an instruction to load as Generating a vector operation instruction including an instruction for performing a vector operation between elements corresponding to mutually different element numbers between the two vector registers and an instruction for performing a vector operation with a mask; It operates to execute the processing of.
  • the vector processing device The real part and the imaginary part constituting the complex number data are alternately arranged in the memory, and the memory is successively accessed according to the arrangement of the real part and the imaginary part, and the real part and the imaginary part are each element of the vector register.
  • the vector load / vector store can be speeded up by performing continuous access when the complex data is vector-loaded / stored.
  • any operation on a complex number can be performed by using a vector cross operation with a mask.
  • the operation instruction generation unit generates a vector operation instruction including a masked vector cross operation instruction for performing, with a mask, a vector operation between elements corresponding to one different element number between the two vector registers.
  • Information processing device
  • the operation instruction generation unit generates a vector operation instruction including the masked vector cross operation instruction performed between the same or different two vector registers.
  • Information processing device
  • the operation instruction generation unit generates a vector operation instruction including the masked vector cross operation instruction with a mask whose element numbers are spaced by one, Information processing device.
  • the operation instruction generation unit generates a vector transfer instruction for transferring each element of the predetermined vector register to a new vector register corresponding to a new element number whose element number is shifted by at least one, Generating an instruction for performing a masked vector operation on the vector register including the new vector register; Information processing device.
  • the operation instruction generation unit generates a vector operation instruction based on a program code including a loop operation on an array of a real part and an imaginary part constituting the complex data.
  • Information processing device An information processing apparatus according to any one of supplementary notes 1 to 5, wherein The operation instruction generation unit generates a vector operation instruction based on a program code including a loop operation on an array of a real part and an imaginary part constituting the complex data.
  • a vector store instruction generation unit that continuously accesses each element of a vector register storing an operation result according to the generated vector operation instruction and generates an instruction to write the operation result to a memory; Information processing device.
  • Supplementary note 8.3 An information processing method according to any one of Supplementary Notes 8 to 8.2, Generating a vector operation instruction based on a program code including a loop operation on an array of a real part and an imaginary part constituting the complex data, Information processing method.
  • Non-transitory computer-readable media include various types of tangible storage media.
  • Examples of non-transitory computer readable media are magnetic recording media (eg, flexible disk, magnetic tape, hard disk drive), magneto-optical recording media (eg, magneto-optical disk), CD-ROM (Read Only Memory), CD-R, CD-R / W, semiconductor memory (for example, mask ROM, PROM (Programmable @ ROM), EPROM (Erasable @ PROM), flash ROM, RAM (Random @ Access @ Memory)).
  • the program may be supplied to the computer by various types of transitory computer readable media.
  • Examples of transitory computer readable media include electrical signals, optical signals, and electromagnetic waves.
  • Transitory computer readable media can provide the program to a computer via a wired communication line such as an electric wire and an optical fiber, or a wireless communication line.
  • the present invention enjoys the benefit of a priority claim based on a patent application filed on Sep. 25, 2018 in Japan in Japanese Patent Application No. 2018-178791, and is described in the patent application. The contents are all included in this specification.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

本発明の情報処理装置100は、複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成するロード命令生成部110と、2つのベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する演算命令生成部120と、を備える。

Description

情報処理装置、情報処理方法、プログラム
 本発明は、複素数ベクトル演算命令を生成する情報処理装置、情報処理方法、プログラムに関する。
 複素数データに対する加減乗除の四則演算をベクトル演算で実行する際に、図1に示すように、メモリ上に交互に並ぶ実部データと虚部データとを、それぞれ異なるベクトルレジスタ1,2へロードすることが一般的である。複素数の乗除算においては、図8の式に示すように、虚部の計算の際に2つの複素数の実部と虚部の乗算が必要となり、ベクトルレジスタを分ける必要があるためである。
特開2005-174295号公報
 ここで、実部データと虚部データとは、上述したようにメモリ上では交互に並ぶように配置されるため、データをベクトルロードでベクトルレジスタに格納する際は、連続アクセスではなくストライドアクセスする必要がある。ストライドアクセスとは、データを連続で読込むのではなく、図2に示すように一定間隔おきにデータを読込むことである。しかしながら、ストライドアクセスは、連続アクセスに比べて低速であるという問題ある。そして、演算結果をベクトルレジスタからメモリに読み出すベクトルストアについても同様にストライドアクセスとなり、低速となるという問題が生じる。
 なお、特許文献1に記載の技術では、実部データと虚部データとを異なるベクトルレジスタにロードすることなく、複素数データの乗算を行う場合が例示されている。ところが、かかる文献に記載の技術では、予め複素数データの乗算に特化した命令を備えていることを前提としており、複素数データの他のベクトル演算、特に、複素数データに対する除算をベクトル演算で実行することができない、という問題が生じる。
 このため、本発明の目的は、複素数データのベクトル演算が低速となることと、ベクトル演算自体を実行できないこと、を解決することができる情報処理装置、情報処理方法、プログラムを提供することにある。
 本発明の一形態である情報処理装置は、
 複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成するロード命令生成部と、
 2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する演算命令生成部と、
を備えた、
という構成をとる。
 また、本発明の一形態である情報処理方法は、
 複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成し、
 2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する、
という構成をとる。
 また、本発明の一形態であるプログラムは、
 情報処理装置に、
 複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成するロード命令生成部と、
 2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する演算命令生成部と、
を実現させる、
という構成をとる。
 また、本発明の一形態であるベクトル処理装置は、
 複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードし、
 2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算と、マスク付きベクトル演算と、を含むベクトル演算を実行する、
という処理を実行する構成をとる。
 また、本発明の一形態である情報処理方法は、
 ベクトル処理装置による情報処理方法であって、
 複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードし、
 2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算と、マスク付きベクトル演算と、を含むベクトル演算を実行する、
という構成をとる。
 本発明は、以上のように構成されることにより、複素数データのベクトル演算においてあらゆる演算を高速に行うことができる。
本発明の背景技術を説明するための図である。 本発明の背景技術を説明するための図である。 本発明の概要を説明するための図である。 本発明の概要を説明するための図である。 本発明の概要を説明するための図である。 本発明の実施形態1におけるコンパイラの構成を示すブロック図である。 本発明の実施形態1において生成するベクトル演算命令を説明するための図である。 本発明の実施形態1においてベクトル演算命令を生成する対象となる複素数の演算式を示す図である。 図8に開示した複素数の加算のソースプログラムを示す図である。 図8に開示した複素数の減算のソースプログラムを示す図である。 図8に開示した複素数の乗算のソースプログラムを示す図である。 図8に開示した複素数の除算のソースプログラムを示す図である。 本発明の実施形態1におけるメモリの構成を示す図である。 図9に開示した複素数の加算のソースプログラムに基づいて生成したベクトル演算命令の一例を示す図である。 図10に開示した複素数の減算のソースプログラムに基づいて生成したベクトル演算命令の一例を示す図である。 図11に開示した複素数の乗算のソースプログラムに基づいて生成したベクトル演算命令の一例を示す図である。 図12に開示した複素数の除算のソースプログラムに基づいて生成したベクトル演算命令の一例を示す図である。 図16に開示した複素数の乗算におけるベクトル演算命令の手順とベクトルレジスタイメージを示す図である。 図16に開示した複素数の乗算におけるベクトル演算命令の手順とベクトルレジスタイメージを示す図である。 図17に開示した複素数の除算におけるベクトル演算命令の手順とベクトルレジスタイメージを示す図である。 図17に開示した複素数の除算におけるベクトル演算命令の手順とベクトルレジスタイメージを示す図である。 本発明の実施形態2において生成するベクトル演算命令を説明するための図である。 本発明の実施形態2において、複素数の乗算のソースプログラムに基づいて生成したベクトル演算命令の一例を示す図である。 本発明の実施形態2において、複素数の除算のソースプログラムに基づいて生成したベクトル演算命令の一例を示す図である。 図23に開示した複素数の乗算におけるベクトル演算命令の手順とベクトルレジスタイメージを示す図である。 図23に開示した複素数の乗算におけるベクトル演算命令の手順とベクトルレジスタイメージを示す図である。 図24に開示した複素数の除算におけるベクトル演算命令の手順とベクトルレジスタイメージを示す図である。 図24に開示した複素数の除算におけるベクトル演算命令の手順とベクトルレジスタイメージを示す図である。 図24に開示した複素数の除算におけるベクトル演算命令の手順とベクトルレジスタイメージを示す図である。 図24に開示した複素数の除算におけるベクトル演算命令の手順とベクトルレジスタイメージを示す図である。 本発明の実施形態3におけるプロセッサの構成を示すブロック図である。
 <実施形態1>
 本発明の第1の実施形態を、図3乃至図21を参照して説明する。図3乃至図5は、本発明の概要を説明するための図である。図6は、本発明の構成を説明するための図であり、図7乃至図21は、本発明の動作を説明するための図である。
 [概要]
 まず、本発明の概要について説明する。本発明は、ベクトル処理装置に対する複素数データのベクトル演算命令を生成する情報処理装置であり、特に、複素数データの四則演算を行う命令を生成するコンパイラとしての機能を有する。
 具体的に、本発明では、複素数データをメモリからベクトルレジスタへベクトルロードする際に、ストライドアクセスではなく連続アクセスにすることで、メモリアクセスを高速化する。ベクトルレジスタからメモリへベクトルストアする際も同様に、連続アクセスにすることで高速化する。ストライドアクセスではなく連続アクセスとするため、複素数データの実部と虚部でベクトルレジスタが分けられることはなく、図3に示すように、実部と虚部が隣接した状態でベクトルレジスタに要素が格納される。
 また、通常のベクトル四則演算命令では、図4に示すように、同じ要素番号に対しての演算となる。そのため、複素数の乗除算において、実部と虚部が隣接した状態のベクトルレジスタでは、実部と虚部の要素番号が異なるため実部と虚部の演算ができない。そこで、本発明では、異なる要素番号との演算において図5に示すようなマスク付きベクトルクロス演算命令を使用することで、実部と虚部の演算を可能にする。また、複素数の乗除算において実部と虚部の各乗算結果を加減算する際にも、マスク付きベクトルクロス演算を使用する。複素数データへの連続アクセスとマスク付きベクトル演算を組み合わせることで、複素数データの四則演算を可能としたままメモリアクセスを高速化できる。
 [構成]
 次に、本発明の一実施形態におけるコンパイラ1の構成について説明する。コンパイラ1は、演算装置と記憶装置とを備えた一般的な情報処理装置で構成されており、演算装置がコンパイラ用プログラムを実行することで構築される。そして、コンパイラ1は、図6に示すように、ループ解析部10とベクトル化実行部20とを備えている。
 上記ループ解析部10は、演算対象であるプログラムを解析して、プログラム中のループがベクトル化可能であり複素数の演算を含んでいるかを解析する。具体的に、ループ解析部10は、図6に示すように、検出したループがベクトル化可能であるかを判断するベクトル化判定部11と、ベクトル化可能であるループに複素数の演算が含まれているかを認識する複素数演算認識部12と、を備えている。
 上記ベクトル化実行部20は、上述したループ解析部10による解析結果に基づいてループをベクトル化する。具体的に、ベクトル化実行部20は、図6に示すように、メモリに格納されている複素数データを連続アクセスによりベクトルレジスタへ読込むための命令を生成する連続アクセスベクトルロード命令生成部21と、複素数の演算を実行するための命令を生成する複素数演算命令生成部22と、複素数の演算結果をベクトルレジスタからメモリへ連続アクセスで書込むための命令を生成する連続アクセスベクトルストア命令生成部23と、を備えている。なお、上述したコンパイラ1が備える各部の詳細な機能については、下記の動作説明時に説明する。
 また、本発明では、上述したコンパイラ1で生成されたベクトル演算命令に従ってベクトル演算を行うベクトル処理装置(図示せず)を備えている。具体的に、ベクトル処理装置は、複素数の加算、減算、乗算、除算を実行するために、一般的なマスク付きベクトル命令に加えて、マスク付きベクトルクロス演算を実行する機能を備えているものとする。ここで、マスク付きベクトルクロス演算命令は、上記で説明したように、図5に示すように異なる要素番号間での演算を実行する命令となっており、指定されたベクトルマスクレジスタの要素が1となる要素番号のみ結果が格納される。一例として、図7に示すようなマスク付きベクトルクロス演算においては、ベクトルレジスタマスクが「010101」であるため、書込み先となるベクトルレジスタ3の要素番号1,3,5に対する演算のみが実行されて計算結果が格納されることとなる。なお、本発明で使用するベクトルマスクレジスタは、要素パターンが限られているため、特殊レジスタとしてベクトル処理装置に備えられているものとする。仮に、ベクトルマスクレジスタがベクトル処理装置に備えられていない場合は、マスク演算命令と共に生成する必要がある。
 [動作]
 次に、上述したコンパイラ1の動作を、図8乃至図21を参照して説明する。本実施形態では、図8の式に示す複素数の加算、減算、乗算、除算を実行するベクトル演算命令を生成することとする。具体的には、図9乃至図12にそれぞれ示す複素数の加算、減算、乗算、除算において実部と虚部との配列に対するループ演算を有するFortranプログラムコードに基づいてベクトル演算命令を生成する。なお、図9乃至図12に示すFortranプログラムに含まれる複素数配列は、1要素が8バイトであり、実部と虚部の1要素がそれぞれ4バイトとなる。Fortran言語において、複素数データは実部と虚部とを隣接させて交互に配置させてメモリに格納することが言語仕様で規定されているため、図13のように、複素数データを構成する実部と虚部とがメモリに格納されていることとなる。
 まず、上記ベクトル化判定部11は、図9乃至図12のプログラムコードで示されるようなループ演算がベクトル化できるかを判定する。ベクトル化できる条件としては、配列や変数の定義・参照関係にベクトル化を阻害する依存関係がないことが挙げられる。そして、ベクトル化が可能であると判定されたループにおいて、複素数の演算が含まれているループを、複素数演算認識部12により検出する。
 続いて、上述したようにベクトル化可能かつ複素数の演算を含むループを、ベクトル化実行部20でベクトル化する。ここでは、図14乃至図17に示すように、図9乃至図12のプログラムソースから、命令列を生成する。
 具体的には、まず、連続アクセスベクトルロード命令生成部21(ロード命令生成部)が、複素数配列A,Bを、メモリからベクトルレジスタへ読込むベクトルロード命令を生成する。このとき、ベクトルロード命令は、4バイト単位でデータを読込み、ベクトルロード命令の第2オペランドで指定する読込み間隔は4バイトにすることで、メモリに対して配置通りに連続アクセスとなるようにする。これにより、図3に示すように、複素数データの実部と虚部とが隣接した状態で、ベクトルレジスタの連続する各要素に格納される。
 続いて、ベクトルロードによりベクトルレジスタへデータを格納する命令を生成した後に、複素数演算命令生成部22(演算命令生成部)が、複素数演算を実行する命令を生成する。ここで、複素数の四則演算のそれぞれにおける命令の生成例を説明する。
 複素数の加算と減算は、図8の式に示すように、実部間の加減算と虚部間の加減算とになるため、図4に示すように、ベクトルレジスタ間で同じ要素番号に対してのベクトル演算で計算ができる。そのため、図14,15に示すように、複素数の加算、減算では、マスク付きベクトル加算命令、マスク付きベクトル減算命令を生成する。このとき、指定されるベクトルマスクレジスタの要素は、すべて「1」となる。以降、ベクトルマスクレジスタに関して特に記載が無い場合は、要素がすべて「1」のマスクが指定されるものとする。
 次に、複素数の乗算について説明する。複素数の乗算は、図8の式に示すように、実部と虚部において計算方法が異なる。複素数の実部の乗算では、実部間と虚部間とでそれぞれ乗算を実行した後に、実部間の乗算結果から虚部間の乗算結果を減算する。このため、図16に示すように、実部間と虚部間との乗算を実行するために、マスク付きベクトル乗算命令を生成している。そして、実部間の乗算結果から虚部間の乗算結果を減算するために、マスク付きベクトル符号反転命令とマスク付きベクトルクロス減算命令を生成している。このとき、マスク付きベクトルクロス減算命令には、先頭要素から「10」を繰返すベクトルマスクレジスタが指定されており、実部の要素にのみ結果が格納される。実部の乗算の手順とベクトルレジスタイメージを図18に示す。
 複素数の虚部の乗算では、図8の式に示すように、実部と虚部との乗算を実行した後に、2つの実部と虚部との乗算結果を加算する。このため、図16に示すように、実部と虚部との乗算を実行するために、マスク付きベクトルクロス乗算命令を生成している。そして、隣接する実部と虚部との乗算結果を加算するために、マスク付きベクトルクロス加算命令を生成している。このとき、マスク付きベクトルクロス加算命令には、先頭要素から「01」を繰返すベクトルマスクレジスタが指定されており、虚部の要素にのみ結果が格納される。虚部の乗算手順とベクトルレジスタイメージを図19に示す。
 次に、複素数の除算について説明する。複素数の除算は、図8の式に示すように、実部と虚部において計算方法が異なる。なお、分子の計算は、加減算が入れ替わる点以外は乗算と同様となる。
 複素数の実部の除算では、図8の式に示すように、実部間と虚部間との乗算を実行した後に2つの乗算結果を加算し、分母の実部と分母の虚部とをそれぞれ二乗して加算した値で除算することで算出される。このため、図17に示すように、実部間と虚部間との乗算を実行するために、マスク付きベクトル乗算命令を生成している。そして、実部間と虚部間との乗算結果を加算するために、マスク付きベクトルクロス加算命令を生成している。このとき、マスク付きベクトルクロス加算命令には、先頭要素から「10」を繰返すベクトルマスクレジスタが指定されており、実部の要素にのみ結果が格納される。
 そして、分母の算出と、算出した分母による除算の演算命令は、複素数の虚部の除算と同様の処理となるため、虚部の分子を算出する演算命令を生成した後に生成する。虚部の分子の演算命令の生成後に、実部と虚部とを二乗するためのマスク付きベクトル乗算命令を生成する。そして、実部の二乗と虚部の二乗とを加算するためにマスク付きベクトルクロス加算命令を生成する。最後に、除算を実行するためにマスク付きベクトル除算命令を生成する。実部の除算手順とベクトルレジスタイメージを図20に示す。
 複素数の虚部の除算では、図8の式に示すように、実部と虚部との乗算を実行した後に一方の乗算結果からもう一方の乗算結果を減算し、分母の実部と分母の虚部とをそれぞれ二乗して加算した値で除算することで算出される。このため、図17に示すように、実部と虚部との乗算を実行するためにマスク付きベクトルクロス乗算命令を生成している。そして、隣接する実部と虚部との乗算結果を減算するためにマスク付きベクトルクロス減算命令を生成している。このとき、マスク付きベクトルクロス減算命令には、先頭要素から「01」を繰返すベクトルマスクレジスタが指定されており、虚部の要素にのみ結果が格納される。その後は、複素数の実部の除算の命令生成手順で記述したように、分母を算出するための演算命令と除算を実行するための演算命令が生成される。虚部の除算手順とベクトルレジスタイメージを図21に示す。
 上述したように、複素数演算命令生成部22にて複素数演算を実行する命令を生成した後に、連続アクセスベクトルストア命令生成部23(ベクトルストア命令生成部)が、複素数の演算結果である複素数配列Cを、ベクトルレジスタからメモリへ書込むベクトルストア命令を生成する。このとき、ベクトルロード命令と同様にベクトルストア命令も4バイト単位でデータを読込み、ベクトルストア命令の第2オペランドで指定する読込み間隔は4バイトにすることで、ベクトルレジスタの連続する各要素に対して連続アクセスとなるようにする。
 ここで、図9乃至図12に示したプログラムでは、単一の演算のみとなっているが、ループ中に複数の演算がある場合や四則演算を組み合わせた場合でも本発明を適用できる。これは、演算結果は実部と虚部が隣接するようにベクトルレジスタへ格納されるため、ベクトルロードしたときと同じ配置となるためである。また、図9乃至図12において複素数配列の1要素は8バイトであったが、異なる精度(サイズ)であっても、ベクトル処理装置が異なる精度の命令を備えていれば本発明を適用できる。
 以上のように、本発明では、複素数データをメモリからベクトルレジスタにロードする際に、背景技術におけるストライドアクセスを連続アクセスとしているため、メモリアクセスを高速化できる。ベクトルレジスタからメモリへ書込みをするベクトルストアについても同様に高速化することができる。また、ベクトル演算を実行する際のベクトル長が複素数データの配列長の2倍となり、連続処理できる要素が増加する。そのため、複素数データの配列長が計算機の最大ベクトル長よりも短い場合に処理効率を上げることができる。
 また、本発明では、ベクトルレジスタ間の異なる要素番号同士の演算において、マスク付きベクトルクロス演算命令を使用することで、実部と虚部の演算が可能となる。これにより、複素数データに対する四則演算が可能となる。
 なお、上記では、ベクトルレジスタ間で、相互に1つ異なる要素番号に対応する要素同士のベクトルクロス演算を行っている場合を例示したが、相互にクロス演算を行う要素番号同士は必ずしも1つ異なることに限定されず、いくつ異なってもよい。
 <実施形態2>
 次に、本発明の第2の実施形態を、図22乃至図30を参照して説明する。本実施形態では、ベクトル処理装置が、上述した第1の実施形態で説明したマスク付きベクトルクロス演算命令を実行する機能を備えていない場合を説明する。
 本実施形態では、以下に説明するように、ベクトル移送命令とマスク付きベクトル演算を用いることで、マスク付きベクトルクロス演算命令と同様の処理を実行できる。ベクトル移送命令は、図22に示すように、スカラレジスタで指定された値を移送開始番号として、読込み先ベクトルレジスタのベクトル要素を書込み先のベクトルレジスタの先頭から順に格納する。要素番号がベクトル長以上となる場合は0番に戻ることとする。つまり、図22の例では、ベクトル移送命令は、ベクトルレジスタの各要素を、その要素番号を1つずつずらした新たな要素番号に対応させた新たなベクトルレジスタに移送することとなっている。なお、ベクトル移送命令にてずらす要素数は、1つであることに限定されず、いかなる数であってもよい。
 具体的に、本実施形態における複素数演算命令生成部22は、以下に説明するように、上述したベクトル移送命令を生成する。なお、複素数の乗除算を除いては、先の実施例と同様の動作となるため、以下では実施形態1と異なる部分について主に説明する。
 複素数の実部の乗算では、複素数演算命令生成部22は、図23に示すような命令を生成する。図23の例では、実部間と虚部間との乗算を実行するためにマスク付きベクトル乗算命令を生成している。そして、実部間の乗算結果から虚部間の乗算結果を減算するために、ベクトル移送命令とマスク付きベクトル減算命令を生成している。ベクトル移送命令の移送開始番号は「1」となるようにしている。マスク付きベクトル減算命令のベクトルマスクレジスタは、先頭要素から「10」を繰返すベクトルマスクレジスタが指定されており、実部の要素にのみ結果が格納されるようにしている。実部の乗算の手順とベクトルレジスタイメージを図25に示す。
 複素数の虚部の乗算では、図23に示すような命令を生成する。図23では、実部と虚部との乗算を実行するために、ベクトル移送命令とマスク付きベクトル乗算命令を生成している。2つのベクトル移送命令の移送開始番号はベクトル長「-1」を指定している。2つのマスク付きベクトル乗算命令には、先頭要素から「01」を繰返すベクトルマスクレジスタが指定されている。そして、2つの実部と虚部との乗算結果を加算するためにマスク付きベクトル加算命令を生成している。このとき、マスク付きベクトル加算命令には、先頭要素から「01」を繰返すベクトルマスクレジスタが指定されており、虚部の要素にのみ結果が格納される。虚部の乗算手順とベクトルレジスタイメージを図26に示す。
 複素数の実部の除算では、図24に示すような命令を生成する。図24では、実部間と虚部間との乗算を実行するために、マスク付きベクトル乗算命令を生成している。そして、実部間と虚部間との乗算結果を加算するために、ベクトル移送命令とマスク付きベクトル加算命令を生成している。ベクトル移送命令の移送開始番号は「1」となるようにしている。マスク付きベクトル加算命令には、先頭要素から「10」を繰返すベクトルマスクレジスタが指定されており、実部の要素にのみ結果が格納される。
 分母の算出と算出した分母による除算の演算命令は、複素数の虚部の除算と同様の処理となるため、虚部の分子を算出する演算命令を生成した後に生成する。虚部の分子の演算命令を生成した後に、実部と虚部とを二乗するためにマスク付きベクトル乗算命令を生成する。そして、実部の二乗と虚部の二乗を加算するためにベクトル移送命令とマスク付きベクトル加算命令を生成する。二つのベクトル移送命令の移送開始番号は「1」とベクトル長「-1」を指定する。二つのマスク付きベクトル加算命令には、先頭要素から「10」を繰返すベクトルマスクレジスタと、「01」を繰返すベクトルマスクレジスタが指定される。最後に、除算を実行するためにマスク付きベクトル除算命令を生成する。実部の除算手順とベクトルレジスタイメージを図27,28に示す。
 複素数の虚部の除算では、図24に示すような命令を生成する。図24では、実部と虚部の乗算を実行するために、ベクトル移送命令とマスク付きベクトル乗算命令を生成している。2つのベクトル移送命令の移送開始番号は、ベクトル長「-1」を指定している。2つのマスク付きベクトル乗算命令には、先頭要素から「01」を繰返すベクトルマスクレジスタが指定されている。そして、2つの実部と虚部の乗算結果を減算するためにマスク付きベクトル減算命令を生成している。このときマスク付きベクトル減算命令には、先頭要素から「01」を繰返すベクトルマスクレジスタが指定されており、虚部の要素にのみ結果が格納される。その後は、複素数の実部の除算の命令生成手順で記述したように分母を算出するための演算命令と除算を実行するための演算命令が生成される。虚部の除算手順とベクトルレジスタイメージを図29,30に示す。
 <実施形態3>
 次に、本発明の第3の実施形態を、図31を参照して説明する。図31は、実施形態1,2における情報処理装置(コンパイラ)の構成を示すブロック図である。なお、本実施形態では、実施形態1,2で説明した情報処理装置の構成の概略を示している。
 図31に示すように、本実施形態における情報処理装置100は、
 複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成するロード命令生成部110と、
 2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する演算命令生成部120と、
を備える。
 なお、上記ロード命令生成部110と、演算命令生成部120とは、情報処理装置がプログラムを実行することで実現されるものである。
 そして、上記構成の情報処理装置100は、
 複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成し、
 2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する、
という処理を実行するよう作動する。
 また、上記情報処理装置100にて生成された命令に従って、ベクトル処理装置が、
 複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードし、
 2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算と、マスク付きベクトル演算と、を含むベクトル演算を実行する、
という処理を実行するよう作動する。
 以上のように、本発明によると、複素数データに対するベクトル演算において、複素数データをベクトルロード・ベクトルストアする際に連続アクセスすることで、ベクトルロード・ベクトルストアを高速化することができる。また、複素数に対する乗除算を実行する際にマスク付きベクトルクロス演算を使用することで、複素数に対するあらゆる演算を行うことができる。
 <付記>
 上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明における情報処理装置、情報処理方法、プログラム、ベクトル処理装置の構成の概略を説明する。但し、本発明は、以下の構成に限定されない。
(付記1)
 複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成するロード命令生成部と、
 2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する演算命令生成部と、
を備えた情報処理装置。
(付記2)
 付記1に記載の情報処理装置であって、
 前記演算命令生成部は、2つの前記ベクトルレジスタ間で、相互に1つ異なる要素番号に対応する要素同士のベクトル演算をマスク付きで行うマスク付きベクトルクロス演算命令を含むベクトル演算命令を生成する、
情報処理装置。
(付記3)
 付記2に記載の情報処理装置であって、
 前記演算命令生成部は、同一または異なる2つの前記ベクトルレジスタ間で行う前記マスク付きベクトルクロス演算命令を含むベクトル演算命令を生成する、
情報処理装置。
(付記4)
 付記2又は3に記載の情報処理装置であって、
 前記演算命令生成部は、要素番号が1つ間隔で空いたマスク付きの前記マスク付きベクトルクロス演算命令を含むベクトル演算命令を生成する、
情報処理装置。
(付記5)
 付記1に記載の情報処理装置であって、
 前記演算命令生成部は、所定の前記ベクトルレジスタの各要素を、その要素番号を少なくとも1つずつずらした新たな要素番号に対応させた新たなベクトルレジスタに移送するベクトル移送命令を生成すると共に、前記新たなベクトルレジスタを含む前記ベクトルレジスタに対するマスク付きベクトル演算を行う命令を生成する、
情報処理装置。
(付記6)
 付記1乃至5のいずれかに記載の情報処理装置であって、
 前記演算命令生成部は、前記複素数データを構成する実部と虚部との配列に対するループ演算を含むプログラムコードに基づいてベクトル演算命令を生成する、
情報処理装置。
(付記7)
 付記1乃至6のいずれかに記載の情報処理装置であって、
 生成された前記ベクトル演算命令に従った演算結果を格納したベクトルレジスタの各要素に連続アクセスして、当該演算結果をメモリに書き込む命令を生成するベクトルストア命令生成部を備えた、
情報処理装置。
(付記8)
 複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成し、
 2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する、
情報処理方法。
(付記8.1)
 付記8に記載の情報処理方法であって、
 2つの前記ベクトルレジスタ間で、相互に1つ異なる要素番号に対応する要素同士のベクトル演算をマスク付きで行うマスク付きベクトルクロス演算命令を含むベクトル演算命令を生成する、
情報処理方法。
(付記8.2)
 付記8に記載の情報処理方法であって、
 所定の前記ベクトルレジスタの各要素を、その要素番号を少なくとも1つずつずらした新たな要素番号に対応させた新たなベクトルレジスタに移送するベクトル移送命令を生成すると共に、前記新たなベクトルレジスタを含む前記ベクトルレジスタに対するマスク付きベクトル演算を行う命令を生成する、
情報処理方法。
(付記8.3)
 付記8乃至8.2のいずれかに記載の情報処理方法であって、
 前記複素数データを構成する実部と虚部との配列に対するループ演算を含むプログラムコードに基づいてベクトル演算命令を生成する、
情報処理方法。
(付記8.4)
 付記8乃至8.3のいずれかに記載の情報処理方法であって、
 生成された前記ベクトル演算命令に従った演算結果を格納したベクトルレジスタの各要素に連続アクセスして、当該演算結果をメモリに書き込む命令を生成する、
情報処理方法。
(付記9)
 情報処理装置に、
 複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成するロード命令生成部と、
 2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する演算命令生成部と、
を実現させるためのプログラム。
(付記10)
 複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードし、
 2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算と、マスク付きベクトル演算と、を含むベクトル演算を実行する、
ベクトル処理装置。
(付記10.1)
 付記10に記載のベクトル処理装置であって、
 2つの前記ベクトルレジスタ間で、相互に1つ異なる要素番号に対応する要素同士のベクトル演算をマスク付きで行うマスク付きベクトルクロス演算を実行する、
ベクトル処理装置。
(付記10.2)
 付記10に記載のベクトル処理装置であって、
 所定の前記ベクトルレジスタの各要素を、その要素番号を少なくとも1つずつずらした新たな要素番号に対応させた新たなベクトルレジスタに移送し、前記新たなベクトルレジスタを含む前記ベクトルレジスタに対するマスク付きベクトル演算を実行する、
ベクトル処理装置。
(付記11)
 ベクトル処理装置による情報処理方法であって、
 複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードし、
 2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算と、マスク付きベクトル演算と、を含むベクトル演算を実行する、
情報処理方法。
(付記11.1)
 付記11に記載の情報処理方法であって、
 2つの前記ベクトルレジスタ間で、相互に1つ異なる要素番号に対応する要素同士のベクトル演算をマスク付きで行うマスク付きベクトルクロス演算を実行する、
情報処理方法。
(付記11.2)
 付記11に記載の情報処理方法であって、
 所定の前記ベクトルレジスタの各要素を、その要素番号を少なくとも1つずつずらした新たな要素番号に対応するよう新たなベクトルレジスタに移送し、前記新たなベクトルレジスタを含む前記ベクトルレジスタに対するマスク付きベクトル演算を実行する、
情報処理方法。
 なお、上記プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD-ROM(Read Only Memory)、CD-R、CD-R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
 以上、上記実施形態等を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることができる。
 なお、本発明は、日本国にて2018年9月25日に特許出願された特願2018-178791の特許出願に基づく優先権主張の利益を享受するものであり、当該特許出願に記載された内容は、全て本明細書に含まれるものとする。
1 コンパイラ
10 ループ解析部
11 ベクトル化判定部
12 複素数演算認識部
20 ベクトル化実行部
21 ベクトルロード命令生成部
22 複素数演算命令生成部
23 ベクトルストア命令生成部
100 情報処理装置
110 ロード命令生成部
120 演算命令生成部

Claims (19)

  1.  複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成するロード命令生成部と、
     2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する演算命令生成部と、
    を備えた情報処理装置。
  2.  請求項1に記載の情報処理装置であって、
     前記演算命令生成部は、2つの前記ベクトルレジスタ間で、相互に1つ異なる要素番号に対応する要素同士のベクトル演算をマスク付きで行うマスク付きベクトルクロス演算命令を含むベクトル演算命令を生成する、
    情報処理装置。
  3.  請求項2に記載の情報処理装置であって、
     前記演算命令生成部は、同一または異なる2つの前記ベクトルレジスタ間で行う前記マスク付きベクトルクロス演算命令を含むベクトル演算命令を生成する、
    情報処理装置。
  4.  請求項2又は3に記載の情報処理装置であって、
     前記演算命令生成部は、要素番号が1つ間隔で空いたマスク付きの前記マスク付きベクトルクロス演算命令を含むベクトル演算命令を生成する、
    情報処理装置。
  5.  請求項1に記載の情報処理装置であって、
     前記演算命令生成部は、所定の前記ベクトルレジスタの各要素を、その要素番号を少なくとも1つずつずらした新たな要素番号に対応させた新たなベクトルレジスタに移送するベクトル移送命令を生成すると共に、前記新たなベクトルレジスタを含む前記ベクトルレジスタに対するマスク付きベクトル演算を行う命令を生成する、
    情報処理装置。
  6.  請求項1乃至5のいずれかに記載の情報処理装置であって、
     前記演算命令生成部は、前記複素数データを構成する実部と虚部との配列に対するループ演算を含むプログラムコードに基づいてベクトル演算命令を生成する、
    情報処理装置。
  7.  請求項1乃至6のいずれかに記載の情報処理装置であって、
     生成された前記ベクトル演算命令に従った演算結果を格納したベクトルレジスタの各要素に連続アクセスして、当該演算結果をメモリに書き込む命令を生成するベクトルストア命令生成部を備えた、
    情報処理装置。
  8.  複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成し、
     2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する、
    情報処理方法。
  9.  請求項8に記載の情報処理方法であって、
     2つの前記ベクトルレジスタ間で、相互に1つ異なる要素番号に対応する要素同士のベクトル演算をマスク付きで行うマスク付きベクトルクロス演算命令を含むベクトル演算命令を生成する、
    情報処理方法。
  10.  請求項8に記載の情報処理方法であって、
     所定の前記ベクトルレジスタの各要素を、その要素番号を少なくとも1つずつずらした新たな要素番号に対応させた新たなベクトルレジスタに移送するベクトル移送命令を生成すると共に、前記新たなベクトルレジスタを含む前記ベクトルレジスタに対するマスク付きベクトル演算を行う命令を生成する、
    情報処理方法。
  11.  請求項8乃至10のいずれかに記載の情報処理方法であって、
     前記複素数データを構成する実部と虚部との配列に対するループ演算を含むプログラムコードに基づいてベクトル演算命令を生成する、
    情報処理方法。
  12.  請求項8乃至11のいずれかに記載の情報処理方法であって、
     生成された前記ベクトル演算命令に従った演算結果を格納したベクトルレジスタの各要素に連続アクセスして、当該演算結果をメモリに書き込む命令を生成する、
    情報処理方法。
  13.  情報処理装置に、
     複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードする命令を生成するロード命令生成部と、
     2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算を行う命令と、マスク付きベクトル演算を行う命令と、を含むベクトル演算命令を生成する演算命令生成部と、
    を実現させるためのプログラム。
  14.  複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードし、
     2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算と、マスク付きベクトル演算と、を含むベクトル演算を実行する、
    ベクトル処理装置。
  15.  請求項14に記載のベクトル処理装置であって、
     2つの前記ベクトルレジスタ間で、相互に1つ異なる要素番号に対応する要素同士のベクトル演算をマスク付きで行うマスク付きベクトルクロス演算を実行する、
    ベクトル処理装置。
  16.  請求項14に記載のベクトル処理装置であって、
     所定の前記ベクトルレジスタの各要素を、その要素番号を少なくとも1つずつずらした新たな要素番号に対応させた新たなベクトルレジスタに移送し、前記新たなベクトルレジスタを含む前記ベクトルレジスタに対するマスク付きベクトル演算を実行する、
    ベクトル処理装置。
  17.  ベクトル処理装置による情報処理方法であって、
     複素数データを構成する実部と虚部とが交互に配置されたメモリに対して、当該実部と虚部との配置通りに連続アクセスして当該実部と虚部とをベクトルレジスタの各要素としてロードし、
     2つの前記ベクトルレジスタ間で相互に異なる要素番号に対応する要素同士のベクトル演算と、マスク付きベクトル演算と、を含むベクトル演算を実行する、
    情報処理方法。
  18.  請求項17に記載の情報処理方法であって、
     2つの前記ベクトルレジスタ間で、相互に1つ異なる要素番号に対応する要素同士のベクトル演算をマスク付きで行うマスク付きベクトルクロス演算を実行する、
    情報処理方法。
  19.  請求項17に記載の情報処理方法であって、
     所定の前記ベクトルレジスタの各要素を、その要素番号を少なくとも1つずつずらした新たな要素番号に対応するよう新たなベクトルレジスタに移送し、前記新たなベクトルレジスタを含む前記ベクトルレジスタに対するマスク付きベクトル演算を実行する、
    情報処理方法。
     
PCT/JP2019/032671 2018-09-25 2019-08-21 情報処理装置、情報処理方法、プログラム WO2020066375A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US17/277,532 US20210349719A1 (en) 2018-09-25 2019-08-21 Information processing apparatus, information processing method, and program
JP2020548162A JPWO2020066375A1 (ja) 2018-09-25 2019-08-21 情報処理装置、情報処理方法、プログラム

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2018178791 2018-09-25
JP2018-178791 2018-09-25

Publications (1)

Publication Number Publication Date
WO2020066375A1 true WO2020066375A1 (ja) 2020-04-02

Family

ID=69952035

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2019/032671 WO2020066375A1 (ja) 2018-09-25 2019-08-21 情報処理装置、情報処理方法、プログラム

Country Status (3)

Country Link
US (1) US20210349719A1 (ja)
JP (1) JPWO2020066375A1 (ja)
WO (1) WO2020066375A1 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01191266A (ja) * 1988-01-26 1989-08-01 Nec Corp 複素数演算ループ最適ベクトル化方式
US20110040822A1 (en) * 2009-08-17 2011-02-17 International Business Machines Corporation Complex Matrix Multiplication Operations with Data Pre-Conditioning in a High Performance Computing Architecture
JP2014199663A (ja) * 2013-03-30 2014-10-23 インテル・コーポレーション マスクされたフルレジスタアクセスを用いて部分レジスタアクセスを実施するプロセッサ、方法、及びシステム
US20170177362A1 (en) * 2015-12-22 2017-06-22 Intel Corporation Adjoining data element pairwise swap processors, methods, systems, and instructions
WO2017168118A1 (en) * 2016-04-01 2017-10-05 Arm Limited Complex multiply instruction

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5123095A (en) * 1989-01-17 1992-06-16 Ergo Computing, Inc. Integrated scalar and vector processors with vector addressing by the scalar processor
US7818356B2 (en) * 2001-10-29 2010-10-19 Intel Corporation Bitstream buffer manipulation with a SIMD merge instruction
US7793084B1 (en) * 2002-07-22 2010-09-07 Mimar Tibet Efficient handling of vector high-level language conditional constructs in a SIMD processor
US8667042B2 (en) * 2010-09-24 2014-03-04 Intel Corporation Functional unit for vector integer multiply add instruction
US20120254589A1 (en) * 2011-04-01 2012-10-04 Jesus Corbal San Adrian System, apparatus, and method for aligning registers
CN103988173B (zh) * 2011-11-25 2017-04-05 英特尔公司 用于提供掩码寄存器与通用寄存器或存储器之间的转换的指令和逻辑
US9904547B2 (en) * 2011-12-22 2018-02-27 Intel Corporation Packed data rearrangement control indexes generation processors, methods, systems and instructions
US9639354B2 (en) * 2011-12-22 2017-05-02 Intel Corporation Packed data rearrangement control indexes precursors generation processors, methods, systems, and instructions
US9400650B2 (en) * 2012-09-28 2016-07-26 Intel Corporation Read and write masks update instruction for vectorization of recursive computations over interdependent data
US9378182B2 (en) * 2012-09-28 2016-06-28 Intel Corporation Vector move instruction controlled by read and write masks
CN104813279B (zh) * 2012-12-28 2018-12-18 英特尔公司 用于减少具有步幅式访问模式的向量寄存器中的元素的指令
US9378017B2 (en) * 2012-12-29 2016-06-28 Intel Corporation Apparatus and method of efficient vector roll operation
US9424031B2 (en) * 2013-03-13 2016-08-23 Intel Corporation Techniques for enabling bit-parallel wide string matching with a SIMD register
US9552205B2 (en) * 2013-09-27 2017-01-24 Intel Corporation Vector indexed memory access plus arithmetic and/or logical operation processors, methods, systems, and instructions
US9747961B2 (en) * 2014-09-03 2017-08-29 Micron Technology, Inc. Division operations in memory
US9996347B2 (en) * 2014-12-24 2018-06-12 Intel Corporation Hardware apparatuses and methods relating to elemental register accesses
US11544214B2 (en) * 2015-02-02 2023-01-03 Optimum Semiconductor Technologies, Inc. Monolithic vector processor configured to operate on variable length vectors using a vector length register
US10019262B2 (en) * 2015-12-22 2018-07-10 Intel Corporation Vector store/load instructions for array of structures
US20180088946A1 (en) * 2016-09-27 2018-03-29 Intel Corporation Apparatuses, methods, and systems for mixing vector operations
US11023231B2 (en) * 2016-10-01 2021-06-01 Intel Corporation Systems and methods for executing a fused multiply-add instruction for complex numbers
US10452394B2 (en) * 2017-11-28 2019-10-22 Intel Corporation Apparatus and method for complex multiplication
US11036506B1 (en) * 2019-12-11 2021-06-15 Motorola Solutions, Inc. Memory systems and methods for handling vector data

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01191266A (ja) * 1988-01-26 1989-08-01 Nec Corp 複素数演算ループ最適ベクトル化方式
US20110040822A1 (en) * 2009-08-17 2011-02-17 International Business Machines Corporation Complex Matrix Multiplication Operations with Data Pre-Conditioning in a High Performance Computing Architecture
JP2014199663A (ja) * 2013-03-30 2014-10-23 インテル・コーポレーション マスクされたフルレジスタアクセスを用いて部分レジスタアクセスを実施するプロセッサ、方法、及びシステム
US20170177362A1 (en) * 2015-12-22 2017-06-22 Intel Corporation Adjoining data element pairwise swap processors, methods, systems, and instructions
WO2017168118A1 (en) * 2016-04-01 2017-10-05 Arm Limited Complex multiply instruction

Also Published As

Publication number Publication date
JPWO2020066375A1 (ja) 2021-08-30
US20210349719A1 (en) 2021-11-11

Similar Documents

Publication Publication Date Title
US9355061B2 (en) Data processing apparatus and method for performing scan operations
CN110806897B (zh) 面向多代码粒度的向量并行性发掘方法
KR102062208B1 (ko) 멀티스레드 프로그램 코드의 변환 장치 및 방법
JP2001249818A (ja) 最適化装置及び最適化プログラムを記録したコンピュータ読み取り可能な記録媒体
WO2020066375A1 (ja) 情報処理装置、情報処理方法、プログラム
CN110073332A (zh) 向量生成指令
US9158511B2 (en) Scalable partial vectorization
WO2020116025A1 (ja) コンパイル装置、コンパイル方法、及び非一時的なコンピュータ可読媒体
US20240053969A1 (en) Compiling device, compiling method, and compiling program recording medium
JPH04293150A (ja) コンパイル方法
JP3817073B2 (ja) メモリアクセス処理装置、メモリアクセス処理システム、および記録媒体
JP7513080B2 (ja) 処理システム及び処理方法
US20220405204A1 (en) Computer-readable recording medium storing data placement program, processor, and data placement method
JP3771682B2 (ja) ベクトル処理装置
JP2018206175A (ja) コンパイラ、情報処理装置及びコンパイル方法
JP2018049461A (ja) コンパイル装置、コンパイル方法、および、コンパイルプログラム
US10572233B2 (en) Vectorization device, vectorization method, and recording medium on which vectorization program is stored
KR102051206B1 (ko) 내포된 루프 구조를 포함하는 프로그램을 위한 컴파일 장치 및 방법과 이에 관한 기록매체
US10387128B2 (en) Method and apparatus for compiling computer-readable computer programs using extended isomorphism
JP2022131311A (ja) ベクトル演算装置、ベクトル演算方法及びプログラム
CN118626145A (en) Instruction conversion method and device and related equipment
JP5821697B2 (ja) コンパイル方法、コンパイルプログラム及びコンパイル装置
JP2023002165A (ja) コンパイラ及びコンパイル方法
CN117459226A (zh) 一种基于cpu-gpu异构平台的sm3密码恢复方法
JP3734658B2 (ja) コンパイラ装置およびコンパイラプログラムを記録したコンピュータ読取可能な記録媒体

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 19864809

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2020548162

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 19864809

Country of ref document: EP

Kind code of ref document: A1