Страница 1 из 2

Параллельные вычисления

Добавлено: 20 мар 2017, 22:35
Fancnc
Здравствуйте!
Подскажите как организовать параллельные вычисления с назначением ядра под определенную задачу. Есть два независимых цикла, 1-ый сбора данный, 2-ой обработка этих данных. на первый цикл отводится 1 и 2 ядро, а под обработку с 3 по 8. Возможно ли такое организовать?

Re: Параллельные вычисления

Добавлено: 20 мар 2017, 23:09
IvanLis
Fancnc писал(а):Здравствуйте!
Подскажите как организовать параллельные вычисления с назначением ядра под определенную задачу. Есть два независимых цикла, 1-ый сбора данный, 2-ой обработка этих данных. на первый цикл отводится 1 и 2 ядро, а под обработку с 3 по 8. Возможно ли такое организовать?
Посмотрите: http://zone.ni.com/reference/en-XX/help ... pu_assign/

Re: Параллельные вычисления

Добавлено: 21 мар 2017, 00:11
Fancnc
Получается, нужно делать 2 цикла сбора данных и 6 циклов обработки, и потом все это дело синхронизировать :suicide: ???

Re: Параллельные вычисления

Добавлено: 21 мар 2017, 01:56
Fancnc
По такому принципу нужно делать ?
Похоже этот вариант не подходит, ацп работают на частоте 2 МГц и как их синхронизировать в разных циклах не особо понимаю...

Re: Параллельные вычисления

Добавлено: 21 мар 2017, 21:41
IvanLis
Fancnc писал(а):По такому принципу нужно делать ?
Похоже этот вариант не подходит, ацп работают на частоте 2 МГц и как их синхронизировать в разных циклах не особо понимаю...
Выложите snippet, не все переехали на 2016 версию..

Re: Параллельные вычисления

Добавлено: 21 мар 2017, 21:51
Artem.spb
Fancnc писал(а):По такому принципу нужно делать ?
Похоже этот вариант не подходит, ацп работают на частоте 2 МГц и как их синхронизировать в разных циклах не особо понимаю...
синхронизация должна выражаться в чём?
у вас и так всё условно работает. С АЦП берётся пачка данных (на 2МГц про поточечную обработку можно забыть), через очередь отправляется в соседний цикл, там обрабатывается.
Только нотификаторы - не самый лучший способ в данном случае. Если цикл обработки пропустит данный, они безвозвратно затрутся следующей пачкой.
IvanLis писал(а):Выложите snippet, не все переехали на 2016 версию..
приложение максимум в 15, просто некоторым лень корректно заполнить профиль

Re: Параллельные вычисления

Добавлено: 21 мар 2017, 22:16
Fancnc
синхронизация должна выражаться в чём?
синхронный старт всех модулей ацп, когда в разных циклах, то каждый модуль стартует рандомно, если делать все в одном цикле проблем нет.
на 2МГц про поточечную обработку можно забыть
PXIe-8880 справляется c 64 каналами по 2МГц, но на грани, хочется раскинуть определенные задачи по ядрам, а то стандартный параллелизм For Loop странно раскидывает задачи
Только нотификаторы - не самый лучший способ в данном случае
а как лучше сделать?
приложение максимум в 15, просто некоторым лень корректно заполнить профиль
на работе и дома разные версии, извиняйте=)
Выложите snippet, не все переехали на 2016 версию..

Re: Параллельные вычисления

Добавлено: 21 мар 2017, 22:28
Artem.spb
Fancnc писал(а):
синхронизация должна выражаться в чём?
синхронный старт всех модулей ацп, когда в разных циклах, то каждый модуль стартует рандомно, если делать все в одном цикле проблем нет.
как раз в запихивании всего чтения в один цикл нет ничего плохого. Но если хочется разнести то копайте стартовые триггеры (есть во многих примерах чтения DAQmx)
Только нотификаторы - не самый лучший способ в данном случае
а как лучше сделать?
очередь

Re: Параллельные вычисления

Добавлено: 21 мар 2017, 22:46
Fancnc
Но если хочется разнести то копайте стартовые триггеры (есть во многих примерах чтения DAQmx)
Так и делаю, но проблема в том, что циклы запускаются в разное время и сбор данных и из-за этого разбегается. Синхронизировать их можно с частотой 1 КГц, что не очень помогает, если ацп работают на 2МГц,

Re: Параллельные вычисления

Добавлено: 21 мар 2017, 22:57
Artem.spb
при чём тут старт циклов?
конфигурируете стартовые триггеры, и чтение начнётся одновременно. А циклы подождут
http://www.ni.com/tutorial/4329/en/

Re: Параллельные вычисления

Добавлено: 21 мар 2017, 23:36
Borjomy_1
У очередей и нотификаторов есть ограничения по времени выполнения, накладываемые операционной системой (время переключения процессов). Поэтому даже на мощной машине интенсивная работа с очередями нагружает процессор серьезно (вопрос не в размере передаваемых данных, а в частоте вызова функций чтения и записи в очередь). Альтернативный вариант кода без очередей работает на пару порядков быстрее. Для высокоскоростных вычислений это может стать проблемой.

Re: Параллельные вычисления

Добавлено: 21 мар 2017, 23:47
Fancnc
конфигурируете стартовые триггеры, и чтение начнётся одновременно. А циклы подождут
наверное, что то не понимаю.
конфигурируется система следующим образом, используется counter он же задает и fd и запускается по тригеру
схему приблизительно набросал как реализовано

Re: Параллельные вычисления

Добавлено: 22 мар 2017, 00:09
Artem.spb
почти, но ведомую задачу надо подготовить к старту, а ведущую стартовать только после подготовки ведомой
start.png
за безошибочность не ручаюсь, проверить на на чем

Re: Параллельные вычисления

Добавлено: 22 мар 2017, 00:15
Fancnc
но ведомую задачу надо подготовить к старту, а ведущую стартовать только после подготовки ведомой
а Flat Sequence Structure нельзя использовать??

Re: Параллельные вычисления

Добавлено: 22 мар 2017, 00:32
Artem.spb
зачем, если есть провода?