自動管道組成的制作方法
【技術領域】
[0001] 本公開通常涉及成像操作。更具體地,本公開涉及自動地組成用于成像操作的管 道。
【背景技術】
[0002] 用于圖像處理的管道通常由具有計算架構以及要處理的特定成像算法的知識的 用戶手動地拼湊在一起。這樣的管道的構造是耗時的,同時是跨計算架構不可移植的。
【附圖說明】
[0003] 通過參考附圖可更好地理解下文的詳細描述,附圖包含所公開的主題的許多對象 和特征的具體示例。
[0004] 圖1A是根據實施例的在被合并到優化函數中之前的函數的框圖; 圖1B是根據實施例的在被合并到優化函數中之后的函數的框圖; 圖2是根據實施例的用于自動管道組成的過程流程圖; 圖3是根據實施例的Sobel算子的視覺管道的圖示; 圖4是根據實施例的可被使用的計算裝置400的框圖;以及 圖5是根據實施例的示出存儲用于自動管道組成的代碼的有形的、非暫時性計算機可 讀媒體500的框圖。
【具體實施方式】
[0005] 如以上所論述的,手動構造的管道的生成是耗時的,同時是跨計算架構不可移植 的。其結果是,成像管道變得成本過高。
[0006] 本技術的實施例提供跨計算架構可移植的自動管道組成。在實施例中,管道包含 合并到單個外部循環中的各個原函數的集合。此外,在實施例中,合并在外部循環中用于所 有原函數的數據訪問。以此方式,可使用跨計算架構可移植的算法描述來優化計算系統的 存儲器和計算資源。此外,可減少數據復制,這消除了數據傳遞,允許數據值存儲在計算單 元內的快速寄存器中,消除高速緩存未命中,減少整體存儲器帶寬,節約功率,并且提高性 能。
[0007] 此外,本文描述的技術提供用于合并到共享公共外部循環和數據讀取寫入訪問的 管道中的手動或自動函數。在手動技術中,程序員可將句法元素插入到代碼中來標記函 數數據類型和使本文描述的技術能用于將代碼編譯或翻譯成合并和優化的管道的其它屬 性。合并的優化的管道共享公共外部循環和數據讀取或寫入優化。在自動技術中,編譯器 或翻譯器可檢查源代碼并且自動地推斷應被插入到代碼中的句法元素以允許函數合并和 公共外部循環以及共享數據讀取或寫入優化。在實施例中,對軟件程序員明顯的是句法元 素被自動地插入到編譯和翻譯代碼中。因此,本文描述的技術使句法元素能被手動地插入 到代碼中來引導合并到共享外部循環并且組合數據讀取或寫入的管道中,使用自動靜態代 碼分析來將代碼自動地翻譯成更低級的優化代碼,或將代碼翻譯成具有句法元素的其它代 碼(句法元素被自動插入來引導函數合并到共享外部循環和組合的數據讀取和寫入的管道 中)。
[0008] 在下文的描述和權利要求中,可使用術語"耦合"和"連接"以及它們的派生詞。應 該理解這些術語不旨在作為彼此的同義詞。而是,在特定實施例中,"連接"可用于指示兩個 或者更多元素與彼此直接物理或電接觸。"耦合"可意味著兩個或者更多元素直接物理或電 接觸。然而,"耦合"還可意味著兩個或者更多元素與彼此不直接接觸,但仍然與彼此合作或 交互。
[0009] 一些實施例可實現在硬件、固件和軟件的一個或組合中。一些實施例還可實現為 存儲在機器可讀介質上的指令,指令可由計算平臺讀取并且執行來執行本文描述的操作。 機器可讀介質可包含用于以由機器(例如,計算機)可讀的形式存儲或傳送信息的任何機 制。例如,機器可讀介質可包含只讀存儲器(ROM)、隨機存取存儲器(RAM)、磁盤存儲媒體、 光存儲媒體、閃速存儲器裝置、等等。
[0010] 實施例是實現或示例。在說明書中對"一實施例"、"一個實施例"、"一些實施例"、 "各實施例"或"其它實施例"的參考意味著結合實施例描述的特定特征、結構或特性包含在 本發明的至少一些實施例中,但不一定包含在所有實施例中。"一實施例"、"一個實施例"或 "一些實施例"的各種出現不一定都參考相同的實施例。來自實施例的元素或方面可以與另 一實施例的元素或方面組合。
[0011] 不是本文描述并且圖示的所有部件、特征、結構、特性等都需要被包含在特定實施 例中。例如,如果說明書表述"可"、"可能"、"可以"或"能夠"包含部件、特征、結構或特性, 不要求包含那個特定部件、特征、結構或特性。如果說明書或權利要求提及"一"元素,那不 意味著只有一個元素。如果說明書或權利要求提及"附加的"元素,那不排除有多于一個的 附加的元素。
[0012] 要注意的是,雖然已經參考特定實現來描述一些實施例,但是根據一些實施例的 其它實現是可能的。此外,在圖中圖示的和/或本文描述的電路元素或其它特征的布置和/ 或順序不需要以圖示和描述的特定方式來布置。根據一些實施例,許多其它布置是可能的。
[0013] 在圖中示出的每個系統中,在一些情況下元素可以每個具有相同的參考標號或不 同的參考標號來暗示表示的元素可以是不同和/或類似的。然而,元素可足夠靈活來具有 不同的實現并且與本文示出或描述的系統中的一些或所有系統一起工作。在圖中示出的各 種元素可以是相同或不同的。哪一個被稱作第一元素并且哪一個被稱作第二元素是任意 的。
[0014] 圖1A是根據實施例的在被合并到優化函數中之前的函數的框圖。圖1A包含函數 102、函數104以及函數106。可通過獨立地讀取來自輸入圖像數據緩沖器108的必要數據 來執行每個函數。然后每個函數執行其自己的獨立計算,并且將產生的數據寫入到輸出圖 像數據緩沖器110。
[0015] 例如,函數102可讀取來自輸入圖像數據緩沖器108的數據。雖然輸入圖像數據 緩沖器108對于函數102、函數104以及函數106中的每個是相同的,但是輸入圖像數據緩 沖器中的圖像可讀取自存儲器中的不同位置。然后,函數102對數據執行計算112A,并且然 后將產生的數據寫入到輸出圖像數據緩沖器110。類似地,函數104執行計算112B并且函 數3執行計算112C。在實施例中,輸出圖像數據緩沖器110中的數據被寫入到從那里取回 它的存儲器中的相同位置,這被稱作適當計算數據。因此,每個函數102、函數104以及函數 106分別包含其自己的計算,具體地,計算112A、計算112B以及計算112C。
[0016] 圖1B是根據實施例的在被合并到優化函數中之后的函數的框圖。當函數102、函 數104以及函數106中的每個如本文所描述的被合并時,發生一個單個讀取操作114來讀 取函數102、函數104以及函數106中的每個所需要的數據。數據可讀取自輸入線緩沖器 116,它接收來自輸入圖像數據緩沖器108的數據。雖然到讀取操作114的輸入被示為輸入 線緩沖器116中的線,但是到讀取操作114的輸入可以是點、線、區域、面積、結構化數據、算 法隨機數據或其任何組合。在被輸入到讀取操作之后,然后在管道中的原函數之間的快速 寄存器和高速緩存存儲器中傳遞數據,從而提高性能并且降低存儲器帶寬。因此,數據可在 原函數之間傳遞而沒有被寫入到存儲器中。
[0017] 在每個相應計算操作112A、112B和112C完成之后,發生一個寫入操作120來寫入 來自函數102、函數104以及函數106的產生的數據。將數據寫入到輸出線緩沖器122。然 后輸出線緩沖器122可將數據寫入到輸出圖像數據緩沖器110。雖然輸出被示為輸出線緩 沖器122,但是到輸出圖像數據緩沖器110的輸出可以是點、線、區域、面積、結構化數據、算 法隨機數據或其任何組合。另外,輸入數據的格式不一定與輸出數據的格式相同。
[0018] 使用本技術,可將函數102、函數104以及函數106中的每個合并在一起,其中每個 函數共享公共讀取操作和公共寫入操作。以此方式,可分別優化讀取緩沖器,使得將更小片 的數據讀取到緩沖器來避免高速緩存未命中。通過合并函數,提供性能節約。因此,可以在 運行中合并每個函數,而沒有對于每個數據輸入從存儲器讀取。當使用逐個元素的操作時, 每次操作元素時不訪問存儲器。此外,可根據硬件支持來優化操作并且并行地執行操作。在 實施例中,合并函數的方