cpu和gpu常见加速方法

这篇具有很好参考价值的文章主要介绍了cpu和gpu常见加速方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. cpu 代码加速: simd指令集

上面我们已经提到多种架构的CPU,常用的两类可以分为
1)Intel , amd
2)Arm
其中Intel , amd的simd指令集包括sse系列和avx系列,一般电脑使用的是intel的cpu
Arm的指令集是NEON,主要用于手机移动端

使用simd指令集,要包括特定的头文件,然后调用指令集函数
SIMD理解和学习入门资源

2. cpu代码加速: 多线程:openmp并行

OpenMP支持的编程语言包括C语言、C++和Fortran;而支持OpenMp的编译器包括Sun Compiler,GNU Compiler和Intel Compiler等。OpenMp提供了对并行算法的高层的抽象描述。

程序员通过在源代码中加入专用的#pragma来指明自己的意图,由此编译器可以自动将程序进行并行化,并在必要之处加入同步互斥以及通信。
当选择忽略这些#pragma,或者编译器不支持OpenMP时,程序又可退化为通常的程序(一般为串行),代码仍然可以正常运作,只是不能利用多线程来加速程序执行。

矩阵相乘通过 openmp 实现多线程并行加速示例:

    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;
            }
        }
    }

并行计算之基础概念
并行计算之OpenMP入门简介
OpenMP4.0: #pragma openmp simd实现SIMD指令优化(ARM,X86,MIPS)

3. cpu代码加速: 多线程并行:tbb

TBB(Thread Building Blocks)是英特尔发布的一个库,全称为 Threading Building Blocks。TBB 是一套 C++ 模板库
1)TBB提供C++模版库,用户不必关注线程,而专注任务本身。
2)抽象层仅需很少的接口代码,性能上毫不逊色。
3)灵活地适合不同的多核平台。
4)线程库的接口适合于跨平台的移植(Linux, Windows, Mac)
5)支持的C++编译器 – Microsoft, GNU and Intel

opencv中目前使用tbb较多。
Intel Thread Building Blocks (TBB) 入门篇

4. CPU, GPU加速:OpenCL并行

开放计算语言 (OpenCL) 是一种开放标准,用于编写跨异构平台(包括 CPU、GPU、DSP 等)运行的代码。特别是 OpenCL 为应用程序提供了对 GPU 的访问,在计算机视觉中,许多算法可以在 GPU 上比在 CPU 上更有效地运行:例如 图像处理、矩阵运算、计算摄影、物体检测等。

5. nvidia GPU 加速: cuda C

CUDA(Compute Unified Device Architecture)是一种由显卡厂商NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。 开发人员现在可以使用C语言来为CUDA™架构编写程序,C语言是应用最广泛的一种高级编程语言。所编写出的程序于是就可以在支持CUDA™的处理器上以超高性能运行。CUDA3.0已经开始支持C++和FORTRAN。

GPU编程语言选择(OpenCL、CUDA 与C++ AMP)
矩阵乘法的并行优化(1):OPENMP、CUDA实现

6. opencv中使用的加速技术:

simd, tbb, openmp, opencl, cuda等技术都有使用

有相关博客介绍opencv中的加速:
OpenCV算法加速(1)OpenMP/PPL/TTB基础知识文章来源地址https://www.toymoban.com/news/detail-474176.html

到了这里,关于cpu和gpu常见加速方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包