Обсуждение статьи "Нейросети — это просто (Часть 5): Многопоточные вычисления в OpenCL" - страница 3
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Использование векторных операций позволяет выполнять не последовательно, а параллельно произведение 4-х элементов. Посмотрите видео https://ru.coursera.org/lecture/parallelnoye-programmirovaniye/4-1-chto-takoie-viektorizatsiia-i-zachiem-ona-nuzhna-f8lh3. Там речь об OpenMP, но смысл тот же.
Спасибо!
Т.е. векторизация делается компилятором автоматически для OpenCL? Не вижу в коде специальных команд.
Спасибо!
Т.е. векторизация делается компилятором автоматически для OpenCL? Не вижу в коде специальных команд.
Нет, автоматической векторизации нет. В коде мы сначала объявляем 2 векторные переменные
Затем из входящих буферов записываем порцию данных в векторные переменные.
А затем проведение операций с векторными переменными означает проведение векторных операций. Использованная в коде функция dot предназначена только для векторных операций.
Таким образом мы распараллелили операцию умножения, но уже не на уровне потоков, а на уровне конкретной операции, используя векторные вычисления.
Нет, автоматической векторизации нет. В коде мы сначала объявляем 2 векторные переменные
Затем из входящих буферов записываем порцию данных в векторные переменные.
А затем проведение операций с векторными переменными означает проведение векторных операций. Использованная в коде функция dot предназначена только для векторных операций.
Таким образом мы распараллелили операцию умножения, но уже не на уровне потоков, а на уровне конкретной операции, используя векторные вычисления.
T.e. за векторизация отвечает специальная функция dot()? А в MQL5 без OpenCL можно делать эту векторизацию?
T.e. за векторизация отвечает специальная функция dot()? А в MQL5 без OpenCL можно делать эту векторизацию?
dot выполняет только скалярное произведение. Для выполнения других операций есть другие функции.
В MQL нет векторных переменных.
dot выполняет только скалярное произведение. Для выполнения других операций есть другие функции.
В MQL нет векторных переменных.
Понял, спасибо за разъяснения.
Я все таки несмотря на крайнюю нужность статьи и благодарность автору за статью резюмирую чего в ней по настоящему не хватает:
1. Не рассмотрен код основной mql программы, не понятен сам принцип торговли
2. Не понятно где вызывается кернелы
3. В коде ссылки на сторонние библиотеки, которые никак в статье не описываются, это не понятно
4. Кернелы в самой статье не рассмотрены и не объяснены, потому вызвали столь бурное обсуждение на форуме
5. Сам кернел написан ну очень сложно для большинства не опытных в OpenCL пользователей
6. Совсем не понятна методика обучения нейросети
Вот эти 6 пунктов делают статью практически бесполезной для абсолютного большинства.
Останусь при своем мнении:
1. Нужно создать mql код совсем простого советника торгующем на одном простом индикаторе, написать его версию на mql с описанием кода и версию c OpenCL и сравнить скорость, в идеале взять готовый пример типа Moving Average.mq5
2. Вызовы функций из всех сторонних библиотек нужно описать
3. Подробно описать кернелы, прямо построчно, описать несколько вариантов кернелов и сравнить производительность
4. Подробно описать методику обучения нейросети
ну вот как то так ....
Что-за файл в архиве NeuroNet — копия.mqh?
Немного почистил файл NeuroNet.mqh. А для совместимости с советниками прошлых статей старую версию сохранил в копии.