← 최신 논문
🤖 machine learning

Learning to Parallelize with OpenMP by Augmented Heterogeneous AST Representation

본 논문은 증강된 이종 AST 표현과 새롭게 생성된 OMP_Serial 데이터셋을 활용하여 OpenMP 병렬화 가능한 루프 탐지에서 85%의 정확도를 달성하고 기존의 최첨단 토큰 기반 방식들을 능가하는 새로운 그래프 기반 학습 접근 방식인 Graph2Par를 제안한다.

원저자: Le Chen, Quazi Ishtiaque Mahmud, Hung Phan, Nesreen K. Ahmed, Ali Jannesari

게시일 2026-08-20
📖 4 분 읽기☕ 가벼운 읽기

원저자: Le Chen, Quazi Ishtiaque Mahmud, Hung Phan, Nesreen K. Ahmed, Ali Jannesari

원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기

현대 컴퓨터는 아주 짧은 시간 동안 각자의 업무를 수행할 수 있는 작은 일꾼들이 모인 거대한 도시와 같아졌습니다. 이러한 기계들을 빠르게 구동하기 위해, 프로그래머들은 작업들을 하나씩 줄 세워 처리하는 대신, 많은 일꾼을 동시에 투입하여 일을 하도록 가르쳐야 합니다. '병렬화(parallelization)'라고 알려진 이 관행은 오늘날의 강력한 하드웨어로부터 최대한의 성능을 끌어내는 데 필수적입니다. 하지만 컴퓨터에게 어떻게 작업을 나눌지 알려주는 것은 매우 어렵습니다. 이는 프로그램의 서로 다른 부분들이 서로 어떻게 의존하고 있는지에 대한 깊은 이해를 필요로 합니다. 만약 프로그래머가 잘못 예측한다면, 프로그램은 충돌하거나 잘못된 답을 내놓을 수 있습니다. 수십 년 동안 전문가들은 이러한 협업의 기회를 자동으로 찾아내기 위한 도구들을 만들어 왔지만, 이 도구들은 종종 너무 안전하게만 접근하여 속도를 높일 수 있는 많은 기회를 놓치거나, 복잡한 코드 구조 앞에서 혼란을 겪곤 합니다.

최근 한 연구에서, 연구진은 기계가 언어를 이해하는 방식에서 영감을 얻은 방법을 사용하여, 컴퓨터가 스스로 이러한 기회들을 인식하도록 가르치는 실험을 진행했습니다. 아이오와 주립대학교와 인텔 랩스(Intel Labs)의 릭 첸(Le Chen)과 동료들이 이끄는 이 팀은 C 프로그래밍 언어에서 사용되는 특정 유형의 지침인 'OpenMP'에 집중했습니다. 이 지침들은 컴퓨터에게 여러 명의 일꾼을 동시에 시작해도 안전한 지점이 어디인지 알려주는 표지판 역할을 합니다. 문제는 기존의 도구들이 엄격한 수학적 규칙에 의존하기 때문에, 나무만 보고 숲을 보지 못하는 경우가 많다는 것이었습니다. 기존 도구들은 어떤 루프 안에 함수 호출이 포함되어 있거나 중첩된 구조가 있어 전통적인 분석기에게 복잡해 보인다는 이유만으로, 완벽하게 병렬화 가능한 루프를 놓치기도 합니다. 연구진은 이를 해결하기 위해 코드를 단순히 단어의 나열이 아니라, 그 구조와 의미를 담은 지도로 보여주는 새로운 방법이 필요하다는 것을 깨달았습니다.

이를 해결하기 위해, 팀은 먼저 'OMP Serial'이라는 이름의 방대한 예시 라이브러리를 구축해야 했습니다. 그들은 이미 병렬로 표시된 루프 약 18,600개와 그렇지 않은 루프 약 14,000개를 수집했습니다. 이 데이터는 인터넷에 존재하는 수천 개의 실제 소프트웨어 프로젝트와 특정 패턴을 테스트하기 위해 정교하게 제작된 합성 예시들로부터 추출되었습니다. 이 컬렉션은 그들이 학습할 수 있는 풍부한 '정답(ground truth)'을 제공했습니다. 하지만 데이터를 갖는 것은 절반의 성공일 뿐이었습니다. 그들은 이 데이터를 진정으로 이해할 수 있는 머신러닝 모델에 입력할 방법이 필요했습니다. 코드를 단어의 순서가 가장 중요한 책 속의 문장처럼 취급하는 대신, 그들은 코드를 복잡한 지도처럼 다루기로 했습니다. 그들은 '증강된 이종 추상 구문 트리(augmented heterogeneous abstract syntax tree)'라고 불리는 표현 방식을 만들었습니다. 쉽게 말해, 이것은 코드의 모든 조각을 연결하는 상세한 그래프입니다. 이는 부모 명령과 자식 명령 같은 프로그램의 계층 구조뿐만 아니라, 코드가 다음 단계로 어떻게 흐르는지, 그리고 코드 속의 단어들이 텍스트 상에서 서로 어떻게 인접해 있는지를 보여줍니다. 이 지도는 단순한 단어 목록이 놓칠 수 있는 서로 다른 부분들 사이의 미묘한 관계를 보존하면서, 프로그램의 구조적 골격을 포착합니다.

이 새로운 지도를 손에 쥐고, 연구진은 '이종 그래프 트랜스포머(heterogeneous graph transformer)'라고 알려진 정교한 학습 모델을 훈련시켰습니다. 이 모델을 수천 개의 지도와 함께 각 지도에 대한 정답(해당 루프가 병렬화하기에 안전한지 여부)을 함께 보는 학생이라고 상상해 보십시오. 모델은 안전함을 나타내는 숨겨진 패턴을 찾아내는 법을 배웁니다. 모델은 지도의 다양한 연결 유형에 주의를 기울이며, 함수 호출과 변수 사이의 연결이 두 수학 연산 사이의 연결과는 다른 의미를 가질 수 있음을 이해합니다. 훈련을 마친 후, 모델은 어떤 루프를 병렬화할 수 있는지, 그리고 결정적으로 어떤 특정 유형의 지침을 사용해야 하는지를 예측하는 능력을 테스트받았습니다. 결과는 놀라웠습니다. 모델은 병렬화 가능한 영역을 감지하는 데 있어 85%의 정확도를 달월했으며, 이는 전통적인 정적 분석에 의존하는 기존의 최선 도구들을 크게 능가하는 성과였습니다.

또한 이번 연구는 기존 도구들이 정확히 어느 지점에서 실패하는지를 밝혀냈습니다. 연구진은 전통적인 소프트웨어가 가장 흔히 저지르는 실수는 함수 호출을 포함하는 루프, 대량의 데이터를 단일 값으로 축소하는 루프, 그리고 다른 루프 안에 중첩된 루프에서 발생한다는 것을 발견했습니다. 이러한 경우들은 코드가 엄격한 분석기에게는 지저분해 보이지만 실제로는 병렬 작업에 안전한 까다로운 사례들입니다. 반면, 새로운 머신러닝 접근 방식은 이러한 복잡한 구조들을 훨씬 더 성공적으로 처리했습니다. 모델은 단순히 추측한 것이 아니라, 코드의 형태에 담긴 근본적인 논리를 학습한 것입니다. 연구진은 풍부한 구조적 관점과 강력한 학습 알고리즘을 결합함으로써, 오랫동안 인간의 직관이 필요했던 작업을 자동화할 수 있음을 입증했습니다. 이 연구는 빠르고 효율적인 소프트웨어를 작성하는 미래가 단순히 컴퓨터를 위한 더 나은 규칙집에 있는 것이 아니라, 숙련된 인간 프로그래머가 코드를 바라보는 방식, 즉 코드를 정적인 명령의 연속이 아닌 살아있는 상호 연결된 시스템으로 보는 법을 컴퓨터에게 가르치는 데 있음을 시사합니다.

연구 분야의 논문에 파묻히고 계신가요?

연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.

Digest 사용해 보기 →