bashmak> 60-e - это очень давно - прошлый век
Я бы сказал, прошлое тысячелетие.
bashmak> Сколько на текущий момент продано многоядерных процессоров? Вполне можно сказать, что общедоступа.
Вот меня интересует, почему же не все ещё могут программировать, и не все ещё знают теорию Риса-Шаудера. Она же общедоступна. Знаешь сколько книжек вышло?
bashmak> Прошли и забыли как страшный сон, поскольку во многих областях - на фиг не нужны, тем более экспериментаторам, ну быть может за исключением твердотельщиков.
А алгебры Ли, боюсь, что физики и не проходят. И с топологией напряжёнка.
Физики жалуются, что им не хватает времени своё изучить. А тут ещё математику заставляют. Людей уровня Улама практически нет. Физики его своим считают. Математики — своим.
А ведь всё общедоступно.
bashmak> Не такая уж и маленькая и самая простая в имплементации, по крайней мере есть шанс, что такие вещи вполне может отлавливать компиллятор.
Она самоочевидная. Но не самая выгодная часто. Поэтому я и говорю, что программирование параллельное для разнородных процев часто проще — видны границы.
bashmak> Это много сложнее и требует переписывания алгоритма, а потом еще и доказательства идентичности результатов нового алгоритма.
Я бы сказал, переписывания конкретной имплементации. А идентичность следует из законов дистрибутивности, симметричности — как раз то, что определяет поле.
Смотри. Вместо того, чтобы вычислять каждый элемент матрицы по формуле
можно посчитать произведения для всех элементов, скажем, столбца, положив результаты в память — одной командой SSE3, а потом проссумировав их и положив результаты в уже нужное место другой командой SSE3, Т.е., грубо говоря — две команды на столбец. Если размерность больше размерности вектороно регистра, то можно делать по блокам. А теперь оцени, во сколько раз это будет быстрее, чем поочередно умножать. Если я правильно помню, то в SSE3 можно выдавать до 32 одновременных операндов для одной операции (здесь могу врать — там от размерности зависит).
bashmak> В любимом тобой примере перемножения матриц на Селл, есть охрененная зависимость времени от размеров - если размерм матрицы не пропорционален Х, то время выполнения намного больше. Алгоритм получается очень узкозаточеным. А в общем случае получается медленнее.
Не-а. Просто искусство писать общие алгоритмы (generic programming) — это отдельное искусство, недоступное даже многим высококвалифицированным программистам. А тут ещё и с уклоном в параллелизм.
Ты думаешь, что много численных методов используешь в своей деятельности?
bashmak> Вариант с библиотеками имеет место быть, только вот будут возникать коллизии - нельзя одновременно вызывать функцию "а" и "б", а вот "а" и "с" - можно... Программирование превращается в танцы с бубном, по типу описаной здесь "истории одного байта".
Программирование всегда танцы с бубном. Это дилетанты думают, что всё просто.
Особенно в параллелизме. Там всегда есть такая опасность. Но для её разрешения придуманы разные механизмы — называется синхронизация и управление доступом к общим рессурсам — всякие семафоры, события, рандеву, мониторные скобки, сообщения.
bashmak> Именно фоннеймановское последовательное, но в другой реализации, где не надо тактование, соответсвенно переход от одного техпроцесса к другому - не проблема как и время выполнения команды, да и размер микросхем потенциально меньше. Само-собой потом это можно связать в параллельные ядра. А для квантового алгоритма и программу писать не надо - она меня окружает - природа завется
Если фоннемановское, то как время выполнения команды не важно? Всё выполняется мгновенно? С точки зрения программирования что поменяется? Да нифига.
bashmak> Ну так сколько их таких классов? А то все народ жалится, что как что приближенное к реальности, то задача сильносвязана и сразу труба - все упирается в однозадачную производительность: маракуй не маракуй все равно получишь...
Думаю, что счётное количество.
У тебя задача сильносвязана, но куски её могут быть распараллелены. В этом и искусство. Скажем, как можно использовать SSE для зануления? А все регистры обнулить, а потом одной командой собачить в область. Один удар и 256 (или сколько там) байтов в 0.
А можно честно цикл написать.
bashmak> bashmak>> Унификация по сокету - захотел, еще один обычный процессор воткнул, захотел bashmak> Ну они это не завтра выпускают и не для самого общего случая - придумают что-нибудь.
Опыт развития сокетов до — не внушает большого оптимизма.