IP Library › Granted Patent US 12,554,493
Granted Patent B2
US 12,554,493 · App. 18/908,678 · Granted Feb 17, 2026

Implementing specialized floating point instructions on an integer pipeline for accelerating dynamic programming algorithms

Inventors: Maciej Piotr Tyrlik (Durham, NC); Ajay Sudarshan Tirumala (San Jose, CA); Shirish Gadre (Fremont, CA); Frank Joseph Eaton (Austin, TX); Daniel Alan Stiffler (Santa Clara, CA)
Assignee: NVIDIA CORPORATION
G06F9/30065G06F9/3887G06F9/38875G06F9/3888G06F9/38885
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 12,554,493
App. No.
18/908,678
Granted
Feb 17, 2026
Kind
B2
Abstract

Various techniques for accelerating dynamic programming algorithms are provided. For example, a fused addition and comparison instruction, a three-operand comparison instruction, and a two-operand comparison instruction are used to accelerate a Needleman-Wunsch algorithm that determines an optimized global alignment of subsequences over two entire sequences. In another example, the fused addition and comparison instruction is used in an innermost loop of a Floyd-Warshall algorithm to reduce the number of instructions required to determine shortest paths between pairs of vertices in a graph. In another example, a two-way single instruction multiple data (SIMD) floating point variant of the three-operand comparison instruction is used to reduce the number of instructions required to determine the median of an array of floating point values.

Claims (28)

1 . A computer-implemented method for executing dynamic programming algorithms on parallel processors, the method comprising:

during a first iteration of a loop of a dynamic programming algorithm, executing, on an integer pipeline, at least one of a first floating point fused addition and comparison instruction, a first floating point three-operand comparison instruction, or a first floating point two-operand comparison instruction that indicates a first source operand associated with a first destination operand to determine a first result, wherein execution of the at least one of a first floating point fused addition and comparison instruction, a first floating point three-operand comparison instruction, or a first floating point two-operand comparison instruction includes a comparison performed on multiple source operands including the first source operand; and

during a second iteration of the loop, executing, on the integer pipeline, at least one of a second floating point fused addition and comparison instruction, a second floating point three-operand comparison instruction, or a second floating point two-operand comparison instruction that indicates a second source operand associated with a second destination operand to determine a second result based on the first result.

2 . The computer-implemented method of claim 1 , wherein the at least one of the first floating point fused addition and comparison instruction, the first floating point three-operand comparison instruction, or the first floating point two-operand comparison instruction comprises at least one of a two-way single instruction, multiple data (SIMD) instruction or a four-way SIMD instruction.

3 . The computer-implemented method of claim 1 , wherein the first floating point fused addition and comparison instruction computes a minimum or maximum of a first floating point value included in a third source operand and a sum of a second floating point value included in a fourth source operand and a third floating point value included in a fifth source operand.

4 . The computer-implemented method of claim 1 , wherein the first floating point three-operand comparison instruction computes a minimum or maximum of a first element of a third source operand, a second element of a fourth source operand, a third element of a fifth source operand, and zero.

5 . The computer-implemented method of claim 1 , wherein the first floating point two-operand comparison instruction indicates that a first element of the first destination operand is equal to a first element of the first source operand.

6 . The computer-implemented method of claim 1 , further comprising, prior to the second iteration of the loop, storing the first result in an array of results associated with a plurality of sub-problems.

7 . The computer-implemented method of claim 1 , wherein the dynamic programming algorithm comprises a Needleman-Wunsch algorithm, a local sequence alignment algorithm, a multi-sequence alignment algorithm, a partial order alignment algorithm, or a genome mapping algorithm.

8 . The computer-implemented method of claim 1 , wherein the dynamic programming algorithm comprises a Floyd-Warshall algorithm, a tensor contraction optimization algorithm, a median sorting network, or an algorithm associated with a fifth generation of wireless technology.

9 . The computer-implemented method of claim 1 , wherein executing the at least one of the first floating point fused addition and comparison instruction, the first floating point three-operand comparison instruction, or the first floating point two-operand comparison instruction comprises causing an integer pipeline of a parallel processor to execute a first operation on at least two floating point values.

10 . The computer-implemented method of claim 1 , wherein executing the at least one of the first floating point fused addition and comparison instruction, the first floating point three-operand comparison instruction, or the first floating point two-operand comparison instruction comprises causing a floating point pipeline of a parallel processor to execute an addition operation on two integer values.

11 . One or more non-transitory computer readable media including instructions that, when executed by one or more processors, cause the one or more processors to execute dynamic programming algorithms by performing steps of:

during a first iteration of a loop of a dynamic programming algorithm, executing, on an integer pipeline, at least one of a first floating point fused addition and comparison instruction, a first floating point three-operand comparison instruction, or a first floating point two-operand comparison instruction that indicates a first source operand associated with a first destination operand to determine a first result, wherein execution of the at least one of a first floating point fused addition and comparison instruction, a first floating point three-operand comparison instruction, or a first floating point two-operand comparison instruction includes a comparison performed on multiple source operands including the first source operand; and

during a second iteration of the loop, executing, on the integer pipeline, at least one of a second floating point fused addition and comparison instruction, a second floating point three-operand comparison instruction, or a second two-operand comparison instruction that indicates a second source operand associated with a second destination operand to determine a second result based on the first result.

12 . The one or more non-transitory computer readable media of claim 11 , wherein the at least one of the first floating point fused addition and comparison instruction, the first floating point three-operand comparison instruction, or the first floating point two-operand comparison instruction comprises at least one of a two-way single instruction, multiple data (SIMD) instruction or a four-way SIMD instruction.

13 . The one or more non-transitory computer readable media of claim 11 , wherein the first floating point fused addition and comparison instruction computes a minimum or maximum of a first element of a third source operand and a sum of a first element of a fourth source operand and a first element of a fifth source operand.

14 . The one or more non-transitory computer readable media of claim 11 , wherein the first floating point three-operand comparison instruction computes a minimum or maximum of a first floating point value included in a third source operand, a second floating point value included in a fourth source operand, and a third floating point value included in a fifth source operand.

15 . The one or more non-transitory computer readable media of claim 11 , wherein the first floating point two-operand comparison instruction indicates that a first floating point value included in the first destination operand is equal to a second floating point value included in the first source operand.

16 . The one or more non-transitory computer readable media of claim 11 , further comprising, prior to the second iteration of the loop, storing the first result in an array of results associated with a plurality of sub-problems.

17 . The one or more non-transitory computer readable media of claim 11 , wherein the dynamic programming algorithm comprises a Needleman-Wunsch algorithm, a local sequence alignment algorithm, a multi-sequence alignment algorithm, a partial order alignment algorithm, or a genome mapping algorithm.

18 . The one or more non-transitory computer readable media of claim 11 , wherein the dynamic programming algorithm comprises a Floyd-Warshall algorithm, a tensor contraction optimization algorithm, a median sorting network, or an algorithm associated with a fifth generation of wireless technology.

19 . The one or more non-transitory computer readable media of claim 11 , wherein executing the at least one of the first floating point fused addition and comparison instruction, the first floating point three-operand comparison instruction, or the first floating point two-operand comparison instruction comprises causing an integer pipeline of a parallel processor to execute a first operation on at least two floating point values.

20 . A system comprising:

one or more memories storing instructions; and

one or more processors coupled to the one or more memories that, when executing the instructions:

during a first iteration of a loop of a dynamic programming algorithm, executes, on an integer pipeline included in the one or more processors, at least one of a first floating point fused addition and comparison instruction, a first floating point three-operand comparison instruction, or a first floating point two-operand comparison instruction that indicates a first source operand associated with a first destination operand to determine a first result, wherein execution of the at least one of a first floating point fused addition and comparison instruction, a first floating point three-operand comparison instruction, or a first floating point two-operand comparison instruction includes a comparison performed on multiple source operands including the first source operand; and

during a second iteration of the loop, execues, on the integer pipeline, at least one of a second floating point fused addition and comparison instruction, a second floating point three-operand comparison instruction, or a second two-operand comparison instruction that indicates a second source operand associated with a second destination operand to determine a second result based on the first result.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 15, 2024
From: TYRLIK, MACIEJ PIOTR; TIRUMALA, AJAY SUDARSHAN; GADRE, SHIRESH; EATON, FRANK JOSEPH; STIFFLER, DANIEL ALAN
To: NVIDIA CORPORATION
Reel/Frame 068905/0536 →
Continuity (4)
Continuation 17936172 · Sep 28, 2022
Continuation In Part 17491266 · Sep 30, 2021
Provisional Application 63321456 · Mar 18, 2021
Related Publication 20250068421A1 · Feb 27, 2025
References Cited (41)
US 7467287B1 · Bratt et al. · 2008 [cited by applicant]
US 11003620B2 · Patil et al. · 2021 [cited by applicant]
US 20030188143A1 · Sheaffer · 2003 [cited by applicant]
US 20030191928A1 · Sheaffer · 2003 [cited by applicant]
US 20040024536A1 · Rognes · 2004 [cited by applicant]
US 20040098203A1 · Rognes · 2004 [cited by applicant]
US 20040167720A1 · Poleksic · 2004 [cited by applicant]
US 20080250016A1 · Farrar · 2008 [cited by applicant]
US 20090125514A1 · Brown · 2009 [cited by applicant]
US 20100281239A1 · Sudhakar · 2010 [cited by examiner]
US 20110161548A1 · Flachs et al. · 2011 [cited by applicant]
US 20120023110A1 · Zidan et al. · 2012 [cited by applicant]
US 20120023316A1 · Flachs et al. · 2012 [cited by applicant]
US 20120239706A1 · Steinfadt · 2012 [cited by applicant]
US 20130080490A1 · Plondke et al. · 2013 [cited by applicant]
US 20130166218A1 · Farivar et al. · 2013 [cited by applicant]
US 20140172824A1 · Musuvathi et al. · 2014 [cited by applicant]
US 20140189320A1 · Kuo · 2014 [cited by applicant]
US 20140189331A1 · Lipshits et al. · 2014 [cited by applicant]
US 20150057946A1 · Kural · 2015 [cited by applicant]
US 20150220532A1 · Wong · 2015 [cited by applicant]
US 20150227685A1 · Kural · 2015 [cited by applicant]
US 20150286482A1 · Espasa · 2015 [cited by examiner]
US 20160124715A1 · Burgess et al. · 2016 [cited by applicant]
US 20170039033A1 · Samudrala · 2017 [cited by examiner]
US 20170039044A1 · Miyoshi et al. · 2017 [cited by applicant]
US 20180137237A1 · Lo et al. · 2018 [cited by applicant]
US 20190042242A1 · Das et al. · 2019 [cited by applicant]
US 20190197019A1 · Patil et al. · 2019 [cited by applicant]
US 20200234796A1 · Narayanasamy et al. · 2020 [cited by applicant]
US 20200272687A1 · Chen et al. · 2020 [cited by applicant]
US 20210133175A1 · Shabi et al. · 2021 [cited by applicant]
US 20210157580A1 · Ould-Ahmed-Vall · 2021 [cited by examiner]
US 20210182058A1 · Kaul · 2021 [cited by examiner]
US 20230067810A1 · Heinecke · 2023 [cited by examiner]
US 20230081763A1 · Boemer et al. · 2023 [cited by applicant]
Steinfadt et al., “SWAMP: Smith-Waterman using Associative Massive Parallelism”, IEEE, 2008, 8 pages. [cited by applicant]
Non-Final Office Action received for U.S. Appl. No. 17/491,276 dated Oct. 1, 2025, 37 pages. [cited by applicant]
Koliogeorgi et al., “Dataflow Acceleration Of Smith-Waterman With Traceback For High Throughput Next Generation Sequencing.” 29th International Conference on Field Programmable Logic and Applications (FPL), IEEE, 2019, … [cited by applicant]
Fei et al., “FPGASW: Accelerating Large-Scale Smith-Waterman Sequence Alignment Application with Backtracking on FPGA Linear Systolic Array”, Interdiscip Sci Comput Life Sci, DOI: https://doi.org/10.1007/s12539-017-0225… [cited by applicant]
Zhao et al., “SSW Library: An Sim D Smith-Waterman C/C++ Library for Use in Genomic Applications”, DOI: 10.1371/journal.pone.0082138, vol. 8, No. 12, 2013, 7 pages. [cited by applicant]