前言
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单独执行时变慢。