Skip to content

Commit 0d063fd

Browse files
committed
cuda
1 parent e48a4d3 commit 0d063fd

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

my07-GPU-CUDA/cuda.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
#CUDA
2+
https://opencv.org/platforms/cuda.html
3+
- 动机
4+
- 现代GPU加速器已经变得强大并且足够有能力执行通用计算(GPGPU)。这是一个非常快速增长的领域,引起了开发计算密集型应用的科学家,研究人员和工程师的广泛兴趣。尽管在GPU上重新实现算法有困难,但许多人正在检查它们的速度。为了支持这种努力,已经有许多高级语言和工具可用,例如CUDA,OpenCL,C ++ AMP,调试器,分析器等等。
5+
- 计算机视觉的重要组成部分是图像处理,图形加速器最初设计的领域。其他部分也假设大规模的并行计算,并且往往自然映射到GPU架构。所以,在图形处理器上实现所有这些优势并加速OpenCV是具有挑战性但非常有益的。
6+
7+
- 历史
8+
- OpenCV包含GPU模块,其中包含所有GPU加速的东西。在NVIDIA的支持下,该模块在2010年的第一个版本之前于2010年开始运行。它包括加速代码库的一部分,仍然在不断增长,正在适应新的计算技术和GPU架构。
9+
10+
- 目标
11+
- 在GPU上为开发人员提供方便的计算机视觉框架,保持与当前CPU功能的概念一致性。
12+
- 通过GPU实现最佳性能(针对现代体系结构优化的高效内核,优化的数据流如异步执行,复制重叠,零拷贝)
13+
- 完整性(实现尽可能多,即使加速并不是太棒了;这样可以完全在GPU上运行算法,节省应付开销)
14+
15+
- 性能
16+
- 特斯拉C2050与Core i5-760 2.8Ghz,SSE,TBB
17+
![](https://opencv.org/assets/pages/perf.png)
18+
- 条形图:不同算法的加速:原始图像处理 - 30倍,立体视觉 - 7倍,行人检测 - 8倍,人脸检测器 - 6倍,SURF关键点 - 12倍
19+
20+
- 设计注意事项
21+
- OpenCV GPU模块是使用CUDA编写的,因此它受益于CUDA生态系统。有一个大型的社区,会议,出版物,开发的许多工具和库,如NVIDIA NPP,CUFFT,Thrust。
22+
23+
- GPU模块被设计为主机API扩展。这种设计为用户提供了一个明确的控制,即在CPU和GPU内存之间如何移动数据。尽管用户必须编写一些额外的代码才能开始使用GPU,但这种方法既灵活又有效,可以进行更高效的计算。
24+
25+
- GPU模块包括cv :: gpu :: GpuMat类,它是保存在GPU内存中的数据的主要容器。它的接口与cv :: Mat非常相似,与CPU相对应。所有GPU函数接收GpuMat作为输入和输出参数。这允许调用几个GPU算法而不下载数据。在可能的情况下,GPU模块API接口也与CPU接口保持相似。因此熟悉CPU上Opencv的开发人员可以立即开始使用GPU。

0 commit comments

Comments
 (0)