前言
CPU并行加速
CPU并行加速的本质就是通过硬件并发(hardware concurrency)的形式来实现。这种的操作方式是通过单个进程里多线程,从而实现共享地址空间,全局变量,指针,引用。但是这种方式相对而言更加传统,但是同时更加具有普适性。
其中操作是使用以pthread为代表的多线程并行加速
pthread
这是一个pthread的简单示例代码。
class helloFromObject{ public: void operator()() const{ std::cout << "Hello, My Second thread!" << std::endl; } }; int main() { std::cout << "Hello, Coconut Cat!" << std::endl; std::thread bthread((helloFromObject())); bthread.join(); return 0; }
我们可以发现pthread这种多线程加速v-slam场景下都有着充分的应用
OpenMP
openmp作为另一种CPU提速方式,在SLAM的特征提取中拥有比较良好的加速代码。当然thread对于openmp还是有一定的影响的,每个thread分配给omp的线程可能减小或者是在thread里面继续调用omp再开线程会带来更大的成本,导致omp单独执行时变慢。