k均值聚类算法的实现.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
k均值聚类算法的实现

浅谈模糊C均值聚类算法的并行化研究      1 模糊C均值聚类算法(FCM)   模糊C均值聚类算法[1]的基本思想是确定每个样本数据隶属于某个聚类的程度,把隶属程度相似的样本数据归为一个聚类。FCM把n个样本集合X={x1,x2,…,xn}分为c个模糊组,并且求每组的聚类中心Ci(i=1,2,…c),使得目标函数最小,该算法是优化目标函数的迭代过程。这个过程从一个随机的隶属度矩阵开始,确定聚类中心计算目标函数,通过迭代过程达到样本分类。   初始化:给定样本数n,聚类数c∈[2,n],模糊度m=2,迭代停止阈值   (4)如果目标函数的改变量小于?棕,停止算法,否者重复(2)直到改变量小于?棕。为了确保FMC得到一个最优解,要不断调整隶属度矩阵,需多次运行该算法。   2 多核技术与工具软件   2.1 Intel Parallel Amplifier高性能工具   Intel Parallel Amplifier是英特尔在2009年发布的高性能工具[2],界面设计友好,操作简单方便。开发人员只需要运行工具就可对串行程序进行分析,研究分析结果进行并行化设计,确保多核的完全利用。IPA(Intel Parallel Amplifier)有以下三种类型的性能分析。   (1)热点(Hotspot)分析:运行热点分析可收集到不同类型的数据,确定应用程序运行消耗的时间,以及识别出最耗时的函数。在执行程序时,IPA通过数据收集器定期采样,并在操作系统的协作下中断程序收集数据。它通过获取整个程序各个CPU核心的指令指针(IP)采样,计算出每个函数的运行时间,再用调用栈采样为程序创建调用关系树。   (2)并发性(Concurrency)分析:   (3)锁定和等待(Locks and Waits)分析:在前两种分析的基础上,运行锁定和等待分析,可获得更多的程序运行数据。   为了测试程序并行优化的效果,IPA提供了“比较结果(Compare Results)”的功能,用来比较串行程序和并行程序性能差别。   2.2 TBB线程构建模块   TBB线程构建模块(Intel Thread Building Blocks)是基于GPLv2开源的、用来实现并行语义的C++模板库[3]。TBB提供了高性能可扩展的算法,面向任务编程,支持任何ISO C++编译器,具有很好的可移植性。本文将Intel并行库TBB的tbb_block_rang2d和tbb_parallel_for配合使用,前者的作用是对一个二维的半开区间进行可递归的粒度划分;后者的作用可以实现负载均衡的并行执行固定数目独立循环迭代体。   2.3 OpenMP并行编程模型   OpenMP是为共享内存以及分布式共享内存设计的多线程并行编程应用接口,包含了一套编译语句以及一个函数库,是一个编译指令和库函数的集合[4]。OpenMP也可以用于多核处理器并行程序设计中。在OpenMP中线程的创建是通过编译指导语句实现的,本文采用sections和section命令。sections被称作工作分区编码,它定义了一个工作分区,然后由section将工作区划分成几个不同的工作段,每个工作段都由多核处理器的每个执行核并行执行。   3 C均值聚类算法的并行优化设计   3.1 基本流程   C均值聚类算法串行程序的并行化设计可分为以下几个阶段:首先用IPA高性能工具得到热点函数的花费时间和并行情况,分析串行程序的可并行性[5];然后运用TBB和OpenMP进行并行优化设计;最后使用IPA的Compare Results功能进行比较,测试并行程序的性能效果。基本流程如图1所示。   3.2 热点定位   通过“Hotspot”可以获得热点函数所花费的时间,调用栈信息可以得到它被不同函数调用花费的时间。IPA采集的数据为程序段花费的总时间、CPU运行的时间、CPU空闲时间、处理器的核数、执行程序的线程数等。找到热点函数后,打开源代码,分析哪些代码花费处理器时间最多。   3.3 并发性分析   Concurrency分析可以得到热点函数在执行过程中各个其他任务并行执行的情况,以及各个线程的任务分配情况。IPA并发性分析不仅包含热点采集的时间数据,更重要的是程序的并发状态。它用5种不同状态(Idle、Poor、Ok、Ideal、Over)表示并发性的情况。在多核平台下,理想的状态应该达到Ok以上,也就是说当热点函数运行时,其他线程同时工作在处理器上,这样可以提高多核资源的利用率。     3.4 串行程序优化   通过分析源代码,可以对串行程序进行如图2所示的并行优化。   (1)因为隶属度矩阵的归一化和样本矩阵的标准化没有数据相关性,所以可以利用OpenMP的工作分区功能在两个线程中同时执行运算,

文档评论(0)

wannian118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档