All streams
Search
Write a publication
Pull to refresh
4
0
Send message

приведя более простой пример просто с обращением к асинхронно изменяющейся переменной в памяти.

Отлично, если я покажу что этот простой пример в Фортране, не порождает примитивов синхронизации, и таким образом может дать точно такой же не верный результат, что и Си. Вы признаете что были не правы?

Вы говорили изначально про многопоточку приведя в пример *timer - *timer, утверждая что Си плохой. Мое утверждение, что многопоточка везде пишется особым образом. И в данном случаи, если просто написать такой код, хоть на Фортране, хоть на Лиспе, хоть на Си. Результат будет одинаковый, а именно выборки из памяти могут произойти в произвольном порядке.

Если вы утверждаете, что там в Фортране или еще где-то, компиляторы автоматически расставляют барьеры для каждой операции с памятью, чтобы получить порядок их выполнения ровно такой как указан в программе. То приведите хотя бы какие-то доказательства своих слов, стандарты, машинный код с барьерами, или еще что-то. Пока что это просто голословные утверждения.

Автоматически распараллеливать код и компиляторы Си умеют, через OpenMP.

Вы же утверждаете, что обычный код на Фортране, будет линейно сериализован в соответствии с тем как написано в программе. Что является полным бредом. И довольно легко доказывается, отсутствием каких либо примитивов сериализации и синхронизации, типа барьеров в машинном коде.

Сложный вопрос, один из сценариев, что разные страны обзаведясь сверх умным, но контролируемым ими ИИ, расфигачат друг друга. А второй раз пройти полностью путь до "технологически развитой цивилизации", не имея доступных ресурсов будет проблематично.

Нет никаких конвенций, вы хотя бы ссылки какие ни буть стандарты или еще что-то привили бы. Что на лиспе или чем то еще можно писать многопоточку, и просто делая обычные обращения к памяти получать их линейную сериализацию.(то есть в том порядке в каком они идут в программе или машинном коде)

Это так не работает, барьеры если и могут расставляться автоматически, то расставляются только в том случаи, если объявлена семантика обращения к переменной из разных потоков, или что-то в этом духе. Просто потому что бездумное расставление барьеров будет ронять производительность на порядок.

Лисп подвержен точно той же проблеме не упорядоченности выборок из памяти, что и любой другой язык.

https://en.wikipedia.org/wiki/Memory_ordering

"On most modern uniprocessors memory operations are not executed in the order specified by the program code."

Цель одна, в очередной раз разрешить парадокс Ферми. (скорее всего не в самую веселую сторону) (/joke)

Тогда бы вы не написали предыдущий пост про *timer (1) - *timer (2), предполагая что выборка из памяти 1 произойдет раньше чем 2, если вы напишите это на Фортране. Даже если написать на ассемблере с явным указанием порядка операций на современных out-of-order процессорах это не гарантируется. Нужны барьеры или другие средства сериализации.

Вообще "параллельное программирование" это один из самых сложных вопросов в современной разработке и computer science, поэтому я даже начинать не хотел.

Вы просто не очень понимаете, о чем идет речь. На Си и плюсах написаны мегатонны параллельного кода. Только он пишется ни так как вам кажется с вашим исключительным опытом в Фортране.

В том чудном мире относительно сильного ИИ, который описан в статье, есть одна проблема. Это еще бОльшая деинтеллектуализация общества, и расслоение на кучку техно-жрецов и всех остальных.

timer не может измениться. Если это memory mapped i/o, в каком ни буть микроконтроллере(или ядре и драйвере), или "параллельный" код, то это просто совершенно по другому пишется и реализуется. Фортрана на микроконтроллерах, я к примеру, вообще ни разу не видел, там сплошной Си. (хотя возможно он там и есть)

По поводу академиков. У меня есть мнение, что там(на западе) получалось в среднем лучше, просто потому, что их академическая наука была в бОльшей степени ориентирована на коммерцию, а не только военных. И поэтому понимала, чем живет индустрия и какие реальные проблемы стоят.

Архитектура же e2k и VLIW(и Эльбрус-3 который не пошел в серию), насколько я понимаю, это детище одного человека - товарища Бабаяна, который в 200х наобещал с три короба, а потом свинтил в Intel(когда вся эта шумиха с Итаником имела место быть).

Догадываться сложно, над многими нетривиальными проблемами годами работали не самые глупые люди из академической и коммерческой(R&D) науки с начала 60х. Тот же алгоритм из вашей статьи первая публикация(с эффективным алгоритмом). "James W. Hunt and Thomas G. Szymanski. A fast algorithm for computing longest subsequences. Commun. ACM, 20(5):350–353, 1977".

Но по моему опыту, практически все алгоритмы уже придуманы, надо только уметь правильно абстрагировать прикладную задачу в "математику" и иметь кругозор с некоторым базовым пониманием.

Не вижу фундаментальных отличий внешней библиотеки от встроенной в стандарт. Скорее я даже противник подобного раздувания. А так да, многое в современной стандартной библиотеке плюсов, утащено из boost

Out-of-order архитектуру можно развивать. VLIW это гроб без ручки, который выпилили, практически ото всюду, где он когда либо был. Можно долго рассуждать почему это так с теоретической точки зрения, но это довольно очевидно, если понимать как работают разные микроархитектуры, прежде всего OoO.

Очевидно, надо делать не то что интересно, а то что эффективно и нужно потребителям/пользователем. Разработка собственных архитектур микропроцессоров в союзе, погибла и проиграла x86, во многом потому, что академики делали то что им "интересно". Условно говоря, RISC против "Сетуни".

Спарк поддерживается гораздо лучше e2k, просто потому, что любое положительное число будет лучше нуля. "Эльбрус" это просто относительно раскрученный бренд, там где дают деньги.

Об этом я и хотел сказать, что классическая реальность это условно иллюзия, вложенная в квантовую. И есть попытки обосновать механизм ее возникновения как например в quantum darwinism (в поисковике сразу будут правильные ссылки)

Об этом и речь, что коллапс волновой функции все го лишь иллюзия возникающая за счёт взаимодействия исследуемой квантовой системы с некоторым условно классическим измеряющим объектом разрушающим квантовые свойства. Ни о каких скрытых параметрах очевидно речь не идёт. Речь идёт о том что коллапса, на уровне волновой функции всей вселенной никогда не происходит это лишь локальная иллюзия.

Есть альтернативная точка зрения, что существует волновая функция вселенной, которая никуда никогда не коллапсирует. А коллапс является для нас лишь локальной иллюзией связанной с разрушением наблюдаемых квантовых свойств системы при взаимодействии с классической. Заодно в купе с многомировой интерпретацией это решает вопрос кажущейся не локальности спутанных состояний.

Просто оставлю это https://habr.com/ru/articles/719610/

R2000 это процессор созданный МЦСТ по классической risc out-of-order микроархитектуре со спарковской системой команд. Как видно из статьи он на адекватных тестах сопоставим или лучше эльбрусов. При этом ресурсов подозреваю в него было вложено на порядок меньше. А e2k и VLIW уже пора закопать, они не то что пахнут, а уже труп начал разваливаться на части.

Любая кросс-платформенная библиотека строится на некоторой абстракции, которая бы эффективно покрывала все необходимые платформы. Придумать подобную абстракцию обычно довольно тяжело, особенно чтобы "раз и на все времена", а написать ее реализацию чаще всего не так чтобы сильно сложно.

Именно поэтому я не люблю, велосипеды для кросс-платформы, они почти всегда получаются с квадратными колесами, которые приходится переделывать, и скорее всего ни раз, а так же код который опирался на их не стабильный интерфейс.

У меня есть знакомые, которые профессионально пишут вычислительные алгоритмы на си/плюсах. Да иногда порядок важен и другого выхода нет. Обычно это решается, скобочками или разбиением выражения на утверждения(разделенные ";") однозначно задающими порядок.

Сейчас, многие большие вычислительные пакеты, типа ANSYS, адаптируют под GPU, так там порядок вычисления принципиально до конца плохо определен, и с этим мало что можно сделать.

PS: обычно это настраивается флажками оптимизации, отключающими агрессивную оптимизацию на плавучке. Да, мог выкинуть вычисления, не имеющие с точки зрения компилятора побочного эффекта.

Information

Rating
Does not participate
Registered
Activity

Specialization

Software Developer, Application Developer
Senior
C++
C++ STL
Linux
Python
Machine learning
Applied math
Algorithms and data structures
Code Optimization