Python CUDA 编程 - 3 - GPU编程介绍
> 本文介绍GPU编程的一些重要概念。 ### GPU编程 {#GPU编程} > GPU编程与CPU编程的思考角度不尽相同,举皮皮鲁老师的一个例子: 以加法计算为例,CPU就像大学数学教授,GPU就像几千个小学生,现在需要不借助外界,只通过纸笔,对2000个数字进行加法计算,得到1000个加法结果,在这个过程中,大学教授要协调指挥小学生完成任务。 在计算过程...
> 本文介绍GPU编程的一些重要概念。 ### GPU编程 {#GPU编程} > GPU编程与CPU编程的思考角度不尽相同,举皮皮鲁老师的一个例子: 以加法计算为例,CPU就像大学数学教授,GPU就像几千个小学生,现在需要不借助外界,只通过纸笔,对2000个数字进行加法计算,得到1000个加法结果,在这个过程中,大学教授要协调指挥小学生完成任务。 在计算过程...
> 在程序运行过程中,可能遇到需要进程间或不同平台的语言之间进行信息交互,存在硬盘是一种解决方案但是速度太慢。python的mmap库提供了共享内存的实践方案可以完成信息在内存间交互。 ### 简介 {#简介} #### 共享内存 {#共享内存} > 内存共享是两个不同的进程共享内存的意思:同一块物理内存被映射到两个进程的各自的进程地址空间。这个物理内存已经被...
> 当核心数量不够或想限制当前任务使用的GPU核心数时可以使用网格跨步的思路编写CUDA程序。 ### 背景 {#背景} > CUDA的执行配置:`[gridDim, blockDim]`中的`blockDim`最大只能是1024,但是并没提到`gridDim`的最大限制。英伟达给出的官方回复是gridDim最大为一个32位整数的最大值,也就是2,147,483...
> Numba是一个针对Python的开源JIT编译器,由Anaconda公司主导开发,可以对Python原生代码进行CPU和GPU加速。Numba对NumPy数组和函数非常友好。 ### Numba简介 {#Numba简介} > 计算机只能执行二进制的机器码,C、C++等编译型语言依靠编译器将源代码转化为可执行文件后才能运行,Python、Java等解释型语言...
> 基于CPU和GPU的异构计算已经逐步发展成为高性能计算的主流模式。CUDA作为GPU高性能计算的主要开发工具之一,已经在各个领域取得广泛应用。 ### 什么是GPU {#什么是GPU} > GPU全名为Graphics Processing Unit,又称视觉处理器、图形显示卡。GPU负责渲染出2D、3D、VR效果,主要专注于计算机图形图像领域。后来人们发现...
> python 运行时会有不同环境需求,在其他机器部署时需要重新配置python环境,当需要离线部署时可以使用pip的离线复制环境的功能。 ### 工作思路 {#工作思路} 1. 获取环境所需的库和对应版本 2. 确定运行平台(Linux,Windows) 3. 在指定平台下载库的离线包 4. 将库列表与离线包迁移到新机器 5. 在新机器上安装python 6. 安...
> 本文记录使用Python Socket包搭建简易服务器的代码。 ### 概述 {#概述} > 平时访问网站底层大多是socket封装的http请求,都是基于tcp-ip协议进行通信的;角色分为服务器端和客户端。 ### 代码 {#代码} ### 使用 {#使用} * 运行程序后,在浏览器访问 `localhost:8000`即可进入代码中的 while...
> python图像处理中会调用一些开源库,PCV是其中之一,由于该库比较古老,本文记录安装使用方法。 ### 下载 {#下载} * <https://github.com/jesolem/PCV> * <https://codechina.csdn.net/mirrors/jesolem/pcv?utm_source=csdn_github_acc...
> 常规的模糊算法如高斯模糊等会模糊图像边缘,很多场景中我们需要保留图像纹理并模糊一些细节,这就可以使用PS中的表面模糊。 ### 表面模糊 {#表面模糊} * 表面模糊有两个参数,半径Radius和阈值Threshold。 如果我们知道了以某点为中心,半径为Radius范围内的直方图数据Hist,以及该点的像素值,那根据原始的算法,其计算公式为: $$ x =...
> 本文介绍使用python 的 opencv 库显示多个图片窗口,并获取点击点像素位置的方法。 ### opencv 显示图像 {#opencv-显示图像} > 显示图像主要通过`namedWindow`方法定义窗口,和`imshow`方法刷新窗口内容实现的,需要停止时按`Esc`键退出并销毁窗口: > 显示多幅图像就使用不同的窗口名称建立窗口即可: ...