Patent US5802375A successfully refreshed from Google Patents.
← Back to Patent Explorer
US5802375A Expired / Lapsed US ⏱️ 0.0 years remaining

Outer loop vectorization

Assignee: RPX Corp
•
Filing: 1994-11-23
•
Granted: 1998-09-01
•
Expires: 2014-11-23
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A system and method for vectorizing a non-innermost loop of a nested loop. Iterative loops of a nested loop are analyzed to determine if they can be vectorized (vector legality). If more than one iterative loop can be vectorized, a selection criteria is applied to select the iterative loop which would provide the most return from vectorization (vector selection).

Inventors

  • 👤 Viet N. Ngo
  • 👤 Wei-Tek Tsai

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-08 16:47
CPC Classifications
G; G06; G06F; G06F8/00; G06F8/40; G06F8/41; G06F8/45; G06F8/451; G06F8/452

Claims Analysis

Total Claims: 12
Claim 1
Independent Claim 198 words
A computer-implemented method of vectorizing a nested loop having a plurality of iterative loops, the method comprising the steps of: analyzing each iterative loop to determine if it is vectorizable, wherein the step of analyzing each iterative loop includes the steps of: preparing a program dependence graph for the nested loop, wherein the program dependence graph explicitly represents both control and data dependencies; and extracting, from the program dependence graph, a level dependence graph for each of the plurality of iterative loops, wherein each level dependence graph includes all control and data dependencies relevant to vectorization of the nested loop at that level; determining for each iterative loop whether dependence edges in its respective level dependence graph include a vectorization preventing dependence edge; determining for each iterative loop whether there are dependence cycles within its respective level dependence graph; and if an iterative loop from the plurality of iterative loops has no vectorization preventing dependence edges and no dependence cycles within its respective level dependence graph, indicating that the iterative loop is vectorizable; and if more than one iterative loop is vectorizable, applying a selection criteria to select an optimal iterative loop from the plurality of iterative loops.
Claim 2
Dependent Claim 198 words
A computer-implemented method of vectorizing a nested loop having a plurality of iterative loops, the method comprising the steps of: analyzing each iterative loop to determine if it is vectorizable, wherein the step of analyzing each iterative loop includes the steps of: preparing a program dependence graph for the nested loop, wherein the program dependence graph explicitly represents both control and data dependencies; and extracting, from the program dependence graph, a level dependence graph for each of the plurality of iterative loops, wherein each level dependence graph includes all control and data dependencies relevant to vectorization of the nested loop at that level; determining for each iterative loop whether dependence edges in its respective level dependence graph include a vectorization preventing dependence edge; determining for each iterative loop whether there are dependence cycles within its respective level dependence graph; and if an iterative loop from the plurality of iterative loops has no vectorization preventing dependence edges and no dependence cycles within its respective level dependence graph, indicating that the iterative loop is vectorizable; and if more than one iterative loop is vectorizable, applying a selection criteria to select an optimal iterative loop from the plurality of iterative loops.
Claim 3
Dependent Claim 40 words
The method according to claim 1 wherein the step of applying a selection criteria comprises the steps of: calculating a metric for each iterative loop in the plurality of iterative loops; and choosing the iterative loop with the best metric.
Claim 4
Dependent Claim 141 words
A computer-implemented method of vectorizing a nested loop having a plurality of iterative loops, including a kth-level iterative loop, wherein k is an integer greater than one, the method comprising the steps of: preparing a program dependence graph for the nested loop, wherein the program dependence graph explicitly represents both control and data dependencies; extracting, from the program dependence graph, a level dependence graph for the kth-level iterative loop, wherein the level dependence graph includes all control and data dependencies relevant to vectorization of the nested loop at level k; determining whether any dependence edges within the level dependence graph are k-vectorization preventing; determining if there are any dependence cycles within the level dependence graph; and if none of the dependence edges are k-vectorization preventing and if there are no dependence cycles within the level dependence graph, vectorizing the kth-level loop.
Claim 5
Dependent Claim 141 words
A computer-implemented method of vectorizing a nested loop having a plurality of iterative loops, including a kth-level iterative loop, wherein k is an integer greater than one, the method comprising the steps of: preparing a program dependence graph for the nested loop, wherein the program dependence graph explicitly represents both control and data dependencies; extracting, from the program dependence graph, a level dependence graph for the kth-level iterative loop, wherein the level dependence graph includes all control and data dependencies relevant to vectorization of the nested loop at level k; determining whether any dependence edges within the level dependence graph are k-vectorization preventing; determining if there are any dependence cycles within the level dependence graph; and if none of the dependence edges are k-vectorization preventing and if there are no dependence cycles within the level dependence graph, vectorizing the kth-level loop.
Claim 6
Dependent Claim 155 words
A computer-implemented method of vectorizing a nested loop having a plurality of iterative loops, the method comprising the steps of: preparing a program dependence graph for the nested loop, wherein the program dependence graph explicitly represents both control and data dependencies; extracting, from the program dependence graph, a level dependence graph for each of the plurality of iterative loops, wherein the level dependence graph includes all control and data dependencies relevant to vectorization of the nested loop at that level; determining for each iterative loop whether dependence edges in its respective level dependence graph include a vectorization preventing dependence edge; determining for each iterative loop whether there are dependence cycles within its respective level dependence graph; building a list of those iterative loops having no vectorization preventing dependence edges and no dependence cycles within their respective level dependence graphs; selecting an iterative loop from the list of iterative loops; and vectorizing the selected iterative loop.
Claim 7
Dependent Claim 155 words
A computer-implemented method of vectorizing a nested loop having a plurality of iterative loops, the method comprising the steps of: preparing a program dependence graph for the nested loop, wherein the program dependence graph explicitly represents both control and data dependencies; extracting, from the program dependence graph, a level dependence graph for each of the plurality of iterative loops, wherein the level dependence graph includes all control and data dependencies relevant to vectorization of the nested loop at that level; determining for each iterative loop whether dependence edges in its respective level dependence graph include a vectorization preventing dependence edge; determining for each iterative loop whether there are dependence cycles within its respective level dependence graph; building a list of those iterative loops having no vectorization preventing dependence edges and no dependence cycles within their respective level dependence graphs; selecting an iterative loop from the list of iterative loops; and vectorizing the selected iterative loop.
Claim 8
Dependent Claim 40 words
The computer-implemented method of claim 4 wherein the step of vectorizing the selected iterative loop comprises the steps of: determining if statements within the selected iterative loop should be reordered; and if the statements should be reordered, reordering the statements.
Claim 9
Dependent Claim 46 words
The computer-implemented method of claim 4 wherein the step of selecting an iterative loop from the list of iterative loops comprises the steps of: calculating a metric for each iterative loop in the list of iterative loops; and choosing the iterative loop with the best metric.
Claim 10
Dependent Claim 40 words
The computer-implemented method of claim 6 wherein the step of vectorizing the selected iterative loop comprises the steps of: determining if statements within the selected iterative loop should be reordered; and if the statements should be reordered, reordering the statements.
Claim 11
Dependent Claim 94 words
For computer program code having a nested loop, wherein the nested loop includes a plurality of vectorizable iterative loops, a computer-implemented method of selecting an optimal vectorizable iterative loop from the plurality of vectorizable iterative loops, the method comprising the steps of: calculating a metric for each of the plurality of vectorizable iterative loops, wherein the step of calculating a metric includes the step of calculating overhead for an iterative loop as: O.sub.l =(VLO+(T.sub.l /VL)*(ML+MS)/T.sub.l where (T l /VL) is the number of vector trips; and selecting the iterative loop having the best metric.
Claim 12
Dependent Claim 94 words
For computer program code having a nested loop, wherein the nested loop includes a plurality of vectorizable iterative loops, a computer-implemented method of selecting an optimal vectorizable iterative loop from the plurality of vectorizable iterative loops, the method comprising the steps of: calculating a metric for each of the plurality of vectorizable iterative loops, wherein the step of calculating a metric includes the step of calculating overhead for an iterative loop as: O.sub.l =(VLO+(T.sub.l /VL)*(ML+MS)/T.sub.l where (T l /VL) is the number of vector trips; and selecting the iterative loop having the best metric.

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2001-08-31 2002-03-02 2002-09-01 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2005-08-31 2006-03-02 2006-09-01 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2009-08-31 2010-03-02 2010-09-01 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag