?
以往EDA應用性能瓶頸主要受兩方面因素制約,首先大多數應用都是單線程的,而CPU和GPU架構擁有幾十到數千的并行內核,其次是應用程序內存延遲問題。目前EDA應用已經部署到傳統的常規處理器上。最重要的是這些應用促使人們設計出并行或向量處理器。為了能夠充分利用多核架構的優勢,甚至有必要完全重寫軟件,面對并行核心必須重新思考相關的算法。
GPU(Graphic Processing Units) 在高性能計算領域擁有巨大的潛力。在商業化的硬件平臺之中,GPU強大的計算能力和高效的內存帶寬被展現的淋漓盡致。如今GPU已經在石油、天然氣、金融 等需要龐大計算量的場景發揮著作用。而EDA(Electronic Design Automation)應用與以上這些高性能計算應用在計算和內存等操作上擁有很多共同點。
GPU最早出現在上世紀90年代后期,起初GPU主要職責是最為CPU的協處理器,并處理自定義硬件之上的圖形算法。GPU在處理圖形時將任務分到不同的處理管線(如頂點、紋理、陰影處理等),每個管線負責特定階段的算法流程。但事實證明,這種架構沒有最大限度地被利用。為了更好的處理這種不平衡的狀況,遷移到新架構是有意義的。
相對于串行計算,并行計算可以劃分成時間并行和空間并行。時間并行即流水線技 術,空間并行使用多個處理器執行并發計算,當前研究的主要是空間的并行問題。以程序和算法設計人員的角度看,并行計算又可分為數據并行和任務并行。數據并 行把大的任務化解成若干個相同的子任務,處理起來比任務并行簡單。
空間上的并行導致兩類并行機的產生,按照Michael Flynn的說法分為單指令流多數據流(SIMD)和多指令流多數據流(MIMD),而常用的串行機也稱為單指令流單數據流(SISD)。MIMD類的 機器又可分為常見的五類:并行向量處理機(PVP)、對稱多處理機(SMP)、大規模并行處理機(MPP)、工作站機群(COW)、分布式共享存儲處理機 (DSM)。
新一代GPU由“general-purpose” SIMD((Single Instruction Multiple Data)核心組成。自2007年以來,NVIDIA CUDA和OpenCL使我們能用使用C++在流處理器上進行編程,而不是模擬像素或三角形。
GPU非常適合巨大的數據集的并行數據算法,最新的GPU擁有數千處理核心。這些GPU非常適合EDA應用,GPU架構是并行數據處理的理想之選。如果人們部署正確的代碼,其吞吐量將令人難以置信。然而最重要的不僅是軟件,而是底層算法。