Ошибки, баги, вопросы - страница 3440
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Результат: 1
Ожидалось: 2
Ошибка при выполнении:
Результат: 1
Ожидалось: 2
Нет ошибки.
Я правильно понимаю, что сейчас есть ограничение на размер одного буфера для кода на OpenCL в районе 2 гигабайт?
Пользуюсь OpenCL напрямую (с тех еще пор как в MQL ее запретили без поддержки double) - там нет ограничений. В MQL при определении размера (в частности буфера) нужно быть осторожным из-за неправильно определенного sizeof для x64 разрядной системы. Вот поясняющий пример:
Результат: -4
Ожидалось: 4294967292
Нет ошибки.
Если нет - ниже подобные примеры попроще - попробуйте объяснить почему в одном случае результат 3, а в другом 4, при том, что они отличаются только строкой (*) и каких-либо ошибок или warning при компиляции нет:
Результат: 3
Результат: 4
Для доказательства ошибки уже достаточно разного результата:
При том, что:
и это не считая того, что:
Пользуюсь OpenCL напрямую (с тех еще пор как в MQL ее запретили без поддержки double) - там нет ограничений. В MQL при определении размера (в частности буфера) нужно быть осторожным из-за неправильно определенного sizeof для x64 разрядной системы. Вот поясняющий пример:
Результат: -4
Ожидалось: 4294967292
не может тип int вместить в себя 4294967292
так прокатит:
Результат: 4
Это еще неисправленный баг.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Новая версия платформы MetaTrader 5 build 4040: Улучшения и исправления
fxsaber, 2023.12.11 15:23
b4092, отсутствует ошибка компиляции.Пользуюсь OpenCL напрямую (с тех еще пор как в MQL ее запретили без поддержки double) - там нет ограничений.
Вроде как ограничение с double уже сняли.
Вы используете библиотеку, собранную на C++ для OpenCL?
не может тип int вместить в себя 4294967292
так прокатит:
Совершенно верно, но принципиальная ошибка в данном случае именно в sizeof
sizeof должен быть такого типа, чтобы возвращать максимально возможный размер в системе. Для x64 разрядных систем он должен выглядеть так:
Т.е. пользователь не должен думать, о корректности размера - произведение на sizeof всегда должно возвращать корректное значение.
Определим корректный sizeof:
Результат: 4294967292
как и ожидалось
А что изменилось по сравнению с первоначальным примером? - просто добавили строку (*)