Описание тега transactional-memory

В информатике транзакционная память (TM) - это механизм управления параллелизмом, аналогичный транзакциям базы данных для управления доступом к общей памяти при параллельных вычислениях. Это альтернатива синхронизации на основе блокировки. Обычно он делится на аппаратные и программные реализации (HTM и STM соответственно).
1 ответ

__transaction_atomic без поддержки транзакционной памяти

Я просто компилировал код C/C++, используя __transaction_atomic но произошла ошибка компилятора [Error] __transaction_atomic' without transactional memory support enabled Код является: #include <stdio.h> int main() { int i = 0; __transaction_a…
24 дек '15 в 08:46
1 ответ

Таинственный ртм прервать с помощью haswell tsx

Я экспериментирую с расширениями tsx в haswell, адаптируя существующую кодовую базу среднего размера (1000 строк) к использованию транзакционных расширений памяти GCC (которые косвенно используют haswell tsx на этой машине) вместо грубозернистых бло…
06 май '15 в 06:49
4 ответа

Программная транзакционная память - пример компоновки

Одним из основных преимуществ программной транзакционной памяти, которая всегда упоминается, является возможность компоновки и модульность. Различные фрагменты могут быть объединены для получения более крупных компонентов. В программах, основанных н…
01 апр '11 в 20:33
2 ответа

Способ формирования "выбора" на MVars без опроса

У меня есть два MVars (ну, MVar и Чан). Мне нужно вытащить вещи из Чана и обработать их, пока другой MVar больше не будет пустым. Моим идеальным решением было бы что-то вроде UNIX select функция, в которой я передаю список (предположительно пустых) …
04 май '11 в 05:48
1 ответ

Добавление генерации случайных чисел в монаду STM в Haskell

В настоящее время я работаю над некоторыми тестами транзакционной памяти в Haskell и хотел бы иметь возможность использовать случайные числа в транзакции. Я в настоящее время использую Random монаду / монадный преобразователь отсюда. В следующем при…
2 ответа

Пытаясь понять простые вещи Haskell STM

Я застрял в понимании атомарного понятия в STM. Я иллюстрирую на примере import Control.Concurrent import Control.Concurrent.STM import Control.Monad import qualified Data.Map as Map main :: IO () main = do d <- atomically$ newTVar Map.empty sock…
02 фев '11 в 08:56
1 ответ

Стандартный C++ статус транзакционной памяти

Каково текущее состояние предложения транзакционной памяти для C++17. Будет ли он включен в стандарт, нацелен ли он на включение в какую-то будущую версию стандарта C++, или это всего лишь экспериментальная функция проверки концепции, статус стандар…
19 авг '16 в 09:43
3 ответа

Что такое транзакционная память?

Я в замешательстве, потому что при чтении вики-страницы кажется, что у меня просто есть checkValidate и система коммитов для загрузки и хранения. Является ли целью решить проблемы синхронизации? Это программный продукт, построенный поверх современно…
29 июн '12 в 03:23
1 ответ

Попробуйте Intel TSX

Я хочу опробовать возможности транзакционной памяти Intel, но мне не нужно покупать новый сервер для этого. Существуют ли облачные сервисы с CPUS, которые поддерживают TSX?
21 май '15 в 15:07
3 ответа

Какое преимущество предоставляет новая функция "синхронизированный" блок в C++?

Есть новая экспериментальная функция (вероятно, C++20), которая является "синхронизированным блоком". Блок обеспечивает глобальную блокировку раздела кода. Ниже приведен пример из cppreference. #include <iostream> #include <vector> #incl…
03 авг '17 в 14:28
1 ответ

Почему компилятор XLC в bluegene/q не поддерживает '-qtm'?

У меня проблема с компилятором xlc на BlueGene/q. Версия компилятора xlc - 12.1: IBM XL C/C++ for Blue Gene, V12.1 Version: 12.01.0000.0000 Согласно документу 1, он должен поддерживать опцию компилятора "-qtm", которая используется для включения тра…
09 апр '15 в 20:34
1 ответ

Почему упорядоченные std::map и упорядоченные std::set не приглашены для выполнения транзакции_safe?

Как известно, в Экспериментальном C++ есть транзакционная память TS (ISO/IEC TS 19841:2015): достаточно ли объявить функцию как action_safe, чтобы их можно было использовать как поточно-ориентированные? А также operator[] объявлен как transaction_sa…
03 авг '16 в 15:00
1 ответ

Преобразовать аргумент ref dataType в ptr(dataType) в часовне

Существует ли официальный способ преобразования аргумента, переданного по ссылке, в указатель на тот же тип? Я знаю, что на этапе компиляции CodeGen это ref int становится int *и я знаю, что вы можете сделать это с помощью extern для совместимости с…
08 мар '18 в 15:17
3 ответа

Спать без системных или IO звонков

Мне нужен режим сна, который не выдает никаких системных или IO-вызовов для сценария с аппаратной транзакционной памятью (эти вызовы могут привести к прерыванию). Спать в течение 1 микросекунды, как в usleep(1) было бы просто отлично. Этот вопрос пр…
18 мар '14 в 10:40
3 ответа

Какие алгоритмы используются в Clojure, Haskell (и других языках) для STM?

Как я понимаю, существует несколько различных алгоритмов для реализации программной транзакционной памяти (и это довольно активная область исследований). Где я могу найти (не углубляясь в исходный код), которые используются на разных языках и в библ…
1 ответ

Общие компоненты, дружественные к программной транзакционной памяти

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

Достаточно ли объявить функцию как action_safe, чтобы их можно было использовать поточно-ориентированно?

Достаточно просто объявить все функции как transaction_safe в некоторых мой класс, так что его можно использовать как потокобезопасный в транзакциях atomic_noexcept, atomic_cancel, atomic_commit из экспериментальной транзакционной памяти TS? Как изв…
29 июл '16 в 16:20
3 ответа

Что нужно для того, чтобы транзакционная память была жизнеспособной?

Я работал над транзакционной памятью и ее жизнеспособностью для системного программирования (базы данных, операционные системы, серверы и т. Д.). Мой собственный опыт использования транзакций вместе с тем, что я видел, как немногие сообщества исполь…
3 ответа

Чем Clojure STM отличается от Haskell STM?

Я пытаюсь найти различия между тем, что Clojure называет STM, и тем, что реализовано в Haskell как STM. Отбросив фактические языковые семантические различия, я немного запутался, поскольку Рич Хики говорит в своей речи, что реализация STM в Clojure …
1 ответ

Java: реинжиниринг параллелизма библиотеки с открытым исходным кодом

В рамках некоторого анализа структур JVM STM я рассматриваю вопрос о реорганизации механизмов блокировки библиотеки с открытым исходным кодом для использования вместо нее STM. Затем я бы провел несколько тестов, чтобы сравнить производительность, пр…
09 дек '12 в 18:35