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

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

Info

Publication number
WO2020039522A1
WO2020039522A1 PCT/JP2018/030994 JP2018030994W WO2020039522A1 WO 2020039522 A1 WO2020039522 A1 WO 2020039522A1 JP 2018030994 W JP2018030994 W JP 2018030994W WO 2020039522 A1 WO2020039522 A1 WO 2020039522A1
Authority
WO
WIPO (PCT)
Prior art keywords
bit
value
data
vector
bit vector
Prior art date
Application number
PCT/JP2018/030994
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/269,423 priority Critical patent/US20210182061A1/en
Priority to PCT/JP2018/030994 priority patent/WO2020039522A1/ja
Priority to JP2020537940A priority patent/JP7052874B2/ja
Publication of WO2020039522A1 publication Critical patent/WO2020039522A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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/30018Bit or string instructions
    • 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
    • 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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]

Definitions

  • the present invention relates to an information processing device, an information processing method, and a program.
  • bit vector only significant bits are extracted from each element of the original data string, and the data string is represented by the bit string. For example, if the data sequence consists of only binary values ⁇ 0, 1 ⁇ , only one bit in each element has a meaningful part in the data sequence. It can be represented by one bit of a bit vector.
  • Patent Literature 1 discloses, as a related technique, a technique related to a method of using a bit vector when executing a query having a complicated conditional clause on a database.
  • Patent Literature 2 discloses, as a related technique, a technique relating to a method of using a bit vector in learning of a support vector machine (SVM).
  • SVM support vector machine
  • the original data string is made up of only binary values ⁇ 0, 1 ⁇ , and the bit width per element of the conversion destination bit vector is m. Then, m elements of the original data string are collectively converted by one SIMD parallel processing. That is, the number of parallel processes in the SIMD parallel processing is m. For each of the m parallel elements, the value is bit-shifted to the corresponding bit position within one element of the conversion destination, and then those m values are set as one element of the conversion destination by bit OR. I do.
  • the maximum parallel number of SIMD type processors ranges from hundreds to thousands of units, while the integer type that the processor can handle without using a special data structure has a width of at most 64 bits.
  • a bit vector can be generated only with a parallel number significantly smaller than the maximum parallel number of the SIMD type processor. That is, in the parallel bit vector conversion of the related technology, there is a problem that the number of parallel SIMDs is limited to the same number as the bit width m per element of the bit vector.
  • Each aspect of the present invention aims to provide an information processing apparatus, an information processing method, and a program that can solve the above-described problems.
  • an information processing device includes: an input data sequence division unit configured to divide an input data sequence into a plurality of groups; and a data value in each of the plurality of groups.
  • a bit shift unit that shifts a digit to a specific digit corresponding to each of the plurality of groups by parallel processing of the SIMD method, and a value of the data shifted by the bit shift unit is set to a corresponding digit of an output data sequence.
  • a bit setting unit is
  • an information processing method includes dividing an input data string into a plurality of groups, and changing a data value in each of the plurality of groups by a specific digit corresponding to each of the plurality of groups. And shifting the digit by the SIMD parallel processing, and setting the value of the shifted data to the corresponding digit of the output data string.
  • a program causes a computer to divide an input data sequence into a plurality of groups, and to change a value of data in each of the plurality of groups to a specific value corresponding to each of the plurality of groups.
  • the digit is shifted to the digit by the parallel processing of the SIMD method, and the value of the shifted data is set to the corresponding digit of the output data sequence.
  • the parallel number of the parallel processing of the SIMD method is not limited to the bit width, and the parallel processing of the SIMD method can generate a bit vector at a higher speed with a larger number of parallel processing.
  • FIG. 1 is a diagram illustrating a configuration of a bit vector generation device according to a first embodiment of the present invention.
  • FIG. 4 is a diagram for explaining an operation of a bit setting unit according to the first embodiment of the present invention.
  • FIG. 3 is a diagram illustrating a processing flow of the bit vector generation device according to the first embodiment of the present invention.
  • FIG. 4 is a diagram for explaining processing of the bit vector generation device according to the first embodiment of the present invention.
  • FIG. 6 is a diagram illustrating a configuration of a data string generation device according to another embodiment of the present invention. It is a figure showing the composition of the central processing system by a 2nd embodiment of the present invention. It is a figure for explaining processing of an aggregation operation system by a 2nd embodiment of the present invention.
  • FIG. 11 is a diagram illustrating a configuration of a vector operation system according to a third embodiment of the present invention. It is a figure for explaining processing of the vector operation system by a 3rd embodiment of the present invention.
  • FIG. 1 is a diagram illustrating a minimum configuration bit vector generation device according to an embodiment of the present invention.
  • FIG. 2 is a schematic block diagram illustrating a configuration of a computer according to at least one embodiment.
  • a bit vector generation device 10 (an example of an information processing device) according to a first embodiment of the present invention includes an input data sequence division unit 101, bit shift units 102a1, 102a2, 102a3,. 102 am and a bit setting unit 103.
  • the bit shift units 102a1, 102a2, 102a3,..., 102ak are collectively referred to as a bit shift unit 102.
  • the bit vector generation device 10 is a device included in a SIMD type processor.
  • bit vector generation device 10 An apparatus for generating an output bit vector capable of performing k-parallel SIMD parallel processing by making the number of elements included in one m group the same as the number k of elements of the output bit vector It is.
  • the input data string dividing unit 101 divides the input data string into a plurality of groups. For example, the input data string dividing unit 101 divides an input data string into m groups so that the data string is composed of continuous elements on a memory. The number of elements included in each of the m groups is the same as the number k of elements of the output bit vector.
  • Each of the bit shift units 102 shifts the value of data in each of the plurality of groups to a specific digit corresponding to each of the plurality of groups by SIMD parallel processing. For example, each of the bit shift units 102 collectively performs a bit shift on each element in one group by one SIMD parallel processing. The bit shift unit 102 bit-shifts the values of all the elements in the group by the same number of digits in one SIMD parallel process.
  • Bit setting section 103 sets the value of the data shifted by bit shift section 102 to the corresponding digit of the output data sequence. For example, the bit setting unit 103 sets the value after bit shifting by each of the bit shift units 102 in the corresponding bit position of the output bit vector. For example, when the original data sequence shown in FIG. 2 is a j-th group (j ⁇ 0, 1, 2,..., M ⁇ 1 ⁇ ), the bit shift unit 102 includes the j-th group. All the k elements to be shifted are shifted to the left (to the upper bits) by j bits, and bit setting section 103 sets the value to the j-th bit of each element of the output bit vector.
  • n is the number of elements of the input data sequence
  • m is the bit width per element of the bit vector
  • k is the number of elements of the output bit vector
  • i is a suffix indicating the position of the data in one group.
  • SRC is an input data sequence
  • DEST is an output bit vector.
  • the bit vector generation device 10 initializes the output bit vector DEST to an initial value of zero (Step S1). This initialization may be performed by any of the input data sequence division unit 101, the bit shift unit 102, and the bit setting unit 103.
  • the input data string SRC is input to the input data string dividing unit 101.
  • the input data string dividing unit 101 divides the input data string into a plurality of groups (Step S2). For example, the input data string dividing unit 101 divides the input data string SRC into m groups in total so that one group contains k elements in order from the beginning.
  • the operation of the input data string division unit 101 corresponds to the repetition processing A in the processing flow of FIG. 3, and each group is divided into the j-th group by using the repetition variables j ⁇ 0, 1, 2,. It can be represented as a subroutine described as a group.
  • Each of the bit shift units 102 shifts the value of the data in each of the plurality of groups to a specific digit corresponding to each of the plurality of groups by SIMD parallel processing (step S3). For example, each of the bit shift units 102 shifts all the elements in the j-th group to the left by j-bit parallel processing by j bits.
  • the bit setting unit 103 sets the value of the data shifted by the bit shift unit 102 to the corresponding digit of the output data sequence (Step S4). For example, the bit setting unit 103 sets a value shifted left by those j bits to the j-th bit of the output bit vector.
  • bit shift unit 102 and the bit setting unit 103 correspond to a subroutine by the repetition processing B and the parallel processing of the internal SIMD method in the processing flow of FIG.
  • the bit setting by the bit setting unit 103 can be performed by a bit OR operation.
  • the bit setting by the bit setting unit 103 may be performed by an addition operation of integers.
  • the input data sequence dividing unit 101 divides the input data sequence into groups of six elements, and creates four groups as a whole.
  • the input data sequence dividing unit 101 sequentially assigns the 0th group, the 1st group, the 2nd group, and the 3rd group from the top according to the values of the above-described repetition variables j ⁇ 0, 1, 2, ..., m-1 ⁇ . Group. In addition, the input data sequence division unit 101 also counts the least significant bit as the 0th bit for the bit position of the bit vector. Each of the bit shift units 102 does not perform a bit shift on the six elements included in the 0th group (shifts 0 bits by SIMD parallel processing). The bit setting section 103 sets the 0th bit of each of the six elements of the bit vector. Each of the bit shift units 102 shifts all six elements included in the first group to the left by one bit by SIMD parallel processing.
  • the bit setting unit 103 sets the first bit of each of the six elements of the bit vector. The same applies to the following, but each of the bit shift units 102 shifts all six elements included in the second group to the left by 2 bits by SIMD parallel processing, and the bit setting unit 103 Is set to the second bit of each of the elements. Finally, each of the bit shift units 102 shifts all the six elements included in the third group to the left by 3 bits by SIMD parallel processing, and the bit setting unit 103 determines whether each of the six elements of the bit vector has Is set to the third bit. Through such processing, the output bit vector DEST is completed.
  • the bit vector generation device 10 has been described above.
  • the input data sequence dividing unit 101 divides an input data sequence into a plurality of groups.
  • Each bit shift unit 102 shifts the value of the data in each of the plurality of groups to a specific digit corresponding to each of the plurality of groups by SIMD parallel processing.
  • Bit setting section 103 sets the value of the data shifted by bit shift section 102 to the corresponding digit of the output data sequence.
  • the parallel number of the SIMD parallel processing is not limited to the bit width m, and the bit vector generation device 10 generates the bit vector at a high speed by using the parallel number k of the SIMD parallel processing. be able to.
  • both the input data sequence SRC to be processed and the output bit vector DEST are continuous elements, memory access can be performed at high speed, and the bit vector generation device 10 can generate a bit vector at high speed. it can.
  • the order of the bits may be reversed within one element of the bit vector. That is, in one element of the bit vector, whether to set the value in order from the lower bit to the upper bit or to set the value in order from the upper bit to the lower bit may be either order. .
  • the bit shift unit 102 may shift all the elements in the j-th group to the left by mj-1 bits.
  • a data sequence generating device 3 (information) for performing a reverse conversion from a bit vector to an original data sequence in order to generate a data sequence in the original arrangement order by using a bit vector as an input.
  • An example of a processing device may be used. That is, the data string generation device 3 according to another embodiment of the present invention includes, for example, as shown in FIG. 5, a bit acquisition unit 201, a bit reverse shift unit 202, and a data element setting unit 203.
  • the bit acquisition unit 201 acquires a value at a specific bit position from each element of the input bit vector.
  • the bit reverse shift unit 202 shifts the value of each bit position to the position of the lower bit by SIMD parallel processing.
  • the data element setting unit 203 sets the bit-shifted value in each element of the data string.
  • the data string generation device 3 may include the bit acquisition unit 201, the bit reverse shift unit 202, and the data element setting unit 203 as described above. Note that the data string generating device 3 described here corresponds to the bit vector inverse transform unit 40 of the bit vector inverse transform device 2 according to the third embodiment of the present invention described later.
  • the input data sequence is made up of only binary values ⁇ 0, 1 ⁇ .
  • the data string to be input is not limited to the binary ⁇ 0, 1 ⁇ .
  • the input data sequence may be, for example, a discrete value data sequence.
  • the types of values that can be taken by individual elements of the data string are limited, and a sufficient number of bits t that can represent the type of the value is considered. For example, if the input data string is composed of three values ⁇ 0, 1, 2 ⁇ , it is sufficient if the number of bits t is 2 bits.
  • bit shift amount of the bit shift unit 102 and the bit setting position of the bit setting unit 103 so that one element of the original data sequence corresponds to t bits of the bit vector, the discrete value data sequence can be input. Also, a bit vector can be generated.
  • the aggregation operation system 1 (an example of an information processing device) according to a second embodiment of the present invention will be described.
  • the aggregation operation system 1 according to the second embodiment of the present invention is a system that performs an aggregation operation on a data sequence after generating an output bit vector DEST from an input data sequence SRC.
  • the aggregation operation system 1 includes bit vector generation devices 10a1, 10a2,..., 10aN, and an aggregation operation unit 20.
  • the bit vector generators 10a1, 10a2,..., 10aN are collectively referred to as a bit vector generator 10a.
  • Each of the bit vector generators 10a is the same as the bit vector generator 10 according to the first embodiment of the present invention.
  • Each of the bit vector generation devices 10a generates an output bit vector DEST from the input data sequence SRC, and outputs the generated output bit vector DEST to the aggregation operation unit 20.
  • the aggregation operation unit 20 performs the aggregation operation of the bit vectors by using the plurality of output bit vectors DEST as inputs.
  • the aggregation operation is, for example, calculation of the sum or average value of a data sequence, processing of counting the number of elements satisfying a specific condition in the data sequence, inner product operation of vectors, matrix product operation of matrices, and the like.
  • bit vector generation device 10a is the same as the bit vector generation device 10 according to the first embodiment of the present invention, the processing of the aggregation operation unit 20 will be described here.
  • the aggregation operation unit 20 performs, on the output bit vector DEST, the same operation as that performed on the original input data sequence SRC. As described in the first embodiment of the present invention, each of the bit vector generation devices 10a generates the output bit vector DEST having a different bit arrangement order from the bit vector generated using the related technique. However, the operation performed by the aggregation operation unit 20 is an operation irrelevant to the order of bits, such as a sum or an inner product. Therefore, the aggregation operation system 1 can perform a correct aggregation operation. That is, the aggregation operation system 1 can calculate a correct aggregation value.
  • the calculation of the sum by the aggregation operation unit 20 of the data sequence consisting of only binary values of ⁇ 0, 1 ⁇ can be performed by counting the number of 1-bits in the bit vector.
  • the operation of the aggregation operation unit 20 may perform a process of performing a pop count process on each element of the output bit vector DEST and a process of calculating the sum of values calculated by the pop count.
  • the inner product operation of the aggregation operation unit 20 between vectors consisting of only binary values of ⁇ 0, 1 ⁇ includes a process of performing a bit AND operation of bit vectors and a pop count for each element of the bit vector. The processing for performing the processing and the processing for calculating the sum of the values calculated by the pop count may be performed.
  • the input data sequence SRC to be input is input to each of the bit vector generation devices 10a.
  • Each of the bit vector generation devices 10a generates an output bit vector DEST from the input data sequence SRC.
  • the aggregation operation unit 20 performs a pop count process on each element of the output bit vector DEST generated by each of the bit vector generation devices 10a.
  • the result of the pop counting process performed by the aggregation operation unit 20 indicates the values of 0, 1, 2, 3, 2, and 1 as indicated by pop counting in FIG.
  • the aggregation calculator 20 calculates the sum of these values, and derives the sum 9 as the calculation result. In this way, the aggregation operation unit 20 derives the same value as the sum 9 of the original data string in FIG.
  • each of the bit vector generating devices 10a converts the output bit vector DEST from the input data sequence SRC similarly to the bit vector generating device 10 according to the first embodiment of the present invention. Generate.
  • the aggregation operation unit 20 performs, on the output bit vector DEST, the same operation as that performed on the original input data sequence SRC. In this way, the parallel number of the SIMD parallel processing is not limited to the bit width m, and the bit vector generation device 10 generates the bit vector at a high speed by using the parallel number k of the SIMD parallel processing.
  • a specific feature amount may include discrete values.
  • a feature quantity indicating a human gender 1 is used for a male, and 0 is used otherwise.
  • 0, 1 for type B, 2 for type O, and 3 for type AB there are cases where 0, 1 for housewives, and 3 for students are used as feature quantities indicating occupations.
  • the model generation of machine learning may include a process of performing an inner product operation of a vector, but if the above-described feature amount is treated as a discrete value vector instead of a real number vector, the aggregation operation system 1 is used. An inner product operation of a discrete value vector can be performed. Therefore, the aggregation operation system 1 can speed up part or all of the inner product operation of vectors in model generation of machine learning. In this case, the aggregation operation unit 20 determines the sum of the output data sequence and the output data sequence for the output data sequence (that is, the output bit vector) for which the bit setting unit 103 has set the data value to the corresponding digit.
  • At least one of the average value, the number of specific elements in the output data sequence, the inner product of the vectors indicated by the plurality of output data sequences, and the matrix product of the matrices indicated by the plurality of output data sequences is determined by the SIMD method.
  • the operation is performed by parallel processing.
  • the aggregation operation system 1 according to the second embodiment of the present invention has been described as including a plurality of bit vector generation devices 10a.
  • the aggregation operation system 1 according to another embodiment of the present invention includes one bit vector generation device 10a, and the aggregation operation unit 20 performs the aggregation operation on the output bit vector DEST generated by the bit vector generation device 10a. It may be something.
  • the vector operation system 2 (an example of an information processing device) according to a third embodiment of the present invention will be described.
  • the vector operation system 2 according to the third embodiment of the present invention is a system that converts an input data sequence SRC into a bit vector and then performs a vector operation on the data sequence.
  • the vector operation system 2 is a system assuming a case where the arrangement order of the elements of the original data string is required later.
  • the vector operation system 2 includes bit vector generation devices 10a1, 10a2,..., 10aN, a bit operation unit 30, and a bit vector inverse conversion unit 40.
  • the bit vector generators 10a1, 10a2,..., 10aN are collectively referred to as a bit vector generator 10a.
  • Each of the bit vector generators 10a is the same as the bit vector generator 10 according to the first embodiment of the present invention.
  • Each of the bit vector generation devices 10a generates an output bit vector DEST from the input data sequence SRC, and outputs the generated output bit vector DEST to the bit operation unit 30.
  • the bit operation unit 30 performs a bit operation on a plurality of bit vectors.
  • the bit operation is, for example, a bit inversion (NOT), a bit AND (AND), a bit OR (OR), a bit exclusive OR (XOR), or the like.
  • the bit vector inverse transform unit 40 generates a data sequence in the original arrangement order by using a bit vector as an input. That is, the bit vector inverse conversion unit 40 is a functional unit that performs an inverse conversion from the bit vector to the original data sequence.
  • bit vector generation device 10a is the same as the bit vector generation device 10 according to the first embodiment of the present invention, the processing of the bit operation unit 30 and the bit vector inverse conversion unit 40 will be described here.
  • the bit operation unit 30 performs, on the output bit vector DEST, a vector operation that is essentially equivalent to the vector operation performed on the original input data sequence SRC.
  • the inverse bit vector conversion unit 40 performs the reverse operation of the bit vector generation device 10 to restore the order of the elements of the data string. Therefore, the vector operation system 2 according to the third embodiment of the present invention can obtain a correct operation result.
  • the process of the bit operation unit 30 includes a process of performing a bit AND operation on each element of the bit vector.
  • Each of the bit vector generation devices 10a generates a bit vector U 'and a bit vector V' from the input data sequence U and data sequence V (see bit vector U 'and bit vector V' in FIG. 10).
  • the bit operation unit 30 calculates a bit AND (U ', V') of these two bit vectors U 'and V' (see AND (U ', V') in FIG. 10).
  • the bit vector inverse conversion unit 40 inversely converts the bit vector AND (U ', V') into the original data sequence in the original arrangement order (see the inverse conversion of AND (U ', V') in FIG. 10).
  • the result of the inverse transformation of AND (U ', V') by the vector operation system 2 is the same as the result of multiplication of the data sequence U and the data sequence V for each element.
  • each of the bit vector generation devices 10a converts the output bit vector DEST from the input data sequence SRC similarly to the bit vector generation device 10 according to the first embodiment of the present invention.
  • the bit operation unit 30 performs, on the output bit vector DEST, a vector operation that is essentially equivalent to the vector operation performed on the original input data sequence SRC.
  • the inverse bit vector conversion unit 40 performs the reverse operation of the bit vector generation device 10 to restore the order of the elements of the data string.
  • the parallel number of the SIMD parallel processing is not limited to the bit width m, and the bit vector generation device 10 generates the bit vector at a high speed by using the parallel number k of the SIMD parallel processing. Since the bit operation unit 30 performs the same operation on the generated bit vector as in the case where the related technology is used, the vector operation system 2 is compared with the operation of the system using the related technology. High-speed operation. For example, consider a case where a WHERE clause of a query in a database selection operation includes a plurality of conditions. Here, consider a boolean column vector having a value of 1 if the row (record) satisfies the condition and 0 if not.
  • a boolean column vector corresponding to each condition is set as an intermediate result
  • a boolean column vector corresponding to the entire WHERE clause is set as a final result.
  • a boolean column vector indicating whether the age is 50 or more, and whether the gender is male Is an intermediate result between a boolean column vector indicating whether the blood type is A type or not, and a boolean column vector indicating whether the whole WHERE clause is matched.
  • the vector operation system 2 can be used to perform a vector logical operation for obtaining a final result from the intermediate result group. Therefore, the vector operation system 2 can speed up the acquisition of the final result in the selection operation of the database.
  • the minimum configuration bit vector generation device 10 includes an input data sequence division unit 101, a bit shift unit 102, and a bit setting unit 103.
  • the input data string dividing unit 101 divides an input data string into a plurality of groups.
  • the bit shift unit 102 shifts the value of the data in each of the plurality of groups to a specific digit corresponding to each of the plurality of groups by SIMD parallel processing.
  • the bit setting unit 103 sets the value of the data shifted by the digit by the bit shift unit 102 to a corresponding digit in the output data string.
  • the parallel number of the parallel processing of the SIMD method is not limited to the bit width m, and the bit vector generation apparatus 10 can execute the parallel processing of the SIMD method with more parallel processing.
  • a bit vector can be generated at a high speed with k. Further, since both the input data string SRC to be processed and the output bit vector DEST are continuous elements, memory access can be performed at high speed, and the bit vector generation device 10 can generate a bit vector at high speed. .
  • the order of the processes may be changed within a range in which an appropriate process is performed.
  • the storage unit and other storage devices in the embodiments of the present invention may be provided anywhere as long as appropriate information is transmitted and received.
  • a plurality of storage units and other storage devices may exist in a range where appropriate information is transmitted and received, and may store data in a distributed manner.
  • FIG. 12 is a schematic block diagram illustrating a configuration of a computer according to at least one embodiment.
  • the computer 5 includes a CPU 6, a main memory 7, a storage 8, and an interface 9, as shown in FIG.
  • each of the above-described bit vector generation devices 10 and 10a, the aggregation operation unit 20, and other control devices are implemented in the computer 5.
  • each processing unit described above is stored in the storage 8 in the form of a program.
  • the CPU 6 reads the program from the storage 8 and expands the program in the main memory 7, and executes the above-described processing according to the program. Further, the CPU 6 secures a storage area corresponding to each of the above-described storage units in the main memory 7 according to a program.
  • Examples of the storage 8 include a hard disk drive (HDD), a solid state drive (SSD), a magnetic disk, a magneto-optical disk, a CD-ROM (Compact Disc Read Only Memory), and a DVD-ROM (Digital Documentary Discrete Memory). And a semiconductor memory.
  • the storage 8 may be an internal medium directly connected to the bus of the computer 5 or an external medium connected to the computer 5 via the interface 9 or a communication line. When the program is distributed to the computer 5 via a communication line, the computer 5 that has received the program may load the program into the main memory 7 and execute the above processing.
  • storage 8 is a non-transitory tangible storage medium.
  • the program may implement a part of the functions described above. Further, the program may be a file that can realize the above-described functions in combination with a program already recorded in the computer system, that is, a so-called difference file (difference program).
  • difference file difference program
  • the parallel number of the parallel processing of the SIMD method is not limited to the bit width m, and the parallel processing of the SIMD method can generate a bit vector at a higher speed with a larger number k of parallel processing.

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)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Medical Informatics (AREA)
  • Evolutionary Computation (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Artificial Intelligence (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

情報処理装置は、データ列を入力としてビットベクトルを出力する情報処理装置であって、前記データ列を複数の群に分割する入力データ列分割部と、複数の前記群それぞれにおけるデータの値を、複数の前記群それぞれに応じた特定の桁にSIMD(Single Instruction Multiple Data)方式の並列処理により桁移動するビットシフト部と、前記ビットシフト部によって桁移動した前記データの値を、前記ビットベクトルの対応する桁に設定するビット設定部と、を備える。

Description

情報処理装置、情報処理方法及びプログラム
 本発明は情報処理装置、情報処理方法及びプログラムに関する。
 大量のデータに対する処理を高速に実行するためには、ハードウェアによる高速化技術とソフトウェアによる高速化技術の両方を組み合わせて利用することが重要である。
 データ列の個々の要素が取り得る値の種類が非常に限られている場合、例えば{0,1}の二値のみからなるデータ列を処理する場合などに、データ列をビットベクトルに変換することで処理を高速化する方法が知られている。ビットベクトルでは、元のデータ列の各要素から意味のあるビットのみを取り出し、そのビット列でデータ列を表現する。例えば、データ列が{0,1}の二値のみからなる場合は、そのデータ列の中で意味のある部分は各要素中の1ビットずつのみであるため、元のデータ列の一要素はビットベクトルの1ビットで表現することができる。プロセッサでビットベクトルを扱うために特殊なデータ構造を用意する必要はなく、単なる整数型の配列を用いることが多い。
 特許文献1には、関連する技術として、データベースに対して複雑な条件節を持つクエリを実行する際にビットベクトルを利用する方法に関する技術が開示されている。
 特許文献2には、関連する技術として、SVM(Support Vector Machine)の学習においてビットベクトルを利用する方法に関する技術が開示されている。
特許第6305406号公報 特許第6055391号公報
 SIMD(Single Instruction Multiple Data)方式の並列処理による並列ビットベクトル変換では、元のデータ列は{0,1}の二値のみからなるものとし、変換先ビットベクトルの一要素あたりのビット幅をmとすると、元のデータ列の要素のm個を一回のSIMD方式の並列処理でまとめて変換する。すなわちSIMD方式の並列処理の並列数はmである。並列するm個の要素に対しては、それぞれ、変換先の一要素内における対応するビット位置まで値をビットシフトした後、それらのm個の値をビット論理和により変換先の一要素に設定する。SIMD型プロセッサの最大並列数は、数百から数千単位に及ぶものまで存在するが、一方で、プロセッサが特殊なデータ構造を用いることなく扱える整数型は、高々64ビットの幅しかないものが普通である。そのため、関連する技術ではSIMD型プロセッサの最大並列数を大きく下回る並列数でしかビットベクトルを生成できない。つまり、関連する技術の並列ビットベクトル変換では、SIMDの並列数がビットベクトルの一要素あたりのビット幅mと同じ数までに制限されてしまうという問題がある。
 本発明の各態様は、上記の課題を解決することのできる情報処理装置、情報処理方法及びプログラムを提供することを目的としている。
 上記目的を達成するために、本発明の一態様によれば、情報処理装置は、入力データ列を複数の群に分割する入力データ列分割部と、複数の前記群それぞれにおけるデータの値を、複数の前記群それぞれに応じた特定の桁にSIMD方式の並列処理により桁移動するビットシフト部と、前記ビットシフト部によって桁移動した前記データの値を、出力データ列の対応する桁に設定するビット設定部と、を備える。
 本発明の別の態様によれば、情報処理方法は、入力データ列を複数の群に分割することと、複数の前記群それぞれにおけるデータの値を、複数の前記群それぞれに応じた特定の桁にSIMD方式の並列処理により桁移動することと、桁移動した前記データの値を、出力データ列の対応する桁に設定することと、を含む。
 本発明の別の態様によれば、プログラムは、コンピュータに、入力データ列を複数の群に分割することと、複数の前記群それぞれにおけるデータの値を、複数の前記群それぞれに応じた特定の桁にSIMD方式の並列処理により桁移動することと、桁移動した前記データの値を、出力データ列の対応する桁に設定することと、を実行させる。
 本発明の各態様によれば、SIMD方式の並列処理の並列数がビット幅に制限されず、SIMD方式の並列処理をより多くの並列数で高速にビットベクトルを生成することができる。
本発明の第1の実施形態によるビットベクトル生成装置の構成を示す図である。 本発明の第1の実施形態によるビット設定部の動作を説明するための図である。 本発明の第1の実施形態によるビットベクトル生成装置の処理フローを示す図である。 本発明の第1の実施形態によるビットベクトル生成装置の処理を説明するための図である。 本発明の別の実施形態によるデータ列生成装置の構成を示す図である。 本発明の第2の実施形態による集約演算システムの構成を示す図である。 本発明の第2の実施形態による集約演算システムの処理を説明するための図である。 本発明の第2の実施形態において機械学習のモデル生成に用いるデータセットの例を示す図である。 本発明の第3の実施形態によるベクトル演算システムの構成を示す図である。 本発明の第3の実施形態によるベクトル演算システムの処理を説明するための図である。 本発明の実施形態による最小構成のビットベクトル生成装置を示す図である。 少なくとも1つの実施形態に係るコンピュータの構成を示す概略ブロック図である。
<第1の実施形態>
 以下、図面を参照しながら実施形態について詳しく説明する。
 本発明の第1の実施形態によるビットベクトル生成装置10(情報処理装置の一例)は、図1に示すように、入力データ列分割部101、ビットシフト部102a1、102a2、102a3、・・・、102am、ビット設定部103を備える。ビットシフト部102a1、102a2、102a3、・・・、102akを総称してビットシフト部102と呼ぶ。
 ビットベクトル生成装置10は、SIMD型プロセッサが備える装置である。ビットベクトルの一要素あたりのビット幅をmとし、入力データ列を先頭から順番に、各要素ひとつずつ異なる桁数でビットシフトする関連する技術を用いた場合とは異なり、ビットベクトル生成装置10は、m個のグループひとつあたりに含まれる要素数を、出力ビットベクトルの要素数kと同じ要素数とすることで、SIMD方式の並列処理をk並列で行うことのできる出力ビットベクトルを生成する装置である。
 入力データ列分割部101は、入力データ列を複数の群に分割する。例えば、入力データ列分割部101は、入力となるデータ列を、メモリ上で連続した要素で構成されるようにm個のグループに分割する。m個のグループひとつあたりに含まれる要素数は、出力ビットベクトルの要素数kと同じ要素数とする。
 ビットシフト部102それぞれは、複数の群それぞれにおけるデータの値を、複数の群それぞれに応じた特定の桁にSIMD方式の並列処理により桁移動する。例えば、ビットシフト部102それぞれは、ひとつのグループ内の各要素を一回のSIMD方式の並列処理でまとめてビットシフトする。ビットシフト部102は、一回のSIMD方式の並列処理において、グループ内の各要素の値をすべて同じ桁数だけビットシフトする。
 ビット設定部103は、ビットシフト部102によって桁移動したデータの値を、出力データ列の対応する桁に設定する。例えば、ビット設定部103は、ビットシフト部102それぞれがビットシフトした後の値を出力ビットベクトルの対応するビット位置に設定する。
 例えば、図2に示されている元のデータ列が第jグループ(j∈{0,1,2,…,m-1})であるとき、ビットシフト部102は、この第jグループに含まれるk個の要素はすべてjビットだけ左へ(上位ビット側へ)シフトし、ビット設定部103は、その値を出力ビットベクトルのそれぞれの要素の第jビット目に設定する。
 次に、本発明の第1の実施形態によるビットベクトル生成装置10の処理について説明する。ここでは、図3に示すビットベクトル生成装置10の処理フローについて説明する。なお、nは入力データ列の要素数、mはビットベクトルの一要素あたりのビット幅、kは出力ビットベクトルの要素数、iはひとつの群内におけるデータの位置を示す添え字である。また、このとき、変換後のビットベクトルの要素数kは、k=CEILING(n/m)と表すことができる(CEILINGは、天井関数である)。また、SRCは入力データ列、DESTは出力ビットベクトルである。
 ビットベクトル生成装置10は、出力ビットベクトルDESTを初期値ゼロに初期化する(ステップS1)。この初期化は、入力データ列分割部101、ビットシフト部102、ビット設定部103のいずれが主体となって行うものであってもよい。
 入力データ列SRCが入力データ列分割部101に入力される。入力データ列分割部101は、入力データ列を複数の群に分割する(ステップS2)。例えば、入力データ列分割部101は、入力データ列SRCを先頭から順番に、グループひとつあたりk要素が含まれるように、全体でm個のグループに分割する。この入力データ列分割部101の動作は、図3の処理フローでは繰り返し処理Aに相当し、繰り返し変数j∈{0,1,2,…,m-1}を用いれば、各グループを第jグループと表記するサブルーチンとして表すことができる。
 ビットシフト部102それぞれは、複数の群それぞれにおけるデータの値を、複数の群それぞれに応じた特定の桁にSIMD方式の並列処理により桁移動する(ステップS3)。例えば、ビットシフト部102それぞれは、第jグループ内の各要素をすべてjビットだけSIMD方式の並列処理により左へシフトする。ビット設定部103は、ビットシフト部102によって桁移動したデータの値を、出力データ列の対応する桁に設定する(ステップS4)。例えば、ビット設定部103は、それらのjビットだけ左へシフトした値を出力ビットベクトルのjビット目に設定する。ビットシフト部102とビット設定部103のこれらの動作は、図3の処理フローでは繰り返し処理Bと内部のSIMD方式の並列処理によるサブルーチンに相当する。なお、ビット設定部103によるビットの設定は、ビット論理和演算により行うことができる。また、ビット設定部103によるビットの設定は、整数の加算演算により行うものであってもよい。
(具体例1)
 本発明の第1の実施形態によるビットベクトル生成装置10の処理の具体例について、図4を参照して説明する。入力となる元のデータ列SRCは、図4に示すように、24個の要素からなる(n=24)。ビットベクトルの一要素あたりのビット幅を4ビットとする(m=4)。出力となるビットベクトルの要素数kは、k=CEILING(24÷4)=6である。
 ビットベクトル生成装置10において、入力データ列分割部101は、入力データ列を6要素ずつグループに分割し、全体で4個のグループを作る。入力データ列分割部101は、上述した繰り返し変数j∈{0,1,2,…,m-1}の値に合わせて、先頭から順に第0グループ、第1グループ、第2グループ、第3グループとする。また、入力データ列分割部101は、ビットベクトルのビット位置についても、最下位を0ビット目と数えるものとする。
 ビットシフト部102それぞれは、第0グループに含まれる6個の要素にはビットシフトを行わない(SIMD方式の並列処理により0ビットのシフトを行う)。ビット設定部103は、ビットベクトルの6個の要素それぞれの0ビット目に設定する。ビットシフト部102それぞれは、SIMD方式の並列処理により第1グループに含まれる6個の要素をすべて1ビット左へシフトする。ビット設定部103は、ビットベクトルの6個の要素それぞれの1ビット目に設定する。以下同様であるが、ビットシフト部102それぞれは、SIMD方式の並列処理により第2グループに含まれる6個の要素にはすべて2ビット左へシフトし、ビット設定部103は、ビットベクトルの6個の要素それぞれの2ビット目に設定する。最後に、ビットシフト部102それぞれは、SIMD方式の並列処理により第3グループに含まれる6個の要素にはすべて3ビット左へシフトし、ビット設定部103は、ビットベクトルの6個の要素それぞれの3ビット目に設定する。このような処理により出力ビットベクトルDESTが完成する。
 以上、本発明の第1の実施形態によるビットベクトル生成装置10について説明した。本発明の第1の実施形態によるビットベクトル生成装置10において、入力データ列分割部101は、入力データ列を複数の群に分割する。ビットシフト部102それぞれは、複数の群それぞれにおけるデータの値を、複数の群それぞれに応じた特定の桁にSIMD方式の並列処理により桁移動する。ビット設定部103は、ビットシフト部102によって桁移動したデータの値を、出力データ列の対応する桁に設定する。
 このようにすれば、SIMD方式の並列処理の並列数がビット幅mに制限されず、ビットベクトル生成装置10は、SIMD方式の並列処理をより多くの並列数kで高速にビットベクトルを生成することができる。また、処理する入力データ列SRCと出力ビットベクトルDESTは、どちらも連続した要素であるため、高速にメモリアクセスを行うことができ、ビットベクトル生成装置10は、高速にビットベクトルを生成することができる。
 なお、本発明の別の実施形態では、ビットの並び順は、ビットベクトルの一要素内で逆順であってもよい。つまり、ビットベクトルの一要素内において、下位ビットから上位ビットに向かって順に値を設定していくか、上位ビットから下位ビットに向かって順に値を設定していくかは、どちらの順番でもよい。上で述べた動作の説明とは逆順の場合、ビットシフト部102は、第jグループ内の各要素をすべてm-j-1ビットだけ左へシフトすればよい。
 なお、本発明の別の実施形態では、ビットベクトルを入力として元の並び順のデータ列を生成するため、つまり、ビットベクトルから元のデータ列への逆変換を行うデータ列生成装置3(情報処理装置の一例)であってもよい。すなわち、本発明の別の実施形態によるデータ列生成装置3は、例えば図5に示すように、ビット取得部201と、ビット逆シフト部202と、データ要素設定部203と、から構成される。ビット取得部201は、入力ビットベクトルの各要素から特定のビット位置の値を取得する。ビット逆シフト部202は、各ビット位置の値を下位ビットの位置までSIMD方式の並列処理によりビットシフトする。データ要素設定部203は、ビットシフトした値をデータ列の各要素に設定する。本発明の別の実施形態では、データ列生成装置3は、上述のようなビット取得部201、ビット逆シフト部202、データ要素設定部203を備えるものであってもよい。なお、ここで説明したデータ列生成装置3は、後述する本発明の第3の実施形態によるビットベクトル逆変換装置2のビットベクトル逆変換部40に相当する。
 なお、本発明の第1の実施形態によるビットベクトル生成装置10は、入力となるデータ列を{0,1}の二値のみからなるものとした。しかしながら、本発明の別の実施形態では、入力となるデータ列を{0,1}の二値に限定するものではない。本発明の別の実施形態では、入力となるデータ列を、例えば離散値データ列とするものであってもよい。ここで、データ列の個々の要素が取り得る値の種類が限られており、その値の種類を表現できるだけの充分なビット数tを考える。例えば、入力データ列が{0,1,2}の三値からなる場合、ビット数tは2ビットあれば充分である。そこで、元のデータ列の一要素とビットベクトルのtビット分が対応するように、ビットシフト部102のビットシフト量とビット設定部103のビット設定位置を変更すれば、離散値データ列を入力とする場合にもビットベクトルを生成することができる。
<第2の実施形態>
 次に、本発明の第2の実施形態による集約演算システム1(情報処理装置の一例)について説明する。
 本発明の第2の実施形態による集約演算システム1は、入力データ列SRCから出力ビットベクトルDESTを生成した上で、データ列の集約演算を行うシステムである。
 集約演算システム1は、図6に示すように、ビットベクトル生成装置10a1、10a2、・・・、10aN、集約演算部20を備える。ビットベクトル生成装置10a1、10a2、・・・、10aNを総称してビットベクトル生成装置10aと呼ぶ。
 ビットベクトル生成装置10aそれぞれは、本発明の第1の実施形態によるビットベクトル生成装置10と同一である。ビットベクトル生成装置10aそれぞれは、入力データ列SRCから出力ビットベクトルDESTを生成し、生成した出力ビットベクトルDESTを集約演算部20に出力する。
 集約演算部20は、複数の出力ビットベクトルDESTを入力として、ビットベクトルの集約演算を行う。集約演算とは、例えば、データ列の総和や平均値などの算出、データ列において特定の条件を満たす要素の個数を数え上げる処理、ベクトル同士の内積演算、行列同士の行列積演算などである。
 次に、本発明の第2の実施形態による集約演算システム1の処理について説明する。なお、ビットベクトル生成装置10aは、本発明の第1の実施形態によるビットベクトル生成装置10と同一であるため、ここでは、集約演算部20の処理について説明する。
 集約演算部20は、本来は元の入力データ列SRCに対して行う演算と同等の演算を、出力ビットベクトルDESTに対して行う。ビットベクトル生成装置10aそれぞれは、本発明の第1の実施形態において説明したように、関連する技術を用いて生成したビットベクトルとはビットの並び順が異なる出力ビットベクトルDESTを生成する。しかしながら、集約演算部20が行う演算は、総和や内積など、ビットの並び順に無関係な演算である。そのため、集約演算システム1は、正しい集約演算を行うことができる。すなわち、集約演算システム1は、正しい集約値を算出することができる。
 例えば、{0,1}の二値のみからなるデータ列の集約演算部20による総和の算出は、ビットベクトル中の1となっているビットの個数を数え上げることで算出することができる。この場合の集約演算部20の演算は、出力ビットベクトルDESTの各要素に対してポップカウント処理を行う処理と、ポップカウントで算出された値の総和を算出する処理とを行えばよい。
 また、例えば、{0,1}の二値のみからなるベクトル同士の集約演算部20による内積演算は、ビットベクトル同士のビット論理積演算を行う処理と、ビットベクトルの各要素に対してポップカウント処理を行う処理と、ポップカウントで算出された値の総和を算出する処理とを行えばよい。
(具体例2)
 本発明の第2の実施形態による集約演算システム1の処理の具体例について、図7を参照して説明する。ここでは、集約演算システム1がデータ列の総和を算出する例について説明する。
 入力となる入力データ列SRCは、ビットベクトル生成装置10aそれぞれに入力される。ビットベクトル生成装置10aそれぞれは、入力データ列SRCから出力ビットベクトルDESTを生成する。集約演算部20は、ビットベクトル生成装置10aそれぞれが生成した出力ビットベクトルDESTの各要素に対してポップカウント処理を行う。集約演算部20がポップカウント処理を行った結果は、図7においてポップカウントし記載されているように、0,1,2,3,2,1の値を示す。集約演算部20は、これらの値の総和を演算し、演算結果として総和9を導出する。このように、集約演算部20は、図7の元のデータ列の総和9と同じ値を導出する。
 以上、本発明の第2の実施形態による集約演算システム1について説明した。本発明の第2の実施形態による集約演算システム1において、ビットベクトル生成装置10aそれぞれは、本発明の第1の実施形態によるビットベクトル生成装置10と同様に入力データ列SRCから出力ビットベクトルDESTを生成する。集約演算部20は、本来は元の入力データ列SRCに対して行う演算と同等の演算を、出力ビットベクトルDESTに対して行う。
 このようにすれば、SIMD方式の並列処理の並列数がビット幅mに制限されず、ビットベクトル生成装置10は、SIMD方式の並列処理をより多くの並列数kで高速にビットベクトルを生成することができ、集約演算部20は、生成したビットベクトルに対して、関連する技術を用いた場合と同等の演算を行うため、集約演算システム1は、関連する技術を用いたシステムの演算に比べて高速に演算することができる。
 例えば、機械学習のモデル生成に用いるデータセットTBL1において、特定の特徴量が離散値からなる場合がある。具体例を挙げると、図8に示すように、人間の性別を示す特徴量として、男性なら1、そうでなければ0を用いるという場合や、人間の血液型を示す特徴量として、A型に0、B型に1、O型に2、AB型に3を用いるという場合、職業を示す特徴量として、会社員に0、主婦に1、学生に3を用いるという場合などである。機械学習のモデル生成においては、ベクトルの内積演算を行う処理を含む場合があるが、先に述べたような特徴量を実数ベクトルではなく離散値ベクトルとして扱えば、集約演算システム1を利用して離散値ベクトルの内積演算を行うことができる。そのため集約演算システム1は、機械学習のモデル生成におけるベクトルの内積演算の一部または全部を、高速化することができる。この場合、集約演算部20は、ビット設定部103がデータの値を対応する桁に設定した出力データ列(すなわち、出力されるビットベクトル)に対して、出力データ列の総和、出力データ列の平均値、出力データ列における特定の要素の個数、複数の出力データ列が示すベクトル同士の内積、及び、複数の出力データ列が示す行列同士の行列積のうちの少なくとも1つを、SIMD方式の並列処理によって、演算を行う。
 なお、本発明の第2の実施形態による集約演算システム1は、ビットベクトル生成装置10aを複数備えるものとして説明した。しかしながら、本発明の別の実施形態による集約演算システム1は、ビットベクトル生成装置10aを1つ備え、そのビットベクトル生成装置10aが生成した出力ビットベクトルDESTについて、集約演算部20が集約演算を行うものであってもよい。
<第3の実施形態>
 次に、本発明の第3の実施形態によるベクトル演算システム2(情報処理装置の一例)について説明する。
 本発明の第3の実施形態によるベクトル演算システム2は、入力データ列SRCをビットベクトルに変換した上で、データ列のベクトル演算を行うシステムである。ベクトル演算システム2は、元のデータ列の要素の並び順が後に必要となる場合を想定したシステムである。
 ベクトル演算システム2は、図9に示すように、ビットベクトル生成装置10a1、10a2、・・・、10aN、ビット演算部30、ビットベクトル逆変換部40を備える。ビットベクトル生成装置10a1、10a2、・・・、10aNを総称してビットベクトル生成装置10aと呼ぶ。
 ビットベクトル生成装置10aそれぞれは、本発明の第1の実施形態によるビットベクトル生成装置10と同一である。ビットベクトル生成装置10aそれぞれは、入力データ列SRCから出力ビットベクトルDESTを生成し、生成した出力ビットベクトルDESTをビット演算部30に出力する。
 ビット演算部30は、複数のビットベクトルについてビット演算を行う。ビット演算とは、例えば、ビット反転(NOT)、ビット論理積(AND)、ビット論理和(OR)、ビット排他的論理和(XOR)などである。
 ビットベクトル逆変換部40は、ビットベクトルを入力として元の並び順のデータ列を生成する。つまり、ビットベクトル逆変換部40は、ビットベクトルから元のデータ列への逆変換を行う機能部である。
 次に、本発明の第3の実施形態によるベクトル演算システム2の処理について説明する。なお、ビットベクトル生成装置10aは、本発明の第1の実施形態によるビットベクトル生成装置10と同一であるため、ここでは、ビット演算部30とビットベクトル逆変換部40の処理について説明する。
 ビット演算部30は、本来は元の入力データ列SRCに対して行うベクトル演算と同等のベクトル演算を、出力ビットベクトルDESTに対して行う。
 ビットベクトル逆変換部40は、ビットベクトル生成装置10と逆の動作を行うことにより、データ列の要素の並び順が元通りにする。そのため、本発明の第3の実施形態によるベクトル演算システム2は、正しい演算結果を得ることができる。
 例えば、{0,1}の二値のみからなるデータ列同士の、要素ごとのベクトル演算システム2による乗算(いわゆるアダマール積)は、ビットベクトル同士のビット論理積演算で同等の結果を得ることができる。この場合のビット演算部30の処理は、ビットベクトルの各要素に対してビット論理積演算を行う処理からなる。
(具体例3)
 本発明の第3の実施形態によるベクトル演算システム2の処理の具体例について、図10を参照して説明する。ここでは、データ列Uとデータ列Vの要素ごとの乗算をベクトル演算システム2が算出する例について説明する。
 ビットベクトル生成装置10aそれぞれは、入力であるデータ列U及びデータ列Vから、ビットベクトルU’及びビットベクトルV’を生成する(図10におけるビットベクトルU‘及びビットベクトルV’参照)。ビット演算部30は、これらふたつのビットベクトルU‘及びビットベクトルV’のビット論理積AND(U’,V’)を計算する(図10におけるAND(U’,V’)参照)。ビットベクトル逆変換部40は、このビットベクトルAND(U’,V’)を元の並び順のデータ列に逆変換する(図10におけるAND(U’,V’)の逆変換参照)。図10からわかるように、ベクトル演算システム2によるAND(U’,V’)の逆変換の結果は、データ列Uとデータ列Vの要素ごとの乗算の結果と同一になる。
 以上、本発明の第3の実施形態によるベクトル演算システム2について説明した。本発明の第3の実施形態によるベクトル演算システム2において、ビットベクトル生成装置10aそれぞれは、本発明の第1の実施形態によるビットベクトル生成装置10と同様に入力データ列SRCから出力ビットベクトルDESTを生成する。ビット演算部30は、本来は元の入力データ列SRCに対して行うベクトル演算と同等のベクトル演算を、出力ビットベクトルDESTに対して行う。ビットベクトル逆変換部40は、ビットベクトル生成装置10と逆の動作を行うことにより、データ列の要素の並び順が元通りにする。
 このようにすれば、SIMD方式の並列処理の並列数がビット幅mに制限されず、ビットベクトル生成装置10は、SIMD方式の並列処理をより多くの並列数kで高速にビットベクトルを生成することができ、ビット演算部30は、生成したビットベクトルに対して、関連する技術を用いた場合と同等の演算を行うため、ベクトル演算システム2は、関連する技術を用いたシステムの演算に比べて高速に演算することができる。
 例えば、データベースの選択演算におけるクエリのWHERE句が複数の条件からなる場合を考える。ここで、条件に合致する行(レコード)であれば1、そうでない行であれば0となるような値を持つ、真偽値列ベクトルを考える。このとき、個々の条件に対応する真偽値列ベクトルを中間結果とし、WHERE句全体に対応する真偽値列ベクトルを最終結果とする。具体例を挙げると、例えばWHERE句が「年齢≧50 AND 性別=男性 AND 血液型=A型」である場合、年齢が50以上か否かを示す真偽値列ベクトルと、性別が男性か否かを示す真偽値列ベクトルと、血液型がA型か否かを示す真偽値列ベクトルと、が中間結果であり、WHERE句全体に合致するか否かを示す真偽値列ベクトルが最終結果である。このような場合、ベクトル演算システム2を利用して、中間結果群から最終結果を求めるベクトル論理演算を行うことができる。そのため、ベクトル演算システム2は、データベースの選択演算における最終結果の取得を高速化することができる。
 本発明の実施形態による最小構成のビットベクトル生成装置10について説明する。
 本発明の実施形態による最小構成のビットベクトル生成装置10は、図11に示すように、入力データ列分割部101、ビットシフト部102、ビット設定部103を備える。
 入力データ列分割部101は、入力データ列を複数の群に分割する。
 ビットシフト部102は、複数の前記群それぞれにおけるデータの値を、複数の前記群それぞれに応じた特定の桁にSIMD方式の並列処理により桁移動する。
 ビット設定部103は、ビットシフト部102によって桁移動した前記データの値を、出力データ列の対応する桁に設定する。
 ビットベクトル生成装置10がこのように構成されることにより、SIMD方式の並列処理の並列数がビット幅mに制限されず、ビットベクトル生成装置10は、SIMD方式の並列処理をより多くの並列数kで高速にビットベクトルを生成することができる。また、処理する入力データ列SRCと出力ビットベクトルDESTがどちらも連続した要素であるため、高速にメモリアクセスを行うことができ、ビットベクトル生成装置10は、高速にビットベクトルを生成することができる。
 なお、本発明の実施形態における処理は、適切な処理が行われる範囲において、処理の順番が入れ替わってもよい。
 本発明の実施形態における記憶部、その他の記憶装置(ラッチ、レジスタなどを含む)のそれぞれは、適切な情報の送受信が行われる範囲においてどこに備えられていてもよい。また、記憶部、その他の記憶装置のそれぞれは、適切な情報の送受信が行われる範囲において複数存在しデータを分散して記憶していてもよい。
 本発明の実施形態について説明したが、上述のビットベクトル生成装置10、10a、集約演算部20、その他の制御装置は内部に、コンピュータシステムを有していてもよい。そして、上述した処理の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。コンピュータの具体例を以下に示す。
 図12は、少なくとも1つの実施形態に係るコンピュータの構成を示す概略ブロック図である。
 コンピュータ5は、図12に示すように、CPU6、メインメモリ7、ストレージ8、インターフェース9を備える。
 例えば、上述のビットベクトル生成装置10、10a、集約演算部20、その他の制御装置のそれぞれは、コンピュータ5に実装される。そして、上述した各処理部の動作は、プログラムの形式でストレージ8に記憶されている。CPU6は、プログラムをストレージ8から読み出してメインメモリ7に展開し、当該プログラムに従って上記処理を実行する。また、CPU6は、プログラムに従って、上述した各記憶部に対応する記憶領域をメインメモリ7に確保する。
 ストレージ8の例としては、HDD(Hard Disk Drive)、SSD(Solid State Drive)、磁気ディスク、光磁気ディスク、CD-ROM(Compact Disc Read Only Memory)、DVD-ROM(Digital Versatile Disc Read Only Memory)、半導体メモリ等が挙げられる。ストレージ8は、コンピュータ5のバスに直接接続された内部メディアであってもよいし、インターフェース9または通信回線を介してコンピュータ5に接続される外部メディアであってもよい。また、このプログラムが通信回線によってコンピュータ5に配信される場合、配信を受けたコンピュータ5が当該プログラムをメインメモリ7に展開し、上記処理を実行してもよい。少なくとも1つの実施形態において、ストレージ8は、一時的でない有形の記憶媒体である。
 また、上記プログラムは、前述した機能の一部を実現してもよい。さらに、上記プログラムは、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるファイル、いわゆる差分ファイル(差分プログラム)であってもよい。
 本発明のいくつかの実施形態を説明したが、これらの実施形態は、例であり、発明の範囲を限定しない。これらの実施形態は、発明の要旨を逸脱しない範囲で、種々の追加、省略、置き換え、変更を行ってよい。
 本発明の各態様によれば、SIMD方式の並列処理の並列数がビット幅mに制限されず、SIMD方式の並列処理をより多くの並列数kで高速にビットベクトルを生成することができる。
1・・・集約演算システム
5・・・コンピュータ
6・・・CPU
7・・・メインメモリ
8・・・ストレージ
9・・・インターフェース
10、10a、10a1、10a2、10aN・・・ビットベクトル生成装置
20・・・集約演算部
101・・・入力データ列分割部
102、102a1、102a2、102a3、102an・・・ビットシフト部
103・・・ビット設定部
201・・・ビット取得部
202・・・ビット逆シフト部
203・・・データ要素設定部

Claims (8)

  1.  データ列を入力としてビットベクトルを出力する情報処理装置であって、
     前記データ列を複数の群に分割する入力データ列分割部と、
     複数の前記群それぞれにおけるデータの値を、複数の前記群それぞれに応じた特定の桁にSIMD(Single Instruction Multiple Data)方式の並列処理により桁移動するビットシフト部と、
     前記ビットシフト部によって桁移動した前記データの値を、前記ビットベクトルの対応する桁に設定するビット設定部と、
     を備える情報処理装置。
  2.  前記ビット設定部が前記データの値を対応する桁に設定した前記ビットベクトルに対して、前記ビットベクトルの総和、前記ビットベクトルの平均値、前記ビットベクトルにおける特定の要素の個数、複数の前記ビットベクトルが示すベクトル同士の内積、及び、複数の前記ビットベクトルが示す行列同士の行列積のうちの少なくとも1つを含む集約演算を行う集約演算部、
     を備える請求項1に記載の情報処理装置。
  3.  前記ビット設定部が前記データの値を対応する桁に設定した前記ビットベクトルの各要素から特定のビット位置の値を取得するビット取得部と、
     前記ビット取得部が取得した前記ビット位置の値それぞれを下位ビットの位置まで前記SIMDの並列処理により桁移動するビット逆シフト部と、
     前記ビット逆シフト部が桁移動した値をデータ列の各要素に設定するデータ要素設定部と、
     を備える請求項1または請求項2に記載の情報処置装置。
  4.  入力データ列は、
     機械学習のモデル生成において、離散値で表現することができる特徴量を、離散値ベクトルで表現したデータ列である、
     請求項1から請求項3の何れか一項に記載の情報処理装置。
  5.  入力データ列は、
     データベースのテーブル操作における選択演算において、クエリの条件に合致する行か否である行かを表現する真偽値ベクトルである、
     請求項1から請求項3の何れか一項に記載の情報処理装置。
  6.  ビットベクトルの各要素から特定のビット位置の値を取得するビット取得部と、
     前記ビット取得部が取得した前記ビット位置の値それぞれを下位ビットの位置までSIMD(Single Instruction Multiple Data)の並列処理により桁移動するビット逆シフト部と、
     前記ビット逆シフト部が桁移動した値をデータ列の各要素に設定するデータ要素設定部と、
     を備える情報処置装置。
  7.  データ列を入力としてビットベクトルを出力する情報処理装置による情報処理方法であって、
     前記データ列を複数の群に分割することと、
     複数の前記群それぞれにおけるデータの値を、複数の前記群それぞれに応じた特定の桁にSIMD(Single Instruction Multiple Data)方式の並列処理により桁移動することと、
     桁移動した前記データの値を、前記ビットベクトルの対応する桁に設定することと、
     を含む情報処理方法。
  8.  データ列を入力としてビットベクトルを出力する情報処理装置のコンピュータに、
     前記データ列を複数の群に分割することと、
     複数の前記群それぞれにおけるデータの値を、複数の前記群それぞれに応じた特定の桁にSIMD(Single Instruction Multiple Data)方式の並列処理により桁移動することと、
     桁移動した前記データの値を、前記ビットベクトルの対応する桁に設定することと、
     を実行させるプログラム。
PCT/JP2018/030994 2018-08-22 2018-08-22 情報処理装置、情報処理方法及びプログラム WO2020039522A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US17/269,423 US20210182061A1 (en) 2018-08-22 2018-08-22 Information processing device, information processing method, and program
PCT/JP2018/030994 WO2020039522A1 (ja) 2018-08-22 2018-08-22 情報処理装置、情報処理方法及びプログラム
JP2020537940A JP7052874B2 (ja) 2018-08-22 2018-08-22 情報処理装置、情報処理方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2018/030994 WO2020039522A1 (ja) 2018-08-22 2018-08-22 情報処理装置、情報処理方法及びプログラム

Publications (1)

Publication Number Publication Date
WO2020039522A1 true WO2020039522A1 (ja) 2020-02-27

Family

ID=69592770

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2018/030994 WO2020039522A1 (ja) 2018-08-22 2018-08-22 情報処理装置、情報処理方法及びプログラム

Country Status (3)

Country Link
US (1) US20210182061A1 (ja)
JP (1) JP7052874B2 (ja)
WO (1) WO2020039522A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11511575A (ja) * 1995-08-31 1999-10-05 インテル・コーポレーション パック・データを処理する1組の命令
US20150277917A1 (en) * 2014-04-01 2015-10-01 Oracle International Corporation Hybrid bit-sliced dictionary encoding for fast index-based operations
JP2016527650A (ja) * 2013-08-06 2016-09-08 インテル・コーポレーション ベクトルポピュレーションカウント機能性を提供する方法、装置、命令、およびロジック

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6844327B2 (ja) * 2017-03-03 2021-03-17 富士通株式会社 データ生成方法、データ生成装置及びデータ生成プログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11511575A (ja) * 1995-08-31 1999-10-05 インテル・コーポレーション パック・データを処理する1組の命令
JP2016527650A (ja) * 2013-08-06 2016-09-08 インテル・コーポレーション ベクトルポピュレーションカウント機能性を提供する方法、装置、命令、およびロジック
US20150277917A1 (en) * 2014-04-01 2015-10-01 Oracle International Corporation Hybrid bit-sliced dictionary encoding for fast index-based operations

Also Published As

Publication number Publication date
JPWO2020039522A1 (ja) 2021-08-10
US20210182061A1 (en) 2021-06-17
JP7052874B2 (ja) 2022-04-12

Similar Documents

Publication Publication Date Title
JP6989006B2 (ja) 秘密集約関数計算システム、秘密計算装置、秘密集約関数計算方法、およびプログラム
US11372929B2 (en) Sorting an array consisting of a large number of elements
JPWO2019208484A1 (ja) 秘密集約総和システム、秘密計算装置、秘密集約総和方法、およびプログラム
US10884736B1 (en) Method and apparatus for a low energy programmable vector processing unit for neural networks backend processing
JP6605746B2 (ja) 秘密等結合システム、秘密等結合装置、秘密等結合方法、プログラム
US20180322095A1 (en) Efficient extended-precision processing
US20240022395A1 (en) Encryption processing device and encryption processing method
JP6973633B2 (ja) 秘密集約最大値システム、秘密集約最小値システム、秘密計算装置、秘密集約最大値方法、秘密集約最小値方法、およびプログラム
WO2019208486A1 (ja) 秘密集約中央値システム、秘密計算装置、秘密集約中央値方法、およびプログラム
JPWO2011036918A1 (ja) データ並べ替え回路、可変遅延回路、高速フーリエ変換回路、およびデータ並べ替え方法
WO2020158384A1 (ja) 演算処理装置、演算処理方法及びコンフィグレーションプログラム
WO2020039522A1 (ja) 情報処理装置、情報処理方法及びプログラム
US11604852B2 (en) Signal processing apparatus, method, program, and recording medium
JP2012154990A (ja) 秘密ソートシステム、秘密ソート装置、秘密ソート方法、秘密ソートプログラム
JP6337133B2 (ja) 非減少列判定装置、非減少列判定方法及びプログラム
EP3246900B1 (en) Matrix and key generation device, matrix and key generation system, matrix coupling device, matrix and key generation method, and program
CN113924610B (zh) 秘密共轭梯度法计算系统及方法、秘密计算装置、共轭梯度法计算装置及方法、以及记录介质
Wang On vectorizing the fast Fourier transform
Ahmed et al. Improving the quantum cost of reversible Boolean functions using reorder algorithm
JP2021051448A (ja) 情報処理装置、疎行列格納方法及びプログラム
WO2020031281A1 (ja) 情報処理装置、情報処理方法、及びコンピュータ読み取り可能な記録媒体
JPWO2009044486A1 (ja) 表形式データをソートする方法、マルチコア型装置、及び、プログラム
JP2014203182A (ja) フーリエ変換計算方法、量子回路
Bremner et al. Quadratic nonsymmetric quaternary operads
US20240154786A1 (en) Encryption processing apparatus and encryption processing method

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2020537940

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

Country of ref document: EP

Kind code of ref document: A1