Особенности языка mql5, тонкости и приёмы работы - страница 321
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Почему второй вариант работает в 20 раз медленнее?
@amrali, @Nikolai Semko, спасибо!
Я хотел реализовать прямой доступ к массиву без проверок на корректность индекса.
@amrali, @Nikolai Semko, спасибо!
Я хотел реализовать прямой доступ к массиву без проверок на корректность индекса.
Этот вариант в три раза медленнее.
Этот вариант в три раза медленнее.
Судя по всему компилятор видит 8 разных индексов, 8 отдельных проверок границ на каждой итерации и в результате потеря автовекторизации (не распознаёт паттерн).
0.3 нс на итерацию - думаю это почти предел. Даже C++ DLL не даст большого выигрыша. Практически уперлись в пропускную способность памяти, а не CPU.
Дальше только менять архитектуру решения. Возможно использование GPU (OpenCL) даст какие-то результаты, но это только в случае, если присутствуют многократные операции над одним буфером или более сложные вычисления чем просто сумма. Для однократной суммы — GPU может быть сопоставим или даже медленнее из-за transfer overhead.
Возможно использование GPU (OpenCL) даст какие-то результаты, но это только в случае, если присутствуют многократные операции над одним буфером или более сложные вычисления чем просто сумма. Для однократной суммы — GPU может быть сопоставим или даже медленнее из-за transfer overhead.
ради любопытства сгенерил с помощью AI ассистента код теста с использованием OpenCL
Важно понимать что это результат на очень слабой интегрированной ноутбучной видео карте c shared с ОЗУ памятью Intel Iris Xe Graphics.
Если поставить видеокарту примерно за 500 баксов (например NVIDIA RTX 4070), то скорость загрузки в память GPU увеличится в 4-5 раз, а скорость вычислений примерно в 10 раз в сравнении с моей картой.
Ожидаемые результаты на RTX 4070
*PCIe 4.0 x16 = ~25 GB/s теоретический
**Реальный через PCIe, не VRAM bandwidth
Интересно будет посмотреть результат этого теста для продвинутых видеокарт. Если есть у кого, покажите результат плиз.
PS Второй тест загрузки массива в GPU всегда быстрее из-за кэшa L3, в котором оказывается наш массив. Особенно заметно при размере массива меньше размера L3 кеша.
Лучший вариант - вся логика внутри C++ DLL
и OMP там включить
https://learn.microsoft.com/ru-ru/cpp/parallel/openmp/reference/openmp-directives?view=msvc-170
https://stackoverflow.com/questions/27056090/how-to-parallelize-this-array-sum-using-openmp
ради любопытства сгенерил с помощью AI ассистента код теста с использованием OpenCL
Сохранился диалог?
ЗЫ Получаю ERR_OPENCL_NOT_SUPPORTED.
Сохранился диалог?
ЗЫ Получаю ERR_OPENCL_NOT_SUPPORTED.
МТшные примеры работают? Возможно драйвера не стоят.
У меня такая проблема:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
OpenCL в трейдинге
Rorschach, 2024.11.13 20:37
Поставил AMD APP SDK 3.0, терминал пишет opencl.dll not found, please install OpenCL drivers. Процессоры больше не поддерживаются? Сторонняя программа видит и рабает.потеря автовекторизации (не распознаёт паттерн)
Это проблема https://www.mql5.com/ru/forum/495741/page2#comment_58102015