toplogo
Sign In

병렬 AIG 리팩토링: 충돌 해결을 통한 성능 향상


Core Concepts
병렬 AIG 리팩토링 기법을 제안하여 기존 순차적 알고리즘 대비 28배 빠른 성능을 달성하면서도 최적화 품질을 유지한다.
Abstract
이 논문은 AIG(And-Inverter Graph) 리팩토링 기법의 병렬화 방법을 제안한다. AIG 리팩토링은 논리 최적화를 위한 핵심 프로세스로, 논리적으로 동등한 그래프를 찾아 대체함으로써 회로 그래프의 면적과 깊이를 줄이는 작업이다. 하지만 이 작업은 시간이 많이 소요되는 문제가 있다. 이를 해결하기 위해 저자들은 먼저 병렬화 과정에서 발생할 수 있는 두 가지 유형의 충돌을 분석한다. 첫 번째는 데이터 경쟁(data race)으로, 스레드 간 AIG와 구조 해싱 테이블의 공유 데이터 수정으로 인한 충돌이다. 두 번째는 데이터 의존성(data dependency)으로, 노드 리팩토링 작업 간 MFFC(Maximum Fanout-Free Cone) 의존성으로 인한 충돌이다. 이를 해결하기 위해 저자들은 다음과 같은 병렬 AIG 리팩토링 기법을 제안한다: 작업 스케줄러: 동일 레벨의 노드들은 MFFC가 겹치지 않으므로 병렬 처리할 수 있다. 따라서 노드를 레벨 단위로 그룹화하여 병렬 처리한다. 평가: 데이터 경쟁을 해결하기 위해 AIG와 구조 해싱 테이블의 공유 변수를 스레드별 지역 변수로 할당한다. 데이터 의존성 충돌을 해결하기 위해 재사용 노드에 플래그를 설정한다. 교체: 데이터 경쟁 해결을 위해 노드 삭제 작업을 순차적으로 수행한다. 또한 MFFC 노드 재사용 전략을 통해 AIG 수정을 최소화한다. 실험 결과, 제안한 병렬 리팩토링 기법이 64개 CPU 코어에서 기존 순차 알고리즘 대비 평균 28배 빠른 성능을 보이면서도 최적화 품질은 유사한 수준을 유지하는 것으로 나타났다.
Stats
제안한 병렬 리팩토링 기법이 64개 CPU 코어에서 기존 순차 알고리즘 대비 평균 28배 빠른 성능을 보였다. 최적화 품질(면적, 깊이)은 기존 순차 알고리즘과 유사한 수준을 유지했다.
Quotes
"병렬 AIG 리팩토링을 통해 기존 순차 알고리즘 대비 평균 28배 빠른 성능을 달성하면서도 최적화 품질을 유지할 수 있었다." "병렬 처리 과정에서 발생할 수 있는 데이터 경쟁과 데이터 의존성 문제를 효과적으로 해결하였다."

Key Insights Distilled From

by Ye Cai,Zongl... at arxiv.org 04-23-2024

https://arxiv.org/pdf/2404.13617.pdf
Parallel AIG Refactoring via Conflict Breaking

Deeper Inquiries

제안한 병렬 리팩토링 기법을 다른 EDA 알고리즘에 적용할 수 있을까

제안한 병렬 리팩토링 기법은 다른 EDA 알고리즘에도 적용할 수 있을 것으로 보입니다. 이 기법은 병렬화를 통해 다중 코어 플랫폼을 활용하여 효율성을 향상시키는 방법으로 설계되었습니다. EDA 도구의 성능을 향상시키는 데 중요한 역할을 하는 이러한 기법은 다른 EDA 알고리즘에서도 적용될 수 있어서 전반적인 성능 향상을 이끌어낼 수 있을 것으로 기대됩니다.

병렬 처리 과정에서 발생할 수 있는 다른 유형의 충돌은 무엇이 있을까

병렬 처리 과정에서 발생할 수 있는 다른 유형의 충돌로는 데이터 레이스와 데이터 의존성이 있습니다. 데이터 레이스는 서로 다른 스레드가 공유 데이터를 수정할 때 발생하는 충돌을 의미하며, 데이터 의존성은 미세한 노드 리팩토링 작업에서 발생하는 충돌로, 중복 노드 삭제 및 동시 수정-삭제가 포함됩니다.

병렬 리팩토링 기법의 성능을 더 향상시킬 수 있는 방법은 무엇일까

병렬 리팩토링 기법의 성능을 더 향상시키기 위해 추가적인 방법으로는 다음과 같은 접근 방법이 있을 수 있습니다: 병렬 처리 단계의 최적화: 각 단계에서의 병렬 처리를 최적화하여 병렬화의 효율성을 높일 수 있습니다. 충돌 해결 전략 강화: 데이터 레이스와 데이터 의존성과 같은 충돌을 더 효과적으로 해결하기 위한 전략을 개발하여 성능을 향상시킬 수 있습니다. 병렬 처리 단계 간 효율적인 연결: 각 단계 사이의 효율적인 데이터 및 작업 흐름을 구축하여 전체적인 병렬 처리 성능을 향상시킬 수 있습니다.
0