CUDA深入浅出学习小结(1)

July 31st, 2010 myrice No comments

平方和的并行计算
1. 直接分别使用CPU平方和, 一个Thread 一个Block的计算平方然后CPU计算平方和, 在10^7数据面前, CPU表示毫无压力(0cycle), 9600MGS惨不忍睹(多少cycles没记下)
2. 使用256个Threads后, GPU效率大大提升
3. 使用32blocks后, GPU再次提升效率
4. 此时已经有 32*256 = 8192 个线程在跑, 利用CPU计算和的时间被忽略造成不准确, 把计算和运算放在GPU中, 出现小幅性能下降
5. 计算sum可以并行化, 用树状图表示如下:

大意为第一次把1回到0上, 3加到2上, 因为所有线程都是要发起的, 对于判断哪些线程要执行加法很重要, 一个很简单想法是:

1
2
3
4
5
6
7
8
9
__syncthreads();  //make sure all threads are complete
extern __shared__ share[];
int offset=1
while( offset < THREADNUM ) //THREADNUM is the number of threads per block
{
    if ( threadIdx.x%(offset+offset)==0 )
        share[threadIdx.x] += share[threadIdx.x+offset];
    offset += offset
}

然而时间并没有减少, 发现取模运算太费神, 在深入浅出书上如此写

1
2
3
4
5
6
7
8
9
10
    __syncthreads(); 
    int offset = 1, mask = 1;
    while(offset < THREAD_NUM) { 
        if((tid & mask) == 0) {  // tid = threadIdx.x
            shared[tid] += shared[tid + offset]; 
        } 
        offset += offset; 
        mask = offset + mask; 
        __syncthreads(); 
    }

其中mask在里面的古怪作用正好使得結果如此…还是不太理解= =
6. 据说这方法会有问题..他说后面再说, 而采用另一种更简单方法, 大意是前半与后半相加不断递归…

1
2
3
4
5
6
7
8
    offset = THREAD_NUM >> 1; 
    while(offset > 0) { 
        if(tid < offset) {  //tid = threadIdx.x
            shared[tid] += shared[tid + offset]; 
        } 
        offset >>= 1; 
        __syncthreads(); 
    }

现在看求矩阵乘法了, cudaMemcpy 与 cudaMemcpy2D 区别还是没看懂… C语言2维数组与1维数组不是一样的…吗… int a[N*M] == int a[N][M] 那用cudaMemcpy 一下复制 N*M 不就得了…谁知道为何…

终于考完了

June 28th, 2010 myrice 6 comments

终于考完了,我却并没有什么喜悦,感觉全身像被抽空了一样,空虚无聊。。

是因为看到身边的一个个全都成双成对了吗?

还是怕?
怕回归到那个懒散的假期,有时真的很矛盾,忙时候想闲,而真正闲得时候却真的闲得蛋疼,我设法使自己忙起来。。

这学期感觉什么都没做,就考了个GRE,真是浪费时间浪费精力的活。。还好有 “大美人, 善解人意, 活泼可爱, 对我很好, 一点儿都不胖, 特别不爱学习,总睡觉,很聪明, 大好人!”[囧] 的姐姐和我一起考,才渡过了那段想死又美好的时光。 然后就华丽丽地把她送给了别人,咔咔~

课内就萎了。。超级萎,这学期成绩肯定很难看。。。。

[囧]: 引号里不是我写的不是我写的真不是我写的。。

Categories: Other Tags:

虫儿飞

June 28th, 2010 myrice 2 comments


黑黑的天空低垂
亮亮的繁星相随
虫儿飞虫儿飞
你在思念谁

天上的星星流泪
地上的玫瑰枯萎
冷风吹冷风吹
只要有你陪

虫儿飞花儿睡
一双又一对才美
不怕天黑只怕心碎
不管累不累
也不管东南西北

虽然是童谣,但突然发现这歌有种 令人愉悦的忧伤 (Agreeable Melancholy)

Categories: Other Tags:

吮指原味鸡与实事求是石

March 9th, 2010 myrice 7 comments

KFC吮指原味鸡

人大实事求是石

人大东门立了一块石,上面题字“實事求是”。昨天半夜时分, 看到@___matrix转发的 “真相:“突然发现实事求是石的形状像KFC吮指原味鸡。”(via人人网)”

开始我看到的是,实事求是就像原味鸡块一样。于是感觉这个比喻太形象了,因为实事求是不是一件容易的事,就如那原味鸡块一样,即难看又难吃,每次吃全家桶省下的就是它。可是呢,另一方面,它却是最管饱的。

后来经@___matrix提示才发现,她说的是人大的”实事求是石”(>_<)。不过仔细加回忆发现还真是,今天特意找了图对比一下,何止是像呵!

(插播:累了,本来想写成Thinking的,后来算了,写点搞的吧)

洗完回来继续,关于这块石由来我不知,但是人大的领导实在是太有先见之明了,他们预料到了不久,必将有个快餐店,他们名字叫肯德基,必将有个产品,他们名字叫原味吮指鸡,用这块石头的形状类似原味鸡教导一代又一代吃过原味鸡知道那种充实与乏味的同学们:做学问,就要老老实实,可能开始觉得很新鲜,就像吃下第一口,会有种感觉,不错,当吃下越来越多的口时,突然发现,这鸡块怎么这么乏味啊……这种感觉就像搞研究,只有死心到底吃下去每一口的人才能体会到吃饭的那种饱感那种充实。如果饥饿如狼,就如对知识的渴望,才能体会原味鸡的真实品味。什么叫实事求是,从吃原味鸡的感受可以知道,那个过程由新鲜到乏味,再到充实。像我这样吃原味鸡这种只能感觉到乏味这一境界的,在学习也是如此(TOT)。OTZ实事求是石,下次我要去膜拜下。

还有一个疑惑,会不会下去一见到这块石头就想到一个非常大的吮指原味鸡呢?>_<

好玩的小游戏推荐《麦克斯与魔法标记》(Max and the Magic Marker)

February 9th, 2010 myrice 11 comments

2D, 类蜡笔物理学. 物理引擎真是发展了. 提示下, 把Extra达到有神奇效果出现.

更多图片请见:

http://www.verycd.com/topics/2798966/

Verycd上评论说有修改IE主页的情况.

点击这里下载(非VeryCD解压即玩版)

找到一些真正属于自己的东西

February 5th, 2010 myrice 4 comments

图:摘自Sohu.com

<神话>这个电视剧终于在几天不懈努力下看完了, 部分3X速度. 因为CCAV也在放这个, 实在是惊奇. 总感觉审查那帮人都顽固不化, 对于这种带有”神秘”, 传播”迷信” 思想(仙剑是这么被删掉2集的)的电视居然没删减(50集整,很难得)全放出来了, 成龙果然不是盖的.

在Xunlei上看了前面的部分, 我很惊奇发现支持赵高的却很多.难道厚黑思想已经是国人基本思想. 虽然厚黑是否才可成事值得怀疑, 但也要适可而止. 赵高是很实在, 但是我却一直感觉他忘记了某些东西. 而小川这种人是不存在的, 一种美好的角色幻想而已.

一个人活2000年又怎样, 痛苦的只有钱权功利, 而责任与自由也是束缚人的枷锁. 赵高, 钱权功利; 小川在责任与自由之间挣扎. 真正属于自己的东西也只有自己的经验了, 别人抢不去的. 所以, 去体验吧, 体验跌宕起伏的生活, 去体验追求奋斗的快感, 去体验哄哄烈烈的爱情. 这些, 体验过, 结果并不重要, 那应该是理所当然的. 过程与结果, 可能只有一个结果,所有的过程都通向那个结果, 值得留恋的也只有过程中的滋味.

Twitter上看过有趣的问题:

@gaojiamin: 初三时看过,最记得里面那句“是不是选择任何一个方向,都会游向同一个宿命呢?” RT @chenxiaoming: RT @faydao: 你以为你有很多路可以选择,但是在你四周有很多看不见的墙,其实你只有一条路可以走——《悟空传》

还是我觉得很有用的一句话(摘自: Steve Jobs在Stanford 2005年毕业典礼上的演讲)

Don’t be trapped by dogma

And most important, have the courage to follow your heart and intuition.

嗯. Follow heart and intuition.


My New Blog!

January 27th, 2010 myrice 11 comments

Very cool!

Categories: Other Tags: , ,