Лучше учиться на чужих ошибках, поэтому мы в М.Видео-Эльдорадо стремимся изучать зарубежный опыт. Предлагаем и вам посмотреть перевод статьи Петра Колачковского, получившего черный пояс по прокачке производительности своего железа.Читать полностью »
Рубрика «параллельные вычисления»
Как одной строкой сделать 24-ядерный сервер медленнее ноутбука
2022-02-01 в 10:39, admin, рубрики: cassandra, Rust, базы данных, бенчмаркинг, Блог компании М.Видео-Эльдорадо, Клиентская оптимизация, мвидео, оптимизация программ, Параллелизм, параллельные вычисления, Серверная оптимизация, Эльдорадо«Невозможный» параллельный алгоритм неотрицательной суммы
2022-01-02 в 7:02, admin, рубрики: forkjoin, haskell, java, java streams, MapReduce, sql, sum, ассоциативность, магия, моноид, параллельное программирование, параллельные вычисления, ПрограммированиеСумма целых чисел — что может быть проще? Сумма есть в SQL, в Java Stream API… в крайнем случае напишем сами. Как и всякая абстракция, она расходится с реальностью.
Вот счёт клиента в банке, по нему движения — положительные пополнения и отрицательные списания — в сумме дают текущий баланс. Так сумма работает в идеальном мире. А в реальности при большом минусе банк с отсрочкой, но предпримет нетривиальные действия вплоть до обращения в суд, чтобы закрыть финансовую брешь.
static long usualSum(LongStream changes) {
return changes.reduce(0, (a, b) -> a + b);
}
Фантастические advisory locks, и где они обитают
2020-02-13 в 11:20, admin, рубрики: advisory lock, dba, postgresql, sql, Администрирование баз данных, Алгоритмы, базы данных, Блог компании Тензор, параллельные вычисленияВ PostgreSQL существует очень удобный механизм рекомендательных блокировок, они же — advisory locks. Мы в «Тензоре» используем их во многих местах системы, но мало кто детально понимает, как конкретно они работают, и какие проблемы можно получить при неправильном обращении.
О структуре параллельных вычислений или доводы против оператора «Go»
2019-12-10 в 14:59, admin, рубрики: async, Go, golang, python, Анализ и проектирование систем, асинхронное программирование, дейкстра, конкурентное программирование, параллельное программирование, параллельные вычисления, потоки, смена парадигмы
Каждый язык, поддерживающий параллельные (конкурентные, асинхронные) вычисления, нуждается в способе запуска кода параллельно. Вот примеры из разных API:
go myfunc(); // Golang
pthread_create(&thread_id, NULL, &myfunc); /* C with POSIX threads */
spawn(modulename, myfuncname, []) % Erlang
threading.Thread(target=myfunc).start() # Python with threads
asyncio.create_task(myfunc()) # Python with asyncio
Есть много вариантов нотации и терминологии, но одна семантика — запустить myfunc
параллельно основной программе и продолжить родительский поток выполнения (англ. "Control Flow")
Джулия и параллельные вычисления
2019-06-12 в 15:29, admin, рубрики: celeste, Julia, mpi, астрономическая карта, высокая производительность, параллельное программирование, параллельные вычисления, Программирование, уравнение теплопроводности
С момента выхода в августе 2018, язык Julia активно набирает популярность, войдя в топ 10 языков на Github и топ 20 самых популярных профессиональных навыков по версии Upwork. Для начинающих стартуют курсы и выпускаются книги. Julia используется для планирования космических миссий, фармакометрики и климатического моделирования.
Перед тем как приступить к распределенным вычислениям в Julia обратимся к опыту тех, кто уже испробовал данную возможность нового ЯП для прикладных задач — от уравнения диффузии на двух ядрах, до астрономических карт на суперкомпьютере.
Пессимизм насчёт многопоточности
2018-12-28 в 12:02, admin, рубрики: SICK-алгоритм, Алгоритмы, аппаратный параллелизм, высокая производительность, закон масштабирования Деннарда, массивный параллелизм, многопоточность, параллельное программирование, параллельные вычисления, Программирование, Процессоры, семантическая локальность, систолическая матрицаМассивный и аппаратный параллелизм — горячие темы 21 века. Для этого есть несколько приятных причин и одна довольно печальная.
Две приятные причины: комбинация отличной работы GPU в играх и при этом их неожиданное побочное использования в глубоком обучении ИИ, поскольку там на аппаратном уровне реализован массивный параллелизм. Печальная причина в том, что скорость однопроцессорных систем с 2006 года упёрлась в законы физики. Нынешние проблемы с утечкой и тепловым пробоем резко ограничивают увеличение тактовой частоты, а классическое снижение напряжения теперь натыкается на серьёзные проблемы с квантовым шумом.
Конкурируя за внимание публики, производители процессоров пытаются впихнуть в каждый чип всё больше процессорных ядер, рекламируя теоретическую общую производительность. Также быстро растут усилия на конвейеризацию и спекулятивные методы выполнения, которые применяют многопоточность под капотом, чтобы видимый программисту одиночный процессор быстрее обрабатывал инструкции.
Читать полностью »
Бесполезный отложенный неблокирующий обмен сообщениями в MPI: лайт-аналитика и туториал для тех, кто немножечко «в теме»
2018-10-21 в 17:37, admin, рубрики: c++, mpi, параллельное программирование, параллельные вычисления, С++, системное программированиеСовсем недавно мне пришлось решать очередную тривиальную учебную задачу от своего преподавателя. Однако, решая ее, мне удалось обратить внимание на вещи о коих я ранее вовсе не задумывался, возможно, не задумывались и Вы. Эта статья скорее будет полезна студентам да и всем, кто начинает свой путь в мир параллельного программирования с использованием MPI.
Наше «Дано: »
Итак, суть нашей, в сущности вычислительной задачи, заключается в том, чтобы сравнить во сколько раз программа, использующая неблокирующие отложенные двухточечные передачи быстрее той, что использует блокирующие двухточечные передачи. Измерения будем проводить для входных массивов размерностью 64, 256, 1024, 4096, 8192, 16384, 65536, 262144, 1048576, 4194304, 16777216, 33554432 элементов. По умолчанию предлагается решать ее четырьмя процессами. А вот, собственно, и то, что мы будем считать:
Почему человеческий мозг так эффективен?
2018-07-08 в 9:00, admin, рубрики: искусственный интеллект, мозг, нейроны, параллельные вычисленияКак массивное распараллеливание возвышает эффективность мозга над возможностями ИИ
Мозг – устройство сложное; у людей он содержит порядка 100 млрд нейронов и около 100 триллионов соединений между ними. Его часто сравнивают с другой сложной системой с огромными возможностями решения задач: цифровым компьютером. В мозге и компьютере содержится большое количество элементарных единиц – нейронов или транзисторов, соответственно – подключенных к сложным схемам, обрабатывающим информацию, передаваемую электрическими сигналами. На глобальном уровне архитектуры мозга и компьютера немного похожи, поскольку состоят из практически отдельных контуров для ввода, вывода, центральной обработки, и памяти.
Кто лучше справляется с решением проблем – мозг или компьютер? Учитывая быстрое развитие компьютерных технологий в последние десятилетия, можно решить, что побеждает компьютер. И действительно, компьютеры разрабатывают и программируют с целью победы над человеческими мастерами в сложных играх, таких, как шахматы в 1990-х, и го, совсем недавно – а также в конкурсах на энциклопедические знания, таких, как телевикторина "Jeopardy!" Но пока что люди побеждают компьютеры во множестве задач, связанных с реальным миром – от способности различить на дороге велосипедиста или пешехода до поднятия со стола чашки с чаем и аккуратного перемещения её ко рту – не говоря уже о концептуализации и творчестве.
Читать полностью »
Релиз Node.js 10.5: мультипоточность из коробки
2018-06-25 в 13:38, admin, рубрики: javascript, node.js, nodejs, параллельные вычисления
На прошлой неделе состоялся релиз Node.js версии 10.5.0, содержащий нововведение, чью значимость трудно переоценить, – поддержку многопоточности в виде модуля worker_threads. Сразу оговорюсь API находится в экспериментальной стадии и поэтому может измениться, но уже сейчас можно составить первое впечатление и получить представление о заложенных в его основу принципах и технологиях. А если у вас есть желание, то и поучаствовать в финализации интерфейса, написании кода или исправлении багов (список issues).
Задача про forEach(ps::println) от СКБ Контур
2018-03-10 в 11:47, admin, рубрики: java, java 8, performance, stream api, наш ответ чемберлену!, параллельное программирование, параллельные вычисления, ПрограммированиеНа конференции JBreak я не читал задачки спонсоров специально. Ну, конечно, кроме ада от Excelsior: уж эти ребята всем задали жару. А тут принесли мне листок от СКБ Контур, смотри, мол, посмейся. Я посмеялся: первая задача действительно выглядела настолько наивно сформированной и недоопределённой, что даже не хотелось идти к стенду и убеждать в этом сотрудников компании. Я про это почти забыл, однако тут на Хабре появился авторский разбор этой задачи, не лишённый некоторой глубины. Даже про modCount
написали. Выходит, зря я смеялся?