В моем проекте у меня много функций MATLAB. Для каждой функции я вызываю функцию Initialize, когда приложение запускается. Я попытался вызвать эти функции, используя parallel_invoke. Я пробовал это несколько раз, и все это требует больше времени, этот код без этого. Может ли кто-нибудь объяснить это? Есть ли что-то конкретное в функциях MATLAB или Initialize?Функции Matlab и parallel_invoke
ответ
В Matlab Runtime имеется только один поток интерпретатора, поэтому параллельное использование функций Matlab не приносит вам ничего: когда вызывается первая функция A, MCR получает блокировку и освобождает ее только после выхода этой функции. Вызов другой функции B в течение этого периода приводит к попытке получить блокировку, которая затем, очевидно, просто блокируется до тех пор, пока не закончится A. Причина, по которой вы видите, что она занимает больше времени, вероятно, связана с накладными расходами на блокировку/parallel_invoke.
Я не уверен, что вы имеете в виду с для каждой функции я вызываю функцию Инициализировать: если вы не используете несколько библиотек в Matlab (который будет AFAIK менее производительным, чем с одного DLL) вам нужно только позвонить его инициализировать/Завершить один раз.
+1 имеет смысл теперь, что означало OP под «инициализацией функций». Вот какой контекст для других, не знакомых с компилятором MATLAB: http://blogs.mathworks.com/loren/2011/02/03/creating-c-shared-libraries-and-dlls/ и [комментарий] (http: //blogs.mathworks.com/loren/2011/02/03/creating-c-shared-libraries-and-dlls/#comment-32017) от Питера Вебба, подтверждающего этот факт об использовании семафоров для блокировки. – Amro
Я использую C++ в Visual Studio 2010 – user1913557
- 1. TBB: parallel_for и parallel_invoke
- 2. parallel_invoke же метод в TBB
- 3. Matlab Функции и аргументы
- 4. Неожиданный вывод из parallel_invoke в C++
- 5. Как установить индикатор выполнения для parallel_invoke?
- 6. MATLAB: Вложенные функции и структуры
- 7. Функция функции и функции функции Matlab в цикле
- 8. Вызов функции внутри функции MATLAB
- 9. В Runtime параллелизма я могу использовать parallel_invoke или task_group с объектами неконстантной функции?
- 10. Как отличаются функции и линии MATLAB?
- 11. Вложенные функции и генерирует участок в MATLAB
- 12. «BorderSize» и «TrimBorder» в функции blockproc MATLAB
- 13. Вопросы функции спектрометра, масла и фильтра Matlab
- 14. Макс функции и скобки в Matlab
- 15. Оценка и графические функции в MATLAB
- 16. Вызывающие функции и скрипты в Matlab/Octave
- 17. Matlab функции и возвращаемые значения в цикле
- 18. MATLAB - правильное определение функции и запуска скрипта
- 19. Функции перегрузки в MATLAB
- 20. Описание разреженной функции Matlab
- 21. Графические функции MATLAB
- 22. MATLAB оптимизация функции
- 23. Matlab аргумент функции вопрос
- 24. Использование функции matlab «pdf»
- 25. Matlab Выполнение круглой функции
- 26. Создать функции в matlab
- 27. Ручки функции MATLAB
- 28. Передача аргумента функции Matlab
- 29. Выбор функции в MATLAB
- 30. Matlab - как построить функции
Ваш вопрос непонятен. Вы работаете с библиотекой Intel TBB на C++? как вы интегрируетесь с MATLAB? – Amro
Какой parallel_invoke? МИЗ? TBB? Некоторый код может помочь. – doctorlove