реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Matlab, Ядер много, толку мало.
Tpeck
сообщение Apr 12 2016, 08:28
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 14-03-06
Пользователь №: 15 243



День добрый.
Необходимо сформировать большой поток (в идеале >10 Мбит/с) в реальном времени и кидать его в UDP.
Формирователь состоит из источника данных, кодера, некая обработка над кодированными данными, добавление шума, формирование пакета.
Источник данных, кодер, добавление шума по отдельности работают ~ на 30 Мбит/с. А последовательно ~ 10 мбит/с при этом занято лишь одно ядро.
Внимание вопрос.
Можно ли организовать некий конвейер, когда источник данных занимает одно ядро, кодер другое, шум третье, а в UDP шлет четвертое?
Или это даже теоретически нельзя сделать?
Всем спасибо.
Go to the top of the page
 
+Quote Post
litv
сообщение Apr 12 2016, 10:29
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 401
Регистрация: 6-10-04
Из: Воронеж
Пользователь №: 806



Надо на С писать (точно успеете).
А на Matlab - Вы на Simulunk или как, как написано, может все данные в таблицу занести и т.д. ........ ?
Может я и на Matlabe успел бы.
Go to the top of the page
 
+Quote Post
Tpeck
сообщение Apr 12 2016, 10:48
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 14-03-06
Пользователь №: 15 243



Цитата(litv @ Apr 12 2016, 13:29) *
Надо на С писать (точно успеете).


Пока этот вариант не рассматриваю. Может после того, как в Matlabe запущу на меньшей скорости буду думать про C.
Цитата(litv @ Apr 12 2016, 13:29) *
А на Matlab - Вы на Simulunk или как, как написано, может все данные в таблицу занести и т.д. ........ ?


*.m
В той реализации, что хочу использовать зациклить не получиться.
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Apr 12 2016, 16:33
Сообщение #4


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Смотрите хелп по Parallel computing. Распараллелить что-то можно, что-то нет.
Генерация вектором происходит? Или каждый сампл генерируется функцией и вызов функции в цикле?
Go to the top of the page
 
+Quote Post
_4afc_
сообщение Apr 12 2016, 19:59
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 262
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565



Цитата(Tpeck @ Apr 12 2016, 12:28) *
Источник данных, кодер, добавление шума по отдельности работают ~ на 30 Мбит/с. А последовательно ~ 10 мбит/с при этом занято лишь одно ядро.
Можно ли организовать некий конвейер, когда источник данных занимает одно ядро, кодер другое, шум третье, а в UDP шлет четвертое?


В качестве бреда: может 4 матлаба запущенные на разных ядрах и передающие друг-другу данные через локальные UDP?
Все ядра там только в нескольких функциях, типа фурье...
Go to the top of the page
 
+Quote Post
Fat Robot
сообщение Apr 12 2016, 20:09
Сообщение #6


ʕʘ̅͜ʘ̅ʔ
*****

Группа: Свой
Сообщений: 1 008
Регистрация: 3-05-05
Пользователь №: 4 691



doc 'parallel computing toolbox'

Это чтобы быстрее считать.

Если же затея - сделать на matlab систему реального времени с такой пропускной способностью, то это унылая затея.

Цитата(Tpeck @ Apr 12 2016, 12:28) *
Можно ли организовать некий конвейер, когда источник данных занимает одно ядро, кодер другое, шум третье, а в UDP шлет четвертое?
Go to the top of the page
 
+Quote Post
Tpeck
сообщение Apr 13 2016, 09:54
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 14-03-06
Пользователь №: 15 243



Цитата(jorikdima @ Apr 12 2016, 19:33) *
Смотрите хелп по Parallel computing. Распараллелить что-то можно, что-то нет.
Генерация вектором происходит? Или каждый сампл генерируется функцией и вызов функции в цикле?


Вектором.
Go to the top of the page
 
+Quote Post
Tpeck
сообщение Apr 13 2016, 13:26
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 14-03-06
Пользователь №: 15 243



Цитата(_4afc_ @ Apr 12 2016, 22:59) *
В качестве бреда: может 4 матлаба запущенные на разных ядрах и передающие друг-другу данные через локальные UDP?


UDP узкое место.
Вот вопрос можно ли как-нибудь по другому наладить скоростное взаимодействие между Matlab?
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Apr 14 2016, 02:41
Сообщение #9


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Цитата(Tpeck @ Apr 13 2016, 16:26) *
UDP узкое место.
Вот вопрос можно ли как-нибудь по другому наладить скоростное взаимодействие между Matlab?

Так дважды посоветовали уже: parallel computing toolbox
Go to the top of the page
 
+Quote Post
Tpeck
сообщение Apr 14 2016, 05:21
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 307
Регистрация: 14-03-06
Пользователь №: 15 243



Цитата(jorikdima @ Apr 14 2016, 05:41) *
Так дважды посоветовали уже: parallel computing toolbox


- Дяденька милиционер, а можно я Вам анекдот расскажу.
- Ты что, я же милиционер!
- А я Вам два раза расскажу. sm.gif


Спасибо. sm.gif

Go to the top of the page
 
+Quote Post
Эдди
сообщение Apr 14 2016, 05:55
Сообщение #11


Знающий
****

Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



1. Выкинуть нафиг этот долбаный матлаб (хотя, вообще, странно, что тупит: матлаб уже давным-давно даже Cuda умеет, не то, что тупо потоки).
2. Использовать pthreads, а хорошо распараллеливаемые сложные вычисления вообще на видеокарту загонять!
Go to the top of the page
 
+Quote Post
syoma
сообщение Apr 14 2016, 14:49
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368



В матлабе из m-кода можно сгенерить Си код, скомпилировать тем же C++ компилятором и заставить крутиться на той же или другой платформе в реальном времени. Как правило, это ускоряет работу кода в разы. Смотрите http://nl.mathworks.com/products/matlab-coder/

Еще для DSP обработки в Матлабе пердусмотрены различные тулбоксы. Они обычно гораздо быстрее выполняют такие функции, так как оптимизированы самими программистами Матлаба.
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Apr 14 2016, 16:25
Сообщение #13


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Цитата(syoma @ Apr 14 2016, 17:49) *
В матлабе из m-кода можно сгенерить Си код, скомпилировать тем же C++ компилятором и заставить крутиться на той же или другой платформе в реальном времени. Как правило, это ускоряет работу кода в разы. Смотрите http://nl.mathworks.com/products/matlab-coder/

На 100% не скажу, но по-моему это уже давно не так. Лет 5. Матлаб при запуске м файлов компилит их как-бы и исполняет в нативном коде.
Go to the top of the page
 
+Quote Post
Grizzzly
сообщение Apr 14 2016, 19:20
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748



Цитата(jorikdima @ Apr 14 2016, 19:25) *
На 100% не скажу, но по-моему это уже давно не так. Лет 5. Матлаб при запуске м файлов компилит их как-бы и исполняет в нативном коде.

Зависит всё от исходного m-кода. Если в нем содержатся в основном встроенные функции, а операции выполняются векторно, возможен даже проигрыш от перехода к C. Обычно выигрыш от генерации в 1,5-2 раза. Был у меня случай с реализацией MPA алгоритма, содержащего много вложенных циклов, когда выигрыш составил порядка 15-20 раз. Но это, скорее, исключение.

Сообщение отредактировал Grizzzly - Apr 14 2016, 19:20
Go to the top of the page
 
+Quote Post
syoma
сообщение Apr 15 2016, 09:43
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 817
Регистрация: 14-02-07
Из: наших, которые работают за бугром
Пользователь №: 25 368



Цитата(jorikdima @ Apr 14 2016, 18:25) *
На 100% не скажу, но по-моему это уже давно не так. Лет 5. Матлаб при запуске м файлов компилит их как-бы и исполняет в нативном коде.

Тогда зачем им было писать это в описании?
Цитата
You can also use the generated code within the MATLAB environment to accelerate computationally intensive portions of your MATLAB code.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 17th June 2025 - 08:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.01577 секунд с 7
ELECTRONIX ©2004-2016