2014-01-11 51 views
0

更新澄清:集群调度:描述调度推测线程对簇

T1被调度对一个集群并依次触摸存储器位置1,2,3,4,5,然后返回到1。

T2被同时安排到同一个集群并依次触及存储器位置6,2,3,然后尝试写入1,同时T1仍然依赖于存储器位置1而成为之前的状态。

我猜在T2写入内存位置1之前,T2应该等待或者等待执行到集群上,直到T1完成。

是否有可能确定哪些内存位置T1需要一致,如内存位置1,并将此信息存储在表中。这样,在T2执行到集群之前,T2可以检查表中是否需要写入内存位置,看到T1取决于内存位置1,因此延迟T2执行到集群?

类似于下面的PDF中的3.2章节所示。

感谢您的任何帮助。


我对我们如何可以采取一个想法和改进它研究了计算机科学类的话题。我选择的主题是集群调度。

我一直在读报纸,如http://apt.cs.man.ac.uk/people/yiapanip/taco13yiapanis.pdf

它好像当线程调度,检查与其他线程访问同一存储位置冲突,发生在一个线程写入并致力于内存后。有没有办法事先确定一个线程想要提交?

是否有那里的信息(关键字知道),以保持线程正在写入的内存位置表,以便后续线程可以安排到群集后,只检查正在写入的内存位置执行线程?如果存在对内存位置的写入,则后续线程需要该线程停止,但如果内存位置未被写入,因此不会在表中,则后续线程可能被调度到该群集。

感谢您的任何帮助。

+0

我很乐意提供帮助,但我认为你需要澄清你的话题并思考一下:1)我不完全清楚你的意思是否有'预先确定线程想要提交的方法?”。 2)集群调度,这是一种技术,还是一个问题领域[我在猜测中工作,而不是主要在调度中]? 3)听起来你想知道未执行的线程的写入集合,以便最小化调度中的冲突......在某些情况下,这可能*近似*,但严格来说需要看到未来! –

+0

更新了澄清,谢谢。 – user1461119

+0

您可能需要查看软件事务内存:http://en.wikipedia.org/wiki/Software_transactional_memory –

回答

0

尽管如此,您还是不能100%确切地意识到集群的含义,但这里是基于共享内存机器和简单的基于软件的TLS系统*的答案。


要选择延迟T2的执行,你需要知道的读取和写入设置T2,并比较它们在飞行中集所有执行线程。

在一般情况下,这是不可能的,因为读取和写入集可以是数据依赖:

a[i] = b[c[i]] 

话虽如此,有可能用一个静态近似成功,或一个使用分析。


尽可能灵感的一些建议,以及东西,你会需要牢记

  • 记住:顺序存取事项:RAW,RAR,WAR。

  • 一个有趣的引证为你追踪:

    Arnamoy查里亚。 2013年。输入重要吗?使用数据依赖性分析来评估BlueGene/Q中的线程级别推测。出现在并行体系结构和编译技术(PACT '13)

    这表明你也许可以逃脱有关输入的依赖最小的担心。

*软件TLS,因为这整个对话将在hardware speculation platform.上讨论。

+0

谢谢马修!正是我在找什么。 – user1461119