S#

Аппаратное повышение производительности тестирования


Аппаратное повышение производительности тестирования
Atom
1/4/2014


Хотелось бы повысить скорость тестирования (производительность процессора в моем случае) раз в 5-10. Пока рассматриваю варианты с кластером и сопроцессором Intel® Xeon Phi™. Не уверен, что на платформе .net будет работать сопроцессор. Если кто сталкивался, посоветуйте вариант.



Thanks:




19 Answers
Bond

Avatar
Training
Date: 1/4/2014
Reply


vk37 Go to
Хотелось бы повысить скорость тестирования (производительность процессора в моем случае) раз в 5-10. Пока рассматриваю варианты с кластером и сопроцессором Intel® Xeon Phi™. Не уверен, что на платформе .net будет работать сопроцессор. Если кто сталкивался, посоветуйте вариант.


Если ты про тестирование на S#, то в первую очередь реализуй многопоточность в своем тестировщике. Иначе ты больше одного ядра не загрузишь. Многопоточность у меня повысила производительность в 4 раза при той же загрузке процессора. Как дополнительный вариант можно запускать сразу несколько тестировщиков, это помогает догружать процессор.
Но не стоит этот вариант использовать как основной для реализации многопоточности. Он не рациональный и громоздкий. Советую 2-5% процессорного времени оставлять не догруженными, система становится стабильнее. Не забывайте, что слишком много процессов могу ухудшить производительность, так как они начнут бороться за процессорное время и отнимать ресурсы.
Не забывайте про оперативную память. При ее недостатке производительность резко падает, порой приложения сами вываливаются с ошибками. Чем глубже тестирование, тем больше съедается памяти. Условно 1 месяц - 1 гб, 5 лет может и больше 10 гб забрать при одном прогоне. Это проверяется экспериментально в зависимости от архитектуры вашей программы. Считаю, что комфортный минимум 16 гб.
Учитывайте при длительном тестировании утечки памяти и периодически перегружайте тестировщики.
Дополнительно можно использоаать для ускорения чтения исторических данных ssd диски, также многоканальный режим работы оперативной памяти, но это прирост до 5%.
Про Xeon не могу ничего сказать) Юзаю i5 процессоры.
Ах, да не забывайте про охлаждение процессора, я лично поменял стандартный вентилятор на более эффективный.
Thanks:

vk37

Avatar
Training
Date: 1/4/2014
Reply


У меня свой код тестирования без S#. Многопоточность само собой используется. Памяти хватает. Утечек вроде нет. Процессор Intel Core i7-3770K 3.5 ГГц. Программной оптимизацией, думаю, много уже не выиграю: уже и так все что мог закрутил. ) SSD диски использую, но у меня скорость тестирования ограничена производительностью процессора. Процессор загружен до 100%. Вентилятор более чем справляется ) За предложения спасибо )
Topic starter
Thanks:

Bond

Avatar
Training
Date: 1/4/2014
Reply


vk37 Go to
У меня свой код тестирования без S#. Многопоточность само собой используется. Памяти хватает. Утечек вроде нет. Процессор Intel Core i7-3770K 3.5 ГГц. Программной оптимизацией, думаю, много уже не выиграю: уже и так все что мог закрутил. ) SSD диски использую, но у меня скорость тестирования ограничена производительностью процессора. Процессор загружен до 100%. Вентилятор более чем справляется ) За предложения спасибо )


Хм, если не секрет что и в каком объеме вы тестируете? Стакан? Свечи? За сколько времени у вас один прогон за 1 год истории проходит? Тестирование или оптимизация? Тестирование в реальном времени?
На чем ваш тестировщик написан? С#? =)
Thanks:

vk37

Avatar
Training
Date: 1/4/2014
Reply


Bond Go to
Хм, если не секрет что и в каком объеме вы тестируете? Стакан? Свечи? За сколько времени у вас один прогон за 1 год истории проходит? Тестирование или оптимизация? Тестирование в реальном времени?
На чем ваш тестировщик написан? С#? =)

На c#. В реальном времени не тестирую. Тестирование с оптимизацией ) Сколько времени прогон 1 года происходит не считал. Тестировщик из S# более универсален. Мой работает быстрее. Для меня так удобнее.

Topic starter
Thanks:

Bond

Avatar
Training
Date: 1/4/2014
Reply


vk37 Go to
Bond Go to
Хм, если не секрет что и в каком объеме вы тестируете? Стакан? Свечи? За сколько времени у вас один прогон за 1 год истории проходит? Тестирование или оптимизация? Тестирование в реальном времени?
На чем ваш тестировщик написан? С#? =)

На c#. В реальном времени не тестирую. Тестирование с оптимизацией ) Сколько времени прогон 1 года происходит не считал. Тестировщик из S# более универсален. Мой работает быстрее. Для меня так удобнее.



Я сам сейчас активно разрабатываю стохастический тестер-оптимизатор. Не могу представить какие стратегии вы с такими требованиями пытаетесь тестировать) Сколько у вас времени в среднем занимает тест? Пару часов или 15 минут? Если вы хотите из 15 минут сделать 5 минут, то смысла в аппаратном ускорении никакого, если это не динамическая оптимизация.
Thanks:

vk37

Avatar
Training
Date: 1/4/2014
Reply


Bond Go to
Я сам сейчас активно разрабатываю стохастический тестер-оптимизатор. Не могу представить какие стратегии вы с такими требованиями пытаетесь тестировать) Сколько у вас времени в среднем занимает тест? Пару часов или 15 минут? Если вы хотите из 15 минут сделать 5 минут, то смысла в аппаратном ускорении никакого, если это не динамическая оптимизация.
Нет, конечно не 15 минут. Несколько часов, дней )

Topic starter
Thanks:

Bond

Avatar
Training
Date: 1/4/2014
Reply


Ну, чтож) Если оптимизация занимает несколько дней это либо неэффективные методы оптимизации, либо это какой-то супер граальный алгоритм, который стоит таких затрат)
Если вернуться к сути вопроса заданного вами в первом сообщении. Я бы по стоимости предложенного вами процессора со все лабудой к нему прилагающейся купил бы несколько блоков состоящих из корпуса, блока питания, матери, 8 гигов оперативы и проца i5. Собрал бы их в сеть и засунул в дальний угол квартиры.
Итоговую мощность вы получите на много выше и проблем с совместимостью не будет. К тому же резервирование и взаимозаменяемость гарантированны.
Thanks:

vk37

Avatar
Training
Date: 1/4/2014
Reply


Bond Go to
Если вернуться к сути вопроса заданного вами в первом сообщении. Я бы по стоимости предложенного вами процессора со все лабудой к нему прилагающейся купил бы несколько блоков состоящих из корпуса, блока питания, матери, 8 гигов оперативы и проца i5. Собрал бы их в сеть и засунул в дальний угол квартиры.
Итоговую мощность вы получите на много выше и проблем с совместимостью не будет. К тому же резервирование и взаимозаменяемость гарантированны.
Этот вариант я тоже рассматривал. В общем то необязательно в кластер объединять машины. По стоимости может выйдет и дешевле, чем сопроцессор. Места много только занимает и электричества больше тратит. Плюс на каждой машине придется запускать свой оптимизатор. Зверинец короче будет )

Topic starter
Thanks:

vk37

Avatar
Training
Date: 1/4/2014
Reply


Использование GPU в .net: cudafy.codeplex.com. Кто-нибудь пробовал?
Topic starter
Thanks:

Bond

Avatar
Training
Date: 1/4/2014
Reply


Не стандартное решение при вашем подходе гарантировано, так что без танцев с бубном не обойдетесь.
Если все же хотите промотать денег(которые в теории ваши алгоритмы должны окупить), то наймите профессионального программиста и перепешите архитектуру оптимизатора.
Это будет самое эффективное вложение.
Поверьте, хороший алготрейдер с толковой оптимизацией уделает любой кластер на стареньком Селероне)
Оптимизация такая оптимизация BigGrin
Для себя пришел к выводу, что если код слишком сложный выходит. Или требуются какие-то сверх ресурсы, значит подход к решению задачи не правильный. Потому что все гениальное просто Laugh
Желаю вам удачи!
Thanks: VassilSanych

vk37

Avatar
Training
Date: 1/5/2014
Reply


GPU используется в современных топовых суперкомпьютерах для увеличения производетельности вычислений (до 10 раз по сравнению с CPU). Код должен быть настолько прост, насколько это возможно, согласен. Есть еще предложения, советы как увеличить производительность? Кто-то пробовал разрабатывать приложения на c# под GPU?
Topic starter
Thanks:

loop

Avatar
Date: 1/6/2014
Reply


Мне нравится к этому вопросу подход товарища hrenfx, известного форекс-гуру.

http://www.mql5.com/ru/f...108/page2#comment_569634
http://www.mql5.com/ru/f...14/page59#comment_571782

Главная идея в калибровке тестера на разряженных данных под результаты на плотные(делается редко), если это получается то можно дополнительные данные(например проскальзывание) вынести в отдельный ряд квантованный минутками и потери при тестировании будут менее 5% относительно тиковых.

А минутки с ТС средней навороченности считаются примерно год менее чем за секунду, только так возможно хотя на что то расчитывать.
Слышал у некоторых 10 миллионов баров за секунду на ТС сложности типа машек, на посложнее 2-5 сек.

Если тестер на порядки медленней и алгоритм обхода параметров «в лоб» перебором, то не спасёт никакое железо.
Thanks: vk37

vk37

Avatar
Training
Date: 1/6/2014
Reply


loop Go to
Главная идея в калибровке тестера на разряженных данных под результаты на плотные(делается редко)
Cпасибо. Надо попробовать.

Topic starter
Thanks:

vk37

Avatar
Training
Date: 1/6/2014
Reply


hrenfx (Отключен + Удален + Забанен)
:)
Topic starter
Thanks:

loop

Avatar
Date: 1/7/2014
Reply


vk37 Go to
hrenfx (Отключен + Удален + Забанен)
:)


Субъективно, есть отрицательная слабая корреляция между банами на трейдерских формах и интересности постов банящегося участника, естественно если баны не за хамство:)ИМХО

Так что то что hrenfx забанили это больше плюс чем минус.BigGrin Он редкий думающий человек, в отличии от большинства, которые рассудком не выходят за рамки инструментария торговой платформы и нюансов программирования.

Видимо слишком откровенно высказал своё мнение, разработчиков тоже можно понять, им такая публичная откровенность не наруку. Особо в этом уличенны метатрейдеровцы, там особо не терпят контры.Cursing Scared
Thanks:

Mikhail Sukhov

Avatar
Articles author Programmer Trader
Date: 1/7/2014
Reply


Тогда и нужно писать что hrenfx скорее не форекс-гуру а форекс-авторитет. =)
Thanks:

loop

Avatar
Date: 1/9/2014
Reply


Михаил Сухов Go to
Тогда и нужно писать что hrenfx скорее не форекс-гуру а форекс-авторитет. =)

Гуру, авторитет, лидер, тот кто ведёт за собой, почитаемый, тот кто превосходит больщинство, ведущий, звезда, пример для подражания, того кого любят женщины и уважают мужчины, объект зависти, можно продолжать до бесконечности.

Обобщить можно так: он лучше чем остальные.

И это шутка только наполовинуSmile больше правда чем шутка.
Thanks:

VassilSanych

Avatar
Date: 1/10/2014
Reply


vk37 Go to
Кто-то пробовал разрабатывать приложения на c# под GPU?

http://cudafy.codeplex.com/
- библиотека-обёртка над CUDA.
Имхо пока проще попытаться просто задействовать SSE и AVX процессора.
Для С++ это работает на уровне компилятора. Для c# есть дополнительные библиотеки-обёртки, например
http://docs.yeppp.info/c...ndex.html#GettingStarted
(искать по фразам: SSE, AVX, AVX2, SIMD)
---
Сам не пробовал :)
Я предпочитаю не использовать дополнительных библиотек, пока можно оптимизировать на порядки менее мозгокрутными способами. ;)
PS
Поправка: я использую Dotnetforab. Он использует AVX.
Thanks:

vk37

Avatar
Training
Date: 1/10/2014
Reply


VassilSanych Go to
http://cudafy.codeplex.com/
- библиотека-обёртка над CUDA.
Да, поддерживает генерацию кода CUDA и OpenCL. Как заявляют разработчики, приложения написанные с использованием их библиотеки, будут работать на NVIDIA GPUs (CUDA or OpenCL), AMD GPUs (OpenCL) и Intel CPUs (OpenCL)

VassilSanych Go to
Имхо пока проще попытаться просто задействовать SSE и AVX процессора.
Не очень разбираюсь в этом вопросе. Для меня важно какой прирост производительности я смогу получить. Судя по тестам, GPU за $1000, увеличивает производительность вычислений до 70 раз. По факту, думаю, может получится увеличить скорость тестирования моих стратегий на таком GPU раз в 7. Ради этого, думаю, имеет смысл познакомиться с дополнительной библиотекой. ) Предполагаю, что задействование SSE и AVX процессора увеличит производительность не в разы а на какой-то процент?
Topic starter
Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy