TW201633147A - 經改良之單一指令多重資料(simd)的k最近鄰居法之實施技術 - Google Patents

經改良之單一指令多重資料(simd)的k最近鄰居法之實施技術 Download PDF

Info

Publication number
TW201633147A
TW201633147A TW104135445A TW104135445A TW201633147A TW 201633147 A TW201633147 A TW 201633147A TW 104135445 A TW104135445 A TW 104135445A TW 104135445 A TW104135445 A TW 104135445A TW 201633147 A TW201633147 A TW 201633147A
Authority
TW
Taiwan
Prior art keywords
knn
simd
processor
operations
distance
Prior art date
Application number
TW104135445A
Other languages
English (en)
Other versions
TWI587137B (zh
Inventor
艾墨斯 哥德曼
Original Assignee
英特爾公司
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 英特爾公司 filed Critical 英特爾公司
Publication of TW201633147A publication Critical patent/TW201633147A/zh
Application granted granted Critical
Publication of TWI587137B publication Critical patent/TWI587137B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17375One dimensional, e.g. linear array, ring
    • 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/02Comparing digital values
    • G06F7/023Comparing digital values adaptive, e.g. self learning
    • 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/02Comparing digital values
    • G06F7/026Magnitude comparison, i.e. determining the relative order of operands based on their numerical value, e.g. window comparator

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Microelectronics & Electronic Packaging (AREA)

Abstract

本發明描述與經改良之SIMD(單一指令多重資料)K最近鄰居法之實施技術有關的方法及設備。一實施例提供用於改良多維K最近鄰居法(KNN)技術之SIMD實施技術的技術。一實施例將KNN演算法之非SIMD友好部分替換成SIMD操作之序列。例如,為避免演算法熱點(例如,內迴圈)中的分支,SIMD操作可用來在每一迭代之後更新最近距離(及鄰居)之列表。本發明亦揭示且主張其他實施例。

Description

經改良之單一指令多重資料(SIMD)的K最近鄰居法之實施技術 發明領域
本揭示案一般而言係關於電子學領域。更特定而言,實施例係關於經改良之SIMD(單一指令多重資料)的K最近鄰居法之實施技術。
發明背景
一般而言,SIMD為用來達成資料等級平行性的技術。特定而言,多重資料可根據單一指令在SIMD引擎之多個對應通道中加以處理。
SIMD可用來加速圖形資料之處理,包括K最近鄰居法(KNN)演算法。KNN演算法通常用於圖型識別中之分類或迴歸分析。
依據本發明之一實施例,係特地提出一種設備,其包含:邏輯,其用以至少部分基於一第一距離與一第二距離之比較來引起一K最近鄰居法(KNN)技術之一或多個非SIMD(單一指令多重資料)部分替換成一或多個SIMD操 作,該第一距離對應於該KNN技術之一當前迭代,該第二距離對應於該KNN技術之一先前迭代之一最短距離。
100‧‧‧計算系統/系統
102-1~102-N、502-1、502-P、 602、604‧‧‧處理器
104‧‧‧互連件或匯流排
106、106-1~106-M‧‧‧處理器核心
108、116、116-1‧‧‧快取記憶體
110‧‧‧路由器
112‧‧‧匯流排或互連件
114、512、610、612、760‧‧‧記憶體
160‧‧‧KNN邏輯/邏輯
202‧‧‧擷取單元
204‧‧‧解碼單元
206‧‧‧排程單元
208‧‧‧執行單元
210‧‧‧引退單元
214‧‧‧匯流排單元
216‧‧‧暫存器
300‧‧‧方法
302、304、310~318‧‧‧操作
306‧‧‧操作/方法
500、600‧‧‧計算系統
503‧‧‧電腦網路
504‧‧‧互連網路
506、620‧‧‧晶片集
508‧‧‧圖形與記憶體控制集線器/GMCH
510、742‧‧‧記憶體控制器
514‧‧‧圖形介面
516‧‧‧顯示裝置
518‧‧‧集線器介面
520‧‧‧輸入/輸出控制集線器(ICH)
522、640、644‧‧‧匯流排
524‧‧‧週邊橋接器(或控制器)
526、647‧‧‧音訊裝置
528‧‧‧磁碟機
530‧‧‧網路介面裝置
606、608‧‧‧本端記憶體控制器集線器(MCH)
614、622、624‧‧‧點對點(PtP)介面
616、618、626~632、637、641‧‧‧點對點介面電路/PtP介面電路
634‧‧‧高效能圖形電路
636‧‧‧高效能圖形介面
642‧‧‧匯流排橋接器
643、770‧‧‧I/O裝置
645‧‧‧鍵盤/滑鼠
646‧‧‧通訊裝置
648‧‧‧資料儲存裝置
649‧‧‧碼
702‧‧‧SOC/SOC封裝
720‧‧‧中央處理單元(CPU)核心
730‧‧‧圖形處理器單元(GPU)核心
740‧‧‧輸入/輸出(I/O)介面
參照附圖來提供詳細描述。在該等圖中,參考編號之一或多個最左數位識別該參考編號首次出現在哪一個圖中。在不同圖中使用相同參考編號指示相似或相同項目。
圖1及圖5至圖7例示計算系統之實施例的方塊圖,該等計算系統可經利用來實施本文所論述之各種實施例。
圖2例示根據一實施例的計算系統之處理器核心及其他組件之部分的方塊圖。
圖3A及圖3B例示根據一些實施例的與執行經改良之KNN方法相關聯之操作的流程圖。
圖4例示根據一實施例的用於經改良之KNN方法之樣本偽碼及對應樣本值。
較佳實施例之詳細說明
以下描述中闡述眾多具體細節,以便提供對各種實施例之透徹理解。然而,可在無該等具體細節的情況下實踐各種實施例。在其他情況下,未詳細描述熟知的方法、程序、組件及電路,以免混淆特定實施例。另外,可使用各種構件來執行實施例之各種態樣,該等構件諸如:積體半導體電路(「硬體」)、組織成一或多個程式(「軟體」)的電腦可讀指令,或硬體與軟體之某種組合。出於本揭示內 容之目的,提及「邏輯」應意味硬體、軟體或上述各者之一些組合。
一些實施例係關於經改良之SIMD(單一指令多重資料)K最近鄰居法(KNN)演算法之實施技術。實施例提供用於改良多維KNN技術之SIMD實施技術的技術。KNN通常使用於電腦視覺及/或機器學習中,且可使用SIMD引擎予以加速,該等SIMD引擎諸如各種VLIW(極長指令字)數位信號處理器(DSP)及GPU(圖形處理單元),諸如參照圖1至圖7所論述的處理器。一實施例將KNN演算法之非SIMD友好部分替換成SIMD操作之序列。更特定而言,為避免演算法熱點(例如,內迴圈)中的分支,SIMD操作可用來在每一迭代之後更新最近距離(及鄰居)之列表。
此外,本文所論述的技術可利用於各種計算系統(例如,諸如桌上型電腦、伺服器、工作站等的非行動裝置,以及諸如智慧型電話、平板電腦、UMPC(超級行動個人電腦)、膝上型電腦、UltrabookTM計算裝置、可穿戴式裝置(例如,智慧型手錶、智慧型眼鏡)等的行動裝置)中,包括參照圖1至圖7所論述的該等計算系統。更特定而言,圖1例示根據一實施例的計算系統100之方塊圖。系統100可包括一或多個處理器102-1至102-N(本文中一般稱為「數個處理器102」或「處理器102」)。數個處理器102可經由互連件或匯流排104通訊。每一處理器可包括各種組件,為清楚起見,僅參照處理器102-1來論述該等組件中之一些。因此,其餘處理器102-2至102-N中每一者可包括參照處理器102-1所論述的 相同組件或類似組件。
在一實施例中,處理器102-1包括一或多個處理器核心106-1至106-M(本文中稱為「數個核心106」或「核心106」)、快取記憶體108及/或路由器110。處理器核心106可在單個積體電路(IC)晶片上實施。另外,該晶片可包括一或多個共用及/或私用快取記憶體(諸如快取記憶體108)、匯流排或互連件(諸如匯流排或互連件112)、圖形及/或記憶體控制器(諸如參看圖5至圖7所論述的該等控制器)或其他組件。
在一實施例中,路由器110可用來在處理器102-1及/或系統100之各種組件之間通訊。此外,處理器102-1可包括一個以上的路由器110。另外,多個路由器110可進行通訊,以允許在處理器102-1內部或外部之各種組件之間的資料選路傳遞。
快取記憶體108可儲存資料(例如包括指令),該等資料由處理器102-1之一或多個組件,諸如核心106利用。例如,快取記憶體108可區域地快取儲存於記憶體114中之資料,來用於由處理器102之組件進行的較快速存取(例如,由核心106進行的較快速存取)。如圖1中所示,記憶體114可經由互連件104與處理器102通訊。在一實施例中,快取記憶體108(該快取記憶體可為共用的)可為中階快取記憶體(MLC)、末階快取記憶體(LLC)等。另外,核心106中每一者可包括1階(L1)快取記憶體(116-1)(本文中一般稱為「L1快取記憶體116」)或其他階的快取記憶體,諸如2階(L2)快 取記憶體。此外,處理器102-1之各種組件可經由匯流排(例如匯流排112)及/或記憶體控制器或集線器直接與快取記憶體108通訊。
如圖1中所示,處理器102可進一步包括用以提供如本文所論述的經改良之以SIMD為基礎的KNN實施技術的KNN邏輯160。在一實施例中,邏輯160(或系統100中之其他邏輯或耦接至系統100的其他邏輯)引起KNN演算法之非SIMD友好部分替換成SIMD操作之序列。更特定而言,為避免演算法熱點(例如,內迴圈)中的分支,SIMD操作(經引起以由邏輯160產生)可用來在每一迭代之後更新最近距離(及鄰居)之列表。
此外,邏輯160可具有對本文所論述的一或多個儲存裝置(諸如快取記憶體108、L1快取記憶體116、記憶體114或系統100中之另一記憶體)的存取,以儲存與邏輯160之操作有關的資訊,諸如與如本文所論述的系統100之各種組件通訊的資訊。另外,邏輯160可位於不同於圖1中所示的該位置的位置中。
圖2例示根據一實施例的計算系統之處理器核心106及其他組件之部分的方塊圖。在一實施例中,圖2中所示之箭頭例示指令穿過核心106之流動方向。一或多個處理器核心(諸如處理器核心106)可實施於單個積體電路晶片(或晶粒)上,諸如參照圖1所論述。此外,晶片可包括一或多個共用快取記憶體及/或私用快取記憶體(例如,圖1之快取記憶體108)、互連件(例如,圖1之互連件104及/或112)、 控制單元、記憶體控制器或其他組件。
如圖2中所例示,處理器核心106可包括用以擷取指令(包括具有條件分支之指令)以用於由核心106執行之擷取單元202。可自諸如參考圖5至圖7所論述的記憶體114及/或記憶體裝置的任何儲存裝置擷取指令。核心106亦可包括用以解碼所擷取指令之解碼單元204。例如,解碼單元204可將所擷取指令解碼成多個uop(微操作)。另外,核心106可包括排程單元206。排程單元206可執行與儲存解碼指令(例如,自解碼單元204接收的解碼指令)相關聯之各種操作,直至指令準備好調度為止,例如,直至解碼指令之所有源值變得可利用為止。在一實施例中,排程單元206可將解碼指令排程且/或發佈(或調度)至執行單元208以用於執行。執行單元208可在調度指令經解碼(例如,由解碼單元204解碼)且調度(例如,由排程單元206調度)之後執行該等調度指令。在一實施例中,執行單元208可包括多於一個執行單元(諸如,成像計算單元、圖形計算單元、通用計算單元等)。執行單元208亦可執行諸如加法、減法、乘法及/或除法之各種算術運算,且可包括一或多個算術邏輯單元(ALU)。在一實施例中,共處理器(未示出)可結合執行單元208來執行各種算術運算。
此外,執行單元208可亂序執行指令。因此,在一實施例中,處理器核心106可為亂序處理器核心。核心106亦可包括引退單元210。引退單元210可在執行指令經提交之後引退該等執行指令。在一實施例中,執行指令之引退 可導致處理器狀態自指令之執行提交、由指令使用之實體暫存器經解除分配等。
核心106亦可包括匯流排單元214,該匯流排單元用以賦能於處理器核心106之組件與其他組件(諸如參照圖1所論述的組件)之間經由一或多個匯流排(例如,匯流排104及/或112)之通訊。核心106亦可包括用以儲存由核心106之各種組件存取之資料(諸如由邏輯160用來實施本文例如參照圖3A至圖4所論述的經改良之KNN技術的值)的一或多個暫存器216。
此外,儘管圖1例示邏輯160將經由互連件112耦接至核心106(例如,以將KNN有關之操作卸載至如GPU、ASIC(特定應用積體電路)等的另一單元),但在各種實施例中,邏輯160可位於其他地方,諸如位於核心106內部、經由匯流排104耦接至核心等。
在一實施例中,邏輯160決定具有距給定測試樣本的最短距離的『K』最近資料庫樣本(例如,組織於列表中的樣本)。演算法之迭代中每一者首先計算測試樣本與資料庫樣本中一者之間的距離。隨後將所計算距離與先前迭代之『K』最短距離進行比較。若新距離比K最短距離(例如,其中列表為有序的)中至少一者較短,則將距先前迭代的「最長」距離替換為新距離。在SIMD引擎中加速KNN的激勵部分是因為距離計算通常為極其SIMD友好的。然而,將距離之列表與新距離進行比較可在純量『for』迴圈中進行,該純量『for』迴圈中具有至少兩個分支。此『for』迴圈及 與該迴圈相關聯之分支並非DSP友好的,且該迴圈及該等分支使演算法之此部分為實施技術之瓶頸。
此外,一些解決方案可試圖藉由儲存所有距離且隨後在稍後時間排序該等距離以過濾K最短距離來處理此問題。雖然此方法可稍微改良熱點問題,但該方法由於需要將所有距離儲存於記憶體中而僅適用於極小的資料庫/列表。另外,該方法增加載入操作及儲存操作之數目,例如,增加延遲、降低效能,且/或增加電力消耗。此方法之另一缺點在於,當排序元素時,該方法並不利用SIMD能力。此產生發佈槽之極低攝政期且最終產生無效率。
因此,一些實施例提供用於將距離更新部分(及與該距離更新部分相關聯之分支)替換成SIMD操作的更有效及/或較快速技術。此使得可能在熱點迴圈中無分支的情況下且因此在好得多的常駐、效率、速度等的情況下更新最近鄰居之列表。此外,使用具有一些VLIW DSP的此類實施例可導致效能之相對三倍改良(例如,自每樣本約18個循環降低至每樣本約六個循環,取決於VLIW架構、發佈槽之數目及類型、SIMD寬度及酬載等。因此,不同組合可產生較佳或較差的加速)。
在一實施例中,邏輯160將K最短距離之列表保持於SIMD暫存器(或其他儲存裝置,諸如本文例如參照圖1至圖2及圖5至圖7所論述的該等儲存裝置)中,且使用SIMD操作來以新距離更新該列表。此與使用純量比較運算及內部『for』迴圈相反以滿足更新的需要。另外,使用SIMD 操作而非分支以以下方式中至少一者最佳化熱點迴圈:(a)在VLIW DSP中:避免更新『for』迴圈使得可能『展開』且『管線操作』熱點內迴圈。此顯著地改良發佈槽常駐;以及(b)在GPU中:SIMD操作之使用防止與分支及錯誤分支預測相關聯之損失。
如先前所提及,SIMD KNN加速之一些實施技術可使用純量碼來更新距離之列表。然而,純量碼通常在熱點內部使用,而在其他實施技術中,所有距離經儲存且隨後經排序以找到最短『K』差異。此第二方法比第一方法較佳,但該方法與本文所論述的實施例相比仍具有以下缺點:(1)雖然在一些引擎中係可能的,但許多DSP及GPU具有關於可經儲存及讀取的記憶體之對準及大小的限制。(2)需要儲存所有距離使得此方法合理地僅適用於極小的資料庫。此為主要限制,因為資料庫可具有介於數萬個至數百萬個之間的樣本向量。(3)雖然更新碼在演算法熱點以外運行,但該更新碼仍由於分支而為具有極低常駐及不良效率的純量碼。SIMD碼達成好得多的效能。(4)儲存暫時距離及再次讀取該等距離涉及每樣本至少兩個或兩個以上IO(輸入/輸出)操作。此等操作在電力方面且在潛時方面傾向於為昂貴的。
一般而言,K之值為低的(例如,介於1至15之間),且在大多數狀況下,該值低於引擎之SIMD位準。為此,一實施例維持『K』最近距離(及鄰居)之已排序列表,且使用SIMD操作來以新值更新該已排序列表。
圖3A例示根據一實施例的用以提供經改良之KNN的方法300之流程圖。在一實施例中,參照圖1至圖2及圖5至圖7所論述的各種組件(包括例如邏輯160)可經利用來執行參照圖3A所論述的操作中之一或多者。
參照圖3A,在操作302(初始化級段)處,距離之列表中之所有元素經初始化為『最大距離』。列表隨後經載入(操作304)至向量暫存器(KD_v)或諸如在此所論述的該等儲存裝置之另一儲存裝置中。在一實施例中,貫穿KNN演算法流程之執行(例如,當方法300正在執行時)而保持此向量自最至最小排序,例如,以增加查找速度。
在操作306(迴圈級段/熱點)處,方法300循環遍歷資料庫/所儲存樣本向量,且將該等樣本向量與測試向量進行比較。在每一迭代中,計算距離且隨後將該距離與來自先前迭代的『K』最近距離之列表進行比較。
圖3B例示根據一實施例的用以提供圖3A之KNN方法之迴圈級段的方法306之流程圖。在一實施例中,參照圖1至圖2及圖5至圖7所論述的各種組件(包括例如邏輯160)可經利用來執行參照圖3B所論述的操作中之一或多者。
參照圖3B,在操作310(迴圈級段1)處,計算/決定測試向量與當前資料庫向量之間的距離(D)。此級段使用SIMD操作來執行。在操作312(迴圈級段2)處,將純量值D傳輸/廣播至新向量暫存器(NewD_v)。此操作將D值指派給NewD_v之所有元素。
在操作314(迴圈級段3)處,使用SIMD操作來比 較KD_v值及NewD_v值,且將結果儲存於布林(Boolean)向量暫存器(M_v)中。在操作314處,對於每一索引『i』,若KD_v[i]大於NewD_v[i],則比較將M_v[i]設定為『1』,且否則設定為『0』。因為在一實施例中KD_v經自最大至最小排序且NewD_v之所有元素具有相同值,所以將存在M_v[i]!=M_v[i+1]的至多一索引。此索引(i)為已排序列表中的新值之新索引。
在操作316(迴圈級段4)處,使用SIMD操作來循環左移(向左選擇/混洗元素)KD_v中大於新距離的所有元素。此可藉由使用M_v作為合併遮罩以合併KD_v與ShiftLeft(KD_v)或KD_v[i]=M_v[i]?KD_v[i+1]:KD_v[i]來達成,其中「?」涉及用於條件表示之特殊三元運算子,該等條件表示具有可藉由諸如「condition?evaluated-when-true:evaluated-when-false」的模板描述的功能,且例如其中,在以上提及的表示中,「?」指示使KD_v[i]針對M_v[i]為真(或1)的所有元素索引『i』左移。
在操作318(迴圈級段5)處,將新距離D儲存於KD_v之第i元素中。為進行此舉,藉由以ShiftLeft(M_v)對M_v進行XOR運算來創建新遮罩(MI_v)。因為可存在M_v[i]!=M_v[i+1]的至多一索引,所以MI_v將具有設定為『1』的至多一項。隨後藉由使用MI_v作為合併遮罩以合併KD_v與NewD_v來將新距離『D』插入KD_v[i]中,如下:NewD_v[i]=MI_v[i]?NewD_v[i]:KD_v[i]。
該方法之一些變化不僅返回K最短距離而且亦 返回最近鄰居之K索引。為支援,可以維持距離的相同方式使用M_v及MI_v遮罩來維持最近索引之此列表。
圖4例示根據一實施例的用於經改良之KNN方法之樣本偽碼及對應樣本值。更特定而言,根據一些實施例,偽碼(在圖4之左側)說明用於KNN演算法流程之樣本操作及資料,且展示在例如如參照圖3A及圖3B所論述的每一級段之後的核心暫存器值(在圖4之右側)。在圖4之實例中,K(K最近相鄰者)為5,D(距離)為7,且SIMD長度為8。
如本文所論述,KNN使用於電腦視覺及機器學習解決方案中。因為距離計算為極其SIMD友好的,所以在GPU中或在專用VLIW DSP中加速一些實施例。另外,使用藉由一些實施例提供的最佳化將改良在GPU或專用DSP上運行的任何KNN實施技術之電力消耗及/或效能。
圖5例示根據一實施例之計算系統500的方塊圖。計算系統500可包括一或多個中央處理單元(CPU)或處理器502-1至502-P(其在本文中可稱為「數個處理器502」或「處理器502」)。處理器502可經由互連網路(或匯流排)504通訊。處理器502可包括通用處理器、網路處理器(其處理經由電腦網路503通訊之資料)或其他類型之處理器(包括精簡指令集電腦(RISC)處理器或複雜指令集電腦(CISC))。
此外,處理器502可具有單核心設計或多核心設計。具有多核心設計之處理器502可在同一積體電路(IC)晶粒上整合不同類型之處理器核心。此外,具有多核心設計之處理器502可實施為對稱或不對稱的多個處理器。在一實 施例中,處理器502中一或多者可與圖1之處理器102相同或類似。在一些實施例中,處理器502中一或多者可包括圖1之核心106及邏輯160中一或多者。另外,參照圖1至圖4所論述的操作可藉由系統500之一或多個組件執行。
晶片組506亦可與互連網路504通訊。晶片集506可包括圖形與記憶體控制集線器(GMCH)508。GMCH 508可包括記憶體控制器510,該記憶體控制器與記憶體512通訊。記憶體512可儲存資料,該等資料包括由處理器502或包括於計算系統500中的任何其他裝置執行的指令序列。在一實施例中,記憶體512可包括一或多個依電性儲存(或記憶)裝置,諸如隨機存取記憶體(RAM)、動態RAM(DRAM)、同步DRAM(SDRAM)、靜態RAM(SRAM)或其他類型之儲存裝置。亦可利用諸如硬碟之非依電性記憶體。諸如多個CPU及/或多個系統記憶體之額外裝置可經由互連網路504通訊。
GMCH 508可亦包括圖形介面514,該圖形介面與顯示裝置516通訊。在一實施例中,圖形介面514可經由加速圖形埠(AGP)或週邊組件互連(PCI)(或高速PCI(PCIe)介面)與顯示裝置516通訊。在一實施例中,顯示裝置516(諸如平板顯示器、陰極射線管(CRT)、投影螢幕等)可經由例如信號轉換器與圖形介面514通訊,該信號轉換器將儲存於諸如視訊記憶體或系統記憶體之儲存裝置中的影像之數位表示變換為由顯示裝置518解譯且顯示的顯示器信號。所產生之顯示信號在由顯示裝置516解譯並隨後在該顯示裝置 上顯示之前可通過各種控制裝置。
集線器介面518可允許GMCH 508及輸入/輸出控制集線器(ICH)520通訊。ICH 520可提供至與計算系統500通訊之I/O裝置的介面。ICH 520可經由週邊橋接器(或控制器)524與匯流排522通訊,該週邊橋接器(或控制器)諸如週邊組件互連(PCI)橋接器、通用串列匯流排(USB)控制器或其他類型之週邊橋接器或控制器。橋接器524可在處理器502與週邊裝置之間提供資料路徑。可利用其他類型之拓撲。另外,多個匯流排可例如經由多個橋接器或控制器與ICH 520通訊。此外,在各種實施例中,與ICH 520通訊之其他週邊裝置可包括整合驅動電子學(IDE)或小型電腦系統介面(SCSI)硬碟機、USB埠、鍵盤、滑鼠、並列埠、串列埠、軟碟機、數位輸出支援(例如,數位視訊介面(DVI))或其他裝置。
匯流排522可與音訊裝置526、一或多個磁碟機528以及一或多個網路介面裝置530(其與電腦網路503通訊)通訊。其他裝置可經由匯流排522通訊。另外,在一些實施例中,各種組件(諸如網路介面裝置530)可與GMCH 508通訊。另外,處理器502及GMCH 508可加以組合來形成單個晶片。此外,在其他實施例中,圖形加速器(例如,AGP及/或PCI/PCIe圖形裝置)可包括於GMCH 508內。
此外,計算系統500可包括依電性及/或非依電性記憶體(或儲存器)。例如,非依電性記憶體可包括以下各者中一或多者:唯讀記憶體(ROM)、可規劃ROM(PROM)、可 抹除PROM(EPROM)、電氣EPROM(EEPROM)、磁碟機(例如,磁碟機528)、軟碟、光碟ROM(CD-ROM)、數位多功能光碟(DVD)、快閃記憶體、磁光碟,或能夠儲存電子資料(例如,包括指令)的其他類型之非依電性機器可讀媒體。在一實施例中,系統500之組件可以點對點(PtP)組態加以佈置。例如,處理器、記憶體及/或輸入/輸出裝置可藉由若干點對點介面互連。
圖6例示根據一實施例之以點對點(PtP)組態組配的計算系統600。特定而言,圖6展示處理器、記憶體及輸入/輸出裝置係藉由若干點對點介面互連的系統。參照圖1至圖5所論述的操作可藉由系統600之一或多個組件執行。
如圖6中所例示,系統600可包括若干個處理器,為清楚起見,僅展示出其中兩個處理器602及處理器604。處理器602及處理器604可各自包括本端記憶體控制器集線器(MCH)606及608來允許與記憶體610及612通訊。記憶體610及/或記憶體612可儲存各種資料,諸如參照圖5之記憶體512所論述的資料。另外,處理器602及處理器604可包括圖1之核心106及邏輯160中一或多者。
在一實施例中,處理器602及處理器604可為參照圖5所論述的處理器502中一者。處理器602及處理器604可分別使用PtP介面電路616及618來經由點對點(PtP)介面614交換資料。另外,處理器602及處理器604可各自使用點對點介面電路626、628、630以及632來經由個別PtP介面622及624與晶片集620交換資料。晶片集620可進一步例如使用 PtP介面電路637來經由高效能圖形介面636與高效能圖形電路634交換資料。
在至少一實施例中,參照圖1至圖5所論述的一或多個操作可藉由處理器602或處理器604及/或系統600之其他組件執行,該等其他組件諸如經由匯流排640通訊的該等組件。然而,其他實施例可存在於圖6之系統600內的其他電路、邏輯單元或裝置中。此外,一些實施例可貫穿圖6中所例示之若干個電路、邏輯單元或裝置來分佈。
晶片集620可使用PtP介面電路641來與匯流排640通訊。匯流排640可具有與其通訊之一或多個裝置,諸如匯流排橋接器642及I/O裝置643。經由匯流排644,匯流排橋接器642可與其他裝置通訊,該等其他裝置諸如鍵盤/滑鼠645、通訊裝置646(諸如數據機、網路介面裝置或可與電腦網路503通訊的其他通訊裝置)、音訊I/O裝置及/或資料儲存裝置648。資料儲存裝置648可儲存可藉由處理器602及/或處理器604執行的碼649。
在一些實施例中,本文所論述的組件中一或多者可體現為系統單晶片(SOC)裝置。圖7例示根據一實施例之SOC封裝的方塊圖。如圖7中所例示,SOC 702包括一或多個中央處理單元(CPU)核心720、一或多個圖形處理器單元(GPU)核心730、輸入/輸出(I/O)介面740及記憶體控制器742。SOC封裝702之各種組件可耦接至諸如本文中參照其他圖所論述的互連件或匯流排。另外,SOC封裝702可包括更多或更少的組件,諸如本文中參照其他圖所論述的組件。此 外,SOC封裝720之每一組件可包括例如本文中參照其他圖所論述的一或多個其他組件。在一實施例中,SOC封裝702(及其組件)係提供於一或多個積體電路(IC)晶粒上,該或該等晶粒例如係封裝於單個半導體裝置中。
如圖7中所例示,SOC封裝702經由記憶體控制器742耦合至記憶體760(其可與本文中參照其他圖所論述的記憶體類似或相同)。在一實施例中,記憶體760(或其一部分)可整合於SOC封裝702上。
I/O介面740可例如經由諸如本文中參照其他圖所論述的互連件及/或匯流排耦接至一或多個I/O裝置770。I/O裝置770可包括鍵盤、滑鼠、觸控板、顯示器、影像/視訊擷取裝置(諸如攝影機或攝錄影機/視訊記錄器)、觸控式螢幕、揚聲器或類似物中一或多者。此外,在一實施例中,SOC封裝702可包括/整合邏輯160。或者,邏輯160可提供於SOC封裝702外部(亦即,作為離散邏輯)。
以下實例係關於進一步實施例。實例1包括一種設備,該設備包含:邏輯,其用以至少部分基於第一距離與第二距離之比較來引起K最近鄰居法(KNN)技術之一或多個非SIMD(單一指令多重資料)部分替換成一或多個SIMD操作,該第一距離對應於該KNN技術之當前迭代,該第二距離對應於該KNN技術之先前迭代之最短距離。實例2包括實例1之設備,其中該邏輯用以引起KNN技術之一或多個非SIMD部分之替換,以避免KNN技術之內迴圈中的分支。實例3包括實例1之設備,其中KNN技術之一或多個非SIMD 部分用以包含一或多個純量操作。實例4包括實例1之設備,其中一或多個SIMD操作用以在KNN技術之每一迭代之後更新最近距離之列表。實例5包括實例4之設備,該設備進一步包含用以儲存列表的記憶體。實例6包括實例1之設備,其中VLIW(極長指令字)數位信號處理器(DSP)或GPU(圖形處理單元)中一者用以包含該邏輯。實例7包括實例1之設備,其中具有一或多個處理器核心之處理器用以包含該邏輯。實例8包括實例1之設備,其中該邏輯、具有一或多個處理器核心之處理器及記憶體在同一整合裝置上。
實例9包括一種方法,該方法包含:至少部分基於第一距離與第二距離之比較來引起K最近鄰居法(KNN)技術之一或多個非SIMD(單一指令多重資料)部分替換成一或多個SIMD操作,該第一距離對應於該KNN技術之當前迭代,該第二距離對應於該KNN技術之先前迭代之最短距離。實例10包括實例9之方法,該方法進一步包含引起KNN技術之一或多個非SIMD部分之替換,以避免KNN技術之內迴路中的分支。實例11包括實例9之方法,其中KNN技術之一或多個非SIMD部分包含一或多個純量操作。實例12包括實例9之方法,該方法進一步包含一或多個SIMD操作在KNN技術之每一迭代之後更新最近距離之列表。實例13包括實例12之方法,該方法進一步包含將列表儲存於記憶體中。實例14包括實例9之方法,其中替換操作係藉由VLIW(極長指令字)數位信號處理器(DSP)或GPU(圖形處理單元)中一者執行。
實例15包括一種電腦可讀媒體,該電腦可讀媒體包含一或多個指令,該一或多個指令當在處理器上執行時組配該處理器來執行一或多個操作以:至少部分基於第一距離與第二距離之比較來引起K最近鄰居法(KNN)技術之一或多個非SIMD(單一指令多重資料)部分替換成一或多個SIMD操作,該第一距離對應於該KNN技術之當前迭代,該第二距離對應於該KNN技術之先前迭代之最短距離。實例16包括實例15之電腦可讀媒體,該電腦可讀媒體進一步包含一或多個指令,該一或多個指令當在處理器上執行組配該處理器來執行一或多個操作以引起KNN技術之一或多個非SIMD部分之替換,以避免KNN技術之內迴圈中的分支。實例17包括實例15之電腦可讀媒體,其中KNN技術之一或多個非SIMD部分包含一或多個純量操作。實例18包括實例15之電腦可讀媒體,該電腦可讀媒體進一步包含一或多個指令,該一或多個指令當在處理器上執行時組配該處理器來執行一或多個操作以引起一或多個SIMD操作在KNN技術之每一迭代之後更新最近距離之列表。實例19包括實例15之電腦可讀媒體,該電腦可讀媒體進一步包含一或多個指令,該一或多個指令當在處理器上執行時組配該處理器來執行一或多個操作以引起將列表儲存於記憶體中。實例20包括實例15之電腦可讀媒體,其中替換操作係藉由VLIW(極長指令字)數位信號處理器(DSP)或GPU(圖形處理單元)中一者執行。
實例21包括一種系統,該系統包含:處理器,其 具有一或多個處理器核心;顯示裝置,其耦接至處理器,該顯示裝置用以顯示一或多個影像;以及邏輯,其用以至少部分基於第一距離與第二距離之比較來引起K最近鄰居法(KNN)技術之一或多個非SIMD(單一指令多重資料)部分替換成一或多個SIMD操作,該第一距離對應於該KNN技術之當前迭代,該第二距離對應於該KNN技術之先前迭代之最短距離。實例22包括實例21之系統,其中該邏輯用以引起KNN技術之一或多個非SIMD部分之替換,以避免KNN技術之內迴圈中的分支。實例23包括實例21之系統,其中KNN技術之一或多個非SIMD部分用以包含一或多個純量操作。實例24包括實例21之系統,其中一或多個SIMD操作用以在KNN技術之每一迭代之後更新最近距離之列表。實例25包括實例24之系統,該系統進一步包含用以儲存列表之記憶體。實例26包括實例21之系統,其中VLIW(極長指令字)數位信號處理器(DSP)或GPU(圖形處理單元)中一者用以包含該邏輯。實例27包括實例21之系統,其中處理器用以包含該邏輯。實例28包括實例21之系統,其中邏輯、處理器及記憶體在同一整合裝置上。
實例29包括一種設備,該設備包含用以執行如在任何前述實例中闡述之方法的構件。
實例30包含機器可讀儲存器,該機器可讀儲存器包括機器可讀指令,該等機器可讀指令在經執行時用以實施方法或實現如在任何前述實例中闡述之設備。
在各種實施例中,本文例如參照圖1至圖7所論述 的操作可實施為硬體(例如,邏輯電路)、軟體、韌體或上述各者之組合,該硬體、軟體、韌體或上述各者之組合可提供為電腦程式產品,例如包括有形機器可讀或電腦可讀媒體,該有形機器可讀或電腦可讀媒體上儲存有用以程式化電腦來執行本文所論述之過程的指令(或軟體程序)。機器可讀媒體可包括諸如關於圖1至圖7所論述的該等儲存裝置。
另外,此電腦可讀媒體可作為電腦程式產品加以下載,其中該程式可藉由提供於載波或其他傳播媒體中的資料信號經由通訊鏈路(例如,匯流排、數據機或網路連接)自遠端電腦(例如,伺服器)傳遞至請求電腦(例如,客戶端)。
在說明書中對「一個實施例」或「一實施例」之引用意味結合實施例所描述之特定特徵、結構及/或特性可包括於至少一實施技術中。本說明書中多處出現之片語「在一個實施例中」可能或可能並非全部指同一實施例。
另外,在描述及申請專利範圍中,可使用「耦接」及「連接」等詞以及其衍生詞。在一些實施例中,「連接」可用來指示兩個或兩個以上元件處於彼此直接實體接觸或電氣接觸狀態中。「耦接」可意味,兩個或兩個以上元件處於直接實體接觸或電接觸狀態中。然而,「耦接」亦可意味兩個或兩個以上元件可能並非處於彼此直接接觸狀態中,但可能仍彼此協作或互相作用。
因而,儘管已用特定針對結構特徵及/或方法動作之語言描述實施例,但應理解的是,所請求標的可不限 於所描述之具體特徵或動作。相反,揭示該等具體特徵及動作來作為實施所請求標的之範例形式。
100‧‧‧計算系統/系統
102-1~102-N‧‧‧處理器
104‧‧‧互連件或匯流排
106、106-1~106-M‧‧‧處理器核心
108、116、116-1‧‧‧快取記憶體
110‧‧‧路由器
112‧‧‧匯流排或互連件
114‧‧‧記憶體
160‧‧‧KNN邏輯/邏輯

Claims (25)

  1. 一種設備,其包含:邏輯,其用以至少部分基於一第一距離與一第二距離之比較來引起一K最近鄰居法(KNN)技術之一或多個非SIMD(單一指令多重資料)部分替換成一或多個SIMD操作,該第一距離對應於該KNN技術之一當前迭代,該第二距離對應於該KNN技術之一先前迭代之一最短距離。
  2. 如請求項1之設備,其中該邏輯用以引起該KNN技術之該一或多個非SIMD部分之替換,以避免該KNN技術之一內迴圈中的分支。
  3. 如請求項1之設備,其中該KNN技術之該一或多個非SIMD部分係包含一或多個純量操作。
  4. 如請求項1之設備,其中該一或多個SIMD操作用以在該KNN技術之每一迭代之後更新最近距離之一列表。
  5. 如請求項4之設備,其進一步包含用以儲存該列表之記憶體。
  6. 如請求項1之設備,其中一VLIW(極長指令字)數位信號處理器(DSP)或一GPU(圖形處理單元)中一者係包含該邏輯。
  7. 如請求項1之設備,其中具有一或多個處理器核心之一處理器係包含該邏輯。
  8. 如請求項1之設備,其中該邏輯、具有一或多個處理器 核心之一處理器及記憶體係在同一整合裝置上。
  9. 一種方法,其包含:至少部分基於一第一距離與一第二距離之比較來引起一K最近鄰居法(KNN)技術之一或多個非SIMD(單一指令多重資料)部分替換成一或多個SIMD操作,該第一距離對應於該KNN技術之一當前迭代,該第二距離對應於該KNN技術之一先前迭代之一最短距離。
  10. 如請求項9之方法,其進一步包含引起該KNN技術之該一或多個非SIMD部分之替換,以避免該KNN技術之一內迴圈中的分支。
  11. 如請求項9之方法,其中該KNN技術之該一或多個非SIMD部分包含一或多個純量操作。
  12. 如請求項9之方法,其進一步包含該一或多個SIMD操作在該KNN技術之每一迭代之後更新最近距離之一列表。
  13. 如請求項12之方法,其進一步包含將該列表儲存於記憶體中。
  14. 如請求項9之方法,其中該替換操作係藉由一VLIW(極長指令字)數位信號處理器(DSP)或一GPU(圖形處理單元)中一者執行。
  15. 一種電腦可讀媒體,其包含一或多個指令,該一或多個指令當在一處理器上執行時組配該處理器來執行一或多個操作以:至少部分基於一第一距離與一第二距離之比較來 引起一K最近鄰居法(KNN)技術之一或多個非SIMD(單一指令多重資料)部分替換成一或多個SIMD操作,該第一距離對應於該KNN技術之一當前迭代,該第二距離對應於該KNN技術之一先前迭代之一最短距離。
  16. 如請求項15之電腦可讀媒體,其進一步包含一或多個指令,該一或多個指令當在該處理器上執行時組配該處理器來執行一或多個操作以引起該KNN技術之該一或多個非SIMD部分之替換,以避免該KNN技術之一內迴圈中的分支。
  17. 如請求項15之電腦可讀媒體,其中該KNN技術之該一或多個非SIMD部分包含一或多個純量操作。
  18. 如請求項15之電腦可讀媒體,其進一步包含一或多個指令,該一或多個指令當在該處理器上執行時組配該處理器來執行一或多個操作以引起該一或多個SIMD操作在該KNN技術之每一迭代之後更新最近距離之一列表。
  19. 如請求項15之電腦可讀媒體,其進一步包含一或多個指令,該一或多個指令當在該處理器上執行時組配該處理器來執行一或多個操作以引起將該列表儲存於記憶體中。
  20. 如請求項15之電腦可讀媒體,其中該替換操作執行藉由一VLIW(極長指令字)數位信號處理器(DSP)或一GPU(圖形處理單元)中一者執行。
  21. 一種系統,其包含:一處理器,其具有一或多個處理器核心; 一顯示裝置,其耦接至該處理器,該顯示裝置用以顯示一或多個影像;以及邏輯,其用以至少部分基於一第一距離與一第二距離之比較來引起一K最近鄰居法(KNN)技術之一或多個非SIMD(單一指令多重資料)部分替換成一或多個SIMD操作,該第一距離對應於該KNN技術之一當前迭代,該第二距離對應於該KNN技術之一先前迭代之一最短距離。
  22. 如請求項21之系統,其中該邏輯用以引起該KNN技術之該一或多個非SIMD部分之替換,以以避免該KNN技術之一內迴圈中的分支。
  23. 如請求項21之系統,其中該KNN技術之該一或多個非SIMD部分係包含一或多個純量操作。
  24. 如請求項21之系統,其中該一或多個SIMD操作用以在該KNN技術之每一迭代之後更新最近距離之一列表。
  25. 如請求項24之系統,其進一步包含用以儲存該列表的記憶體。
TW104135445A 2014-12-15 2015-10-28 經改良之單一指令多重資料(simd)的k最近鄰居法之實施技術 TWI587137B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/570,413 US10042813B2 (en) 2014-12-15 2014-12-15 SIMD K-nearest-neighbors implementation

Publications (2)

Publication Number Publication Date
TW201633147A true TW201633147A (zh) 2016-09-16
TWI587137B TWI587137B (zh) 2017-06-11

Family

ID=56082628

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104135445A TWI587137B (zh) 2014-12-15 2015-10-28 經改良之單一指令多重資料(simd)的k最近鄰居法之實施技術

Country Status (4)

Country Link
US (1) US10042813B2 (zh)
CN (1) CN105700855B (zh)
DE (1) DE102015014800A1 (zh)
TW (1) TWI587137B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10042813B2 (en) 2014-12-15 2018-08-07 Intel Corporation SIMD K-nearest-neighbors implementation
JP2023030745A (ja) * 2021-08-24 2023-03-08 富士通株式会社 計算機および計算方法
US11729273B2 (en) * 2022-01-05 2023-08-15 International Business Machines Corporation Adjusting idle timeout for a session

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5717947A (en) * 1993-03-31 1998-02-10 Motorola, Inc. Data processing system and method thereof
US6374349B2 (en) * 1998-03-19 2002-04-16 Mcfarling Scott Branch predictor with serially connected predictor stages for improving branch prediction accuracy
US6173388B1 (en) * 1998-04-09 2001-01-09 Teranex Inc. Directly accessing local memories of array processors for improved real-time corner turning processing
US6594392B2 (en) * 1999-05-17 2003-07-15 Intel Corporation Pattern recognition based on piecewise linear probability density function
DE10234086B4 (de) * 2002-07-26 2004-08-26 Koenig & Bauer Ag Verfahren zur Signalauswertung eines elektronischen Bildsensors bei der Mustererkennung von Bildinhalten eines Prüfkörpers
US7219213B2 (en) * 2004-12-17 2007-05-15 Intel Corporation Flag bits evaluation for multiple vector SIMD channels execution
JP2009151896A (ja) * 2007-12-21 2009-07-09 Sony Corp 画像処理装置、動画再生装置、これらにおける処理方法およびプログラム
US8150902B2 (en) 2009-06-19 2012-04-03 Singular Computing Llc Processing with compact arithmetic processing element
SG178829A1 (en) 2009-09-16 2012-04-27 Univ Nanyang Tech Textual query based multimedia retrieval system
US8775153B2 (en) * 2009-12-23 2014-07-08 Intel Corporation Transitioning from source instruction set architecture (ISA) code to translated code in a partial emulation environment
US9235801B2 (en) 2013-03-15 2016-01-12 Citrix Systems, Inc. Managing computer server capacity
US9152860B2 (en) * 2013-05-10 2015-10-06 Tantrum Street LLC Methods and apparatus for capturing, processing, training, and detecting patterns using pattern recognition classifiers
US10042813B2 (en) 2014-12-15 2018-08-07 Intel Corporation SIMD K-nearest-neighbors implementation

Also Published As

Publication number Publication date
DE102015014800A1 (de) 2016-06-16
CN105700855A (zh) 2016-06-22
US20160170771A1 (en) 2016-06-16
US10042813B2 (en) 2018-08-07
CN105700855B (zh) 2018-09-21
TWI587137B (zh) 2017-06-11

Similar Documents

Publication Publication Date Title
CN109062608B (zh) 用于独立数据上递归计算的向量化的读和写掩码更新指令
US10275247B2 (en) Apparatuses and methods to accelerate vector multiplication of vector elements having matching indices
KR101766183B1 (ko) 벡터 소팅 알고리즘 및 다른 알고리즘들을 지원하기 위한 트리 구조를 갖춘 기능 유닛
TWI729019B (zh) 處理裝置、系統單晶片、非暫時性機器可讀儲存媒體及用於排序之方法
US10296660B2 (en) Systems, apparatuses, and methods for feature searching
JP6466388B2 (ja) 方法及び装置
US9400651B2 (en) Early issue of null-predicated operations
WO2017185396A1 (zh) 一种用于执行矩阵加/减运算的装置和方法
JP6306729B2 (ja) ストアをソート及びリタイアする命令及びロジック
US8572355B2 (en) Support for non-local returns in parallel thread SIMD engine
WO2017185393A1 (zh) 一种用于执行向量内积运算的装置和方法
WO2015114305A1 (en) A data processing apparatus and method for executing a vector scan instruction
WO2017185392A1 (zh) 一种用于执行向量四则运算的装置和方法
US10152321B2 (en) Instructions and logic for blend and permute operation sequences
US20110302394A1 (en) System and method for processing regular expressions using simd and parallel streams
JP2014216021A (ja) バッチスレッド処理のためのプロセッサ、コード生成装置及びバッチスレッド処理方法
WO2017185404A1 (zh) 一种用于执行向量逻辑运算的装置及方法
WO2017223004A1 (en) Load-store queue for block-based processor
TW201729077A (zh) 用於設置多重向量元素操作之指令及邏輯
TWI587137B (zh) 經改良之單一指令多重資料(simd)的k最近鄰居法之實施技術
WO2017185419A1 (zh) 一种用于执行向量最大值最小值运算的装置和方法
CN108475242B (zh) 冲突掩码生成
US10387797B2 (en) Instruction and logic for nearest neighbor unit
US9411582B2 (en) Apparatus and method for processing invalid operation in prologue or epilogue of loop
CN107688466B (zh) 一种运算装置及其操作方法