Раз никто, не знает или не хочет отвечать я продолжу свой монолог.
MATLAB, Simulink и технологии Multithreading.
Multithreading - многопотоковый режим, многопотоковость; 1) с точки зрения архитектуры процессора - способность процессора исполнять несколько задач (потоков) параллельно; 2) в программировании - параллельное выполнение нескольких потоков в рамках одного процесса;
Итак, что же компания MathWorks, предлагает своим пользователям в плане технологии Multithreading:
MATLAB: Первое упоминание о данной технологии (что я нашел) имеется в версии 7sp2, заключается оно в том, что компания MathWorks предоставила возможность своим пользователям при компиляции проекта использовать библиотеки MKL(Math Kernel Library) для процессоров Intel и CML(Core Math Library) для AMD. В версиях MATLAB до 2006а, данные функции включались созданием системных переменных: BLAS_VERSION mkl.dll OMP_NUM_THREADS 2 При этом количество процессоров, как я понимаю, не ограничено. С версии 2006а в preferences -> general -> multithreading, указываем количество процессоров на нашей платформе. И ВСЁ это действительно работает! Полностью задействованы оба ядра! Но это работает только для MATLAB, и никоим образом не относится к Simulink. Проверял на операционных системах Windows XP (32bit) и Debian Linux x64 4.0r.
Simulink: Поддержка технологии Multithreading начинается с версии Simulink 7.0, MATLAB 2007b, но только в режиме Rapid Accelerator. Поддержка на мой взгляд еще очень «жиденькая», процессор хотя и задействован на 100%, и расчет идет не на много быстрее чем в режиме Normal (процессор задействован на 50%), и тем более не быстрее чем в режиме простого Accelerator (процессор задействован на 50%). Вот результаты относительного тестирования (моя модель, тип данных double, 0.1сек): Normal (процессор задействован на 50%) – 17 мин 25.15 сек Rapid Accelerator (процессор задействован на 100%) – 16 мин 20.16 сек Accelerator (процессор задействован на 50%) – 6 мин 10.72 сек Причем Multithreading не зависит от того какая ОС 32 бита или 64.
Вот так вот!
Я прочитал довольно много ответов на вопрос «Почему у меня двухядерный процессор задействован на 50% с включенным режимом HyperThreading?» следующего содержания «Не беспокойтесь - это так винда так отображает, зайдите в BIOS, отключите HyperThreading и сравните времена выполнения». На это на мой взгляд не стоит вестись. Действительно после отключения HyperThreading модель считается медленнее, я проверял, но не в два раза, а на 5%. Причем если во время работы без режима HyperThreading, запустить еще какое-нибудь приложение, то время выполнения модели снижается, а с включенным HyperThreading - НЕТ. Отсюда делаем вывод, что 5% разницы, это работа системы, и окружения.
Сообщение отредактировал Nerozin Vasiliy - Oct 30 2007, 07:10
--------------------
Никогда не знаешь где тебе повезет
|