理解多點觸控/影像處理
外觀
< 理解多點觸控
本章旨在為即將到來的章節展示計算模型。這很重要,因為我們可能將這些演算法實現為軟體或硬體,並行或序列。在我們繼續之前,您應該閱讀關於影像採集的章節,並理解我們的理論感測器模型。
截至 2007 年,計算機硬體已變得非常複雜,並且專門為訊號處理添加了功能,包括單指令多資料 (SIMD) 硬體以及硬體中的多個核心和多個執行緒 (SMT)。這兩者都將影響我們從感測器匯入資料的方式,以充分利用硬體。
在為 SIMD 機器實現時,最重要的是要理解結構陣列與陣列結構的概念。沒有經驗和較老的程式設計師經常會錯過 SIMD 硬體提供的最佳化機會,因為他們錯誤地使用較舊的概念將資料儲存在記憶體中。因此,結構陣列的設計慣用法在較舊的程式碼中十分流行,作為提高可讀性的方式。
structure 3d_Point {
int32 x, y, z
}
3d_Point OurData[20];這會導致對硬體的低效利用,因為我們無法並行處理這些結構,並且由於 (錯誤) 對齊而會導致處理器快取載入和解除安裝問題。處理器公司已經實施了指令來幫助重新解釋這種型別的資料(通常稱為“混洗”和“反混洗”),但是,只需從一開始就正確設計程式碼,我們就可以避免這些較慢的指令。
structure 3d_Points {
int32 x[20], y[20], z[20]
}
3d_Points OurData;陣列結構慣用法更有效地利用了我們的並行硬體。因為我們的結構封裝了更多資料,所以我們可以更早地將所有資料載入到處理器的快取中。現在對齊是固定的,並且對齊到 4 位元組,我們可以跳過混洗和反混洗。