Tools & Methods of Program Analysis 2014 (TMPA-2014)
Conference in Kostroma, November 14-15
Current Challenges in the Area of Efficient Parallel Algorithms and Data Structure Development
Devexperts is a leading provider of high-load software used in integrated automation for brokerages, exchanges and other players in the financial services industry. The specific nature of the industry dictates the need for developing and verifying lock-free / wait-free algorithms and data structure implementations, which efficiently use multiprocessor systems with shared memory, to prove the correctness of their work. Over the last decade, this area has become increasingly relevant, although a number of topics still leave much room for further research. In quite a few cases, theoretical research has not been supported by practical implementations either. We are going to speak about the main research streams, which are relevant to us as a company. We will also touch upon the topic of exploring ways to set up mutually beneficial cooperation with universities at the confluence of science and business.
2. Devexperts
• Разработка ПО для финансовых компаний
– Брокеры, дилеры, биржи
• Глубоко специализированная компания
– R&D полного цикла
– QA
– M&S 24/7
• dxFeed – сервис доставки рыночных данных
8. Хотим
● Писать многопоточный
высокопроизводительный код
● Уметь доказывать его корректность на
модели
● Уметь верифицировать сам код (на
соответствие модели)
9. Пример: Data Race
public class Account {
private int amount = 0;
}
public class TestRace {
public static void main (String[] args) {
final Account a = new Account();
Thread t1 = depositAccountInNewThread(a, 5);
Thread t2 = depositAccountInNewThread(a, 6);
t1.join();
t2.join();
System.out.println(a.amount); //5? 6? 11?
}
}
12. Как искать гонки?
Динамически Быстро Точно
Ограничить область поиска
Важно не потерять информацию!
13. Синхронизационные контракты
• Факты синхронизации
– lock, semaphore, ConcurrentHashMap, etc.
• Обращения к разделяемым данным
– коллекции, календарь, etc.
Язык описания высокоуровневых
свойств
14. Data race detector
• DSL для описания контрактов
– xml-based
– только основные контракты
• Динамический поиск гонок
– инструментирование байт-кода
– алгоритм на основе логических часов
– находит и применяет контракты
15. Реальная задача: хэш-таблицы
• Работа Gao at al
– Хэш-таблица без ожидания
– Только машинное доказательство
– Не проработан до конца механизм изменения
размера без ожидания
• Реализация Cliff Click (high-scale-lib)
– Не очевидно что этот тот же самый алгоритм
– Нет формального доказательства
16. Открытые проблемы
• Построить человеко-читаемое
доказательство алгоритма Gao et al
– Включая изменение размера без ожидания
• Разбить доказательство на модули
– Хотим заменять примитивы в значениях
таблицы на сложные структуры
• Атомарно читать/писать сложные
структуры в данном месте памяти
– А не через подмену указателей
17. Проверка линеаризуемости
• Отсутствие гонок не гарантирует
корректность многопоточной программы
• Обычно, говоря «корректность», имеют в
виду линеаризуемость - эквивалентность
последовательному исполнению
• Нужно уметь проверять линеаризуемость
полученного кода как юнит-тест
18. Намеченный формат работы
• Отдельное подразделение в компании
– очень важно, чтобы не дергали текучкой
– хотим построить полноценный процесс
• Взаимодействие с ВУЗами
– своих сил не хватает
– студентам нужны квалификационные работы
– ВУЗу нужны публикации
19. Контакты
• Дмитрий Цителов (cit@devexperts.com)
• Виталий Трифанов (trifanov@devexperts.com
)
• Роман Елизаров (elizarov@devexperts.com)