分析和模型数据在GPU上
这个例子展示了如何提高代码性能通过执行一个图形处理单元(GPU)。执行GPU可以提高性能:
代码是计算量大,计算时间大大超过传输数据所花费的时间与GPU内存。
工作流程与使用功能
gpuArray
(并行计算工具箱)万博1manbetx支持和大阵输入。
GPU在编写代码,代码已经开始执行一个CPU。向量化通常是GPU上实现高绩效的关键。将代码转换为使用功能支持GPU数组参数和输入数据转移到GPU。万博1manbetx更多信息关于MATLAB函数与GPU数组输入,明白了运行在GPU MATLAB函数(并行计算工具箱)。
许多功能在统计和机器学习工具箱™自动执行一个GPU当你使用GPU数组输入数据。例如,您可以创建一个概率分布对象GPU,输出是一个GPU数组。
pd = fitdist (gpuArray (x)“正常”)
使用GPU需要并行计算工具箱™和支持GPU设备。万博1manbetx支持设备的信息,请参阅万博1manbetxGPU计算的需求(并行计算工具箱)。的完整列表统计和机器学习工具箱™函数接受GPU数组,明白了功能然后,在左侧导航栏中,滚动到扩展功能部分和选择GPU数组。
检查GPU的属性
您可以查询并选择你的GPU设备使用gpuDevice
函数。如果你有多个gpu,您可以检查所有gpu的性能检测到您的系统使用gpuDeviceTable
函数。然后,您可以选择一个特定的GPU single-GPU执行使用指数(gpuDevice(索引)
)。
D = gpuDevice
D = CUDADevice属性:名称:“泰坦V”指数:1 ComputeCapability:“7.0”SupportsDouble: 1 DriverVersi万博1manbetxon: 11.2000 ToolkitVersion: 11.2000 MaxThreadsPerBlock: 1024 MaxShmemPerBlock: 49152 (49.15 KB) MaxThreadBlockSize: [1024 1024 64] MaxGridSize: [2.1475 e + 09年65535 65535]SIMDWidth: 32 TotalMemory: 12652838912 (12.65 GB) AvailableMemory: 12096045056 (12.10 GB) MultiprocessorCount: 80 ClockRateKHz: 1455000 ComputeMode:“违约”GPUOverlapsTransfers: 1 KernelExecutionTimeout: 0 CanMapHostMemory: 1 DeviceSupported: 1 DeviceAvailable: 1 DeviceSelected: 1
在GPU执行函数
探索使用描述性统计数据分布在GPU。
正态分布随机数的生成一个数据集在GPU上。
dist = randn (6 e4, 6 e3,“gpuArray”);
确定是否经销
是一个GPU数组。
TF = isgpuarray(经销)
TF =逻辑1
与GPU执行一个函数数组输入参数。例如,计算每一列的样本偏态经销
。因为经销
GPU数组,是吗偏态
函数执行在GPU GPU的数组,并返回结果。
斜=偏态(经销);
验证输出斜
是一个GPU数组。
TF = isgpuarray(斜)
TF =逻辑1
评估的GPU加速执行
评价函数在GPU执行时间,比较性能与执行CPU。
比较时间执行代码在CPU和GPU可用于确定适当的执行环境。例如,如果你想计算从样本描述性统计数据,考虑到执行时间和数据传输时间评估整体性能是很重要的。如果一个函数数组GPU的支持,随着观察的数量增加,通常在万博1manbetxGPU计算相比,提高了CPU。
测量函数运行时在几秒钟内被使用gputimeit
(并行计算工具箱)函数。gputimeit
比时间
使用GPU的函数,因为它确保操作完成和补偿开销。
斜= @()偏态(经销);t = gputimeit(斜)
t = 0.2458
评估GPU和CPU之间的性能差异通过独立测量CPU执行时间。在这种情况下,代码的执行速度更快的GPU比CPU。
代码在GPU的性能严重依赖于所使用的GPU。有关测量和提高GPU性能的额外信息,明白了测量和提高GPU性能(并行计算工具箱)。
单精度在GPU上
你可以提高你的代码的性能通过计算在单精度而不是双精度。
确定的执行时间偏态
使用一个输入参数的函数经销
数据集在单精度。
dist_single =单(经销);skew_single = @()偏态(dist_single);t_single = gputimeit (skew_single)
t_single = 0.0503
在这种情况下,代码的执行速度比单精度数据与双精度数据执行。
性能改进是依赖于GPU卡和核心的总数。更多信息关于使用单精度GPU,明白了测量和提高GPU性能(并行计算工具箱)。
降维在GPU和模型拟合
在GPU实现降维与分类工作流程。
等功能主成分分析
和fitcensemble
可以一起使用来训练一个机器学习模型。
的
主成分分析
(主成分分析)函数降低维度的数据用一套新的取代一些相关变量的变量是原始变量的线性组合。的
fitcensemble
功能符合许多分类学习者形成一个整体模型,可以比一个学习者做出更好的预测。
函数是计算密集型和使用GPU可以显著加速。
例如,考虑一下humanactivity
数据集,数据集包含24075 5观察物理人类活动:坐、站立、行走、跑步、和跳舞。每个观察60特性提取加速度数据衡量智能手机加速计传感器。数据集包含以下变量:
actid
-响应向量包含活动id的整数:1,2,3,4,5代表坐着,站着,散步、跑步、和跳舞actnames
——活动名称对应的整数活动id的壮举
24075年60 -特征矩阵的特征观察featlabels
60 -标签的功能
负载humanactivity
使用90%的观察来训练模型,将人类活动的五种类型,并使用10%的观察来验证训练模型。指定一个抵抗10%使用的测试集cvpartition
。
分区= cvpartition (actid,“坚持”,0.10);trainingInds =培训(分区);%训练集的指标testInds =测试(分区);%测试集的指标
训练和测试数据转移到GPU。
XTrain = gpuArray(壮举(trainingInds:));YTrain = gpuArray (actid (trainingInds));XTest = gpuArray(壮举(testInds:));欧美= gpuArray (actid (testInds));
找到训练数据集的主成分XTrain
。
[多项式系数,分数,~,~,解释说,μ)= pca (XTrain);
找到所需的组件数量解释至少99%的变异性。
idx =找到(cumsum(解释)> 99,1);
确定主成分得分表示X
在主成分空间。
XTrainPCA =分数(:,1:idx);
符合学习者的系综分类。
模板= templateTree (“MaxNumSplits”,20岁,“复制”,真正的);classificationEnsemble = fitcensemble (XTrainPCA YTrain,…“方法”,“AdaBoostM2”,…“NumLearningCycles”30岁的…“学习者”模板,…“LearnRate”,0.1,…“类名”,(1;2;3;4;5);
使用测试集训练模型,您需要将测试数据集通过训练得到的主成分分析数据集。
XTestPCA = (XTest-mu) *多项式系数(:1:idx);
评估的准确性和测试数据训练分类器。
classificationError =损失(classificationEnsemble XTestPCA、欧美);
转移到本地工作区
传输数据或从GPU模型属性的本地工作区使用一个函数,它不支持GPU数组。万博1manbetx
将GPU数组可以是昂贵的,通常是没有必要的,除非你需要使用结果不支持GPU数组的函数,或使用另一个工作区,GPU中的结果不可用。万博1manbetx
的收集
(并行计算工具箱)函数从GPU传输数据到本地工作区。收集经销
数据,然后确认数据不再是GPU数组。
dist =收集(经销);TF = isgpuarray(经销)
TF =逻辑0
的收集
机器学习模型的功能转移属性从GPU到本地工作区。收集classificationEnsemble
模型,然后确认以前GPU的模型属性数组,如X,不再GPU数组。
classificationEnsemble =收集(classificationEnsemble);TF = isgpuarray (classificationEnsemble.X)
TF =逻辑0
另请参阅
gpuArray
(并行计算工具箱)|gputimeit
(并行计算工具箱)|收集
(并行计算工具箱)
相关的话题
- 测量和提高GPU性能(并行计算工具箱)
- 运行在GPU MATLAB函数(并行计算工具箱)