Leave a comment

Comments 24

vshabanov June 3 2007, 12:57:38 UTC
Не знаю, будет ли полезно, но вот немного про data-flow в 80-х:
http://article.gmane.org/gmane.comp.lang.haskell.cafe/23473

Собсно, не будет ли HyperTree (как я понимаю, некая дополнительная логика) отнимать больше времени, чем сами вычисления?

И еще (я в железе ничего не понимаю), почему тупое расширения канала сложнее в реализации, нежели дополнительная логика?

Reply

thesz June 3 2007, 20:17:53 UTC
Надо будет добраться до этого письма. Оно наверняка у меня где-то в хаскельных мейллистах на работе.

Кстати, Булат там неправ. GPU работают как "обычные" процессора. Внутри них нет никакого dataflow, да он им и не нужен, у них и так все хорошо с параллельностью.

Reply

thesz June 3 2007, 22:21:55 UTC
Забыл ответить насчет HyperTree и остального.

Вся система глубоко конвейерезирована (конвейеризована? pipelined, короче). Участок конвейера в HuperTree будет просто поставлять данные к вычислителям. Он внесет задержку, растягивать время такта не должен. Задержка в коммутационной сети действительно получится больше, чем задержка на вычислениях. Попытаемся компенсировать ее большим количеством вычислений и толстым каналом. ;)

HyperTree симпатична регулярностью структуры. Элементы иерархии достаточно примитивны.

Я походил, подумал, пришел к выводу, что расширение канала мне все равно нужно и не даст большого увеличения накладных расходов. Ну, в сравнивающем устройстве все равно это будет сложность N*M (N - количество входов, M - количество ячеек памяти), постараемся ее побороть, опять же. ;)

Reply

vshabanov June 3 2007, 22:55:53 UTC
Как же это непросто -- будущее делать ;)

По поводу конвейеров. Недавно напоролся на чудеса branch prediction (или как его там). В скелетной анимации положение вершины считается как сумма ВЕС_i*(МАТРИЦА_ПОВОРОТА[3x3]_i*ВЕРШИНА + ВЕКТОР_ПЕРЕМЕЩЕНИЯ_i). Казалось бы, простым if (ВЕС_i==0) можно отсечь кучу лишних сложений и умножений. Однако, после того, как я закомментировал if-ы, считаться стало чуть-ли не в 1.5 раза быстрее. Вот такие вот они, современные процы ;) Причем, я еще могу понять GPU, на котором DP в один такт, а условия непонятно во сколько. Но обычный Athlon64, да еще код, скомпилированный 32-битным компилером без указания архитекутуры..

И собсно вопрос. HyperTree от условных выражений вообще загнется, или условия как-то вписываются в data-flow архитектуру?

Reply


geniepro June 3 2007, 13:51:26 UTC
А Вы Бином Ньютона посчитать не забыли? Разве можно предсказать будущее без Бинома Ньютона? 8-о
:о))

Reply

thesz June 3 2007, 20:12:51 UTC
Huh? ;)

Reply

geniepro June 3 2007, 21:00:59 UTC
Ну это фраза из Мастера и Маргариты, в эпизоде, где как раз предсказывали будущее:
"Подумаешь, Бином Ньютона!" :о))

Reply

thesz June 3 2007, 21:10:53 UTC
А!

Так я создаю будущее. Это можно и без бинома Ньютона. ;)

Reply


(The comment has been removed)

thesz June 3 2007, 20:12:39 UTC
Часть интерфейса разрабатываем тоже мы. ;)

Reply

(The comment has been removed)

thesz June 4 2007, 21:21:45 UTC
Да, я об этом думал.

Нужно простое FIFO, можно несколько штук, латентность (судя по всему) не очень важна.

Reply


migmit June 4 2007, 07:23:09 UTC
В полнолуние Кинг-Конг выходит жениться.

Reply


Не надо грязи! nealar June 5 2007, 07:15:47 UTC
Я в курсе, что он прекрасно параллелится в императивном стиле.
Более того, в какой-то статейке "почему pthread - это плохо" он приводился как пример алгоритма, который параллелится _ваще_без_всяких_локов_.
А полная луна была в четверг.

Reply

Re: Не надо грязи! thesz June 5 2007, 07:45:28 UTC
А в функциональном тоже параллелится, даже еще лучше. ;)

Reply

Re: Не надо грязи! nealar June 5 2007, 08:44:27 UTC
В функциональном параллелится _всё_. И что?

Reply

Re: Не надо грязи! thesz June 5 2007, 10:02:26 UTC
Ура! ;)

Reply


Leave a comment

Up