TWI398779B - 使用平行處理器架構對一序列單位元值進行掃描作業之系統、方法及電腦程式產品 - Google Patents

使用平行處理器架構對一序列單位元值進行掃描作業之系統、方法及電腦程式產品 Download PDF

Info

Publication number
TWI398779B
TWI398779B TW097143617A TW97143617A TWI398779B TW I398779 B TWI398779 B TW I398779B TW 097143617 A TW097143617 A TW 097143617A TW 97143617 A TW97143617 A TW 97143617A TW I398779 B TWI398779 B TW I398779B
Authority
TW
Taiwan
Prior art keywords
processing elements
parallel processor
processor architecture
processing
sequence
Prior art date
Application number
TW097143617A
Other languages
English (en)
Other versions
TW200928780A (en
Inventor
Michael J Garland
Samuli M Laine
Timo O Aila
David Patrick Luebke
Original Assignee
Nvidia Corp
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 Nvidia Corp filed Critical Nvidia Corp
Publication of TW200928780A publication Critical patent/TW200928780A/zh
Application granted granted Critical
Publication of TWI398779B publication Critical patent/TWI398779B/zh

Links

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
    • 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/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • G06F7/505Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
    • G06F7/506Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination with simultaneous carry generation for, or propagation over, two or more stages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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
    • 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, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/506Indexing scheme relating to groups G06F7/506 - G06F7/508
    • G06F2207/50632-input gates, i.e. only using 2-input logical gates, e.g. binary carry look-ahead, e.g. Kogge-Stone or Ladner-Fischer adder

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computing Systems (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Executing Machine-Instructions (AREA)
  • Image Processing (AREA)
  • Complex Calculations (AREA)

Description

使用平行處理器架構對一序列單位元值進行掃描作業之系統、方法及電腦程式產品
本發明係關於一種掃描操作,更特別地係,關於使用一平行處理架構執行掃描操作。
平行處理器架構普遍用來執行一大群不同計算演算法。普遍使用此架構執行的演算法範例是一掃描操作(例如「所有字首加總(all-prefix-sums)」操作等)。此掃描操作是在下面表一中定義。
特別地係,假設陣列[a0 ,a1 ,...,an-1 ]及一運算子「⊕」,其中的「I」是一恆等元件,表一的陣列會傳回。例如,若運算子「⊕」是加法運算子,執行陣列[3 1 7 0 4 1 6 3]的掃描操作將會傳回[0 3 4 11 11 15 16 22]等。雖然加法運算子是在上面範例中說明,但是此運算子可為兩運算元的任何關聯運算子。
此外,掃描操作可為一排除式掃描操作(如表一所示)或一包含式掃描操作。該排除式掃描是指結果之每一元件j是所有元件之總和,但不包括輸入陣列中的元件j之掃描。另一方面,在一包含式掃描中,包括元件j之所有元件將會加總。
至今,持續需要使用平行處理器架構以更有效率執行計算演算法,例如掃描操作。
本發明提供一種使用一平行處理架構,執行一序列單位元值的掃描操作之系統、方法及電腦程式產品。操作上,接收了一掃描操作指令。此外,回應該掃描操作指令,使用具有複數個處理元件之一平行處理器架構,執行一序列單位元值的掃描操作。
第一圖顯示根據本發明之一具體實施例之使用一平行處理架構執行單位元值掃描操作之方法100。如圖所示,一掃描操作指令係可接收。請參見步驟102。在目前描述的範圍中,一掃描操作指令是指對應至掃描操作的任何指令或命令。
此外,回應該掃描操作指令,可使用一具有複數個處理元件之平行處理器架構,執行一序列單位元值之掃描操作。請參見步驟104。在目前描述的範圍中,處理元件是指平行處理器架構的任何組件。此外,該序列單位元值可包括任何序列的一位元值。在一些具體實施例中,藉由此設計,例如單位元輸入掃描操作之計算演算法可更有效率執行。
此外,在目前描述的範圍中,掃描操作是指涉及一陣列的一目前元件與至少一先前元件之任何操作。例如,在各種不同具體實施例中,掃描操作可包括一字首加總掃描操作、一排除式掃描操作、一包含式掃描操作、及/或任何其他掃描操作(例如涉更多或較少的元件、及/或其他運算子等)。
仍然地係,在目前描述的範圍中,平行處理器架構可包括任何架構,該架構包括可平行操作的兩或多個處理元件。在一具體實施例中,此平行處理器架構可採用一圖形處理器(例如圖形處理單元(GPU,“Graphics Processing Unit”)等)、或具有圖形處理能力的任何其他積體電路(例如晶片組、晶片系統(SOC,“System-On-Chip”),整合一CPU的核心、離散處理器等)的形式。在仍然另一具體實施例中,前面的平行處理架構可包括一向量處理器。
更多的說明資訊現將按使用者的期望,闡述關於可以或不能實施前面架構的各種不同選擇性架構及特徵。應該特別注意,下列資訊只是說明,而未以任何方式構成限制。下列任一特徵可選擇合併或不排除其他描述的特徵。
第二圖顯示根據本發明之一具體實施例之執行一序列單位元值掃描操作之系統200。該系統還可實施以實現第一圖的方法。當然(然而),該系統可在任何想要的環境中實施。亦應該注意,上述定義可應用在目前的描述中。
如圖所示,其係提供一平行處理架構202。此平行處理架構包括複數個平行處理器204。雖然未在圖顯示,但是這類平行處理器可在一預定數量的執行緒上操作。為了這個目的,該等平行處理器之每一者可平行中操作,而對應的執行緒亦可平行操作。
在一具體實施例中,該平行處理架構可包括一或多個單指令多資料(SIMD,“Single Instruction Multiple Data”)處理元件。在此系統中,處理器執行的執行緒可匯集成群,以致於在任何情況下,一單群組中的所有執行緒可精確地執行相同指令,但是可能在不同資料上。在一具體實施例中,以此方式操作的此群執行緒是指「一群平行執行的線程」。此外,此群組的預定執行緒數量可稱為對應處理器的「一群平行執行的線程大小」。
在另一具體實施例中,前面的平行處理架構可包括一圖形處理器、或具有圖形處理能力的任何其他積體電路(例如晶片組、晶片系統(SOC)、整合中央處理器的核心、離散處理器等之形式)。在仍然另一具體實施例中,前面的平行處理架構可包括具有一或多個向量處理元件之一處理器,例如單元處理器,此處理器是指由Sony、Toshiba、和IBM共同開發的Cell寬頻引擎(Cell Broadband Engine)微處理器架構。
請即持續參考第二圖,平行處理架構可包括區域分享記憶體206。平行處理架構中的每一平行處理器可言賣取及/或寫入至此架構自己的的分享記憶體。此分享記憶體可由與每一處理器有關的實際單獨記憶體所組成,或可由在處理器中分享的一或多個記憶體的個別配置區域所組成。此外,在說明的具體實施例中,分享記憶體可在具體實施平行處理架構處理器的積體電路上予以具體實施。
仍然地係,其係顯示包括全域記憶體208。使用上,平行處理架構之所有處理器可存取此全域記憶體。如圖所示,在與具體實施上述平行處理架構之處理器的積體電路分開的一積體電路上,具體實施此全域記憶體。雖然顯示的平行處理架構是以特定方式在第二圖的各種不同積體電路上具體實施,但是應該注意,可視需要是否將系統組件具體實施在相同積體電路上。
仍然地係,第二圖的系統可更包括一驅動程式210,用以視需要控制平行處理架構。在一具體實施例中,驅動程式可包括一程式庫,用於促進此控制。例如,此程式庫包括可例示在此所述功能性的程式庫呼叫。
此外,在另一具體實施例中,驅動程式可提供利用平行處理架構(例如一圖形處理器等)的一般計算能力。此驅動程式的範例可連同NVIDIA Corporation公司提供的CUDATM 架構一起提供。使用上,驅動程式可用來控制平行處理架構根據第一圖的方法進行操作。
第三圖顯示根據本發明之一具體實施例之使用單位元輸入的一平行處理架構執行掃描操作的系統300之結果。該系統還可在第一圖至第二圖細節的情況下實施。當然(然而),該系統可在任何想要的環境中實施。亦應該注意,上述定義可應用在目前的描述中。
如圖所示,其提供了成為一平行處理器架構的一部分之複數個處理元件302。處理元件(例如執行緒)之每一者擁有1位元值304。在一具體實施例中,這些1位元值係衍生自評估一邏輯表達式。在此情況中,1位元值是指述詞位元。
操作上,平行處理器架構可接收一掃描操作指令。在此情況,掃描可包括一字首加總掃描操作指令。回應該掃描操作指令,可使用具有複數個處理元件平行處理器架構執行字首加總掃描操作指令。
一群N個處理元件(即是一群平行線程)上的述詞位元輸入之字首加總掃描操作(在圖的範例中,一排除式掃描)的結果將造成log(N)位元的整數。第三圖顯示N=16處理元件的一群平行線程(例如執行緒)的結果306。當然,任何數量的處理元件可使用在各種不同具體實施例。應該注意,傳遞至處理元件「i」的值為具有較小索引之處理元件(例如執行緒)數量,針對於處理元件,該等給定的述詞位元是1。在各種不同具體實施例中,此操作可當作許多計算核心的基礎使用,例如資料流壓縮與基數排序。
在一些情況中,一完全普遍掃描操作不會易受到直接硬體實施的影響。例如,掃描操作涉及處理任意長度序列,且具有許多可能數值型態(例如,int、float、short等)。對照下,小序列固定長度的二進位掃描基元可使用硬體實施,並可如同一機器指令予以提供。一多處理器中的處理元件數量是一熟知的結構常數,且數值型態可維持1位元值的常數。
第四圖顯示根據本發明之一具體實施例之以使用一平行處理架構之硬體執行掃描操作之系統400。該系統還可在第一圖至第三圖細節的情況下實施。當然(然而),該系統可在任何想要的環境中實施。再次,上述定義可應用在目前的描述中。
如圖所示,其提供了成為一平行處理器架構的一部分之複數個處理元件402。此外,包括了複數個加法器404。此加法器可包括能夠增加數字的任何電路或裝置。
操作上,處理元件(例如執行緒)每一者可保持1位元值。因此,當複數個處理元件接收一掃描操作指令時,可使用具有複數個處理元件的平行處理器架構執行掃描操作指令。在此情況中,整個加法器404係形成一加算網路(例如,電路),該加算網路可接收來自處理元件402之每一者的1位元輸入值,並將掃描操作的結果傳遞至處理元件406之每一者。
雖然第四圖描述16個處理元件,但是應該注意,可利用任何數量的處理元件。此外,第四圖的系統係說明一系統執行排除式掃描。在另一具體實施例中,系統可組態成執行包含式掃描。
此外,第四圖的系統係使用與處理元件數量(N)相等的深度予以組態。在各種不同其他具體實施例中,該系統可組態成減少深度。此減小限度可利用一些技術達成。
第五圖顯示根據本發明之另一具體實施例之以使用一平行處理架構之硬體執行掃描操作之系統500。該系統還可在第一圖至第四圖細節的情況下實施。當然(然而),該系統可在任何想要的環境中實施。亦應該注意,上述定義可應用在目前的描述中。
如圖所示,其提供了成為一平行處理器架構部分的複數個處理元件502。此外,包括了加法器504的樹狀。操作上,每一處理元件502提供1位元輸入。
此1位元輸入還可從一指定述詞暫存器取得。這些輸入可透過加法器的樹狀予以送入,將當作輸出的字首加總值506傳遞至對應的處理元件。在一具體實施例中,每一輸出可存放在每一處理元件的一指定資料暫存器。
如圖所示,加法器504的樹狀所形成的加法系統具有一深度值log(N),其中N是處理元件數量。然而,在一些情況中,可能想要減少系統中的加法器數量。因此,一具有減少加法器數量與增加演算法深度的系統可使用。
第六圖顯示根據本發明的仍然另一具體實施例之以使用一平行處理架構之硬體執行掃描操作之系統600。該系統還可在第一圖第第五圖的細節情況下實施。當然(然而),該系統可在任何想要的環境中實施。亦應該注意,上述定義可應用在目前的描述中。
如圖所示,其係提供成為一平行處理器架構的部分所包括的複數個處理元件602。此外,包括了複數個加法器604。操作上,每一處理元件提供1位元輸入。
應該注意,系統的深度是直接與系統的延遲有關。因此,若系統的總面積之考量遠大於總延遲,一具有較少加法器之系統是所想要的(例如第六圖的系統)。另一方面,若延遲之考量遠大於總面積,一具有較多加法器與較低深度之系統是所想要的(例如第五圖的系統)。
利用任一實施,掃描1位元輸入可比一般數字更易達成。例如,若將整個32位元整數加總,一執行加總的系統中的每一加法器將必須為32位元加法器。然而,藉由1位元輸入,每一加法器的寬度最多是log(N),其中N是系統中的處理元件數量。在目前描述的範圍中,一加法器的寬度是指加法器可處理的輸入數值的可包含最大位元數量。
在第六圖的特定情況及範圍中,每一加法器將會遇到每輸入最多有4位元。在一具體實施例中,不同寬度的加法器可在加法器的樹狀的不同階層上使用。例如,樹狀的第一階層606中的加法器(即在輸入下面)可只包括1位元輸入。此外,第二階層608可只包括2位元輸入。
如果有如第二圖至第六圖情況描述的資料路徑,一SIMD多處理器的處理元件之二進位掃描可受到如同機器指令的程式處理。在一具體實施例中,可利用一述詞掃描(「PSCAN,“Predicate Scan”」)指令,該指令可從每一處理元件,將一暫存器(「Rpred」)中的1位元述詞採用為輸入,並將在另一暫存器(「Rsum」)中的適當字首加總傳回至每一處理元件。此指令在下面表二顯示。
此指令的操作是直接對應至第二圖至第六圖的系統。該等處理元件之每一者係提供述詞位元至系統的平行字首加算網路的輸入,且每一者係接收單一輸出值。
多數多處理器硬體係合併一停用機構,用以在計算期間選擇性停用處理元件。此一般達成允許SIMD處理器陣列執行執行一程式的分支傳輸路徑。在此情況中,假設,當現用處理元件執行一「PSCAN」指令時,停用的處理元件提供一「0」至平行字首計算。在另一具體實施例中,然而,指令的變體可提供,其中可使用「1」表示非現用的處理元件。
此外,雖然第二圖至第六圖描述加法算的情況,但是同樣可使用其他運算。例如,掃描操作和加法器可普遍使用除了加算以外的任何相關運算。因此,掃描操作可利用複數個平行處理器架構功能單元予以執行。
在此情況中,功能單元可包括加法器、布林(Boolean)邏輯運算子、算術和邏輯運算子、及各種不同其他功能單元。此外,如圖所示,平行處理器架構可包括複數個功能單元階層。在此情況中,階層數可小於處理元件數量。此外,階層數可時常小於處理元件數量。
在機器指令的範圍中,類似加算指令的例如AND、OR、和XOR指令可利用。此外,對於1位元輸入而言,例如MIN、MAX和乘法的運算可減少至這些3個上述1位元運算。如上述,這類指令的資料路徑將看似等於第三圖至第六圖顯示的資料路徑,具有由適當AND/OR/XOR邏輯閘所取代的構成加法器區塊。此外,在一示例性具體實施例中,在第三圖至第六圖的情況所述的系統可使用管線(Pipeline)組態實施。在此情況中,閂鎖可用來實施此管線組態。
應該注意,對應至掃描指令操作的機器指令可利用多種電腦程式語言(例如C、C++等)實施。在一具體實施例中,指令可利用例如本質簡單的計算統一設備架構(CUDATM ,“Compute Unified Device Architecture”)C程式語言實施。例如,表三顯示以CUDATM C撰寫的指令,其中「i」代表執行緒索引。
揭示此功能性的另一方式是隱式執行處理元件的「現用」位元的二進位字首加總,而不是由程式顯式計算述詞。此結構的範例是在下面表四顯示。
在此情況中,一基本處理器機構可提供給編譯器使用,以存取多處理器的「現用」狀態。
當然,這只是曝露一高階程式語言的基元之一可能達成方式,且特別係關於CUDATM C。可考慮揭示原型機支援的其他構件。應該注意實質不同設計(例如Data Parallel C等)的程式語言將利用不同語言層級的具體實施例。
在一具體實施例中,一或多個群組的處理元件或執行緒(例如一群平行線程)可在協作執行緒陣列(CTA,“Cooperative Thread Array”)中一起執行。因此,平行處理器架構可提供作為在處理元件之中的協調。在此情況中,協調可包括關於寫入結果目的地之協調。在一具體實施例中,複數個處理元件可經由晶片內的分享記憶體而彼此溝通,並經由屏障予以同步化。
當在由多執行緒組成的CTA上執行掃描時,掃描的兩層可執行。第一掃描可發生在每一平行執行緒。第一掃描還可使用如上述「PSCAN」基元加以實施。第二掃描可從每一平行執行緒接收單一值,並執行這些部分加總的掃描。應該注意,這些是在擁有32個平行執行緒寬度情況中的所有5位元整數。
在一具體實施例中,藉由先獨立執行每二進位數字掃描,且然後加總該等結果,1位元掃描基元可用來計算多位元數值的字首加總。換句話說,藉由個別執行多位元值的個別位元掃描、及在將此結果進行位元偏移之後,再加總該等個別掃描的結果,平行處理器架構可執行多位元值的掃描操作。例如,假設一群平行線程中的每一執行緒具有5位元值「x_i」。這些值的字首加總可如表五所示予以計算。
此實施的結果將會與使用完全掃描核心的實施相同。然而,假設「PSCAN」是利用一單指令執行,當輸入值的位元數較小時,此可比整個核心更有效率。更多關於掃描核心的資料可參考在2007年9月27日申請的專利第11/862,938號名稱「SYSTEM,METHOD AND COMPUTER PROGRAM PRODUCT FOR PERFORMING A SCAN OPERATION」的描述,其在此是以引用方式併入本文供參考。
應該注意,上述功能性可使用在包括一平行處理架構的任何想要環境,並可在想要有效率平行核心結構的各種不同情況中實施。例如,假設維護了對應至資料的項目佇列,且一群平行線程將每執行緒的多達1項目寫入佇列。若每一執行緒始終寫入1項目,則每一執行緒將始終預先知道多少佇列指標符的偏移量應該會以一值予以寫入。
然而,若每一個別執行緒選擇是否寫入一值,在一群平行線程(Warp)中的所有執行緒必須計算寫入該等執行緒值的適當偏移。計算此偏移可使用決定每一執行緒是否想要寫入的述詞掃描加以實施。可使用如表六所示的二進位掃描基元,簡單及有效率表達此計算。
在一群平行線程上隱式掃描處理器「現用」位元可產生一更小變體。例如,一此變體如下面表七所示。
如另一範例所示,執行緒的CTA可控制每執行緒具有一值之一序列數值。在此範例中,一「樞紐」值可選擇,且一陣列可重組,以致於在陣列中,小於該樞紐值的所有值可出現在所有其他數值之前。這是在例如Quicksort演算法中的一步驟。
為了實施此操作,一「rank()」基元可定義以接收述詞「p」。述詞為真的執行緒將接收述詞為真的具有較低執行緒索引之執行緒數量之計數。述詞為假的執行緒將接收述詞為假的具有較低執行緒索引之執行緒數量之計數、加上為真的述詞之總數。表八顯示在CUDATM 中的一代表性函式的範例,其中「cta_prefix_sum()」是以2007年9月27日申請的專利第11/862,938號名稱「SYSTEM,METHOD AND COMPUTER PROGRAM PRODUCT FOR PERFORMING A SCAN OPERATION」中揭示的方式而建立在一群平行線程間掃描的上面。
此基元的提供,一劃分函式(partition())可撰寫成程式。例如,表九顯示一此劃分函式的範例。
類似劃分、排序數字序列是另一操作,此操作在許多應用是很有用。從上面定義的「rank()」基元觀點,此操作亦容易實施。一基數排序(Radix Sort)之每執行一次循環是只基於資料值的一單位元值,以「partition()」方式加以重組,而不是基於比較述詞。在目前描述的範圍中,一基數排序是藉由處理個別數字將整數排序的一排序演算法。利用基數排序的一實施範例是在下面表十中顯示。
雖然上面已描述各種不同具體實施例,但是應該瞭解這些具體實施例只是藉由範例說明而不是限制。例如,在各種不同其他具體實施例中,一些掃描演算法可在上述圖式的範圍及細節中使用及實施。
第七圖說明可實施各種不同先前具體實施例的各種不同架構及/或功能性之示例性系統700。如圖所示,一系統提供包括至少一主機處理器701,該主機處理器係連接至一通信匯流排702。系統亦包括一主記憶體704。控制邏輯(軟體)與資料可儲存在採用隨機存取記憶體(RAM,“Random Access Memory”)形式的主記憶體。
系統亦包括一圖形處理器706與一顯示器708,即是一電腦監視器。在一具體實施例中,圖形處理器可包括複數個著色器模組(Shader Module)、一光柵化模組(Rasterization Module)等。前面模組之每一者可甚至置於一單一半導體平台上形成一圖形處理單元(GPU,“Graphics Processing Unit”)。
在目前描述中,一單一半導體平台是指一以唯一整體半導體為主之積體電路或晶片。應該注意,該術語單一半導體平台亦指具增加連接性、模擬晶片操作的多晶片模組,並利用一習知中央處理單元(CPU,“Central Processing Unit”)和匯流排實施進行實質改善。當然,可按使用者的期望,各種不同模組亦可置於分開或各種不同組合的半導體平台。
系統亦包括一輔助儲存裝置710。輔助儲存裝置包括例如一硬碟機及/或一可移除儲存磁碟機,代表一軟碟機、一磁帶機、一光碟機等。可移除儲存磁碟機能夠以熟知的方式從可移除儲存模組讀取、及/或寫入該可移除儲存模組。
電腦程式、或電腦控制邏輯演算法可儲存在主記憶體及/或輔助儲存裝置。當電腦程式執行時,此電腦程式可使系統執行各種不同功能。記憶體、儲存裝置及/或任何其他儲存裝置是電腦可讀媒體之可能範例。
在一具體實施例中,各種不同先前圖式的架構及/或功能性可在主機處理器、圖形處理器、一可為主機處理器和圖形處理器二者能力之至少一部分積體電路(未在圖顯示)、一晶片組(即是一組積體電路,其設計上可工作及能夠以執行相關功能等的模組予以銷售)、及/或用於此目的之任何其他積體電路的情況下實施。此外,在一可能的具體實施例中,在一驅動程式712的控制下,各種不同先前圖式的元件指派功能性可在前面積體電路之任一者中實施。
仍然地係,各種不同先前圖式的架構及/或功能性可在一般電腦系統、一電路板系統、一專屬於娛樂目的之遊戲機控制系統、一應用特殊系統、及/或任何其他期望系統的範圍中實施。例如,系統可採用一桌上型電腦、膝上型電腦、及/或任何其他類型邏輯的形式。仍然地係,系統可採用各種不同其他裝置的形式,包括(但未限於)一個人數位助理(PDA,“Personal Digital Assistant”)裝置、一行動電話裝置、一電視機等。
此外,雖然未在圖式中顯示,但是系統可耦合至一網路(例如一電信網路、區域網路(LAN,“Local Area Network”)、無線網路、廣域網路(WAN,“Wide Area Network”),例如網際網路、對等網路、電纜網路等),供通信目的使用。
雖然上面已描述各種不同具體實施例,但是應該瞭解,這些不同具體實施例只經由範例描述,而不是限制。因此,一較佳具體實施例的廣度及範疇應不受到上述任一示例性具體實施例的限制,而是只根據下列申請專利範圍及其同等物的定義。
200...系統
202...平行處理架構
204...平行處理器
206...區域分享記憶體
208...全域記憶體
210...驅動程式
300...系統
302...處理元件
304...1位元值
306...結果
400...系統
402...處理元件
404...加法器
406...處理元件
500...系統
502...處理元件
504...加法器
506...宇首加總值
600...系統
602...處埋元件
604...加法器
606...第一層
608...第二層
700...系統
701...主機處理器
702...通信匯流排
704...主記憶體
706...圖形處埋器
708...顯示器
710...輔助儲存裝置
第一圖顯示根據本發明之一具體實施例之使用一平行處理架構執行一序列單位元值掃描操作之方法。
第二圖顯示根據本發明之一具體實施例之用於執行一序列單位元值掃描操作之系統。
第三圖顯示根據本發明之一具體實施例之用於執行一序列單位元值掃描操作的系統之結果。
第四圖顯示根據本發明之一具體實施例之在使用一平行處理架構的硬體中執行掃描操作之系統。
第五圖顯示根據本發明之仍然另一具體實施例之在使用一平行處理架構的硬體中執行掃描操作之系統。
第六圖顯示根據本發明之另一具體實施例之在使用一平行處理架構的硬體中執行掃描操作之系統。
第七圖說明可實施各種不同先前具體實施例的各種不同架構及/或功能性之示例性系統。

Claims (23)

  1. 一種使用一平行處理器架構對一序列單位元值進行一掃描作業的方法,其包含:接收一掃描操作指令;及回應該掃描操作指令,使用一具有複數個處理元件之平行處理器架構執行一序列多個單位元值掃描操作,其中每一個該些處理元件擁有該序列該些單位元值的一單位元值,且其中該些處理元件包括一第一組處理元件、一第二組處理單元和複數加法器的一樹,該樹由該第一組處理元件接收輸入,並傳送結果至該第二組處理元件。
  2. 如申請專利範圍第1項之方法,其中該掃描操作包括一字首加總掃描操作。
  3. 如申請專利範圍第1項之方法,其中該掃描操作包括一包含式掃描操作。
  4. 如申請專利範圍第1項之方法,其中該掃描操作包括一排除式掃描操作。
  5. 如申請專利範圍第1項之方法,其中該平行處理器架構提供在該等處理元件之間的協調。
  6. 如申請專利範圍第5項之方法,其中該協調包括關於寫入結果的目的地之協調。
  7. 如申請專利範圍第1項之方法,其中該處理元件之每一者係平行執行複數個執行緒。
  8. 如申請專利範圍第1項之方法,其中該掃描操作係利用該平行處理器架構的複數個功能單元予以執行。
  9. 如申請專利範圍第8項之方法,其中該等功能單元包括加法器。
  10. 如申請專利範圍第8項之方法,其中該等功能單元包括布林(Boolean)邏輯運算子。
  11. 如申請專利範圍第8項之方法,其中該等功能單元包括算術與邏輯運算子。
  12. 如申請專利範圍第8項之方法,其中該平行處理器架構包括複數個功能單元的層級。
  13. 如申請專利範圍第12項之方法,其中該層級數係小於該等處理元件數量。
  14. 如申請專利範圍第12項之方法,其中該層級數係小於該等處理元件數的記錄。
  15. 如申請專利範圍第1項之方法,其中該平行處理器架構執行一多位元值掃描操作,該掃描操作可藉由個別執行該多位元值的個別位元掃描、及將該等個別掃描的結果進行位元移之後,再將該等個別掃描的結果進行加總而達成。
  16. 如申請專利範圍第1項之方法,其中該平行處理器架構包括一或多個單指令多資料處理器。
  17. 如申請專利範圍第1項之方法,其中該平行處理器架構包括一圖形處理器。
  18. 如申請專利範圍第1項之方法,其中每一個該些處理元件包括一執行緒。
  19. 如申請專利範圍第1項之方法,其中該掃描操作包括一述詞掃描,其由該些處理元件的每一個處理元件的一暫存器拿1位元述詞為輸入,而將另一暫存器的一自首總和至每一個處理元件。
  20. 如申請專利範圍第1項之方法,其中該樹第一層的每個加法器包括該第一組處理元件的一相對應處理元件的一 述詞暫存器,該樹第二層的每個加法器包括一2位元輸入,由該樹得到的每一結果被送到該第二組處理元件的每一處理元件的一指定資料暫存器。
  21. 一種在電腦可讀媒體上具體實施之使用一平行處理器架構對一序列單位元值進行一掃描作業的電腦程式產品,其包含:電腦碼,其可回應一掃描操作指令,使用具有複數個處理元件之一平行處理器架構執行一序列多個單位元值的掃描操作,其中每一個該些處理元件擁有該序列該些單位元值的一單位元值,且其中該些處理元件包括一第一組處理元件、一第二組處理單元和複數加法器的一樹,該樹由該第一組處理元件接收輸入,並傳送結果至該第二組處理元件。
  22. 一種使用一平行處理器架構對一序列單位元值進行一掃描作業的裝置,其包含:一平行處理器架構,其包括複數個處理元件;及一指令,其使用該平行處理器架構,執行一序列多個單位元值的掃描操作,其中每一個該些處理元件擁有該序列該些單位元值的一單位元值,且其中該些處理元件包括一第一組處理元件、一第二組處理單元和複數加法器的一樹,該樹由該第一組處理元件接收輸入,並傳送結果至該第二組處理元件。
  23. 如申請專利範圍第22項之裝置,其中該平行處理器架構係經由一匯流排與記憶體和一顯示器保持溝通。
TW097143617A 2007-11-15 2008-11-12 使用平行處理器架構對一序列單位元值進行掃描作業之系統、方法及電腦程式產品 TWI398779B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/940,782 US8661226B2 (en) 2007-11-15 2007-11-15 System, method, and computer program product for performing a scan operation on a sequence of single-bit values using a parallel processor architecture

Publications (2)

Publication Number Publication Date
TW200928780A TW200928780A (en) 2009-07-01
TWI398779B true TWI398779B (zh) 2013-06-11

Family

ID=40643242

Family Applications (1)

Application Number Title Priority Date Filing Date
TW097143617A TWI398779B (zh) 2007-11-15 2008-11-12 使用平行處理器架構對一序列單位元值進行掃描作業之系統、方法及電腦程式產品

Country Status (5)

Country Link
US (1) US8661226B2 (zh)
JP (1) JP2009169935A (zh)
KR (1) KR20090050977A (zh)
CN (1) CN101436121B (zh)
TW (1) TWI398779B (zh)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8996846B2 (en) 2007-09-27 2015-03-31 Nvidia Corporation System, method and computer program product for performing a scan operation
US8284188B1 (en) 2007-10-29 2012-10-09 Nvidia Corporation Ray tracing system, method, and computer program product for simultaneously traversing a hierarchy of rays and a hierarchy of objects
US8264484B1 (en) 2007-10-29 2012-09-11 Nvidia Corporation System, method, and computer program product for organizing a plurality of rays utilizing a bounding volume
US8243083B1 (en) 2007-12-04 2012-08-14 Nvidia Corporation System, method, and computer program product for converting a scan algorithm to a segmented scan algorithm in an operator-independent manner
US8773422B1 (en) 2007-12-04 2014-07-08 Nvidia Corporation System, method, and computer program product for grouping linearly ordered primitives
US8417735B1 (en) * 2007-12-12 2013-04-09 Nvidia Corporation Instruction-efficient algorithm for parallel scan using initialized memory regions to replace conditional statements
US8289324B1 (en) 2007-12-17 2012-10-16 Nvidia Corporation System, method, and computer program product for spatial hierarchy traversal
US8502819B1 (en) 2007-12-17 2013-08-06 Nvidia Corporation System and method for performing ray tracing node traversal in image rendering
US8200947B1 (en) * 2008-03-24 2012-06-12 Nvidia Corporation Systems and methods for voting among parallel threads
US8527742B2 (en) * 2008-08-15 2013-09-03 Apple Inc. Processing vectors using wrapping add and subtract instructions in the macroscalar architecture
US9342304B2 (en) 2008-08-15 2016-05-17 Apple Inc. Processing vectors using wrapping increment and decrement instructions in the macroscalar architecture
US9335997B2 (en) 2008-08-15 2016-05-10 Apple Inc. Processing vectors using a wrapping rotate previous instruction in the macroscalar architecture
US8209525B2 (en) * 2008-08-15 2012-06-26 Apple Inc. Method and apparatus for executing program code
US9335980B2 (en) 2008-08-15 2016-05-10 Apple Inc. Processing vectors using wrapping propagate instructions in the macroscalar architecture
US8321492B1 (en) 2008-12-11 2012-11-27 Nvidia Corporation System, method, and computer program product for converting a reduction algorithm to a segmented reduction algorithm
US8327119B2 (en) * 2009-07-15 2012-12-04 Via Technologies, Inc. Apparatus and method for executing fast bit scan forward/reverse (BSR/BSF) instructions
US8542247B1 (en) 2009-07-17 2013-09-24 Nvidia Corporation Cull before vertex attribute fetch and vertex lighting
US8564616B1 (en) 2009-07-17 2013-10-22 Nvidia Corporation Cull before vertex attribute fetch and vertex lighting
KR101109717B1 (ko) * 2009-10-12 2012-01-31 주식회사 씨네스티 원격 제어를 위한 영상 처리 방법 및 이를 실행하기 위한 원격 제어 프로그램이 기록된 컴퓨터가 판독 가능한 기록매체
US8384736B1 (en) 2009-10-14 2013-02-26 Nvidia Corporation Generating clip state for a batch of vertices
US8976195B1 (en) 2009-10-14 2015-03-10 Nvidia Corporation Generating clip state for a batch of vertices
WO2013095634A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Systems, apparatuses, and methods for performing a horizontal partial sum in response to a single instruction
US9465612B2 (en) 2011-12-28 2016-10-11 Intel Corporation Systems, apparatuses, and methods for performing delta encoding on packed data elements
US9557998B2 (en) * 2011-12-28 2017-01-31 Intel Corporation Systems, apparatuses, and methods for performing delta decoding on packed data elements
US9389860B2 (en) 2012-04-02 2016-07-12 Apple Inc. Prediction optimizations for Macroscalar vector partitioning loops
US9921832B2 (en) 2012-12-28 2018-03-20 Intel Corporation Instruction to reduce elements in a vector register with strided access pattern
US9442755B2 (en) * 2013-03-15 2016-09-13 Nvidia Corporation System and method for hardware scheduling of indexed barriers
US9817663B2 (en) 2013-03-19 2017-11-14 Apple Inc. Enhanced Macroscalar predicate operations
US9348589B2 (en) 2013-03-19 2016-05-24 Apple Inc. Enhanced predicate registers having predicates corresponding to element widths
US20150052330A1 (en) * 2013-08-14 2015-02-19 Qualcomm Incorporated Vector arithmetic reduction
US9652284B2 (en) * 2013-10-01 2017-05-16 Qualcomm Incorporated GPU divergence barrier
CN105940376A (zh) * 2014-04-24 2016-09-14 联发科技股份有限公司 中央处理单元控制方法、电子系统控制方法及电子系统
EP3035204B1 (en) * 2014-12-19 2018-08-15 Intel Corporation Storage device and method for performing convolution operations
US20180007302A1 (en) 2016-07-01 2018-01-04 Google Inc. Block Operations For An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register
US20180005346A1 (en) * 2016-07-01 2018-01-04 Google Inc. Core Processes For Block Operations On An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register
US10296342B2 (en) * 2016-07-02 2019-05-21 Intel Corporation Systems, apparatuses, and methods for cumulative summation
CN112256580B (zh) * 2020-10-23 2024-02-13 济南浪潮数据技术有限公司 一种代码扫描方法、装置、设备及存储介质
US11362670B2 (en) * 2020-10-30 2022-06-14 International Business Machines Corporation ReLU compression to reduce GPU memory
CN114510271B (zh) * 2022-02-09 2023-08-15 海飞科(南京)信息技术有限公司 用于在单指令多线程计算系统中加载数据的方法和装置
CN115718724B (zh) * 2023-01-09 2023-05-09 阿里巴巴(中国)有限公司 Gpu、数据选择方法及芯片

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200736990A (en) * 2006-02-06 2007-10-01 Via Tech Inc Dual mode floating point multiply accumulate unit

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4628483A (en) 1982-06-03 1986-12-09 Nelson Raymond J One level sorting network
US4855937A (en) 1984-08-08 1989-08-08 General Electric Company Data block processing for fast image generation
US5193207A (en) 1990-05-31 1993-03-09 Hughes Aircraft Company Link sorted memory
US5274718A (en) 1991-09-30 1993-12-28 At&T Bell Laboratories Image representation using tree-like structures
US5361385A (en) 1992-08-26 1994-11-01 Reuven Bakalash Parallel computing system for volumetric modeling, data processing and visualization
JP3202074B2 (ja) 1992-10-21 2001-08-27 富士通株式会社 並列ソート方式
JPH06223198A (ja) 1993-01-26 1994-08-12 Hitachi Ltd 光線追跡による画像生成装置及び方法
US5650862A (en) 1994-07-25 1997-07-22 Canon Kabushiki Kaisha Image signal processing apparatus with improved pixel parallel/line parallel conversion
US5793379A (en) * 1995-04-03 1998-08-11 Nvidia Corporation Method and apparatus for scaling images having a plurality of scan lines of pixel data
JP3728858B2 (ja) * 1996-12-20 2005-12-21 ソニー株式会社 演算装置の演算方法、記憶媒体及び演算装置
US6065005A (en) 1997-12-17 2000-05-16 International Business Machines Corporation Data sorting
WO2000004494A1 (en) 1998-07-17 2000-01-27 Intergraph Corporation Graphics processing system with multiple strip breakers
AU5688199A (en) 1998-08-20 2000-03-14 Raycer, Inc. System, apparatus and method for spatially sorting image data in a three-dimensional graphics pipeline
US6549907B1 (en) 1999-04-22 2003-04-15 Microsoft Corporation Multi-dimensional database and data cube compression for aggregate query support on numeric dimensions
US6489955B1 (en) 1999-06-07 2002-12-03 Intel Corporation Ray intersection reduction using directionally classified target lists
SG93211A1 (en) 1999-07-28 2002-12-17 Univ Singapore Method and apparatus for generating atomic parts of graphic representation through skeletonization for interactive visualization applications
US6556200B1 (en) 1999-09-01 2003-04-29 Mitsubishi Electric Research Laboratories, Inc. Temporal and spatial coherent ray tracing for rendering scenes with sampled and geometry data
US6738518B1 (en) 2000-05-12 2004-05-18 Xerox Corporation Document image decoding using text line column-based heuristic scoring
US7495664B2 (en) 2000-06-19 2009-02-24 Mental Images Gmbh Instant ray tracing
US6633882B1 (en) 2000-06-29 2003-10-14 Microsoft Corporation Multi-dimensional database record compression utilizing optimized cluster models
US6895115B2 (en) * 2001-04-23 2005-05-17 The United States Of America As Represented By The United States National Aeronautics And Space Administration Method for implementation of recursive hierarchical segmentation on parallel computers
US7580927B1 (en) 2001-05-29 2009-08-25 Oracle International Corporation Quadtree center tile/boundary tile optimization
US6879980B1 (en) 2001-06-29 2005-04-12 Oracle International Corporation Nearest neighbor query processing in a linear quadtree spatial index
US7024414B2 (en) 2001-08-06 2006-04-04 Sensage, Inc. Storage of row-column data
CN1315040C (zh) * 2002-01-08 2007-05-09 北京南思达科技发展有限公司 一种逻辑可重组电路
US6943796B2 (en) 2002-07-22 2005-09-13 Sun Microsystems, Inc. Method of maintaining continuity of sample jitter pattern across clustered graphics accelerators
US7194125B2 (en) 2002-12-13 2007-03-20 Mitsubishi Electric Research Laboratories, Inc. System and method for interactively rendering objects with surface light fields and view-dependent opacity
US7146486B1 (en) 2003-01-29 2006-12-05 S3 Graphics Co., Ltd. SIMD processor with scalar arithmetic logic units
US20050177564A1 (en) 2003-03-13 2005-08-11 Fujitsu Limited Server, method, computer product, and terminal device for searching item data
US7403944B2 (en) 2003-04-21 2008-07-22 Gerald Budd Reduced comparison coordinate-value sorting process
US7418585B2 (en) 2003-08-28 2008-08-26 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
DE102004007835A1 (de) 2004-02-17 2005-09-15 Universität des Saarlandes Vorrichtung zur Darstellung von dynamischen komplexen Szenen
US7580977B1 (en) * 2004-04-29 2009-08-25 Cisco Technology, Inc. System for using text terminal for the deaf (TTD) devices for internet instant messaging and chat sessions
US7616782B2 (en) 2004-05-07 2009-11-10 Intelliview Technologies Inc. Mesh based frame processing and applications
US7348975B2 (en) 2004-12-28 2008-03-25 Intel Corporation Applications of interval arithmetic for reduction of number of computations in ray tracing problems
EP1783604A3 (en) 2005-11-07 2007-10-03 Slawomir Adam Janczewski Object-oriented, parallel language, method of programming and multi-processor computer
US7728841B1 (en) 2005-12-19 2010-06-01 Nvidia Corporation Coherent shader output for multiple targets
CN101371264A (zh) 2006-01-10 2009-02-18 光明测量公司 用于在并行处理系统中处理多媒体数据的子块的方法和装置
US7903125B1 (en) 2006-02-07 2011-03-08 Adobe Systems Incorporated Compact clustered 2-D layout
US7933940B2 (en) 2006-04-20 2011-04-26 International Business Machines Corporation Cyclic segmented prefix circuits for mesh networks
US20070264023A1 (en) 2006-04-26 2007-11-15 Virgin Islands Microsystems, Inc. Free space interchip communications
US8261270B2 (en) 2006-06-20 2012-09-04 Google Inc. Systems and methods for generating reference results using a parallel-processing computer system
US8286196B2 (en) 2007-05-03 2012-10-09 Apple Inc. Parallel runtime execution on multiple processors
US8341611B2 (en) 2007-04-11 2012-12-25 Apple Inc. Application interface on multiple processors
CN101657795B (zh) 2007-04-11 2013-10-23 苹果公司 多处理器上的数据并行计算
US8081181B2 (en) 2007-06-20 2011-12-20 Microsoft Corporation Prefix sum pass to linearize A-buffer storage
US8996846B2 (en) * 2007-09-27 2015-03-31 Nvidia Corporation System, method and computer program product for performing a scan operation
US8072460B2 (en) 2007-10-17 2011-12-06 Nvidia Corporation System, method, and computer program product for generating a ray tracing data structure utilizing a parallel processor architecture
US8264484B1 (en) 2007-10-29 2012-09-11 Nvidia Corporation System, method, and computer program product for organizing a plurality of rays utilizing a bounding volume
US8284188B1 (en) 2007-10-29 2012-10-09 Nvidia Corporation Ray tracing system, method, and computer program product for simultaneously traversing a hierarchy of rays and a hierarchy of objects
US8065288B1 (en) 2007-11-09 2011-11-22 Nvidia Corporation System, method, and computer program product for testing a query against multiple sets of objects utilizing a single instruction multiple data (SIMD) processing architecture
US8243083B1 (en) 2007-12-04 2012-08-14 Nvidia Corporation System, method, and computer program product for converting a scan algorithm to a segmented scan algorithm in an operator-independent manner
US20100076941A1 (en) 2008-09-09 2010-03-25 Microsoft Corporation Matrix-based scans on parallel processors
US8321492B1 (en) 2008-12-11 2012-11-27 Nvidia Corporation System, method, and computer program product for converting a reduction algorithm to a segmented reduction algorithm

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200736990A (en) * 2006-02-06 2007-10-01 Via Tech Inc Dual mode floating point multiply accumulate unit

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Hillis et al, "Data Parallel Algorithms", Communications of the ACM, December 1986, Vol.29, No.12, page1170-1183. *

Also Published As

Publication number Publication date
US8661226B2 (en) 2014-02-25
CN101436121B (zh) 2014-12-17
TW200928780A (en) 2009-07-01
JP2009169935A (ja) 2009-07-30
KR20090050977A (ko) 2009-05-20
US20090132878A1 (en) 2009-05-21
CN101436121A (zh) 2009-05-20

Similar Documents

Publication Publication Date Title
TWI398779B (zh) 使用平行處理器架構對一序列單位元值進行掃描作業之系統、方法及電腦程式產品
CN107729989B (zh) 一种用于执行人工神经网络正向运算的装置及方法
Ahrens et al. A parallel approach for efficiently visualizing extremely large, time-varying datasets
Ma et al. Multiplier policies for digital signal processing
Chen et al. An escheduler-based data dependence analysis and task scheduling for parallel circuit simulation
Elster et al. Nvidia hopper gpu and grace cpu highlights
Zierke et al. FPGA acceleration of the phylogenetic likelihood function for Bayesian MCMC inference methods
Karunadasa et al. Accelerating high performance applications with CUDA and MPI
Lant et al. Toward FPGA-based HPC: Advancing interconnect technologies
KR20210059623A (ko) 이진 및 삼진 신경망 추론을 위한 전자 장치 및 방법
Bos et al. ECC2K-130 on cell CPUs
US20060069901A1 (en) Apparatus and method for an address generation circuit
Angizi et al. Processing-in-memory acceleration of mac-based applications using residue number system: A comparative study
JP2022101472A (ja) 低レイテンシのモジュラ乗算のためのシステム及び方法
CN112241251B (zh) 用于处理浮点数的设备和方法
US20130246491A1 (en) Software-hardware adder
Opdenhövel et al. Mutation Tree Reconstruction of Tumor Cells on FPGAs Using a Bit-Level Matrix Representation
Faber et al. Efficient parallel execution of genetic algorithms on Epiphany manycore processor
US20100011324A1 (en) Structured Placement For Bit Slices
GB2581543A (en) Apparatus and method for processing floating-point numbers
CN114943635B (zh) 一种基于异构协同计算核心的融合算子设计与实现方法
Margala et al. Highly efficient digital CMOS accelerator for image and graphics processing
Singh et al. Accelerating the photon mapping algorithm and its hardware implementation
Trifan et al. Enhancing the Privacy of Machine Learning via faster arithmetic over Torus FHE
Munshi et al. A parameterizable SIMD stream processor