派福利!通过 Azure 零成本进入 CUDA 编程
点击上方蓝字
关注我们
(本文阅读时间:9分钟)
我们在配置深度学习环境的时候,除了安装各种库和框架外,如果需要 GPU 加速,还需要配置 CUDA。那 CUDA 是什么?它的作用是什么?
什么是 CUDA?
CUDA (Compute Unified Device Architecture) 是通用的并行计算平台和编程模型,利用 Nvidia GPU 中的并行计算引擎能更有效地解决复杂的问题,如矩阵和线性代数等相关运算。
为什么需要 CUDA?
GPU 是为高速并行计算而生的(我们常见的场景应该是游戏) 对于某些应用,通过 GPU 调用比 CPU 调用高 30-100 倍 GPU 拥有 ALU (算术逻辑单元), 允许更多的并行计算结合。例如计算屏幕上每个像素的颜色等
CUDA 充分发挥 GPU 的作用,使得开发者通过编程释放 GPU 的并行计算能力。
进入 CUDA 编程的所需条件
CUDA 支持不同的编程语言(如上图) C / C++ / Python 等,最常用还是通过 CUDA C 进行编写。CUDA C 是标准 ANSI C 语言的扩展,支持异构编程。
实际上除了编程语言外,你或者更需要的是一块高性能显卡。当你缺少钞票的时候,公有云会是进入 CUDA 编程的最低成本选择。
Azure 机器学习让你零成本入坑 CUDA 编程
Azure 有非常强大的机器学习功能,我一直喜欢使用 Azure 机器学习来构建我的机器学习或深度学习方案。对于个人开发者和学生党都可以免费申领 Azure 。
申领 Azure 200 美金的免费额度:
https://azure.com/free
对于学生党,你只需要有一个 edu 邮箱,就可以申领 Azure 100 美金的免费额度:
申领 Azure 100 美金的免费额度: https://aka.ms/studentgetazure
在 Azure 门户上创建 Azure 机器学习工作区
进入门户 ,点击“创建资源”,选择 AI + 机器学习, 再选择 Azure Machine Learning
当确认好后,点击 “审阅和创建”,确认无误后,再点击“创建”,稍等片刻就可以顺利地完成 Azure 机器学习工作区的创建。
创建 Azure 机器学习计算实例
点击创建后,稍等片刻,你的计算实例就创建成功了。
计算实例上的第一个 CUDA 程序
nvidia-sminvcc -V
mkdir codecd codevim helloworld.cu
在 helloworld.cu 添加如下内容
#include<stdio.h>#include<stdlib.h>__global__ void print_from_gpu(void) {printf("Hello World! from thread [%d,%d] \From device\n", threadIdx.x,blockIdx.x);}int main(void) {printf("Hello World from host!\n");print_from_gpu<<<1,1>>>();cudaDeviceSynchronize();return 0;}
通过输入:wq! 保存该文件
在终端运行以下指令
nvcc -arch=sm_37 helloworld.cu -o helloworld./helloworld
喜欢使用 Jupyter Notebook 是开发人员的使用习惯, 网上有很多都是针对友商的环境的设定,但这个你需要佛跳墙。所以我做了一下调整,让他可以在 Azure 机器学习环境中进行,步骤如下,在作者区域选择 “Notebooks”,创建一个 notebook 文件夹,选择创建一个新文件。
!pip3 install git+https://github.com/kinfey/nvcc4jupyter.git继续添加一行 Cell,输入如下命令
%load_ext azureml_nvcc_plugin%%cu
#include <stdio.h>
__global__ void helloFromHost();
__device__ int helloFromDevice(int tid);
int main()
{
helloFromHost<<<1,5>>>();
cudaDeviceReset();
return 0;
}
__global__ void helloFromHost()
{
int tid=threadIdx.x;
printf("Hello world From __global__ kernel: %d\n",tid);
int tid1=helloFromDevice(tid);
printf("tid1 : %d\n",tid1);
}
__device__ int helloFromDevice(int tid)
{
printf("Hello world Form __device__ kernel: %d\n",tid);
return tid+1;
}这个时候你就可以用 Notebook 去运行 CUDA 程序了。
当然 Azure 机器学习可以支持本地 VS Code 的编写,你只需要选择在 VS Code 中编辑,你就可以在本地 VS Code 编写你的 CUDA 代码,这样更方便。
相关资源:
个人免费 Azure 申请:
https://azure.com/free
学生免费 Azure 申请:
https://aka.ms/studentgetazure
了解 Azure 机器学习:
https://learn.microsoft.com/zh-cn/azure/machine-learning/overview-what-is-azure-machine-learning
了解 CUDA 编程:
https://docs.nvidia.com/cuda
*未经授权请勿私自转载此文章及图片。
谢谢你读完了本文!欢迎在评论区留言分享你的想法,并且转发到朋友圈。
长按识别二维码
关注微软开发者MSDN
点击「阅读原文」了解 Azure 机器学习~