Программист

  • 1 февраля, 14:01
  • Опубликовано
Константин Анисимов
Константин Анисимов
М 48 лет, Женат, есть дети

Пожелания к месту работы

Зарплата
от 140 000 рублей
График
Полный рабочий день
Расположение
Новосибирск
Возможности
готовность к командировкам

Образование

1986 — 1992

Высшее, техническое:

НГТУ, Физик
май 2002

Дополнительное (курсы, тренинги):

OpenMP workshop, OpenMP for C++
окт — ноя 2004

Дополнительное (курсы, тренинги):

Carnegie Mellon University, Requirement management
ноябрь 2005

Дополнительное (курсы, тренинги):

NUMA workshop, NUMA & cluster computing
сентябрь 2006

Дополнительное (курсы, тренинги):

Computer Architecture workshop, Modern computer architectures

Трудовая книжка

2016 — 2017

JetBrains — Разработчик

— Сделал проход выполняющий инлайнинг функций высшего порядка
— Разработал тестовую сюиту для измерения производительности
— Написал инструмент для печати сериализованного внутреннего представления из библиотек Kotlin.
2015 — 2016

АО Эксельсиор — Разработчик в проекте по разработке компилятора

— Портировал компилятор на новую платформу (PowerPC)
— Сделал стенд для измерения производительности и профилировки
— Поиск и устранение узких мест, позволили поднять производительность компилятора до уровня мировых стандартов. Сравнение велось с GCC. По результатам замера производительности на бенчмарках получено превосходство над GCC на 12%.
2011 — 2015

ЗАО Унипро — Руководитель проекта по разработке динамического компилятора (JIT)

С нуля разработан и реализован JIT для платформы Эльбрус. Проходят тестовые сюиты SPECjvm1998 SPECjvm2008. Результаты в 1.4 лучше чем у LLVM. Мною были спроектированы и реализованы следующие компоненты:
— Code selection from Java bytecodes
— Copy propagation
— Code layouter
— Operand coalescer
— Dead code eliminator
— Instruction scheduler
— Graph coloring register allocator
— Code verifier
— Code emitter
— Encoder for Elbrus platform
Ведущий разработчик в проекте по разработке динамического компилятора (JIT)
— Принял участие в портировании LLVM на процессор «Эльбрус».
2004 — 2011

Intel Corporation — Старший разработчик в проекте ICL

В сотрудничестве с научными сотрудниками института математики им. С. Л. Соболева СО РАН занимался математическим моделированием процесса распределения регистров и планирования инструкций. Результатом работы стал быстрый register allocator пригодный для использования в динамических компиляторах, при качестве раскладки не хуже чем при реализации алгоритма раскраски графов.

Старший разработчик
Окружение: Windows, C++
Исследовательская работа по оптимизации доступа к памяти в многопоточных системах. Реализация предоставляемых IPF платформой возможностей по реализации «relaxed» доступа, позволила получить выигрыш по производительности в 3%.

Руководитель группы (2 человека)
Окружение: Windows, C++
Разработка и реализация кодогенератора для платформы Itanium.
— Низкоуровневое представление
— Селекция кода
— Data-flow анализ
— Распределение регистров
— Operand coalescer
— Spill генератор
— Runtime JVM support
— Верификация кода и система генерации логов
Проект реализован за один год. Пройдены бенчмарки и JCK.

Руководитель группы (6 человек)
Окружение: Windows, C++
Группа занималась реализацией интерфейса Java Printing для open source JVM проекта “Harmony”. Проект был реализован и прошел тестирование.
1998 — 2004

SUN Microsystems — Руководитель группы

Планирование и проведение тестовых циклов для JVM. Занимался разработкой инструментов по автоматизации тестирования, хранению и анализу результатов. Проработал больше года в США.

Инженер-программист
Окружение: Solaris, C++, Java
Разработка тестов на совместимость с Java спецификацией — Java Compatibility Kit. Написал более 2000 тестов для проверки правильности работы виртуальной машины.
1996 — 1998

OOO “Простор” — Инженер-программист

Окружение: Windows, FoxPro, Oracle Database
Принял участие в разработке системы управления ресурсами. Занимался генераторами документов.
1992 — 1996

Институт лазерной физики СО РАН — Инженер-программист

Окружение: DOS, Windows, C/C++
Занимался сбором и обработкой экспериментальной информации. Разработал драйверы для измерительной аппаратуры, алгоритмы для анализа и интерфейс пользователя:
— Невытесняющая система разделения времени
— Шрифты, управляющие элементы, построение графиков и т.д.
— Фурье анализ
— Поиск методом градиентного спуска
— Решение систем линейных уравнений.

Профессиональный опыт

Опыт в областях
Владение языками
Русский (родной язык), Английский (продвинутый)
Знание компьютера
Уверенный пользователь
Автомобиль
имею водительские права и личный автомобиль
Навыки и качества
Ведущий разработчик в требовательных к производительности проектах.
Автор оригинального алгоритма аллокации регистров.
Проектировщик и реализатор backend компиляторов для платформ Itanium и Эльбрус.
О себе
Книги, настольный теннис, собаки.