繁体   English   中英

在工作中展示指令级并行性

[英]Demonstrating instruction level parallelism at work

我正试图在工作中显示指令级并行性。 我最初做的是使用python(愿意改变)并执行以下操作:

def test():
    for i in range(5000):
        j = 0
        k = 0
        l = 0

def test2():
    for i in range(5000):
        j = i * i
        k = j * 2
        l = k * i

if __name__=='__main__':
    from timeit import Timer
    t = Timer("test()", "from __main__ import test")
    print t.timeit()
    t2 = Timer("test2()", "from __main__ import test2")
    print t2.timeit()

然而,一位教授告诉我,这并没有演示ILP,而是显示了python解释器是否优化。

我可以做些什么来展示工作的ILP?

你的教授是对的。 我认为一个可接受的演示必须用汇编语言编写,或者最多用C / C ++编写,可能使用像MMX指令集这样的东西。

您的教授有可能是正确的 - 如果您能证明cpython实际上是在使用ILP来做到这一点,那么您可能会证明他是错的,但我认为这不值得。

另一方面,ILP是相当硬件限制的,并且很少(如果有的话)实际上由程序员明确地完成,所以如果你在C ++或ASM中做到了,你可以展示的最好的是编译器(或汇编程序)是优化。 我敢打赌,你写的片段是他正在寻找的东西,但他只是不同意你的语言。

就像上面的pjc50一样,我认为这实际上并不是ILP的一个可接受的例子,但它可能会削减它并使你的成绩正确。 如果你实际上并不只是考虑等级,也许这可能会有所帮助: http//developer.apple.com/hardwaredrivers/ve/software_pipelining.html

默认情况下,mingw不会添加任何优化。 所以我所做的是使用一些C代码,因为没有循环优化,它显示ILP工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM