C語言數(shù)組無非就是一組連續(xù)的元素,在內(nèi)存中連續(xù)存儲(chǔ)。
最簡(jiǎn)單想到的辦法自然就是挨個(gè)處理。這個(gè)就是一個(gè)簡(jiǎn)單循環(huán)結(jié)構(gòu)。
但在圖形圖像處理像素?cái)?shù)組時(shí),一些核心代碼會(huì)使用SIMD,比如一條指令加載4個(gè)像素到寄存器,再若干條指令直接處理這4個(gè)像素(加減乘除,邏輯,位移等),最后一條指令把4個(gè)像素處理的結(jié)果存回內(nèi)存。SIMD大量用于圖像處理,多媒體等。具有像素?cái)?shù)組這樣的應(yīng)用。
人工智能的向量叉積運(yùn)算,也可以用SIMD來運(yùn)算叉積的結(jié)果。
SIMD的結(jié)構(gòu)就像循環(huán)中,每次循環(huán)處理4個(gè)數(shù)據(jù)。
最后還有多線程或者OpenMP。類似把一個(gè)明確長(zhǎng)度的數(shù)組分段,然后讓每個(gè)段在一個(gè)核上跑。并行處理各自數(shù)據(jù)段。
也有把OpenMP和SIMD結(jié)合使用獲取最佳效果的。
這些東西大學(xué)一般是不教的,也沒幾個(gè)老師會(huì)去研究這個(gè)。中國(guó)的教育真是失敗。