Впервые услышал про DL на AMD (но рано или поздно это должно было произойти):
ZLoyer:
ты осилил машин ленинг на амд карточке?
𝛈 µ:
Да, plaidml хорошо работает
ZLoyer:
ты осилил машин ленинг на амд карточке?
𝛈 µ:
Да, plaidml хорошо работает
Λнтон Войцишевский:
ну что если у тебя есть в каком-то патмате дефолтный кейс, то комплиятор тебе не скажет ничего, когда ты поменяешь условную АДТ на которой этот патмат делается
Oleg ℕizhnik:
откуда у тебя в жизни дефолтные кейсы в патмате
===
По мотивам https://twitter.com/_bravit/status/1276449644235706368?s=21
ну что если у тебя есть в каком-то патмате дефолтный кейс, то комплиятор тебе не скажет ничего, когда ты поменяешь условную АДТ на которой этот патмат делается
Oleg ℕizhnik:
откуда у тебя в жизни дефолтные кейсы в патмате
===
По мотивам https://twitter.com/_bravit/status/1276449644235706368?s=21
Twitter
Виталий Брагилевский
Небольшой тред о таком элементе языков программирования как сопоставление с образцом (pattern matching, декомпозиция, деконструкция, элиминация — смотря из какого вы болота) и о том, почему его нельзя сделать хорошо нигде, от Kotlin и Scala до Haskell и Idris.
Doge Shibu, [26.06.20 14:59]
А на тему удобство крестов, вот хороший доклад про то, как сделать правильно в крестах то, что в расте работает автоматом:
https://www.youtube.com/watch?v=PNRju6_yn3o&t=2195s
Т.е. если на крестах пытаться писать правильно, то это ощутимо менее удобно, чем на расте.
===
via https://news.1rj.ru/str/rust_offtopic/298625
А на тему удобство крестов, вот хороший доклад про то, как сделать правильно в крестах то, что в расте работает автоматом:
https://www.youtube.com/watch?v=PNRju6_yn3o&t=2195s
Т.е. если на крестах пытаться писать правильно, то это ощутимо менее удобно, чем на расте.
===
via https://news.1rj.ru/str/rust_offtopic/298625
YouTube
CppCon 2017: Nicolai Josuttis “The Nightmare of Move Semantics for Trivial Classes”
http://CppCon.org
—
Presentation Slides, PDFs, Source Code and other presenter materials are available at: https://github.com/CppCon/CppCon2017
—
Assume, we implement a very simple class having just multiple string members. Even ordinary application programmer…
—
Presentation Slides, PDFs, Source Code and other presenter materials are available at: https://github.com/CppCon/CppCon2017
—
Assume, we implement a very simple class having just multiple string members. Even ordinary application programmer…
Меня Arc-и всегда пугали именно этим.
===
? !:
Всем привет. Новичок и нуждаюсь в небольшом совете.
Есть приложение, реализовано на нативных потоках Rust (thread::spawn) с обменом сообщениями между потоками при помощи mpsc и данными между потоками, доступными через Arc::new(Mutex::new(данные)).
Все работает прекрасно, за исключением того, что периодически случаются deadlock'и (для доступа к данным использую Arc::clone(переменная, полученная выше из Arc::new(Mutex::new(данные))), который внутри потока .lock().unwrap(), использую данные и тут же выполняю drop() на MutexGuard, который получил из lock().unwrap() выше. Проблема в том, что все равно успевает произойти deadlock.
Покопавшись в теме, я так понял, что нужно вместо lock() использовать try_lock() и если он не прошел, то пытаться получить через try_lock() MutexGuard снова. Только как организовать это получение при помощи try_lock()? Пытался чудить что-то с while let и loop, но успехом это не закончилось
Vetro:
возможно не совсем в тему совет, но у parking_lot есть классная фича -
https://amanieu.github.io/parking_lot/parking_lot/deadlock/index.html
если есть возможность подтянуть эту библиотеку, вместо дефолтных мутексов (вместо которых, кстати говоря, хотят вмержить эту либу, или по крайней мере, точно хотели)
> Покопавшись в теме, я так понял, что нужно вместо lock() использовать try_lock()
нет, так не работает.
Berkus Decker:
надо проанализировать паттерн работы с локами и расставлять их так чтобы не было дедлоков.
===
via https://news.1rj.ru/str/rustlang_ru/311650
===
? !:
Всем привет. Новичок и нуждаюсь в небольшом совете.
Есть приложение, реализовано на нативных потоках Rust (thread::spawn) с обменом сообщениями между потоками при помощи mpsc и данными между потоками, доступными через Arc::new(Mutex::new(данные)).
Все работает прекрасно, за исключением того, что периодически случаются deadlock'и (для доступа к данным использую Arc::clone(переменная, полученная выше из Arc::new(Mutex::new(данные))), который внутри потока .lock().unwrap(), использую данные и тут же выполняю drop() на MutexGuard, который получил из lock().unwrap() выше. Проблема в том, что все равно успевает произойти deadlock.
Покопавшись в теме, я так понял, что нужно вместо lock() использовать try_lock() и если он не прошел, то пытаться получить через try_lock() MutexGuard снова. Только как организовать это получение при помощи try_lock()? Пытался чудить что-то с while let и loop, но успехом это не закончилось
Vetro:
возможно не совсем в тему совет, но у parking_lot есть классная фича -
https://amanieu.github.io/parking_lot/parking_lot/deadlock/index.html
если есть возможность подтянуть эту библиотеку, вместо дефолтных мутексов (вместо которых, кстати говоря, хотят вмержить эту либу, или по крайней мере, точно хотели)
> Покопавшись в теме, я так понял, что нужно вместо lock() использовать try_lock()
нет, так не работает.
Berkus Decker:
надо проанализировать паттерн работы с локами и расставлять их так чтобы не было дедлоков.
===
via https://news.1rj.ru/str/rustlang_ru/311650
amanieu.github.io
parking_lot::deadlock - Rust
API documentation for the Rust `deadlock` mod in crate `parking_lot`.
Forwarded from Alexander Chichigin
В очередной раз порекомендую прекрасную https://mirrors.edge.kernel.org/pub/linux/kernel/people/paulmck/perfbook/perfbook.html 😊
Forwarded from 𝙽𝚒𝚌𝚔 𝙻𝚒𝚗𝚔𝚎𝚛
Началось всё с проблемы четырёх красок. Это довольно трудная задача, об которую сломали головы не одна сотня исследователей, она формулируется очень просто, впервые озвучена в 1852-м, но доказать её потребовалось довольно много десятков лет (не так, как для теоремы Ферма, но тоже хадкорно). Вот она:
Верно ли, что любую карту на плоскости или сфере можно раскрасить с помощью только 4х красок так, что если области имеют общую границу, то они разного цвета
И вот в 1976 году было предоставлено доказательство, которое выглядело так, что любая карта (а точнее граф) сводилась к одному из примерно 1936 случаев, а затем каждый из случаев был доказан с помощью компьютерной программы.
Это породило нешуточный срач, многие математики не приняли эту новаторскую идею, потому что
1. А вдруг алгоритм содержит ошибку, а вручную проверить все 1936 случаев руками этот алгоритм почти невозможно
2. А вдруг реализация алгоритма содержит ошибку?
3. А вдруг сам процессор содержит ошибку?
Финальную точку и поставило появление Coq, в отличие от других программ он содержал доказательство самого себя и кроме этого ещё и достаточно скрупулёзно исследован. Было сделано доказательство для проблемы 4х красок и теперь возможность для ошибки стала ничтожной, во всяком случае не существует техники доказательств, которая бы обеспечивала меньшую возможность для ошибок.
Верно ли, что любую карту на плоскости или сфере можно раскрасить с помощью только 4х красок так, что если области имеют общую границу, то они разного цвета
И вот в 1976 году было предоставлено доказательство, которое выглядело так, что любая карта (а точнее граф) сводилась к одному из примерно 1936 случаев, а затем каждый из случаев был доказан с помощью компьютерной программы.
Это породило нешуточный срач, многие математики не приняли эту новаторскую идею, потому что
1. А вдруг алгоритм содержит ошибку, а вручную проверить все 1936 случаев руками этот алгоритм почти невозможно
2. А вдруг реализация алгоритма содержит ошибку?
3. А вдруг сам процессор содержит ошибку?
Финальную точку и поставило появление Coq, в отличие от других программ он содержал доказательство самого себя и кроме этого ещё и достаточно скрупулёзно исследован. Было сделано доказательство для проблемы 4х красок и теперь возможность для ошибки стала ничтожной, во всяком случае не существует техники доказательств, которая бы обеспечивала меньшую возможность для ошибок.