Re[3]: [ANN] Верификатор алгоритмов синхронизации
От: Аноним  
Дата: 20.08.08 12:00
Оценка:
Здравствуйте, remark, Вы писали:

R>>>Буду рад услышать любые отзывы, замечания и предложения.

А>>Андронный коллайдер?
R>Хм... Это замечание или предложение?
ИМХО звучит также устрошающе
Re: Почти offtopic: табы вперемешку с пробелами
От: Alxndr Германия http://www.google.com/profiles/alexander.poluektov#buzz
Дата: 20.08.08 12:00
Оценка:
Здравствуйте, remark, Вы писали:

R>Буду рад услышать любые отзывы, замечания и предложения.


Мелкая придирка: сабж в исходном коде повсеместно.
Неудобно читать редакторами, в которых табуляция не равна 4м пробелам.
Re[2]: Почти offtopic: табы вперемешку с пробелами
От: remark Россия http://www.1024cores.net/
Дата: 20.08.08 13:21
Оценка:
Здравствуйте, Alxndr, Вы писали:

R>>Буду рад услышать любые отзывы, замечания и предложения.


A>Мелкая придирка: сабж в исходном коде повсеместно.

A>Неудобно читать редакторами, в которых табуляция не равна 4м пробелам.

Извиняюсь. Постараюсь исправиться

1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re: [ANN] Верификатор алгоритмов синхронизации
От: dip_2000 Россия  
Дата: 20.08.08 13:47
Оценка:
Здравствуйте, remark, Вы писали:

R>Готов ответить на любые вопросы, связанные с инструментом, в этом топике или здесь:

Прошу прощение за дурацкий вопрос , но на скорую руку никак не найду, c++ 98 — Win32 Api код с помощью этой библиотеки можно проверять ?
Re[2]: [ANN] Верификатор алгоритмов синхронизации
От: remark Россия http://www.1024cores.net/
Дата: 20.08.08 14:13
Оценка: 2 (1)
Здравствуйте, dip_2000, Вы писали:

R>>Готов ответить на любые вопросы, связанные с инструментом, в этом топике или здесь:

_>Прошу прощение за дурацкий вопрос , но на скорую руку никак не найду, c++ 98 — Win32 Api код с помощью этой библиотеки можно проверять ?

В целом — можно. Зависит от того, какие именно функции из Win32 Api используются. В данный момент поддерживаются не все. Но некоторые модификации в код надо внести в любом случае.
Вот здесь можно посмотреть пример тестирования алгоритма под Win32 Api, который использует Event'ы и Semaphore'ы:
http://groups.google.ru/group/comp.programming.threads/msg/30c2ec41c4d498a2

1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[3]: [ANN] Верификатор алгоритмов синхронизации
От: dip_2000 Россия  
Дата: 20.08.08 14:33
Оценка:
Здравствуйте, remark, Вы писали:

R>В целом — можно. Зависит от того, какие именно функции из Win32 Api используются. В данный момент поддерживаются не все. Но некоторые модификации в код надо внести в любом случае.


в код тестируемый или в код библиотеки ?
Планируется ли развитие библиотеки в этом направлении ?


Re[4]: [ANN] Верификатор алгоритмов синхронизации
От: remark Россия http://www.1024cores.net/
Дата: 22.08.08 12:38
Оценка:
Здравствуйте, dip_2000, Вы писали:

R>>В целом — можно. Зависит от того, какие именно функции из Win32 Api используются. В данный момент поддерживаются не все. Но некоторые модификации в код надо внести в любом случае.


_>в код тестируемый или в код библиотеки ?


В тестируемый.

_>Планируется ли развитие библиотеки в этом направлении ?


Да, планируется. В смысле поддержки WaitForMultipleObjects, SignalObjectAndWait и т.д.

1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[3]: [ANN] Верификатор алгоритмов синхронизации
От: Lonely Dog Россия  
Дата: 22.08.08 14:15
Оценка:
Здравствуйте, remark, Вы писали:


R>
R>std::atomic<int> x;
R>x($).fetch_add(1);
R>// или просто
R>x($) += 1;
R>

Извините за дурацкий вопрос.
Что значает символ $ в этом коде?
Re[4]: [ANN] Верификатор алгоритмов синхронизации
От: remark Россия http://www.1024cores.net/
Дата: 22.08.08 14:25
Оценка: 2 (1)
Здравствуйте, Lonely Dog, Вы писали:

R>>
R>>std::atomic<int> x;
R>>x($).fetch_add(1);
R>>// или просто
R>>x($) += 1;
R>>


LD>Извините за дурацкий вопрос.

LD>Что значает символ $ в этом коде?

Это вспомогательная конструкция для сбора отладочной информации (имя файла, номер строки, имя функции). $ — это макрос. () — это вызов operator() у объекта.

1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[5]: [ANN] Верификатор алгоритмов синхронизации
От: Lonely Dog Россия  
Дата: 22.08.08 14:27
Оценка:
Здравствуйте, remark, Вы писали:

R>Это вспомогательная конструкция для сбора отладочной информации (имя файла, номер строки, имя функции). $ — это макрос. () — это вызов operator() у объекта.

Я просто сначала подумал, что $ это что-то из следующего стандарта C++, или что это имеет какое-то отношение к многопочности.
Спасибо за ответ.
Re: Версия 1.2 (Java/CLI)
От: remark Россия http://www.1024cores.net/
Дата: 26.08.08 19:38
Оценка:
Здравствуйте, remark, Вы писали:

R>Хочу анонсировать инструмент, который я разработал. Инструмент называется Relacy Race Detector. Это — верификатор алгоритмов синхронизации для расслабленных моделей памяти (в особенности C++0x). Инструмент предназначен для тестирования как традиционных mutex-based алгоритмов (основанных на mutex, condition_variable, semaphore, event), так и lock-free алгоритмов (основанных на С++0х std::atomic<> и std::atomic_thread_fence), а так же для смешанных алгоритмов. Relacy точно моделирует расслабленную ISO C++0x модель памяти (relaxed, acquire, release, acq_rel, seq_cst атомарные операции и барьеры памяти), но может так же использовться и для верификации алгоритмов для других моделей памяти (x86, PPC, Java, CLI).



Я выложил версию 1.2 Relacy Race Detector. Можно скачать здесь:
http://groups.google.com/group/relacy/files

Основная доработка релиза — это поддержка верификации Java/CLI (aka .NET) алгоритмов (но это всё ещё С++ библиотека).
Поддержка заключается в слудущем.
— Поддержка GC. Т.е. просто выделяем память и забываем. GC решает некоторые проблемы, связанные с lock-free алгоритмами, — безопасное освобождение памяти и ABA-проблема. Режим GC можно использовать и при верификации С++ алгоритмов — просто определите макрос RL_GC.
— Поддержка Java и CLI моделей памяти. Т.е. более сильный барьер памяти и более сильные атомарные операции. Так же для Java происходит автоматичесий эмит барьера памяти между volatile сохранением и volatile загрузкой.
— Поддержка основных Java и CLI API, связанных с синхронизацией.
Для CLI это — rl::nvolatile<> эмулирует volatile переменные, rl::nvar<> эмулирует обычные переменные. Interlocked операции доступны в пространстве имён rl::Interlocked (например, rl::Interlocked::CompareExchange()). Так же доступны rl::Thread::MemoryBarrier(), rl::Thread::VolatileRead(), rl::Thread::VolatileWrite() and rl::Thread::SpinWait().
Для Java доступны соотв. rl::jvolatile<>, rl::jvar<>, rl::AtomicInteger and rl::AtomicLong.

Однако богатые библиотеки поддержки Java/CLI (такие как ConcurrentQueue и т.д.) не эмулируются. Тем не менее можно использовать мьютексы, переменные условной синхронизации, семафоры и события из API С++, POSIX или Windows.

Так же надо отметить следующий момент. В Java/CLI фактически нет таких вещей как гонки (data races) и неинициализированные переменные. Это вынуждает просто отключить некоторые типы автоматически детектируемых ошибок (гонки и достпы к неинициализированным переменным). С т.з. верификации алгоритмов — это плохо. Однако в Java/CLI режимах по-прежнему можно использовать rl::var<>, по-сути это вновь позволит автоматически детектировать упомянутые типы ошибок. Т.е. если Вы уверены, что доступ к какой-то переменной должен быть только в "однопоточном стиле" (например, все доступы защищены мьютексом), то для такой переменной можно использовать rl::var<>.


По-прежнему
R>Буду рад услышать любые отзывы, замечания и предложения.

1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[2]: Версия 1.2 (Java/CLI)
От: remark Россия http://www.1024cores.net/
Дата: 26.08.08 19:39
Оценка:
Здравствуйте, remark, Вы писали:

R>Я выложил версию 1.2 Relacy Race Detector. Можно скачать здесь:

R>http://groups.google.com/group/relacy/files

R>Основная доработка релиза — это поддержка верификации Java/CLI (aka .NET) алгоритмов (но это всё ещё С++ библиотека).



Да, забыл. Пример верификации Java алгоритма можно поглядеть здесь:
http://groups.google.com/group/relacy/browse_frm/thread/257150359b8fb57d#

Пример CLI алгоритма:
http://groups.google.com/group/relacy/browse_frm/thread/f91c913c298a20ab#

1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[2]: [ANN] Верификатор алгоритмов синхронизации
От: remark Россия http://www.1024cores.net/
Дата: 26.08.08 19:58
Оценка:
Здравствуйте, Кодт, Вы писали:

R>>Хочу анонсировать инструмент, который я разработал. Инструмент называется Relacy Race Detector. Это — верификатор алгоритмов синхронизации для расслабленных моделей памяти (в особенности C++0x).


К>Статью для журнала не хочешь написать?



Когда придёт время, возможно, напишу. Сейчас — нет. По нескольким причинам.
Во-первых, библиотека сейчас в очень активном развитии. Плюс часть старых интерфейсов пока меняется.
Во-вторых, сама модель памяти C++0x пока не до конца зафиксирована. Ещё возможно что-то измениться по отношению к барьерам памяти. Плюс я сам же практически убедил Hans Boehm и Peter Dimov внести некоторые изменения в правила но отношению к взаимодействию барьеров памяти и атомарных операций:
http://groups.google.com/group/comp.programming.threads/msg/d2cb5e1f98bf0afa
И возможно удастся убедить внести ещё изменения по отношению к барьерам памяти:
http://groups.google.com/group/comp.programming.threads/msg/07c810b38be80bbb
Это всё придётся отражать и в Relacy. Ну и там всякие мелочи, типа за последний месяц, например, переименовали все упоминания 'swap' в атомарной библиотеки на 'exchange'
В-третьих, у библиотеки такого плана не предполагается очень большого числа пользователей. Т.е. это не ширпотреб, в некотором смысле. Хотя, конечно, по-моему мнению, библиотекой могло бы пользоваться значительно больше разработчиков, чем будет. Тем не менее, как видишь, пока за неделю никто активного интереса тут не проявил, и со мной тоже никто с rsdn не связывался касательно библиотеки.

1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[3]: [ANN] Верификатор алгоритмов синхронизации
От: Vzhyk  
Дата: 26.08.08 20:55
Оценка:
remark пишет:
>
> К>Статью для журнала не хочешь написать?
>
>
> Когда придёт время, возможно, напишу. Сейчас — нет.
И зря. А потом обновишь статью. (и реклама и объяснения на пальцах и ...)

> В-третьих, у библиотеки такого плана не предполагается очень большого

> числа пользователей. Т.е. это не ширпотреб, в некотором смысле. Хотя,
> конечно, по-моему мнению, библиотекой могло бы пользоваться значительно
> больше разработчиков, чем будет. Тем не менее, как видишь, пока за
> неделю никто активного интереса тут не проявил, и со мной тоже никто с
> rsdn не связывался касательно библиотеки.
Ну необязательно же всем писать, особенно если по сути нечего сказать.
Библиотека интересна. Например, я, будет время, попробую. Думаю многие
также.
Posted via RSDN NNTP Server 2.1 beta
Re[5]: [ANN] Верификатор алгоритмов синхронизации
От: gear nuke  
Дата: 30.08.08 15:56
Оценка:
Здравствуйте, remark,

Откуда такие штуки откапываются?

#define $ RL_INFO


В nondigit символа нет, но MSVC зараза переваривает
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re[6]: [ANN] Верификатор алгоритмов синхронизации
От: remark Россия http://www.1024cores.net/
Дата: 30.08.08 17:15
Оценка: 6 (1)
Здравствуйте, gear nuke, Вы писали:

GN>Здравствуйте, remark,


GN>Откуда такие штуки откапываются?


GN>
GN>#define $ RL_INFO
GN>


GN>В nondigit символа нет, но MSVC зараза переваривает


В стандарте сказано:

identifier-nondigit:
nondigit
universal-character-name
other implementation-defined characters


gcc говорит:

-fdollars-in-identifiers
Accept ‘$’ in identifiers.


MSVC говорит:

The dollar sign is also a valid identifier in Visual C++.


1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re: [ANN] Верификатор алгоритмов синхронизации
От: c-smile Канада http://terrainformatica.com
Дата: 30.08.08 18:20
Оценка:
Здравствуйте, remark, Вы писали:

Известно что любой измерительный инструмент вносит собственные возмущения в измерямый процесс.
Вопрос состоит в следующем: возможны ли такого рода возмущения и какие?

Ну т.е. false positives нет — это как я понимаю методологически, но что-то мне говорит что они в принципе
возможны самим фактом добаления инструмента в процесс. Или я ошибаюсь?
Re[2]: [ANN] Верификатор алгоритмов синхронизации
От: remark Россия http://www.1024cores.net/
Дата: 30.08.08 19:37
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Известно что любой измерительный инструмент вносит собственные возмущения в измерямый процесс.

CS>Вопрос состоит в следующем: возможны ли такого рода возмущения и какие?

CS>Ну т.е. false positives нет — это как я понимаю методологически, но что-то мне говорит что они в принципе

CS>возможны самим фактом добаления инструмента в процесс. Или я ошибаюсь?

false positives (т.е. когда библиотека выдаёт ошибку, которой на самом деле нет) в данном контексте не сильно страшны, т.к. после ручного анализа будет видно, что это false positive, и ошибку в библиотеке можно будет исправить. Теоретически, и до сего момента практически, все false positives можно исправить, т.е. у библиотеки достаточно информации, что точно сказать, есть тут, например, data race или нет.

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

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

1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[2]: [ANN] Верификатор алгоритмов синхронизации
От: gear nuke  
Дата: 31.08.08 08:03
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>false positives нет — это как я понимаю методологически, но что-то мне говорит что они в принципе

CS>возможны самим фактом добаления инструмента в процесс. Или я ошибаюсь?

Измеряемого процесса как такового и нет, это же симулятор. Ошибки могут быть только методологические, за счёт неверной эмуляции объектов синхронизации, но это исправимо.
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re[3]: [ANN] Верификатор алгоритмов синхронизации
От: remark Россия http://www.1024cores.net/
Дата: 31.08.08 09:19
Оценка:
Здравствуйте, gear nuke, Вы писали:

GN>Здравствуйте, c-smile, Вы писали:


CS>>false positives нет — это как я понимаю методологически, но что-то мне говорит что они в принципе

CS>>возможны самим фактом добаления инструмента в процесс. Или я ошибаюсь?

GN>Измеряемого процесса как такового и нет, это же симулятор. Ошибки могут быть только методологические, за счёт неверной эмуляции объектов синхронизации, но это исправимо.


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

1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.