IP Library Granted Patent US 8,577,950
Granted Patent B2
US 8,577,950 · App. 12/542,255 · Granted Nov 5, 2013

Matrix multiplication operations with data pre-conditioning in a high performance computing architecture

Inventors: Alexandre E. Eichenberger (Chappaqua, NY); Michael K. Gschwind (Chappaqua, NY); John A. Gunnels (Yorktown Heights, NY)
Assignee: International Business Machines Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,577,950
App. No.
12/542,255
Granted
Nov 5, 2013
Kind
B2
Abstract

Mechanisms for performing matrix multiplication operations with data pre-conditioning in a high performance computing architecture are provided. A vector load operation is performed to load a first vector operand of the matrix multiplication operation to a first target vector register. A load and splat operation is performed to load an element of a second vector operand and replicating the element to each of a plurality of elements of a second target vector register. A multiply add operation is performed on elements of the first target vector register and elements of the second target vector register to generate a partial product of the matrix multiplication operation. The partial product of the matrix multiplication operation is accumulated with other partial products of the matrix multiplication operation.

Claims (31)

1. A method, in a data processing system, for performing a matrix multiplication operation, comprising:

performing a vector load operation to load a first vector operand of the matrix multiplication operation to a first target vector register of the data processing system:

performing a load and splat operation to load an element of a second vector operand and replicating the element to each of a plurality of elements of a second target vector register of the data processing system;

performing a multiply add operation on elements of the first target vector register and elements of the second target vector register to generate a partial product of the matrix multiplication operation; and

accumulating the partial product of the matrix multiplication operation with other partial products of the matrix multiplication operation, wherein a reorganization of data is performed by the load and splat operation and the accumulation of the partial product of the matrix multiplication operation with other partial products of the matrix multiplication operation is performed without issuing a separate register to register operation via an issue slot.

2. The method of claim 1 , wherein the element of the second vector operand has a scalar value.

3. The method of claim 1 , wherein performing the multiply add operation comprises performing the multiply add operation on elements of the first target vector register with correspondingly indexed elements of the second target vector register.

4. The method of claim 1 , wherein accumulating the partial product of the matrix multiplication operation with other partial products of the matrix multiplication operation is performed without performing a separate data reorganization operation.

5. The method of claim 1 , wherein the first vector is a strided vector of stride greater than 1.

6. The method of claim 1 , wherein the load and splat operation replicates the element directly from a load unit of the data processing system.

7. A computer program product comprising a computer-readable storage medium having a computer readable program stored thereon, wherein the computer readable program, when executed on a computing device, causes the computing device to:

perform a vector load operation to load a first vector operand of the matrix multiplication operation to a first target vector register of the data processing system;

perform a load and splat operation to load an element of a second vector operand and replicating the element to each of a plurality of elements of a second target vector register of the data processing system;

perform a multiply add operation on elements of the first target vector register and elements of the second target vector register to generate a partial product of the matrix multiplication operation; and

accumulate the partial product of the matrix multiplication operation with other partial products of the matrix multiplication operation, wherein a reorganization of data is performed by the load and splat operation and the accumulation of the partial product of the matrix multiplication operation with other partial products of the matrix multiplication operation is performed without issuing a separate register to register operation via an issue slot.

8. The computer program product of claim 7 , wherein the element of the second vector operand has a scalar value.

9. The computer program product of claim 7 , wherein the computer readable program causes the computing device to perform the multiply add operation by performing the multiply add operation on elements of the first target vector register with correspondingly indexed elements of the second target vector register.

10. The computer program product of claim 7 , wherein the computer readable program causes the computing device to accumulate the partial product of the matrix multiplication operation with other partial products of the matrix multiplication operation without performing a separate data reorganization operation.

11. The computer program product of claim 7 , wherein the first vector is a strided vector of stride greater than 1.

12. The computer program product of claim 7 , wherein the load and splat operation replicates the element directly from a load unit of the data processing system.

13. An apparatus, comprising:

a processor; and

a memory coupled to the processor, wherein the memory comprises instructions which, when executed by the processor, cause the processor to:

perform a vector load operation to load a first vector operand of the matrix multiplication operation to a first target vector register of the data processing system;

perform a load and splat operation to load an element of a second vector operand and replicating the element to each of a plurality of elements of a second target vector register of the data processing system;

perform a multiply add operation on elements of the first target vector register and elements of the second target vector register to generate a partial product of the matrix multiplication operation; and

accumulate the partial product of the matrix multiplication operation with other partial products of the matrix multiplication operation, wherein a reorganization of data is performed by the load and splat operation and the accumulation of the partial product of the matrix multiplication operation with other partial products of the matrix multiplication operation is performed without issuing a separate register to register operation via an issue slot.

14. The apparatus of claim 13 , wherein the element of the second vector operand has a scalar value.

15. The apparatus of claim 13 , wherein the instructions cause the processor to perform the multiply add operation by performing the multiply add operation on elements of the first target vector register with correspondingly indexed elements of the second target vector register.

16. The apparatus of claim 13 , wherein the instructions cause the processor to perform to accumulate the partial product of the matrix multiplication operation with other partial products of the matrix multiplication operation without performing a separate data reorganization operation.

17. The apparatus of claim 13 , wherein the load and splat operation replicates the element directly from a load unit of the data processing system.

Assignments (2)
CONFIRMATORY LICENSE Recorded Nov 2, 2010
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: U.S. DEPARTMENT OF ENERGY
Reel/Frame 025231/0347 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 18, 2009
From: EICHENBERGER, ALEXANDRE E.; GSCHWIND, MICHAEL K.; GUNNELS, JOHN A.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 023109/0952 →
Continuity (1)
Related Publication 20110040821A1 · Feb 17, 2011