В рамках своей научной активности реализовал так называемый Федеративный Фильтр Калмана (Federated Kalman Filter). В этой статье рассказывается о том, что такое «Федеративный ФК», чем он отличается от обобщенного, а также описывается консольное приложение, реализующее данный фильтр и генетические алгоритмы для подбора параметров его математической модели. Приложение было реализовано с использованием TPL (Task Parallel Library), поэтому пост будет интересен не только специалистам по цифровой обработке сигналов.
Читать полностью »
Метка «tpl»
Генератор Федеративного Фильтра Калмана с использованием Генетических Алгоритмов
2013-05-01 в 12:30, admin, рубрики: .net, async, genetic algorithms, parallel programming, simulation, tpl, Алгоритмы, генетические алгоритмы, параллельное программирование, фильтр калмана, метки: async, genetic algorithms, parallel programming, simulation, tpl, генетические алгоритмы, фильтр калманаЗадачи и отмена в .Net — tips & tricks
2013-02-07 в 17:30, admin, рубрики: .net, tpl, метки: .net, c++, tpl С выходом .NET Framework 4.0 в состав BCL была добавлена библиотека Task Parallel Library (TPL), реализующая параллелизм на основе задач. В основе библиотеки лежат типы Task
и унаследованный от него тип Task<TResult>
. Эти типы являются обёртками для асинхронных операций; они позволяют абстрагироваться от таких технических деталей, как, например, потоки и синхронизировать асинхронные операции друг с другом.
В этой же версии .NET Framework появился мини-framework для кооперативной отмены асинхронных операций. Состоит он из всего трёх типов:
CancellationTokenSource
— создаёт маркёры отмены (свойствоToken
) и обрабатывает запросы на отмену операции (перегруженные методыCancel
/CancelAfter
).CancellationToken
— маркёр отмены; позволяет несколькими способами отслеживать запросы на отмену операции: опросом свойстваIsCancellationRequested
, регистрацией callback-функции (через перегруженный методRegister
), ожиданием на объекте синхронизации (свойствоWaitHandle
).OperationCanceledException
— исключение, выброс которого по соглашению означает, что запрос на отмену операции был обработан и операция должна считаться отменённой. Предпочтительный способ генерации исключения — вызов методаCancellationToken. ThrowIfCancellationRequested
.
Механизм отмены через CancellationToken
является стандартным для TPL — есть перегрузки методов, принимающих CancellationToken
, исключения OperationCanceledException
специальным образом обрабатываются и т.д. Однако, как и в любом другом API, есть свои тонкости, хитрости, best practices.
Читать полностью »
TPL + DLR = Многопоточный скриптинг
2012-08-31 в 6:56, admin, рубрики: .net, async pattern, game development, multithreading, ruby, tpl, метки: async pattern, c++, multithreading, tpl Я давно хотел поизучать «TPL» (Task Parallel Library) и «DLR» (Dynamic Languages Runtime). Для этого мне нужна была конкретная и, желательно, достаточно актуальная задача. В одном из моих переводов рассказывалось о так называемых «игровых циклах». Рассмотренная там тема для меня довольно интересна сама по себе и к тому же связка TPL+DLR подходит для той задачи как нельзя лучше, на мой взгляд. Так я пришел к идее о реализации легковесного асинхронного скриптового движка, который можно было бы относительно легко прикрутить к разным приложениям (в том числе к играм). Ядро движка я решил реализовать на C#. Выбор между динамическими языками в моем случае даже и не стоял. Я для этих целей уже давно облюбовал Ruby. Какое-то время я вынашивал идею, время от времени размышляя о ней на досуге.
Читать полностью »
.NET / [Из песочницы] Использование TPL Dataflow для многопоточной компрессии файлов
2012-02-20 в 9:20, admin, рубрики: .net, tpl, метки: .net, tpl На небольшом примере я расскажу как используя библиотеку TPL Dataflow можно решить довольно не тривиальную задачу многопоточной компрессии файлов в течении 15 минут.
Задача
Необходимо реализовать эффективную компрессию файлов используя класс GZipStream находящийся в пространстве имён System.IO.Compression. Предполагается, что сжимать мы будем файлы большие, и их нельзя уместить целиком в оперативной памяти.
TPL Dataflow
TPL Dataflow (TDF) построена поверх вошедшей в .NET 4 библиотеки TPL (The Task Parallel Library) и дополняет ее набором примитивов, для решения более сложных задач чем исходная библиотека. TPL Dataflow использует задачи,Читать полностью »