Здравствуйте, GlebZ, Вы писали:
AVK>>Ну так добавление в очередь и есть запись указателей. Блокировка штука весьма дорогая и вполне сопоставима с временем работы лексера на тот же токен. Так что овчинка выделки не стоит. Можешь провести экспееримент. Я как то пробовал — получил 3% потерь на двухпроцессорной машине и 12% на однопроцессорной. GZ>Во первых, относительно чего?
Относительно последовательного варианта.
GZ>Во-вторых, примитивы синхронизации InterlockedXXXX, мягко говоря, слишком неудовлетворительный список. И вообще, лучше не говорить о реализации платформы, поскольку ее и спрогнозировать сложно.
Не думаю что это сильно спасет.
AVK>>
В процах то же самое. Все зависит от предыдущего
GZ>А что переходы редкая операция?
Знаешь, между нередкая и любая большая большая разница.
GZ> С другой стороны, тут стоит поговорить о гранулярности. Мы что будем выполнять параллельно, switch или подпрограммы.
Разница существенная — по ветвлению у тебя ровно два инварианта — пойдет и не пойдет. А на свитче у тебя уже их много. А если там еще и вычисляется что то, то у тебя количество инвариантов для int к примеру — 4 миллиарда, следовательно вероятность успешного предсказания существенно падает, а статистика растет.
GZ> Функцию в функциональном языке типа Haskell или Clean распараллелить легко,
Языком. Еще раз — если алгоритм связанный, то его нельзя эффективно выполнять параллельно, вне запвисимости от того в каком стиле он записан, функциональном, императивном или каком то еще. Единственное что позволяют функциональные языки это уменьшить количество синхронизаций за счет создания копий данных. А это можно и в императивном языке явно сказать. Приемчики вроде foreach (X element in list.ToArray()) широко известны. Эту работу даже можно возложить на компилятор или JIT. Но это не приблизит нас к автоматическому распараллеливанию ни на шаг.
GZ>>> Но теперь задумайся, с помощью чего. Каждый нейрон является процессорам(причем не очень быстрый). AVK>>Ни в коем разе. Практически ничего общего. GZ>Отчего — же. Мы делаем одну задачу, но множеством процессоров. Нейрон — между прочим достаточно сложный процессор.
Ну точно таким же манером я могу назвать процессором каждый транзистор. Ну или, для полноты аналогий, каждый элементарный автомат вроде одноразрядного сумматора. Пойми — если мы говорим о логических проблемах бессмысленно углубляться в физические среды. Проблемы распараллеливания одни и те же, вне зависимости от того, что у тебя физически считает — транзисторы, радиолампы или реле. Да, конечно, базис у нейронных вычислений другой, но то что базис существенно влияет на возможность распараллеливания еще надо доказать.
GZ> И насколько я помню — дискретный. Что в этом такого? Нормальное поведение природы. Для нее не свойственны абстракции и сферические лошади в вакууме. Она учитывает все что есть в один момент времени.
Здорово. Но доказательства почему каждый нейрон это процессор, а мозг это массово-параллельный вычислитель я так и не увидел. И не увижу, поскольку как мозг функционирует, за исключением совсем простых вещей вроде управления дыханием, до сих пор не известно. Так что лучше обходись в доказательствах без аналогий.
Здравствуйте, AndrewVK, Вы писали:
AVK> Да, конечно, базис у нейронных вычислений другой, но то что базис существенно влияет на возможность распараллеливания еще надо доказать.
Ничего доказывать не буду, просто 2 маленьких частных вопроса. 1) Где в мозгу тактовый генератор, и 2) есть ли корреляция между хорошим зрением (читай "графика высокого разрешения" ) и умственными способностями (производительностью):
Сдается мне, разница поглубже, чем просто разница в элементной базе. И ряд задач точно решается параллельно (хотя бы распознавание изображений).
M>>>А кто мешает копировать их параллельно? Или Вы думаете, что гарантированно выжмете всю пропускную способность файловой системы и при копировании одиночных файлов?
M>>B вот бац — закончилось место на диске. И все три файла не скопировались. Абыдна, да
M>У нас в ауле перед копированием проверяют свободное место на диске и общий объем файлов. И вообще не копируют, если они не влезут. Или Вы думаете, что во всех случаях корректнее скопировать часть файлов, чем ничего?
А теперь взмем еще пару процессов, которые работают с диском, пару свап файлов от разных приложений (например, Фотошоп и Макромедийные продукты) и оп-па, а место-то и закончилось
Здравствуйте, Programmierer AG, Вы писали:
PA>1) Где в мозгу тактовый генератор, и 2) есть ли корреляция между хорошим зрением (читай "графика высокого разрешения" ) и умственными способностями (производительностью):
Понятия не имею.
PA>Сдается мне, разница поглубже, чем просто разница в элементной базе.
Да еще никому неизвестна. Потому и предлагаю от негодных аналогий воздержаться.
PA> И ряд задач точно решается параллельно (хотя бы распознавание изображений).
Так в обычном PC тоже много чего параллельно делается.
Здравствуйте, mik1, Вы писали:
M>Давным-давно слышал про поддержку sparse-файлов в NTFS. И ни разу не встречал приложений, использующих их. Подскажите, для расширения кругозора?
Здравствуйте, AndrewVK, Вы писали:
GZ>> С другой стороны, тут стоит поговорить о гранулярности. Мы что будем выполнять параллельно, switch или подпрограммы. AVK>Разница существенная — по ветвлению у тебя ровно два инварианта — пойдет и не пойдет. А на свитче у тебя уже их много. А если там еще и вычисляется что то, то у тебя количество инвариантов для int к примеру — 4 миллиарда, следовательно вероятность успешного предсказания существенно падает, а статистика растет.
Ну вероятность, точно такая же как и у ja. И jmp можно делать по переменной. Ничего кардинально особенного здесь особо нет.
GZ>> Функцию в функциональном языке типа Haskell или Clean распараллелить легко, AVK>Языком. Еще раз — если алгоритм связанный, то его нельзя эффективно выполнять параллельно, вне запвисимости от того в каком стиле он записан, функциональном, императивном или каком то еще. Единственное что позволяют функциональные языки это уменьшить количество синхронизаций за счет создания копий данных. А это можно и в императивном языке явно сказать. Приемчики вроде foreach (X element in list.ToArray()) широко известны. Эту работу даже можно возложить на компилятор или JIT. Но это не приблизит нас к автоматическому распараллеливанию ни на шаг.
При сегодняшней алгоритмике, конечно нет.
GZ>>>> Но теперь задумайся, с помощью чего. Каждый нейрон является процессорам(причем не очень быстрый). AVK>>>Ни в коем разе. Практически ничего общего. GZ>>Отчего — же. Мы делаем одну задачу, но множеством процессоров. Нейрон — между прочим достаточно сложный процессор. AVK>Ну точно таким же манером я могу назвать процессором каждый транзистор. Ну или, для полноты аналогий, каждый элементарный автомат вроде одноразрядного сумматора. Пойми — если мы говорим о логических проблемах бессмысленно углубляться в физические среды. Проблемы распараллеливания одни и те же, вне зависимости от того, что у тебя физически считает — транзисторы, радиолампы или реле. Да, конечно, базис у нейронных вычислений другой, но то что базис существенно влияет на возможность распараллеливания еще надо доказать.
Из Турчина.
Отметим еще одно обстоятельство, которое следует учитывать при поисках иерархии в реальной нервной сети. Если мы видим нейрон, соединенный синапсами с сотней рецепторов, то это еще не значит, что он фиксирует какое-то простое понятие первого уровня типа суммарного числа возбуждений рецепторов. Логическая функция, связывающая состояние нейрона с состоянием рецепторов, может быть весьма сложной и имеющей собственную иерархическую структуру.
GZ>> И насколько я помню — дискретный. Что в этом такого? Нормальное поведение природы. Для нее не свойственны абстракции и сферические лошади в вакууме. Она учитывает все что есть в один момент времени. AVK>Здорово. Но доказательства почему каждый нейрон это процессор, а мозг это массово-параллельный вычислитель я так и не увидел. И не увижу, поскольку как мозг функционирует, за исключением совсем простых вещей вроде управления дыханием, до сих пор не известно. Так что лучше обходись в доказательствах без аналогий.
Ну, все таки, мы кое что знаем. И в принципе достаточно чтобы сделать некоторые выводы. Иерархия понятий
Я все таки нашел Турчина в сети. Стоит заметить, что иерархия понятий нижнего уровня высчитывается параллельно и результируется на верхнем уровне.
Будет время, почитай. Чрезвычайно интересная книжка.
Здравствуйте, GlebZ, Вы писали:
GZ>При сегодняшней алгоритмике, конечно нет.
Ты так и не доказал, что для некоего зависимого алгоритма всегда (ну или хотя бы чаще) существует эквивалентный независимый. Перефразируя — а она существует, эта алгоритмика?
GZ>Из Турчина.
Я уж думал мы договорились без аналогий. Обсуждать мозг я не хочу, здесь это оффтопик.
GZ>Ну, все таки, мы кое что знаем.
Что касаемо высшей нервной деятельности, то практически ничего.
Здравствуйте, AndrewVK, Вы писали: AVK>Я уж думал мы договорились без аналогий. Обсуждать мозг я не хочу, здесь это оффтопик.
Точно. Он все равно с nutsом на курорте от японцев отбивается.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.