1. cpu 代碼加速: simd指令集
上面我們已經(jīng)提到多種架構(gòu)的CPU,常用的兩類可以分為
1)Intel , amd
2)Arm
其中Intel , amd的simd指令集包括sse系列和avx系列,一般電腦使用的是intel的cpu
Arm的指令集是NEON,主要用于手機(jī)移動端
使用simd指令集,要包括特定的頭文件,然后調(diào)用指令集函數(shù)
SIMD理解和學(xué)習(xí)入門資源
2. cpu代碼加速: 多線程:openmp并行
OpenMP支持的編程語言包括C語言、C++和Fortran;而支持OpenMp的編譯器包括Sun Compiler,GNU Compiler和Intel Compiler等。OpenMp提供了對并行算法的高層的抽象描述。
程序員通過在源代碼中加入專用的#pragma來指明自己的意圖,由此編譯器可以自動將程序進(jìn)行并行化,并在必要之處加入同步互斥以及通信。
當(dāng)選擇忽略這些#pragma,或者編譯器不支持OpenMP時,程序又可退化為通常的程序(一般為串行),代碼仍然可以正常運(yùn)作,只是不能利用多線程來加速程序執(zhí)行。
矩陣相乘通過 openmp 實(shí)現(xiàn)多線程并行加速示例:
static void matMultCPU_parallel(const float* a, const float* b, float* c, int n)
{
#pragma omp parallel for schedule(dynamic)
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
double t = 0;
for (int k = 0; k < n; k++)
{
t += (double)a[i * n + k] * b[k * n + j];
}
c[i * n + j] = t;
}
}
}
并行計(jì)算之基礎(chǔ)概念
并行計(jì)算之OpenMP入門簡介
OpenMP4.0: #pragma openmp simd實(shí)現(xiàn)SIMD指令優(yōu)化(ARM,X86,MIPS)
3. cpu代碼加速: 多線程并行:tbb
TBB(Thread Building Blocks)是英特爾發(fā)布的一個庫,全稱為 Threading Building Blocks。TBB 是一套 C++ 模板庫
1)TBB提供C++模版庫,用戶不必關(guān)注線程,而專注任務(wù)本身。
2)抽象層僅需很少的接口代碼,性能上毫不遜色。
3)靈活地適合不同的多核平臺。
4)線程庫的接口適合于跨平臺的移植(Linux, Windows, Mac)
5)支持的C++編譯器 – Microsoft, GNU and Intel
opencv中目前使用tbb較多。
Intel Thread Building Blocks (TBB) 入門篇
4. CPU, GPU加速:OpenCL并行
開放計(jì)算語言 (OpenCL) 是一種開放標(biāo)準(zhǔn),用于編寫跨異構(gòu)平臺(包括 CPU、GPU、DSP 等)運(yùn)行的代碼。特別是 OpenCL 為應(yīng)用程序提供了對 GPU 的訪問,在計(jì)算機(jī)視覺中,許多算法可以在 GPU 上比在 CPU 上更有效地運(yùn)行:例如 圖像處理、矩陣運(yùn)算、計(jì)算攝影、物體檢測等。
5. nvidia GPU 加速: cuda C
CUDA(Compute Unified Device Architecture)是一種由顯卡廠商N(yùn)VIDIA推出的通用并行計(jì)算架構(gòu),該架構(gòu)使GPU能夠解決復(fù)雜的計(jì)算問題。 它包含了CUDA指令集架構(gòu)(ISA)以及GPU內(nèi)部的并行計(jì)算引擎。 開發(fā)人員現(xiàn)在可以使用C語言來為CUDA?架構(gòu)編寫程序,C語言是應(yīng)用最廣泛的一種高級編程語言。所編寫出的程序于是就可以在支持CUDA?的處理器上以超高性能運(yùn)行。CUDA3.0已經(jīng)開始支持C++和FORTRAN。
GPU編程語言選擇(OpenCL、CUDA 與C++ AMP)
矩陣乘法的并行優(yōu)化(1):OPENMP、CUDA實(shí)現(xiàn)
6. opencv中使用的加速技術(shù):
simd, tbb, openmp, opencl, cuda等技術(shù)都有使用文章來源:http://www.zghlxwxcb.cn/news/detail-474176.html
有相關(guān)博客介紹opencv中的加速:
OpenCV算法加速(1)OpenMP/PPL/TTB基礎(chǔ)知識文章來源地址http://www.zghlxwxcb.cn/news/detail-474176.html
到了這里,關(guān)于cpu和gpu常見加速方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!