K>>Проблемы – от того как эффективно парсить/энкодить сообщения, особенно для тех клиентов, которые выжимают микросекунды
A>Расскажу про метод парсинга FIX пакета (по сути xml), услышанный под пивко от чувака, который как раз эти все транспорты пишет. Мне б такое в голову не пришло
A>В общем, есть XML, берется железо с CUDA на борту и соответственно диким количеством ядер. Запускается по потоку на каждый символ этого xml'а, все в параллели. Если символ не является "<", то поток умирает. Выжившие начинают парсить строку. В итоге время на парсинг всего документа = время парсинга самого длинного элемента.
Это уже не микро, это уже наносекунды выжимают, по-моему
Здравствуйте, Abalak, Вы писали:
A>Здравствуйте, kosmik, Вы писали:
K>>Проблемы – от того как эффективно парсить/энкодить сообщения, особенно для тех клиентов, которые выжимают микросекунды
A>Расскажу про метод парсинга FIX пакета (по сути xml), услышанный под пивко от чувака, который как раз эти все транспорты пишет. Мне б такое в голову не пришло
A>В общем, есть XML, берется железо с CUDA на борту и соответственно диким количеством ядер. Запускается по потоку на каждый символ этого xml'а, все в параллели. Если символ не является "<", то поток умирает. Выжившие начинают парсить строку. В итоге время на парсинг всего документа = время парсинга самого длинного элемента. В реале алгоритм конечно сложнее, учитывает вложенность и т.п.
A>Тот чувак вообше много интересного рассказывает, остальное просто длиннее, но работа веселая, а платят так, что мне и не снилось.
Забавно, вообще-то использование FIXML — редкость, ему однозначно соответствует более компактный вариант — FIX (он тэговый). А там где сообщения более-или-менее стандартизованы (биржи, например), обычно используют FIX FAST, он вообще бинарный.
FIXML я видел только когда нужно описывать сложные сделки, какой-нибудь своп, например.
Здравствуйте, kosmik, Вы писали:
A>>В общем, есть XML, берется железо с CUDA на борту и соответственно диким количеством ядер. Запускается по потоку на каждый символ этого xml'а, все в параллели. Если символ не является "<", то поток умирает. Выжившие начинают парсить строку. В итоге время на парсинг всего документа = время парсинга самого длинного элемента. В реале алгоритм конечно сложнее, учитывает вложенность и т.п.
K>Забавно, вообще-то использование FIXML — редкость, ему однозначно соответствует более компактный вариант — FIX (он тэговый). А там где сообщения более-или-менее стандартизованы (биржи, например), обычно используют FIX FAST, он вообще бинарный.
K>FIXML я видел только когда нужно описывать сложные сделки, какой-нибудь своп, например.
Хмм. В куде сейчас не больше 3К физических ядер. Т.е 3K тегов за один проход парсятся. Мда, любопытно. Хотя мой опыт подсказывает, что чаще где-то висит неоптимальный код и портит все, нежели чем возникает необходимость так вот делать.
Кстати, для стандартного FIX идентично можно сделать парсинг. Если символ первый, либо разделитель — парсим до конца/следующего разделителя.
Здравствуйте, alzt, Вы писали:
G>>Хуже. G>>Много умных людей изо всех сил стараются обеспечить спекулянтов инвесторов инструментом для выжимания виртуальных денег из реальной экономики. Нашей с вами экономики.
A>Так IT по большому счёту за некоторыми исключениями не самостоятельная отрасль, а приложение к чему-нибудь. К промышленности, автомобилестроению, медицине, науке, спекуляциям, розничной торговле и прочее.
Это софистика. А автомобилестроение — тоже не самостоятельная область, а приложение к индустрии транспорта, строительтсва и бог знает чего еще. Которые свою очередь приложение к...
И так до бесконечности.
K>>Забавно, вообще-то использование FIXML — редкость, ему однозначно соответствует более компактный вариант — FIX (он тэговый). А там где сообщения более-или-менее стандартизованы (биржи, например), обычно используют FIX FAST, он вообще бинарный.
K>>FIXML я видел только когда нужно описывать сложные сделки, какой-нибудь своп, например.
M>Хмм. В куде сейчас не больше 3К физических ядер. Т.е 3K тегов за один проход парсятся. Мда, любопытно. Хотя мой опыт подсказывает, что чаще где-то висит неоптимальный код и портит все, нежели чем возникает необходимость так вот делать. M>Кстати, для стандартного FIX идентично можно сделать парсинг. Если символ первый, либо разделитель — парсим до конца/следующего разделителя.
Единственный реальный use case куды я видел только в симуляциях и вычислениях больших объемов. Какое-нибудь стресс-тестирование большого портфеля требует вычисления риск параметров для большого количества точек и если для используются всякие сеточные методы, то там не только все хорошо параллелится, но и уменьшается количество необходимых вычислений.
Здравствуйте, kosmik, Вы писали:
K>>Отличная статья. Вопрос к тебе, вы действительно рискуете своими хмм... задницами в случае если допустите ошибку при разработке софта?
K>Так что задницы могут спать спокойно
Не жизнь, а малина, блин . Я так понял бонысные профиты до простого разработчика почти не доходят?
K>>>Отличная статья. Вопрос к тебе, вы действительно рискуете своими хмм... задницами в случае если допустите ошибку при разработке софта?
K>>Так что задницы могут спать спокойно K>Не жизнь, а малина, блин . Я так понял бонысные профиты до простого разработчика почти не доходят?
ISV не так много зарабатывают (да и не так рискуют), так что профиты до разработчиков доходят так же как и в другом софтовом бизнесе.
Когда есть in-house developement, особенно в небольшой компании, а не банке, особенно если это связано именно с торговыми вещами, а не с инфраструктурой, то могут быть очень приличные бонусы.
Здравствуйте, Yoriсk, Вы писали:
Y>Это софистика. А автомобилестроение — тоже не самостоятельная область, а приложение к индустрии транспорта, строительтсва и бог знает чего еще. Которые свою очередь приложение к... Y> И так до бесконечности.
Автомобилестроение это часть индустрии транспорта. Автомобили будут делать даже, если вся эта электронная начинка будет недоступна. С IT получается дешевле и больше возможностей.
K>>>Забавно, вообще-то использование FIXML — редкость, ему однозначно соответствует более компактный вариант — FIX (он тэговый). А там где сообщения более-или-менее стандартизованы (биржи, например), обычно используют FIX FAST, он вообще бинарный.
K>>>FIXML я видел только когда нужно описывать сложные сделки, какой-нибудь своп, например.
врядл ... для "свопов" уже 10 лет есть другой ML.
M>>Хмм. В куде сейчас не больше 3К физических ядер. Т.е 3K тегов за один проход парсятся. Мда, любопытно. Хотя мой опыт подсказывает, что чаще где-то висит неоптимальный код и портит все, нежели чем возникает необходимость так вот делать. M>>Кстати, для стандартного FIX идентично можно сделать парсинг. Если символ первый, либо разделитель — парсим до конца/следующего разделителя.
K>Единственный реальный use case куды я видел только в симуляциях и вычислениях больших объемов. Какое-нибудь стресс-тестирование большого портфеля требует вычисления риск параметров для большого количества точек и если для используются всякие сеточные методы, то там не только все хорошо параллелится, но и уменьшается количество необходимых вычислений.
ну в симуляциях все таки не парсинг паралелится... а вообще история про парсинг xml кудой более похоже на шутку... нет?
Здравствуйте, mik1, Вы писали:
K>>Забавно, вообще-то использование FIXML — редкость, ему однозначно соответствует более компактный вариант — FIX (он тэговый). А там где сообщения более-или-менее стандартизованы (биржи, например), обычно используют FIX FAST, он вообще бинарный.
K>>FIXML я видел только когда нужно описывать сложные сделки, какой-нибудь своп, например.
M>Хмм. В куде сейчас не больше 3К физических ядер. Т.е 3K тегов за один проход парсятся. Мда, любопытно. Хотя мой опыт подсказывает, что чаще где-то висит неоптимальный код и портит все, нежели чем возникает необходимость так вот делать.
Так и есть. Он сидит и переписывает эти куски. Недавно про менеджер памяти рассказывал, подробности приводить не берусь, т.к. конкретно не помню уже, но по сути это был аналог GC со своими особенностями размещения разных объектов.
M>Кстати, для стандартного FIX идентично можно сделать парсинг. Если символ первый, либо разделитель — парсим до конца/следующего разделителя.
Честно признаюсь, может быть там не XML был, а может он и универсальный , но сам принцип именно такой и работает.
Здравствуйте, Igor Sukhov, Вы писали:
IS>ну в симуляциях все таки не парсинг паралелится... а вообще история про парсинг xml кудой более похоже на шутку... нет?
Насколько знаю это был эксперимент, который таки ушел в продакшн.
Здравствуйте, Kernan, Вы писали:
K>>>Отличная статья. Вопрос к тебе, вы действительно рискуете своими хмм... задницами в случае если допустите ошибку при разработке софта?
K>>Так что задницы могут спать спокойно K>Не жизнь, а малина, блин . Я так понял бонысные профиты до простого разработчика почти не доходят?
Как коллега уже заметил на бонусы можно расчитывать если ты ближе к деньгам, а не инфраструктуре. Т.е. если сам пилишь алгоритм, зарабатывающий деньги или работаешь в паре с трейдером. Маленьктй частный хедж фонд в данном случае предпочтительнее большой конторы. Заработал трейдер к примеру за год 300 миллионов, програмист вполне может расчитывать на 1-2 лимона бонусов.
Здравствуйте, TMU_1, Вы писали:
TMU>С грустью смотрю на все это. Много умных людей занимаются выжиманием виртуальных денег из воздуха.
+100. печально смотреть как молодые здоровые мужики играются в какие реально несуществующие программы вместо того чтобы пахать или трактора собирать. надеюсь, скоро вся эта IT рухнет и люди уйдут в реальный сектор. не мужское это дело — по кнопочкам стучать!
Здравствуйте, kosmik, Вы писали:
IS>>ну в симуляциях все таки не парсинг паралелится... а вообще история про парсинг xml кудой более похоже на шутку... нет? K>Кстати, только сейчас вспомнил — были люди, которые в торговой стратегии на критическом пути price update -> order парсили XML. DOMом
зато какая возможность для оптимизации по скорости =)
Здравствуйте, Abalak, Вы писали:
A>Здравствуйте, Igor Sukhov, Вы писали:
IS>>ну в симуляциях все таки не парсинг паралелится... а вообще история про парсинг xml кудой более похоже на шутку... нет?
A>Насколько знаю это был эксперимент, который таки ушел в продакшн.
=)) хехе, выделенное более реально... вообще я часто видел что кудой развлекаются в свободное от насчтощей работы времени вместо головоломок...
получают нечто потенциально, почеркиваю потенциально, работающее в хренцать раз быстрее чем без куды, по потом проходит
интерес (лень интегрировать) и это уходит в никуда...