Здравствуйте, minorlogic, Вы писали:
M>Любопытно , 8 секнд это конечно не 111 и я бы назвал такой результат удовлетворительным.
Но это только если запускать на одноядерной машине. Вероятность этого мала и уменьшается с каждым днём.
M>Вполне возмможно, что его можно улучшить хорошо поработав над реализацией.
Я честно говоря не знаю, можно ли там что-то существенно улучшить. Но я уверен, что над реализацией трудился не один человек, и что они определенно имели целью показать высокую производительность.
Здравствуйте, remark, Вы писали: R>Я думаю, что самый быстрый вариант будет реализовать хамелеонов в стиле легковесных потоков, и применить кооперативное планирование...
Я тут, кcтати, наборосал прототипчик оного для scheme (plt). Не выводит всякой сервисной информации по заданию, довольно криво обыгран момент смены цветов и нет случайности в шедулинге, но вот как-то так: http://paste.lisp.org/+1VLE
WH>Ибо в реальных задачах такой дикой конкуренции за общий ресурс не встречается. Тк нормальные люди всеми силами стараются такого избежать.
Возражения непонятны. Модельная задача на то и модельная, что берет один аспект взаимодействия и доводит его до абсурда. Я вроде нигде и не утверждал, что система, плохо показавшая себя на этом тесте непригодна, я собственно отвечал на вопрос "много ли бывает ситуаций когда требуется паралелить задачи не требующие выч. ресурсов", на мой взгляд сотни потоков, ожидающие на IO — вполне пример такой ситуации. Да и кстати многие сугубо вычислительные задачи могут создавать подобные ситуации — например ресурсом, за который конкурируют, может оказаться память.
Здравствуйте, Sergey Chadov, Вы писали:
SC>Возражения непонятны. Модельная задача на то и модельная, что берет один аспект взаимодействия и доводит его до абсурда. Я вроде нигде и не утверждал, что система, плохо показавшая себя на этом тесте непригодна,
Дело в том что как только появляются хоть какие то заметные вычисления или ожидание IO то все описанные remark'ом эффекты становятся не видимыми даже в микроскоп.
SC>я собственно отвечал на вопрос "много ли бывает ситуаций когда требуется паралелить задачи не требующие выч. ресурсов", на мой взгляд сотни потоков, ожидающие на IO — вполне пример такой ситуации.
Ни разу не такая.
SC>Да и кстати многие сугубо вычислительные задачи могут создавать подобные ситуации — например ресурсом, за который конкурируют, может оказаться память.
Назови хоть одну вычислительную задачу при грамотной реализации которой будет большая конкуренция при записи в память. Конкуренция на чтение не проблема.
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
SC>>Возражения непонятны. Модельная задача на то и модельная, что берет один аспект взаимодействия и доводит его до абсурда. Я вроде нигде и не утверждал, что система, плохо показавшая себя на этом тесте непригодна, WH>Дело в том что как только появляются хоть какие то заметные вычисления или ожидание IO то все описанные remark'ом эффекты становятся не видимыми даже в микроскоп.
Я еще раз говорю, мое сообщение относится к сообщению remark'а только косвенно, я отвечал на фразу "много ли бывает ситуаций когда требуется паралелить задачи не требующие выч. ресурсов"
SC>>Да и кстати многие сугубо вычислительные задачи могут создавать подобные ситуации — например ресурсом, за который конкурируют, может оказаться память. WH>Назови хоть одну вычислительную задачу при грамотной реализации которой будет большая конкуренция при записи в память.
Нормальная реализация это я так понимаю такая, которая не создает большой нагрузки на память?
А если серьезно — разреженная линейная алгебра, какой-нибудь swarm intelligence и прочее, где потоков теоретически может быть много, но действия, которые выполняются каждым потоком — относительно простые. Стоит вспомнить, что вычислительные устройства тоже бывают разные.
WH> Конкуренция на чтение не проблема.
интересно, почему.
Здравствуйте, Sergey Chadov, Вы писали:
SC>Я еще раз говорю, мое сообщение относится к сообщению remark'а только косвенно, я отвечал на фразу "много ли бывает ситуаций когда требуется паралелить задачи не требующие выч. ресурсов"
Вот я тебе и говорю что таких задач не бывает.
Ожидание IO это совершенно другая история.
SC>Нормальная реализация это я так понимаю такая, которая не создает большой нагрузки на память?
Это та которая сводит запись в одно и тоже место памяти и нескольких потоков к мнимому.
SC>А если серьезно — разреженная линейная алгебра, какой-нибудь swarm intelligence и прочее, где потоков теоретически может быть много, но действия, которые выполняются каждым потоком — относительно простые. Стоит вспомнить, что вычислительные устройства тоже бывают разные.
Все опять мимо. Этим задачам не нужно писать из нескольких потоков в одно место памяти.
А если объемы действительно большие то там вырисовывается кластер и алгоритмы типа map reduce
Если же появляется что-то на подобии сабжевой задачки то это значит что решение нихрена не масштабируется.
WH>> Конкуренция на чтение не проблема. SC>интересно, почему.
По тому что если память только читают то одна и та же линейка кеша может лежать в кеше нескольких ядер.
А если появляется запись ядро должно захватить линейку кеша эксклюзивно.
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
SC>>Нормальная реализация это я так понимаю такая, которая не создает большой нагрузки на память? WH>Это та которая сводит запись в одно и тоже место памяти и нескольких потоков к мнимому.
Так кто бы спорил
SC>>А если серьезно — разреженная линейная алгебра, какой-нибудь swarm intelligence и прочее, где потоков теоретически может быть много, но действия, которые выполняются каждым потоком — относительно простые. Стоит вспомнить, что вычислительные устройства тоже бывают разные. WH>Все опять мимо. Этим задачам не нужно писать из нескольких потоков в одно место памяти.
Зачем в одно, в разные, но например попадающие в одну линейку кэша. Или кэша вообще может не быть. Или все прекрасно, но шина не резиновая и из-за этого часть процессоров получает некислую задержку выполнения. В любом вычислительном устройстве рано или поздно что-то кончается, а это и есть ситуация конкуренции за ресурс.
WH>А если объемы действительно большие то там вырисовывается кластер и алгоритмы типа map reduce WH>Если же появляется что-то на подобии сабжевой задачки то это значит что решение нихрена не масштабируется.
Да, значит, но не значит, что оно не существует.
WH>>> Конкуренция на чтение не проблема. SC>>интересно, почему. WH>По тому что если память только читают то одна и та же линейка кеша может лежать в кеше нескольких ядер. WH>А если появляется запись ядро должно захватить линейку кеша эксклюзивно.
Верно только если все потоки читают ограниченный, хорошо распределенный по линейкам кэша набор адресов.