IP Library Granted Patent US 9,489,176
Granted Patent B2
US 9,489,176 · App. 14/342,268 · Granted Nov 8, 2016

Optimized matrix and vector operations in instruction limited algorithms that perform EOS calculations

Inventor: Kjetil B. Haugen (Houston, TX)
Assignee: ExxonMobil Upstream Research Company
G06F7/60G06F12/0875G06F17/16
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 9,489,176
App. No.
14/342,268
Granted
Nov 8, 2016
Kind
B2
Abstract

There is provided a system and method for optimizing matrix and vector calculations in instruction limited algorithms that perform EOS calculations. The method includes dividing each matrix associated with an EOS stability equation and an EOS phase split equation into a number of tiles, wherein the tile size is heterogeneous or homogenous. Each vector associated with the EOS stability equation and the EOS phase split equation may be divided into a number of strips. The tiles and strips may be stored in main memory, cache, or registers, and the matrix and vector operations associated with successive substitutions and Newton iterations may be performed in parallel using the tiles and strips.

Claims (31)

1. A method of optimizing matrix and vector operations in instruction limited algorithms that perform EOS calculations, comprising:

dividing each matrix associated with an EOS stability equation or an EOS phase split equation into a number of tiles, wherein the tile size is heterogeneous or homogenous;

dividing each vector associated with the EOS stability equation or the EOS phase split equation into a number of strips;

storing the tiles and strips in main memory, cache, or registers, wherein the tiles or strips are stored sequentially or interleaved in main memory, cache, or registers; and

performing the matrix and vector operations associated with successive substitutions and Newton iterations in parallel using the tiles and strips.

2. The method recited in claim 1 , wherein the tile size is selected in order to minimize data transfers between different levels of a memory within a single hardware architecture.

3. The method recited in claim 1 , comprising unrolling loops based on tile or strip sizes associated with the EOS calculations.

4. The method recited in claim 1 , comprising dividing each matrix into a number of tiles, wherein the matrix is padded to a size that allows for the use of homogeneous tiles.

5. The method recited in claim 1 , comprising unrolling loops through specialization, wherein a number of different EOS algorithms are generated for mixtures with different numbers of components.

6. The method recited in claim 1 , comprising single precision, double precision, or mixed precision vectorization of EOS calculations or data elements within the tiles and strips associated with EOS calculations using single instruction multiple data or single instruction multiple thread vector instructions.

7. A computer system that is adapted to optimize matrix and vector operations in instruction limited algorithms that perform EOS calculations, the computer system comprising:

a processor; and

a tangible, machine-readable storage medium that stores machine-readable instructions for execution by the processor, the machine-readable instructions comprising:

code that, when executed by the processor, is adapted to cause the processor to divide each matrix associated with an EOS stability equation and an EOS phase split equation into a number of tiles, wherein the tile size is heterogeneous or homogenous;

code that, when executed by the processor, is adapted to cause the processor to divide each vector associated with the EOS stability equation and the EOS phase split equation into a number of strips;

code that, when executed by the processor, is adapted to cause the processor to store the tiles and strips in main memory, cache, or registers, wherein the tiles or strips are stored sequentially or interleaved in the main memory, cache, or registers; and

code that, when executed by the processor, is adapted to cause the processor to perform the matrix and vector operations associated with successive substitutions and Newton iterations in parallel using the tiles and strips.

8. The system recited in claim 7 , wherein the processor forms a scalar hardware architecture or a vector hardware architecture.

9. The system recited in claim 7 , comprising code that, when executed by the processor, is adapted to cause the processor to unroll loops based on tile or strip sizes associated with the EOS calculations.

10. The system recited in claim 7 , comprising code that, when executed by the processor, is adapted to cause the processor to divide each matrix into a number of tiles, wherein the matrix is padded to a size that allows for the use of homogeneous tiles.

11. The system recited in claim 7 , comprising code that, when executed by the processor, is adapted to cause the processor to generate a number of different EOS algorithms for mixtures with different numbers of components.

12. The system recited in claim 7 , comprising code that, when executed by the processor, is adapted to cause the processor to perform vectorization of single precision, double precision, or mixed precision EOS calculations or data elements within the tiles and strips associated with EOS calculations using single instruction multiple data or single instruction multiple thread vector instructions.

13. A non-transitory, computer readable medium comprising code configured to direct a processor to:

divide each matrix associated with an EOS stability equation and an EOS phase split equation into a number of tiles, wherein the tile size is heterogeneous or homogenous;

divide each vector associated with the EOS stability equation and the EOS phase split equation into a number of strips;

store the tiles and strips in main memory, cache, or registers, wherein the tiles or strips are stored sequentially or interleaved in main memory, cache, or registers; and

perform the matrix and vector operations associated with successive substitutions and Newton iterations in parallel using the tiles and strips.

14. The non-transitory, computer readable medium recited in claim 13 , comprising unrolling loops based on tile or strip sizes associated with the EOS calculations.

15. The non-transitory, computer readable medium recited in claim 13 , comprising dividing each matrix into a number of tiles, wherein the matrix is padded to a size that allows for the use of homogeneous tiles.

16. The non-transitory, computer readable medium recited in claim 13 , comprising unrolling loops through specialization, wherein a number of different EOS algorithms are generated for mixtures with different numbers of components.

17. The non-transitory, computer readable medium recited in claim 13 , comprising single precision, double precision, or mixed precision vectorization of EOS calculations or data elements within the tiles and strips associated with EOS calculations using single instruction multiple data or single instruction multiple thread vector instructions.

Continuity (2)
Provisional Application 61535131 · Sep 15, 2011
Related Publication 20140201450A1 · Jul 17, 2014