
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Сразу несколько слов о своей машине:
Взял пример из Документации Матлаба. Слегка его перекроил, получилось вот что:
где tic\toc - это функции для замера времени выполнения.
Результаты такие:
Аналогичный скрипт для МТ5:
И вот такие результаты:
Попробовал matrix::GeMM(). Вообще огонь - "привёз" 449.141 сек. Может памяти и меньше тратит, но скорость падает...
Пока что первичный вывод такой - Матлаб будет пошустрее с большими матрицами. Было бы интересно узнать результаты коллег, особенно в МТ5.
Попробовал matrix::GeMM(). Вообще огонь - "привёз" 449.141 сек. Может памяти и меньше тратит, но скорость падает...
Пока что первичный вывод такой - Матлаб будет пошустрее с большими матрицами. Было бы интересно узнать результаты коллег, особенно в МТ5.
Проблема в "AMD Phenom II X3 720" - надо менять, если речь идет об серьезных вычислениях. Это процессор 2010 года без AVX.
По факту мы не используем специализированные расчетные кернелы для старых процессоров и для них гоняем наивные/лобовые алгоритмы.
Вот мои результаты на 32 x AMD Ryzen 9 9950X 16-Core, AVX2:
Наиболее оптимизированные операции в OpenBLAS, базовые операции мы тоже постепенно оптимизируем под максимальную производительность.
Прогнал на том же компьютере в Mathlab R2024B:
Наш GeMM даже быстрее оказался, 1.01 sec против 1.15 secВажно, что фактически не имеет смысла заниматься бенчмарками на терминалах/процессорах без пометки хотя бы AVX.
Версия терминала в режиме Regular x64 собрана в режиме максимальной совместимости и с минимальными оптимизациями. Для процессоров без AVX вне зависимости от количества ядер или частоты процессора используются математические функции без мультипоточности, специально сделанные для режима совместимости.
В OpenBlAS используются вычислительные кернелы вплоть до AVX512. Они определяются динамически.
Матлаб по умолчанию параллелит вычисления на все доступные ядра.
В mql5 это надо делать через OpenCL.
Поэтому не корректно будет сравнивать, если вычисления mql5 будут не через OpenCL.
Насчет CPU инструкций AVX, AVX2+FMA3 не знаю как онии выполняются в mql5, но сомневаюсь что параллелятся по умолчанию.
Просто за один такт процессорного времени, выполняется несколько математических операций, что не соответствует много ядерности.
Много математических операций параллелятся на все ядра ЦПУ автоматически в MQL5 при наличии AVX и выше.
За счет нативных типов матриц/векторов, массы встроенных методов у них + OpenBLAS, теперь математический код получается очень компактный, легкий для понимания и очень просто переносится из других систем.
Сейчас можно легко писать сложные нейросети на MQL5 - мат аппарата хватает.
Можно эту проблему как-то подправить ?
Не считает псевдообратную после 10000
Много математических операций параллелятся на все ядра ЦПУ автоматически в MQL5 при наличии AVX и выше.
За счет нативных типов матриц/векторов, массы встроенных методов у них + OpenBLAS, теперь математический код получается очень компактный, легкий для понимания и очень просто переносится из других систем.
Сейчас можно легко писать сложные нейросети на MQL5 - мат аппарата хватает.
Ренат, а почему в Маркете запрещены все расширения CPU?
Можно эту проблему как-то подправить ?
Не считает псевдообратную после 10000
Считает.
Какой у Вас код ошибки (GetLastError)?
Считает.
Какой у Вас код ошибки (GetLastError)?
Это у меня проблема получается, не хватает памяти. Вопрос снимается
ERR_NOT_ENOUGH_MEMORY
4004
Недостаточно памяти для выполнения системной функции