Демонстрация параллелизма на уровне обучения - PullRequest
1 голос
/ 04 августа 2010

Я пытаюсь показать параллелизм на уровне команд на работе. Первоначально я использовал 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?

Ответы [ 3 ]

3 голосов
/ 04 августа 2010

Ваш профессор прав. Я думаю, что приемлемая демонстрация должна быть написана на ассемблере или, самое большее, на C / C ++, возможно, с использованием чего-то вроде набора команд MMX.

1 голос
/ 06 августа 2010

Существует вероятность того, что ваш профессор может быть прав - вы можете доказать, что он неправ, если бы могли показать, что cpython на самом деле использует ILP для этого, но я не думаю, что оно того стоит.

С другой стороны, ILP довольно сильно зависит от аппаратного обеспечения и редко, если вообще когда-либо, фактически выполняется программистом явно, поэтому, если вы сделали это в C ++ или ASM, лучшее, что вы могли бы показать, это то, что компилятор (или ассемблер)оптимизировано.Я держу пари, что написанный вами фрагмент кода - это то, что он ищет, но он просто не согласен с вашим языком.

Как и pjc50 выше, я не думаю, что это на самом деле приемлемопример ILP, но он может просто сократить его и получить правильную оценку.Если вы на самом деле ищете не только оценку, возможно, это вам поможет: http://developer.apple.com/hardwaredrivers/ve/software_pipelining.html.

0 голосов
/ 07 августа 2010

MINGW по умолчанию не добавляет оптимизаций.так, что я сделал, это использовал некоторый код на C, и поскольку там нет оптимизации цикла, он показал, что ILP работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...