楼主: 图腾部落

6月28日更新--“如何并行化我的应用”方案有奖征集活动--获奖名单公布

[复制链接]
论坛徽章:
20
2010新春纪念徽章
日期:2010-03-01 11:20:002012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:25版主1段
日期:2012-05-15 15:24:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:12:25
11#
发表于 2010-5-14 10:57 | 只看该作者
如果没有其他人发表新的或什么的...,那恭喜5L,1,2,3等将都是你的了,哈哈

使用道具 举报

回复
论坛徽章:
19
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44版主1段
日期:2012-05-15 15:24:112012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:252011新春纪念徽章
日期:2011-02-18 11:42:502011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:33
12#
 楼主| 发表于 2010-5-14 12:50 | 只看该作者
原帖由 cyrosly 于 2010-5-14 10:57 发表
如果没有其他人发表新的或什么的...,那恭喜5L,1,2,3等将都是你的了,哈哈


修宇,你也别打哈哈,不要跟我说你对奖品不感兴趣哦。这次是现金奖励不是物品。你就不写点,斑竹带带头嘛。

使用道具 举报

回复
论坛徽章:
1
2011新春纪念徽章
日期:2011-02-18 11:43:33
13#
发表于 2010-5-19 18:05 | 只看该作者

回复 #6 yyfn风辰 的帖子

不好意思,我没说清楚,我想实现的只是OpenMP里面最有价值的那一部分思想,并非它所有的细节,否则肯定不是我能力所及的。
而我所认为它最有价值的那部分思想是:程序的执行过程是并行还是串行只要通过简单的参数设置就可实现。

本人十分喜欢不同观点的激烈的理性的碰撞:)

[ 本帖最后由 yu_single 于 2010-5-19 18:10 编辑 ]

使用道具 举报

回复
论坛徽章:
3
2010新春纪念徽章
日期:2010-03-01 11:19:50ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:34
14#
发表于 2010-5-24 14:33 | 只看该作者

K均值算法基于CUDA环境的实现

首先对活动表示支持一下 下面呢我将和大家分享一下K均值算法基于CUDA环境的实现
聚类分析的目的是将若干特征相似的特征模式划分到一个集合,每个集合的特征模式之间按照某种度量来衡量相似程度,使得同一个集合内的数据对象具有较高的相似度,而不同集合中的数据对象间的相似度尽可能小,数据对象间特性差异的大小通常是借助于某一距离空间中的距离概念来表示的。在现有的聚类算法中, K-均值算法以其简单和高效占有重要地位,因而大量应用于数据挖掘中。

其计算流程如下:
1.        如果是第一次循环,随机选择K个元素作为质心;否则使用K个分类的平均值作为质心。
2.        计算n个数据离各个分类的距离,将当前数据作为离其最近的分类的元素
3.        计算各分类的的均值和方差
4.        如果当前各个分类方差,如果前后步最大方差差别满足容忍限度,算法完成,退出;否则,返回1,进行下一次循环。

首先,我们对这个问题进行分析,进行算法GPU化的第一步不是拿起键盘就敲,而是分析当前算法是否满足GPU计算的要求,从算法步骤可以看出,该算法是数据并行,虽然各数据之间有些交互,但是都能够解决。此外数据挖掘领域的算法几乎都要求是大数据量的,因此,初步可得出此算法可以GPU化。
其次,在我们得出算法可以GPU化结论后,下一步应当是具体的设计了,设计首先应当是算法和数据结构设计。从算法可以看出,主要运算有求平均值、方差,都可以使用归约解决。其后就是数据结构设计了。由于涉及到数据是分类的元素这个问题,其有两种实现方式,一种是为每一分类分配一数组,存储该分类的元素;另一种是为每个元素设立一个域,来表示元素属于那个分类。CUDA要求数据组织是有序的,因此表面上看前一种方案比较好,但是由于我们无法提前知道属于每一分类的元素数目,因此数组只能开得比较大,当然我们可以实现类似STL中的向量,但是这又带来其它开销。一般来说GPU的设备存储器容量不多,而数据量往往又比较大,再考虑到实现的难度,因此我们采用后一种方案。此时数据结构设计如下:

  1. //T stand for attribute type,size stand for attribute number;
  2. template<typename T, unsigned int size = 3> data{
  3. T x[size];//attribute
  4. }
  5. struct dataSet{
  6.         unsigned int num;//data size
  7.         data *attributes;// size == num
  8.         unsigned int *belongTo;//specify data belong to which class;size == num

复制代码


算法要求计算距离,但是并无必要,我们计算距离的平方就行了,这样节省一次求方根的计算量。代码如下:

  1. __host__ __device__ int distance2(data<int> one, data<int> two, unsigned int size = 3){
  2.         Int dis2 = 0;//must be more explicit
  3.         int dis;
  4. #pragma unroll 3
  5. for(int I = 0; I < size; i++){
  6.                 dis = one.x[i] – two.x[i];
  7.                 dis2 += dis*dis;
  8. }

  9. return dis2;
  10. }
复制代码


我们存放分类的平均值,在计算每个数据属于那个分类时,理论上是有分支的,但是可以消除。分类之后就要计算各分类的平均值,可在每个block中分配共享存储器,以保存各个分类和及各分类元素数量,此时要用到共享存储器的原子函数,因此元素属性类型只能采用整形,此时最多可处理2000个分类,但是如果是2.0的设备,可处理的分类数会多,也可以处理浮点型属性,一方面是因为共享存储器量多了且支持浮点原子函数,另一方面此时可将分类元素数量声明为ushort而没有存储体冲突。然后再另起一个kernel 就可得到各分类的平均值。然后要做的就是求各分类的方差了。此时可将分类平均值存放于共享存储器中,然后遍历各元素,并将求得的分类方差和存放在共享存储器中,再另起一内核,该内核只有一个块,用于归约上一内核得到的部分方差和。至此整个算法基本完成。
        如果要在计算能力2.0以下的设备上做K-均值算法,并使用浮点属性值的话,可以使用我在分析的时候的前一方案,此时最好实现CUDA环境的向量数据结构。由于要使用全局存储器的原子函数,由此可见其速度将不会很好。
        在intel至强5450 CPU上,GTX 295显卡上,一万个三维的信息,计算部分加速比在40以上。由于是个人玩乐的项目,因此并没有为了速度而进行极致的优化。

使用道具 举报

回复
论坛徽章:
21
2010新春纪念徽章
日期:2010-03-01 11:08:292012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:25版主3段
日期:2012-05-15 15:24:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:12:25
15#
发表于 2010-5-24 14:38 | 只看该作者

回复 #13 yu_single 的帖子

呵呵!是我当初的态度过于激烈了

使用道具 举报

回复
论坛徽章:
1
2011新春纪念徽章
日期:2011-02-18 11:43:33
16#
发表于 2010-5-25 17:48 | 只看该作者
关于用ACE和Loki库实现跨平台并行库的初步设计:http://space.itpub.net/?uid-7364 ... space-itemid-663714
欢迎拍砖。:)

使用道具 举报

回复
论坛徽章:
0
17#
发表于 2010-5-27 09:12 | 只看该作者
支持一下

使用道具 举报

回复
论坛徽章:
1
ITPUB9周年纪念徽章
日期:2010-10-08 09:31:21
18#
发表于 2010-5-27 10:54 | 只看该作者

回复 #16 yu_single 的帖子

使用道具 举报

回复
论坛徽章:
21
2010新春纪念徽章
日期:2010-03-01 11:08:292012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:25版主3段
日期:2012-05-15 15:24:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:12:25
19#
发表于 2010-5-27 11:12 | 只看该作者
原帖由 yu_single 于 2010-5-25 17:48 发表
关于用ACE和Loki库实现跨平台并行库的初步设计:http://space.itpub.net/?uid-7364 ... space-itemid-663714
欢迎拍砖。:)

支持!可以的话,我想向你请教一下,呵呵

使用道具 举报

回复
论坛徽章:
19
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44版主1段
日期:2012-05-15 15:24:112012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:252011新春纪念徽章
日期:2011-02-18 11:42:502011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:33
20#
 楼主| 发表于 2010-5-27 11:38 | 只看该作者

收到最新参赛作品--持续更新中

方案名称: 医学信号与图像处理算法中的并行化        
方案撰写人:  石丹         
所在单位:    四川大学医学影像实验室        
作品提交时间:2010年5月27日


[ 本帖最后由 图腾部落 于 2010-5-27 11:41 编辑 ]

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表