[논문 리뷰] Parallelize Bubble Sort Algorithm Using OpenMP
이 논문은 멀티코어 시스템에서 성능을 향상시키기 위해 OpenMP를 사용한 버블 정렬 알고리즘의 병렬 버전을 제안한다. 단어 길이 기반으로 입력 데이터를 부분 배열으로 분할하고, 두 가지 데이터 구조(문자열 벡터와 3차원 배열)를 활용한 공유 메모리 병렬 처리를 통해, 인텔 코어 i7-3610QM(8개 CPU)에서 3차원 배열 방식이 우수한 성능을 보임을 입증한다.
Sorting has been a profound area for the algorithmic researchers and many resources are invested to suggest more works for sorting algorithms. For this purpose, many existing sorting algorithms were observed in terms of the efficiency of the algorithmic complexity. In this paper we implemented the bubble sort algorithm using multithreading (OpenMP). The proposed work tested on two standard datasets (text file) with different size . The main idea of the proposed algorithm is distributing the elements of the input datasets into many additional temporary sub-arrays according to a number of characters in each word. The sizes of each of these sub-arrays are decided depending on a number of elements with the same number of characters in the input array. We implemented OpenMP using Intel core i7-3610QM ,(8 CPUs),using two approaches (vectors of string and array 3D) . Finally, we get the data structure effects on the performance of the algorithm for that we choice the second approach.
연구 동기 및 목표
- 기본적으로 순차적인 버블 정렬 알고리즘의 성능을 병렬 처리를 통해 향상시키기 위해.
- 데이터 구조 선택(벡터 대비 3차원 배열)이 병렬 정렬 효율성에 미치는 영향을 조사하기 위해.
- 멀티코어 아키텍처에서 병렬 버블 정렬의 확장성과 런타임 성능을 평가하기 위해.
- 효과적인 병렬 처리를 가능하게 하기 위해 단어 길이 기반 데이터 분할 전략을 탐색하기 위해.
제안 방법
- 각 단어의 문자 수에 따라 입력 데이터셋을 일시적인 부분 배열로 분할한다.
- 8개 CPU 코어를 가진 인텔 코어 i7-3610QM에서 OpenMP를 사용한 멀티스레딩을 구현한다.
- 두 가지 데이터 구조를 탐색: 부분 배열을 저장하기 위한 문자열 벡터와 3차원 배열.
- 문자 수에 따라 요소를 부분 배열에 분배하여 워크로드를 균형 있게 분배한다.
- OpenMP 지시어를 사용한 병렬 영역을 통해 각 부분 배열에서 병렬 정렬을 실행한다.
- 두 데이터 구조 구현 간 성능 차이를 측정하여 최적의 설계를 식별한다.
실험 결과
연구 질문
- RQ1OpenMP를 사용해 버블 정렬 알고리즘을 효과적으로 병렬화하여 실행 시간을 단축시킬 수 있는가?
- RQ2단어 길이 기반 데이터 분할이 병렬 버블 정렬에서 워크로드 균형과 성능에 어떤 영향을 미치는가?
- RQ3병렬 구현에서 벡터의 문자열과 3차원 배열 중 어느 데이터 구조가 더 우수한 성능을 보이는가?
- RQ4입력 크기와 문자 분포는 병렬 알고리즘의 확장성에 어떤 영향을 미치는가?
- RQ5데이터 구조 선택은 메모리 액세스 패턴과 런타임 효율성에 어떤 영향을 미치는가?
주요 결과
- 실행 시간과 메모리 액세스 효율성 측면에서 3차원 배열 방식이 문자열 벡터 구현보다 뛰어난 성능을 보였다.
- OpenMP를 통한 병렬 처리로 순차적 버블 정렬 대비 정렬 시간이 감소했으며, 특히 대용량 데이터셋에서 두드러졌다.
- 단어 길이 기반 데이터 분할이 스레드 간 효과적인 워크로드 분배를 가능케 했다.
- 더 큰 입력 크기에서 다중 코어의 활용도가 높아져 성능 향상이 더욱 두드러졌다.
- 데이터 구조 선택이 런타임에 상당한 영향을 미쳤으며, 3차원 배열은 더 나은 메모리 국소성과 캐시 행동을 제공했다.
- 인텔 코어 i7-3610QM(8개 CPU)에서 알고리즘이 측정 가능한 스피드업을 보이며 병렬화 전략의 효과성을 입증했다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.