技术开发 频道

GPU并行编程:熟练使用CUDA C语言

  【IT168 专稿】一个大任务通常可能被分解成许多可以一起处理的小任务,以便创建一个解决方案,这和粉刷房子的道理是一样的,在粉刷之前,假设你需要买5公升油漆和5把刷子,你可以自己一个人干完采购和粉刷的活,也可以请朋友或职业粉刷工人帮忙。

使用GPU进行并行编程
▲图 开始使用CUDA C

  你可能想请人帮忙,为了节约时间,你出去购买油漆,另一个人去买刷子,然后你在4个人的帮助下,每人刷一面墙,这样并行进行,到任务完成时,你算一下,应该节省了大量的时间。

  这个方法对计算机也适用,假设你想添加两个向量v(x,y,z)和u(x,y,z),这里v=(1,2,3),u=(4,5,6),那么v+u=(1,2,3)+(4,5,6)=(1+4,2+5,3+6)=(5,7,9),你自己可以算一下,一次计算一个,但正如你可能看到的,这个问题可以分解成多个更小的问题,你可以让一个“人”将x分向量一起加起来,另一个“人”将y分向量一起加起来,第三个“人”将z分向量一起加起来,如下表所示:

使用GPU进行并行编程

  表中的每个人所有的工作都是一样的:a+b=c,但每个人使用的数字不一样,结果也不一样。

  这并不是什么新概念,并行计算已经存在多年,PC使用多个CPU并行处理任务,提高不同应用程序的执行速度,你可以将上面提到的“人”看作一个进程或一个线程,计算机可以将每个进程分配给不同的处理器,接收到任务的所有处理器并行执行一个任务(计算)。

  现在,大多数计算机拥有多颗可以处理多任务的处理器,大型应用程序使用计算机上的可用资源运行可以获得更好的性能,但如果应用程序需要增加功能会怎么样呢?你应该增加处理器,还是以某种方式升级系统?这取决于你应用程序的需求和采用的解决方案,其中一个可行的解决方案是使用GPU。

  GPU是什么?GPU是图形处理单元(Graphics Processing Unit)的缩写,它处理所有桌面上或游戏中的图形,分担一些CPU负载,在游戏中,CPU要执行人工智能计算和冲突检测,任务非常繁重,因此任何帮助都是欢迎的,GPU本身采用了良好的并行架构,使算术运算和计算真正有效,它是CPU的好朋友。

使用GPU进行并行编程
▲图 CPU+GPU,让程序运行更高效

0
相关文章