分类目录归档:University Study

13th meeting

13th meeting

1. Graduate work and essay title:

2. Open document: background, content, mechanism, tech

3. Task book: title, original data, goal, content.

4. Translate an essay about 2000 English words, 5000 Chinese characters.

5. Data Single Para

744 0.173 0.110

3600 5.600 1.300

6. Which one is faster? A[m][n] or A[m*n]

7. Which one is better? a[i] = I; or a[i~4] = i~4;

At the beginning, task book

Title:

Original document and data:

Mechanism:

Work content:

今天工作想到的一些东西

记录一下。

数据图表的测定,可以有的选择

1.不同spe个数,测得同一数据量的运算时间。

2.相同spe个数,不同数据量的运算时间。

3.是否将原序列作为数据包发送的运算时间。用不同数据量。

4.不同spe调度方式,测得的运算时间

你觉得,
1.矩阵用二维数组存储,进行计算和访问。
2.矩阵用一维数组存储,进行计算和访问,在访问的时候变换角标,比如a(i,j)=a + i*width + j , 类似于a[i,j]。
这两个方法哪个快,还是一样快。

 

那:
for(i=0;i<N;i++)
a[i]=b[i];

for(i=0;i<N;i+=4){
a[i]=b[i];
a[i+1]=b[i+1];
a[i+2]=b[i+2];
a[i+3]=b[i+3];
}
你觉得哪个快?

12th meeting

昨天忘记写了,今天补上。

大家都开学啦,虽然我的学期也算是完了,但是好像没有丝毫放假的迹象啊,这一次的持续学习时间真长了,从去年9月就开始了,一直要到今年6月吧。

年终于过完了,心情也慢慢变好了,开始计划回家的事情。

这个月争取和他们到北海道去滑滑雪,然后看什么时候再去一趟东京,还有富士山。

扯远啦,继续说毕业设计的事情,首先说说昨天开的会。

我成功地实现了上次设计的那些东西,然后用大到3000的数据测试了,能够到1倍多的加速吧。

今天的最新成果,在比较好的情况下,能够到4倍加速,这是一个令人高兴的消息,因为我还没有进行太多的优化。

昨天从山口老师那里知道,并行计算不一定能够加速的,而且随着程序本身的运行时间长短变化,越长的程序,可能得到加速的可能越大。

一般情况下,4-5倍是比较理想的情况。最梦幻的情况是几个处理器,达到几倍加速,但是那是不可能的,因为还有一些系统延迟,数据传输等等。所以6个处理器,4-5倍应该是比较好的结果了吧。

加速方案主要有:

1.一次传输更多的需要计算的数据

2.spu一次计算更多可能的数据,也就是说减少创建和销毁context,thread的时间

3.加速SPU计算,利用一些向量化,这个还没有考虑到。

现在已经实现的和还可以改进的:

1.一次传输最大可能的数据,但是我在想,应该是可以传输和传回不同量的,这样的话,传过去只需要传初始值就行,不需要将全部的数组传过去。

2.减少创建和销毁次数,现在已经减少到了最小,也就是6次。接下来要做的,是进行一些动态的优化调度,这个继续思考吧。

3.也就是向量化,这个是从前没有遇到过的。

今天加速的心得:减少线程创建,利用多线程的同步和互斥机制,防止死锁。昨天就是死锁了好多,晕。

然后传输是不是除了最简单的mfc_get put,还有更好点的。比如什么DMA双缓冲之类的。

继续努力吧,看见了曙光,哈哈~  论文?!

11th meeting

This week, I realised the waiting mechanism as I wrote last week. And ran on CELL BE machine.

I choosed the 8*8 data and devided it into 4 blocks. Single execute time is about 0.005s and the parallel time is about 0.010s. It means I still have a lot of work to do.

Go through the code I wrote again, I find out a lot of “for” and replacement, which may cause the delay of the execution.

继续阅读

10th meeting

1. First, analyze the algorithm parts and step, ex: point of interest algorithm consist of five parts, we divide it into 9 steps.

2. Program the spe, each spe can do the whole job, depends on the worknum sent to spe. Ex: the single CPU can do as in x86 model.

3. Define the partition and size of work. Ex: here we part the work into 8, so 8*9 steps need to be worked.

继续阅读

我的大学影像记录 — 大三

      就像大二结束的时候说的一样,整个大三学年,我的生活,全部都映射在学生会里面了。但是还好,我还能忙里偷闲,做了一些自己喜欢的事情。

      故事的开始,从我们迎接08级新生开始,从我们被迎,到我们迎新生,这是一个轮回,挺感慨的。

 1

继续阅读

8th week summary and 9th week meeting

      根据上周开会之后,写了一个并行等待方案,基本上可行,就是不知道有没有类似的东西,或者已经有人做过了。关于那个wave front algorithm,我也仔细阅读了一些论文,有人对他进行了优化,然后我也做了一些改进。

      和山口老师的讨论中,我了解到其实我们是需要一个dynamic的调度,所以就不再存在什么static的优化了,对于所有的算法,都可以用我们的方法来进行动态调度。可能在某些程度上,没有对某一算法单独的加速要好,但是从大体上讲,更加方便和简单。在前面的日志中,已经写了一些关于动态调度的问题,这里就不再继续讨论。

      这周把这个动态调度算法基本实现了一个模拟,就是按照设计,可以相互传递信息,传递数据,PPU作为总调度,为每一个SPU开一个线程,来完成相应的任务。同时,我还学习了harris interest point算法,实现了角点检测功能,如果以后需要将这个作为benchmark的话,可以直接拆分程序,进行并行的计算。

      今天需要讨论的几个问题:

1.应该是所有SPU运行的代码都一样,只是根据传来的信息不同和接收的参数不同,调用的函数不同,得到的结果也不同。

2.数据量的划分,比如一个100*100的图像矩阵,怎么划分才比较好,因为如果化成100个10*10,那么边角问题的处理。

3.实际操作,和benchmark的实现,因为以前没有做过类似东西。

4.是不是要选择这个harris interest point算法,还是用那个wave front的比较好表现。

其他问题:

1.新的中国学生?

2.3月份的假期怎么安排。

 

                                                                             2010-2-9  Gu

Wavefront algorithm Optimization

接触到了一种新的依赖解决算法问题,英文叫做wavefront algorithm,中文好像叫波前算法吧。大体思路是,对于一个X*Y数组结构的数据,当运算依赖关系是从西北角开始运算,直到覆盖所有的表项,得到最终结果的时候。每一个运算单元,都必须依赖其西,西北和北边相邻的数据才能开始运算时,其运算方式如同水波一样,逐层前进。

如下图模拟,数字增长,表示随着时间推移,运算的顺序:从1-》2-》3-》 -》7结束,完成整个数据的运算。

1 2 3 4
2 3 4 5
3 4 5 6
4 5 6 7

继续阅读