연구 그룹

동시 컴퓨팅

동시 프로그램은 지난 몇십 년 동안 인기를 끌어왔습니다. 모든 언어와 플랫폼은 그에 해당하는 기본 요소를 제공하지만, 이러한 요소는 여러 NUMA 노드 등 시스템 복잡성이 증가하고 메모리 모델이 약화됨에 따라 효율적으로 사용하기가 점점 어려워지고 있습니다. 여기에서 중요한 질문이 몇가지 생깁니다. 오늘날 효율적인 동시 알고리즘을 구축하는 방법은 무엇일까요? 진행 보장, 효율성, 공정성을 아우르는 가장 좋은 절충안은 무엇일까요? 이 모든 알고리즘의 정확성을 확인하고 벤치마킹하는 방법은 무엇일까요? 일부 질문은 학계에서 부분적으로 답변했지만 여전시 수많은 실제 문제는 남아 있습니다. 저희의 주요 초점은 동시성 분야의 다른 연구자 및 개발자를 도울 수 있는 고품질 도구를 비롯해 실질적으로 합리적이고 이론적으로 가치 있는 솔루션을 제공하여 이러한 질문에 답하는 것입니다.

관심 주제:

  • 동시 알고리즘 및 데이터 구조
  • 비휘발성 메모리 (NVM)
  • 테스트 및 검증
  • 성능 분석, 디버그, 최적화
  • 병렬 프로그래밍 언어 및 모델
  • 메모리 회수

여기에서 전체 논문 목록 보기

주요 프로젝트:

Kotlin Coroutines를 위한 동기화 및 통신 기본 요소

전통적인 동시 프로그래밍에는 공유된 가변 상태를 조작하는 것이 포함됩니다. 이 프로그래밍 스타일의 대안은 명시적 통신을 통해 데이터를 공유하는 CSP(통신 순차 프로세스) 모델입니다. Kotlin Coroutines는 이 모델을 Kotlin 언어로 가져오는 라이브러리로, 여기서 프로세스는 코루틴(경량 스레드)을 통해 표현됩니다. 이렇게 하면 잘 알려진 잠금 및 수기 신호에서 시작하여 채널로 끝나는(코루틴 간에 데이터를 전송하기 위한 특별한 생산자-소비자 구조) 코루틴 간의 통신 및 동기화에 필요한 몇가지 추상화가 있습니다. 이 프로젝트는 효율적인 기본 요소를 개발하고 이를 Kotlin Coroutines에 도입하는 데 집중합니다.
https://github.com/Kotlin/kotlinx.coroutines

Lincheck: JVM에서 동시성 테스트

Lincheck는 JVM 기반 언어에서 동시 알고리즘을 테스트하기위한 실용적인 도구로 스트레스 테스트와 제한된 모델 검사를 모두 지원합니다. JCStress 등의 널리 사용되는 테스트 도구와 비교했을 때 Lincheck가 가진 주요 이점 중 하나는 검사할 모든 작업과 해당 작업의 정확성 프로퍼티, 각 시나리오에 사용할 호출 수를 지정하여 동시 테스트를 작성하는 선언적 방법을 제공한다는 것입니다. 간단히 말하면, Lincheck는 일련의 동시 시나리오를 생성하고, 스트레스 테스트 또는 모델 검사 모드에서 실행하며, 지정된 정확성 프로퍼티를 충족하는 결과 설명이 가능한 순차적 실행이 있는지 확인합니다. 위의 기능 외에도 Lincheck는 약화된 데이터 구조 의미, 생산자-소비자 및 코루틴 구현에서 널리 사용되는 이중 데이터 구조 설계, NVRAM용으로 설계된 내구성 있는 데이터 구조를 지원하는 최초의 테스트 도구입니다.
https://github.com/Kotlin/kotlinx-lincheck

TConcurrent 그래프 알고리즘

병렬 그래프 처리는 이론적 측면과 실제적 측면 모두에서 기초적이면서 학계에서 많이 연구된 주제입니다. 그러나 소셜 네트워크 분석 및 컴파일러와 같은 일부 애플리케이션은 이러한 알고리즘이 온라인에 있어야 동시성이 작동합니다. 이 프로젝트에서는 엣지 삽입 및 삭제 시의 온라인 동적 연결 문제 또는 일부 알고리즘에 대해 우선순위 스케줄러로서 다중 대기열을 사용하는 것을 포함해, 그래프 처리의 다양한 측면에서 실질적으로 효율적인 동시 알고리즘을 구축하는 것을 목표로 합니다. 오늘날 대부분의 하드웨어 플랫폼에는 여러 개의 NUMA 소켓이 있으므로 이 모든 알고리즘을 NUMA 친화적으로 만들어야 합니다.

학생 인턴십

인턴 고용은 일년 내내 진행됩니다. 이상적인 후보자는 CS 또는 수학 배경 지식이 풍부하고 동시 프로그래밍에 대한 지식을 갖추고 있어야 합니다. 자세한 내용은 nikita.koval@jetbrains.com으로 문의해 주세요.

그룹 멤버

Nikita Koval
Nikita Koval
연구소/그룹 책임자
Alexander Fedorov
Alexander Fedorov
연구원
Dmitry Khalanskiy
Dmitry Khalanskiy
연구원
Maria Sokolova
Maria Sokolova
연구원