课程总结 -- CPU/GPU并行计算基础(CPU篇)

上学期选修了Prof. Tolga Soyata的“GPU Parallel Programming using C/C++”课程。该课程主要分两部分:前半部分通过讲解CPU并行程序来介绍并行计算的原理和思路;后半部分讲解如何用CUDA在GPU上进行并行计算。本文纪录其中的基础要点和关键实现方式。通过本文大家可以了解到:1、如何用CPU进行多线程并行计算;2、CUDA是什么,GPU如何进行并行计算;3、并行计算的优越性;4、内存的应用对程序性能的影响。

本文分两部分:第一部分是CPU计算部分,第二部分是GPU计算部分。其中主要介绍实现的具体方法(理论也讲不清楚)。内容参考课上课件和代码,以及教材:CUDA BY EXAMPLE


0、串行程序

在接下来的几个小节,我们会用不同的方式完成同一个任务:纵向翻转一张3200x1600的图片,并比较它们之间的性能差异。首先我们来看的是采用串行方法的实现,即不使用并行计算,对逐个像素进行交换操作。为了简化读写等无关操作,我们用opencv进行图像的读写,具体代码见这里

性能:使用串行计算,其速度为平均每张图片约 107ms。

1、第一个CPU并行程序

分析一下这个任务,我们可以发现:每一行执行的操作是独立且相同的。因此我们其实可以让不同行同时执行同样的操作,这便是并行的程序。具体来说,假设我们有 n 个并行的线程,我们便可以让每个线程完成 1/n 的任务,比如线程1完成 [1...cols

  • 0
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值