19th meeting

这次开会主要是演示了一下evaluation的东西,了解到需要进行一些更科学的评测。

比如mu取不同值,sigma趋向于零的时候,也就是说,当所有的任务需要时间都相似的时候,动静态调度的对比。

另外取不同的MU值,SIGMA不同的时候,当irregular,大小变化的时候,加速比的变化。

这几天做完了,基本上就是这样了。

论文正在进行中。中英文并行,需要把自己做的东西写明白一点。

还有两个星期,事情还是挺多的,完成论文的同时,处理好回去前的一些事情。

另外搞一搞GPU,写一个概述出来。交待好需要做的任务~

OVER~  加油!

16th meeting

今天是第十六次开会啦,想想都进行了这么久了。今天主要讲了下面几个事情:

1.给山口老师展示了一些测试数据的结果,大概在n~2情况下,加速比有2-3倍,n~3情况下,能到4.5-5.5倍,所以说还是可以的。

2.现在的程序可以更加灵活地选择继续的方式,1-8块。

继续阅读“16th meeting”

A dynamic synchronization mechanism and its implementation on Cell Broadband Engine.

Title: A dynamic synchronization mechanism and its implementation on Cell Broadband Engine.

题目:一种并行动态调度方法及其在Cell/BE上的实现

Background: Nowadays, multicore on a chip is a common trend for microprocessor architecture. The successful example is a Cell Broadband Engine which is designed as a main engine for the game machine. As for the calculation of computer graphics on the multicore processors, the whole tasks can be divided and allocated statically to each core and the synchronization of each task is done statically, since the execution time are estimated beforehand. The cost performance of the multicore like Cell Broadband Engine is very high; so many researchers are working on how to apply multicore processors to more general application fields. In general, if a big task is divided into many subtasks, the execution time of each subtask cannot be estimated beforehand, so the dynamic task allocation and dynamic synchronization are needed for the efficient execution of parallel tasks. The data-driven principle and scheme is very simple and formal method for this dynamic synchronization mechanism. So, this research aims to find and evaluate the effectiveness of dynamic synchronization mechanism on the Cell Broadband Engine.

背景:现在,单芯片多核处理器已经成为了一种多核结构的趋势。一个成功的案例就是IBM公司的Cell/BE处理器,它是为游戏专用的引擎。因为在多核处理中,计算机图形的计算可以被划分为工作块,并且执行时间可以预知,所以可以静态地分配到不同的计算核中,进行并行计算和同步。因此,人们希望将这种Cell/BE多核处理器的强大的计算功能应用到其他的通用计算领域。但是一般情况下,如果一个任务被分成不同的子任务块,他们各自执行的时间和结果是不能够被预知的,所以需要一种动态的任务调度和同步方案,来解决这个问题。我们的研究目标是为Cell/BE找到一种有效的动态调度和同步方案,并且对他进行评价。

继续阅读“A dynamic synchronization mechanism and its implementation on Cell Broadband Engine.”

14,15th meeting

动态调度基本思想:

一般的并行处理机,都有一个控制单元和若干个执行单元,以我们要做的Cell/BE为例,由一个控制PPE和8个数据处理SPE组成,我们设计的他们之间的工作关系。

PPE工作基本流程见图2:

继续阅读“14,15th meeting”

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:

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.

继续阅读“11th meeting”

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.

继续阅读“10th meeting”

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