前一部分作了详细的描述,使我们的框架有了不同组件。在本节中,我们提出了如何在应用程序中可以使用这些组件。我们把这一部分分为三小节讨论,使用内核算法的实现,提供了框架的优化,如何把节点规模地应用到集群中。注意,只在必要的时候,应用程序的开发称为是R脚本在前端和内核的I/O功能。 A.算法
使用该框架,我们已经开发了不同的数据挖掘算法。由于空间所给有限,只有短暂的三人的描述:k-均值[ 27 ],模糊k-均值[ 28 ],[ 29 ]和PCA [ 30 ],[ 31 ],[ 32 ],[ 33 ]。k-均值是一种广泛使用的聚类算法,它试图通过最小化平方的方法把误差缩小在每个分区的输入数据集K分区内。Kmeans算法可以使用距离计算实现,k-均值算法的集群更新和直方图内核在表一的变化称为二分Kmeans,他提出也可以类似实现。模糊k-均值与它的区别在于,它允许每个记录集有一个隶属度为k-均值算法中每个分区数据的超集。主成分分析(PCA)的目的是找到所输入的具有代表性的主成分的数据集,可以实现使用的特征值和特征向量的内核。
B. 使用框架调度优化
除了以上提到的内核,我们的框
架提供了大量的优化,可以提高应用程序的加速比。在这里,我们提出一对夫妇的优化。请注意,这些优化是目前具体的硬件而引入了新的硬件设备,为特定的硬件很容易集成在现有新优化的系统中。
1)混合实现:混合实现是指同时利用两个GPU和CPU的能力。考虑这样一种情况,当我们有一个GPU和多核CPU的系统。这将是可取的GPU和CPU内核分配任务之间的情况。由于GPU需要将数据分发等,所以为了工作保持平衡,其计算能力显著高于CPU。我们的框架提供了运行在混合模式下的应用功能。在这种模式下,数据将在分布式节点和相应的CPU或GPU内核之间展开。图5显示了调用混合核函数会分解成使用框架的特定于体系结构的内核调用。
2)多核优化:优化是针对CUDA实现的。我们注意到,数据挖掘过程中,大量的内核,它并不总是能够适应整个数据在GPU存储器的。在第iii-b2提到,这将需要使用CUDA流下的数据,也是从主机内存复制到设备内存的开销。我们还注意到,在我们的实验中,内核的执行时间是小于需要复制数据到较小的瓷砖GPU存储器中的时间的。这给了我们一个独特的机会,就是利用时间差。在实际情况中,许多不同的数据挖掘算法是用在一个给定的数据集。我们建议从不同的数据上的运行内核的应用尽可能在存储装置中,以减少内存复制的开销。图6显示了这背后的优化思想。举例,三个不同的应用程序的执行如图所示。每个存储器传送电话放在CUDA流中,一个内核调用每个应用程序分配在那个特定的流,如图所示。这可以被看作是一个单一的内核的执行时间,其联合执行时间,接近相同的内核运行时间。
内核执行装置和主机内存拷贝可以被用来预测应用软件可以交错的时间。
V实验结果
在本节中,我们评估应用框架的效果以及各种提出的优化发展的方案。在硬件方面,我们有4个节点的集群。每个节点上的主机CPU是英特尔四核2.4 GHz处理器,有4 GB的内存。每个节点上的协处理器Nvidia的GeForce 8800GT的图形处理单元,有112处理器和512 MB内存。在GPU的线程块网格中,每个维度最大为65535块,每块最多512个线程。每个处理器共享内存16 kb,可以同时运行8个线程块。每个节点有两个GPU。软件设置包括R 2.8.0版本。MPICH2 1.2.1版本用于提供MPI通信。提供多种功能的并行pnetcdf库1.2版的应用。内核的GPU使用CUDA编译器编译驱动程序,是NVCC版本2。整个软件框架是采用版本4.4.2的gcc编译。 A 应用绩效
图7显示了20集群和大小不同的输入数据k-均值和模糊k-均值集,从10K到1000000记录的聚类算法的性能。我们注意到,随着数据规模的增加,在加速的初步改善下,最终达到饱和,在40左右的模糊k-均值k-均值
和为70。两种算法之间的性能差异的发生是因为,需要更大的工作量和更高的加速计算密集型的隶属度的计算。由于空间有限,我们不能为其他应用程序的性能图表。然而,和一个单一的CPU的实现相比,基本的统计函数得到了一个加速到30倍和PCA取得的加速比为35×的订单。
图8显示了较大的数据集的性能
结果,整个数据集不适合GPU存储器。数据被划分成更小的瓷砖尺寸的768k来记录,CUDA流使用的号码是4。我们注意到,在这种情况下,和有些加速较小的相比,在图7中得到k-均值。这可以归因于两个原因。首先,由于数据传输时间(CPU和GPU之间的)是不可忽略的,复制数据的所有迭代产生额外的开销降低的性能有所提升。第二,由于内核相对于内存传输时间开销少,这也不能排除使用CUDA流的可能性。因此,相比于加速饱和约25,在图7中的加速比为40。
B.调度优化的影响
在图9中,我们显示的性能增益可用不同的内核实现。作为一个例子,我们考虑不同数量的集群k-均值(这是由于不同的应用对象参数)来实现。
结果表明,获得2到7的应用程序相关的数据的大小范围,从4000000到20000000的记录了一种单一的应用加速。我们注意到,随着越来越多的交错内核加速转移到存储装置的数据量相同。加速增加1.6倍的两个应用程序在2x的应用程序的数量增加超过4。应该指出的是,和一个应用程序的整体性能的提高相比,单线程CPU实现了加速比2倍到50倍的增长。饱和度是由于内存拷贝的时间,完全被内核的执行时间所占,所以任何进一步的内核不会导致性能增益。
C.可扩展性
我们提供了我们的框架,通过缩放上述应用于同构和异构机群的可扩展性基础设施的性能进行评价。我们的异构环境由GPU和CPU组成。图10显示了不同比例的CPU和GPU之间的数据分布k-均值聚类算法的执行时间。其中调用了CPU和GPU的内核,内核优化大型数据集的距离的计算和聚类更新。我们不同的数据分布率从20到34,注意我们达到最佳性能的比为29左右。这种异构的实现的性能增益约9%相比,GPU只能实现结
果。图11显示k-均值算法在GPU中,使用我们的框架的一个同构集群的可扩展性。该框架实现7.2x GPU加速时,增加从1到8的数字。
VI结论和未来的工作
在本文中,我们提出了开发和利用数据挖掘算法的可扩展框架。我们的框架,跨越不同的技术,利用自己的能力。数据挖掘技术需要大量的计算和海量数据处理。提供一个可扩展的环境,我们提供了一个有效的界面来处理计算密集型任务以及并行I / O接口的读/写数据的优化。我们进一步描述的优化,可以使用该框架易于实现。我们介绍了多核优化的概念,从每个数据传输不同的应用程序的内核。我们还提出了一个异构的GP算法计算。结果表明,我们可以用我们的算法实U和CPU协同工作。在未来,其他的架构和数据挖掘的应用程序也可以很容易地集成。我们的框架容易地提供了灵活的集成,和新的内核和优化。它提供了一个图书馆(高度优化的)高性能内核中常用的数据挖掘现显着的加速。我们还提出,通过案例研究,怎样的框架可以用来编写可扩展的应用程序。
相关推荐: