且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

SLAM各种并行加速方法

更新时间:2022-08-13 12:04:39

前言


CPU并行加速


CPU并行加速的本质就是通过硬件并发(hardware concurrency)的形式来实现。这种的操作方式是通过单个进程里多线程,从而实现共享地址空间,全局变量,指针,引用。但是这种方式相对而言更加传统,但是同时更加具有普适性。


SLAM各种并行加速方法


其中操作是使用以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单独执行时变慢。