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