基于CPU+GPU的异构计算

GPU

GPU是为了视频游戏而产生的(至今其主要驱动力还是不断增长的视频游戏市场),在三维游戏中常常出现的一类操作是对海量数据进行相同的操作,如:对每一个顶点进行同样的坐标变换,对每一个顶点按照同样的光照模型计算颜色值。

GPU的众核架构非常适合把同样的指令流并行发送到众核上,采用不同的输入数据执行

CUDA

CUDA和C程序并无区别,只是多了一些以“CUDA”开头的库函数。

使用CUDA的好处就是透明。根据摩尔定律GPU的晶体管数量不断增多,硬件结构必然是不断的在发展变化,没有必要每次都为不同的硬件结构重新编码,而CUDA就是提供了一种可扩展的编程模型,使得已经写好的CUDA代码可以在任意数量核心的GPU上运行。

CUDNN

NVIDIA cuDNN是用于深度神经网络的GPU加速库。它强调性能、易用性和低内存开销。NVIDIA cuDNN可以集成到更高级别的机器学习框架中,如加州大学伯克利分校的流行CAFFE软件。简单的,插入式设计可以让开发人员专注于设计和实现神经网络模型,而不是调整性能,同时还可以在GPU上实现高性能现代并行计算。

https://blog.csdn.net/lemon4869/article/details/53415734 了解CPU、GPU、进程、线程、CUDA

CUDA编程

开发人员可以通过调用CUDA的API,来进行并行编程,达到高性能计算目的。NVIDIA公司为了吸引更多的开发人员,对CUDA进行了编程语言扩展,如CUDA C/C++,CUDA Fortran语言。注意CUDA C/C++可以看作一个新的编程语言,因为NVIDIA配置了相应的编译器nvcc,CUDA Fortran一样。

模式和框架

框架=中间件

开发软件时,有一些通用的或者共用的功能模块,例如数据库连接,事务处理,不能每次开发都由开发人员来写,导致开发周期长和可靠性差。所以一些大公司开发了通用模块,或者叫半成品的框架。统称为中间件。

模式

软件设计模式太多,就我的理解简单说一下最常见的MVC模式

http://www.elecfans.com/d/759019.html 在Java编程中模式和框架有什么区别

https://www.cnblogs.com/yukaizhao/archive/2012/04/23/taobao_order_design.html

https://blog.csdn.net/happywei520/article/details/79624420

https://www.cnblogs.com/stateis0/p/10963171.html

https://baike.baidu.com/item/j2ee/110838?fr=aladdin

https://blog.csdn.net/xiaohu2022/article/details/79599947

你可能感兴趣的:(硬件-部件-GPU)