SlideShare a Scribd company logo
1 of 12
Download to read offline
GPU를 위한 병렬 음원 방향 추정
알고리즘
이태우
고려대학교 음성정보처리연구실
twlee@speech.korea.ac.kr
Abstract
• Steered response power phase transform(SRP-PHAT)은 음원 방향 추정을
위해 널리 사용되는 알고리즘이다. SRP-PHAT는 매우 많은 수의 후보
좌표를 조사해야만 하므로 기존 SRP-PHAT들은 실시간에 실행되지 못할
수도 있었다. 이 문제를 극복하기 위해, SRP-PHAT를 graphics processing
units(GPUs) 기반으로 병렬화하는 시도가 있었다. 그러나, 그 방법들은
on-chip 메모리를 모두 쓰지 못하여 GPUs의 최대 연산 능력을 활용할 수
없었다. 이 발표에서 우리는 SRP-PHAT의 GPU 기반 병렬 알고리즘들을
주파수 영역과 시간 영역의 두 버전으로 제안한다. 제안된 알고리즘들은
SRP-PHAT의 메모리 접근 패턴을 최적화하고 on-chip 메모리를
공격적으로 사용한다. 결과적으로 제안된 방법들은 CPU 기반
알고리즘들에 비해 주파수 영역에서 1,276 배 그리고 시간 영역에서 80
배의 속도 향상을, 그리고 기존 GPU 기반 알고리즘들에 비해 주파수
영역에서 1.5 배 그리고 시간 영역에서 6 배의 속도 향상을 보였다.
1. SRP-PHAT
• SRP-PHAT는 steered response power(SRP)가 최대인 지점의 방향을 음원이 있는 방향으로
추정한다. SRP가 최대인 지점 𝒒는 다음과 같이 얻어진다:
𝒒 = 𝒂𝒓𝒈 𝒎𝒂𝒙
𝒒∈𝑸
𝒑 𝒒
• 여기서 𝑸는 모든 후보 음원 좌표들의 집합, 𝒑 𝒒는 좌표 𝒒에서의 SRP 이다. 𝒑 𝒒는 주파수
영역(FD)과 시간 영역(TD)에서 계산될 수 있다.
• 주파수 영역:
𝒑 𝒒 =
𝑿 𝒎(𝝎)
𝑿 𝒎(𝝎)
𝒆𝒋𝝎𝝉[𝒒,𝒎]
𝑴
𝒎=𝟏
𝟐
𝟐𝝅
𝟎
𝒅𝝎
• 시간 영역:
𝒑 𝒒 = 𝑹 𝒒, 𝒎′, 𝒎″
𝑴
𝒎″=𝒎′+𝟏
𝑴−𝟏
𝒎′=𝟏
여기서, 𝑹 𝒒, 𝒎′, 𝒎″ =
𝟏
𝟐𝝅
𝑿 𝒎′ 𝝎 𝑿 𝒎″
∗
𝝎
𝑿 𝒎′ 𝝎 𝑿 𝒎″
∗ 𝝎
𝒆𝒋𝝎 𝝉 𝒒,𝒎′ −𝝉 𝒒,𝒎″
𝒅𝝎
𝟐𝝅
𝟎
파라미터 설명
𝑀 마이크로폰 수 (𝑚 = 1: 𝑀)
𝑋 𝑚 𝝎 𝑚번째 마이크로폰의 푸리에 변환
𝑋 𝑚
∗
𝝎 𝑚번째 마이크로폰의 푸리에 변환의 conjugate
𝜏[𝑞, 𝑚] 좌표 𝑞에서 마이크로폰 𝑚까지의 도착 시간 (TOA)
𝑅[𝑞, 𝑚′, 𝑚″] 좌표 𝑞에서 마이크로폰 쌍 (𝑚′, 𝑚″)의 phase transform (PHAT)
가중된 시간 영역 cross-correlation
2. 병렬성 (Parallelism)
• 병렬성은 연산들 사이에 서로 의존성이 없어 동시에 계산될 수 있는 성질이다. 예를
들어 스레드 수준 병렬성(thread level parallelism, TLP)은 두 스레드 사이에 서로
의존성이 없어 동시에 계산될 수 있는 성질이다. 여기서 의존성이란 연산들 사이에
반드시 지켜야 할 실행 순서가 있음을 뜻한다. 이를테면 한 스레드 안에는 읽고
쓰기(write-after-read, WAR), 쓰고 쓰기(write-after-write, WAW), 쓰고 읽기(read-
after-write, RAW) 의존성이 있을 수 있다. 이 중에서, 오직 RAW만이 true 의존성으로
여겨진다.
• 그러나, 다수의 스레드에서는 RAW, WAW, WAR 모두 true 의존성으로 여겨진다. 단,
읽고 읽기 (read-after-read, RAR) 의존성은 메모리 broadcasting에 의해 풀릴 수 있다.
3. Parallelism of FD SRP-PHAT
표 1에서 FD SRP-PHAT는 세 RAW 의존성을 갖는다:
줄 2,3 과 11 사이의 𝑋 𝑚, 줄 11 과 13 사이의 𝑠, 그리
고 줄 14 와 16 사이의 𝑝가 그것이다. 그러므로 FD
SRP-PHAT는 fast Fourier transform(FFT), SRP 계산,
그리고 최대 SRP 탐색의 세 블록들로 나눠진다. 줄
1~4의 FFT 블록은 최대 𝑀 × log 𝑇의 TLP를 갖는다.
줄 10~12의 가장 안쪽 loop는 병렬화 될 수 없다.
그 결과가 RAW 의존성을 유발하며 반드시 같은
변수 𝑠에 저장되어야 하기 때문이다. 유사하게, 줄
8~15의 SRP 계산 블록도 병렬화 될 수 없다. 그 결
과가 RAW 의존성을 유발하며 같은 변수 𝑝에 저장
되어야 하기 때문이다. 줄 6~20의 바깥 loop는 줄
16~19를 제외하고 𝑄 개 스레드들의 TLP를 갖는
다. 줄 14와 16의 RAW 의존성은 parallel reduction
으로 분리되어 처리될 수 있다.
표 1. FREQUENCY DOMAIN SRP-PHAT ALGORITHM
Input: 𝑥 𝑚 𝑡 , 𝜏 𝑞, 𝑚 , 𝜔 𝑘 , 𝑚 = 1:𝑀, 𝑡 = 1:𝑇, 𝑞 ∈ 𝑄, 𝑘 = 1:𝑇
1. for each microphone 𝑚
2. 𝑋 𝑚 ← FFT 𝑥 𝑚
3. 𝑋 𝑚 ← 1 𝑋 𝑚
4. end
5. 𝑝max ← −∞
6. for each location 𝑞
7. 𝑝 ← 0
8. for each frequency 𝑘
9. 𝑠 ← 0
10. for each microphone 𝑚
11. 𝑠 ← 𝑠 + 𝑋 𝑚 𝑘 ∙ exp 𝑗𝜔 𝑘 𝜏 𝑞, 𝑚
12. end
13. 𝑠 ← 𝑠2
14. 𝑝 ← 𝑝 + 𝑠
15. end
16. if 𝑝max < 𝑝
17. 𝑝max ← 𝑝
18. 𝑞 ← 𝑞
19. end
20. end
Output: 𝑞
4. Parallelism of TD SRP-PHAT
표 2의 TD SRP-PHAT는 네 RAW 의존성을 갖는다: 줄 2,
3 과 7 사이의 𝑋 𝑚, 줄 7 과 11 사이의 𝑍 𝑛, 줄 11 과 17 사
이의 𝑅 𝑛, 그리고 줄 17 과 19 사이의 𝑝가 그것이다. 그
러므로 TD SRP-PHAT는 FFT, cross spectrum(CS) 계산,
inverse FFT(IFFT), SRP 계산, 그리고 최대 SRP 탐색의 다
섯 블록들로 나눠진다. FFT (줄 1~4) 와 IFFT (줄 10~12)
블록은 각각 𝑀 × log 𝑇 와 𝑁 × log 𝑇 스레드들의 TLP를
갖는다. 여기서 𝑁은 마이크로폰 쌍의 개수이다. 줄
6~8의 안쪽 loop 또한 TLP를 갖는다. 이는 각 요소의 계
산이 이전 loop의 결과들과 독립적이기 때문이다. 줄
5~9의 CS 계산 블록은 TLP를 갖는다. 이는 𝑋 𝑚을 공유
하는 스레드들 사이의 RAR 의존성은 메모리
broadcasting으로 풀릴 수 있기 때문이다. 줄 19~22를
제외하고 줄 14~23은 TLP를 갖는다. SRP 계산 (줄
16~18)은 병렬화될 수 없다. 왜냐하면 그 결과가 RAW
의존성을 유발하며 같은 변수 𝑝에 저장되어야 하기 때
문이다. 줄 19~22의 RAW 의존성은 parallel reduction으
로 분리되어 처리될 수 있다.
표 2. TIME DOMAIN SRP-PHAT ALGORITHM
Input: 𝑥 𝑚 𝑡 , 𝜏 𝑞, 𝑛 , 𝑚 = 1:𝑀, 𝑡 = 1:𝑇, 𝑞 ∈ 𝑄, 𝑛 ≡ 𝑚′, 𝑚″
1. for each microphone 𝑚
2. 𝑋 𝑚 ← FFT 𝑥 𝑚
3. 𝑋 𝑚 ← 1 𝑋 𝑚
4. end
5. for each microphone pair 𝑛 ≡ 𝑚′, 𝑚″
6. for each frequency 𝑘
7. 𝑍 𝑛 𝑘 ← 𝑋 𝑚′ 𝑘 𝑋 𝑚″
∗
𝑘
8. end
9. end
10. for each microphone pair 𝑛 ≡ 𝑚′, 𝑚″
11. 𝑅 𝑛 ← IFFT 𝑍 𝑛
12. end
13. 𝑝max ← −∞
14. for each location 𝑞
15. 𝑝 ← 0
16. for each microphone pair 𝑛 ≡ 𝑚′, 𝑚″
17. 𝑝 ← 𝑝 + 𝑅 𝑛 𝜏 𝑞, 𝑛
18. end
19. if 𝑝max < 𝑝
20. 𝑝max ← 𝑝
21. 𝑞 ← 𝑞
22. end
23. end
Output: 𝑞
5. Parallel SRP-PHAT In FD (표 3)
Algorithm Thread index Number of threads Time complexity
Input: 𝑥 𝑚 𝑡 , 𝜏 𝑞, 𝑚 , 𝜔 𝑘 , 𝑚 = 1:𝑀, 𝑡 = 1:𝑇, 𝑞 ∈ 𝑄, 𝑘 = 1:𝑇
1. 𝑋 𝑚 ← FFT 𝑥 𝑚
2. 𝑋 𝑚 𝑘 ← 1 𝑋 𝑚 𝑘 FFT 𝑚, 𝑘 𝑀 × 𝑇 𝑂 𝑀 𝑇
𝐶
log 𝐶
3. load 𝜔 𝜅 into shared memory 𝜔 𝜅
4. load 𝑋1:𝑀 𝜅 into shared memory 𝑋1:𝑀 𝜅
5. synchronize all threads in a block
6. for each location 𝑞 in 𝜌
7. load 𝜏 𝑞, 1: 𝑀 into local memory 𝜏 𝑞 1: 𝑀
8. 𝑝 𝑞,𝜅 ← 0
9. for each frequency 𝑘 in 𝜅
10. 𝑠 ← 0
11. for each microphone 𝑚
12. 𝑠 ← 𝑠 + 𝑋 𝑚 𝑘 ⋅ exp 𝑗𝜔 𝑘 𝜏 𝑞 𝑚
13. end
14. 𝑝 𝑞,𝜅 ← 𝑝 𝑞,𝜅 + 𝑠2
15. end
16. end
SRP
𝜌, 𝜅
𝑄
𝜌
×
𝑇
𝜅
𝑂 𝑄
𝐶
𝑇𝑀
17. accumulate 𝑝 𝑞,𝜅 over 𝜅 into 𝑝 𝑞 SRP 𝑞 𝑄 𝑂 𝑄
𝐶
𝜅
18. find 𝑞 such that 𝑝 𝑞 is the maximum MPS 𝑞 𝑄 𝑂 𝑄
𝐶
log 𝐶
Output: 𝑞
6. Parallel SRP-PHAT In TD (표 4)
Algorithm Thread index Number of threads Time complexity
Input: 𝑥 𝑚 𝑡 , 𝜏 𝑞, 𝑚 , 𝑚 = 1:𝑀, 𝑡 = 1:𝑇, 𝑘 = 1:𝑇
1. 𝑋 𝑚 ← FFT 𝑥 𝑚
2. 𝑋 𝑚 𝑘 ← 1 𝑋 𝑚 𝑘 FFT 𝑚, 𝑘 𝑀 × 𝑇 𝑂 𝑀 𝑇
𝐶
log 𝐶
3. load 𝑋1:𝑀 𝜅 into local memory 𝑋1:𝑀 𝑘
4. for each microphone pair 𝑛 ≡ 𝑚′, 𝑚″
5. for each frequency 𝑘 in 𝜅
6. 𝑍 𝑛 𝑘 ← 𝑋 𝑚′ 𝑘 𝑋 𝑚″
∗
𝑘
7. end
8. end
CS
𝜅
𝑇
𝜅
𝑂 𝑇
𝐶
𝑁
9. 𝑅 𝑛 ← IFFT 𝑍 𝑛 IFFT 𝑛, 𝑘 𝑁 × 𝑇 𝑂 𝑁 𝑇
𝐶
log 𝐶
10. load 𝑅 𝑛 into shared memory 𝑅 𝑛
11. synchronize all threads in a block
12. 𝑝 𝑞 ← 0
13. for each microphone pair 𝑛 ≡ 𝑚′, 𝑚″
14. 𝑝 𝑞 ← 𝑝 𝑞 + 𝑅 𝑛 𝜏 𝑞, 𝑛
end
SRP
𝑞 𝑄 𝑂( 𝑄
𝐶
𝑁)
16. find 𝑞 such that 𝑝 𝑞 is the maximum MPS 𝑞 𝑄 𝑂 𝑄
𝐶
log 𝐶
Output: 𝑞
7. GPU performance & result
표 5. 실험 환경
Sound source
Corpus: TIMIT
Sampling rate: 16 KHz
Length: 104 seconds
Frame size (𝑇): 4096 samples
Overlap: 2048 samples
Room
Dimension: 3m×5m×3m
Reverberation: RT60 0.43 seconds
Search space ( 𝑄 ): 3888, 97200, 388800
Microphones Number of sensors (𝑀): 8, 16, 32
Host
CPU: i7-2700K 3.5 GHz
RAM: DDR3 PC3-10700 8 GB
Devices
GPU1: GTX 560 Ti, 900 MHz, 8 SMs, 384 cores
GPU2: GTX 580, 815 MHz, 16 SMs, 512 cores
GPU3: GTX 680, 1006 MHz, 8 SMs, 1536 cores
표 6. 마이크로폰 수 𝑀 변화에 따른 프레임 당 수행 시간 (MILLISECONDS)
( 𝑄 : 97200, DEVICE: GTX 680)
𝑀
Algorithm
8 16 32 Average Speedup
FD
CPU 110953 223072 453447 262490 1
Minotto 130.559 291.419 677.741 366.573 716
Proposed 53.3157 149.929 525.913 243.053 1080
TD
CPU 8.67241 45.7703 210.365 88.2691 1
Minotto 1.67966 3.21136 16.4630 7.11799 12
Proposed 0.35004 0.60906 1.88197 0.94702 93
Minotto, V., Jung, C., Silveira, L., Lee, B., 2012. GPU-based approaches for real-time sound source localization using the SRP-PHAT algorithm. Int. J. High Perform.
Comput. Appl., 27 (3), 291–306.
8. GPU performance & result
표 7. 탐색 후보 좌표 수 𝑄 변화에 따른 프레임 당 수행 시간 (MILLISECONDS)
(𝑀: 16, DEVICE: GTX 680)
𝑄
Algorithm
3,888 97,200 388,800 Average Speedup
FD CPU 9339.01 223072 876644 369685 1
Minotto 8.85731 291.419 865.507 388.595 951
Proposed 6.09673 149.929 597.590 251.205 1472
TD CPU 27.1977 45.7703 103.277 58.7482 1
Minotto 0.89618 3.21136 8.00686 4.03814 15
Proposed 0.26006 0.60906 1.80190 0.89034 66
표 8. 디바이스 별 프레임 당 수행 시간 (MILLISECONDS)
Device
Algorithm
GTX 560 GTX 580 GTX 680 Average Speedup
FD Minotto 1690.07 658.103 865.507 1071.23 1
Proposed 814.772 516.804 597.590 643.055 1.7
TD Minotto 13.7382 8.07846 8.00686 9.94117 1
Proposed 2.20939 1.33607 1.80190 1.78245 5.6
9. Conclusion
• 이 발표에서, 우리는 FD와 TD에서 GPU 기반 병렬 SRP-PHAT 알고리즘을 제안하였다.
제안된 알고리즘은 메모리 통신 병목을 최소화하도록 on-chip 메모리 사용을
최대화하여 높은 속도 향상을 얻었다.
• 제안된 방법들은 블록 당 스레드 수를 warp 크기의 배수로 설정할 수 있다. 이는
single instruction multiple data (SIMD) 연산들이 최대로 활용될 수 있도록 한다.
• 제안된 방법들은 shared 메모리와 register들을 가능한 많이 사용한다. 이는 global
메모리 접근 횟수를 줄일 뿐 아니라 전력 소모 또한 최소화한다.
• 표 3의 줄 18과 표 6의 줄 16의 parallel reduction은 두 단계로 구현된다. 먼저 global
메모리 접근 없이 한 SM에서 local maximum들을 찾고, 다음 그 local maximum들 중
global maximum을 찾는다.
• 메모리 접근 패턴의 벡터화, on-chip 메모리 사용 최대화, 그리고 불필요한 scheduling
overhead를 줄이기 위한 coarse grain 병렬성 사용은 기존 GPU 기반 SRP-PHAT
방법들에 비해 FD에서 1.5배 그리고 TD에서 6배의 속도 향상을 가져왔다.
• CPU와 GPU의 협력 연산 또는 multi-GPU에서의 연산이 추가로 연구될 수 있다.
참고 자료
• Taewoo Lee, Sukmoon Chang, and Dongsuk Yook
"Parallel SRP-PHAT for GPUs"
Computer Speech and Language, vol. 35, pp. 1-13, Jan. 2016
(Demonstration)

More Related Content

What's hot

Introduction to Parallel Programming
Introduction to Parallel ProgrammingIntroduction to Parallel Programming
Introduction to Parallel ProgrammingUNIST
 
ffmpeg optimization using CUDA
ffmpeg optimization using CUDAffmpeg optimization using CUDA
ffmpeg optimization using CUDAyyooooon
 
Compute shader DX11
Compute shader DX11Compute shader DX11
Compute shader DX11민웅 이
 
게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPU게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPUYEONG-CHEON YOU
 
(2013 DEVIEW) 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
(2013 DEVIEW) 멀티쓰레드 프로그래밍이  왜이리 힘드나요? (2013 DEVIEW) 멀티쓰레드 프로그래밍이  왜이리 힘드나요?
(2013 DEVIEW) 멀티쓰레드 프로그래밍이 왜이리 힘드나요? 내훈 정
 
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기Kiheon Park
 
[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp진현 조
 
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요NAVER D2
 
[2D7]레기온즈로 살펴보는 확장 가능한 게임서버의 구현
[2D7]레기온즈로 살펴보는 확장 가능한 게임서버의 구현[2D7]레기온즈로 살펴보는 확장 가능한 게임서버의 구현
[2D7]레기온즈로 살펴보는 확장 가능한 게임서버의 구현NAVER D2
 
[조진현] [Kgc2011]direct x11 이야기
[조진현] [Kgc2011]direct x11 이야기[조진현] [Kgc2011]direct x11 이야기
[조진현] [Kgc2011]direct x11 이야기진현 조
 
이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인
이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인
이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인Seunghwa Song
 
병렬 프로그래밍
병렬 프로그래밍병렬 프로그래밍
병렬 프로그래밍준혁 이
 
Compute shader
Compute shaderCompute shader
Compute shaderQooJuice
 
Visual Studio를 이용한 어셈블리어 학습 part 1
Visual Studio를 이용한 어셈블리어 학습 part 1Visual Studio를 이용한 어셈블리어 학습 part 1
Visual Studio를 이용한 어셈블리어 학습 part 1YEONG-CHEON YOU
 
[KGC2014] DX9에서DX11로의이행경험공유
[KGC2014] DX9에서DX11로의이행경험공유[KGC2014] DX9에서DX11로의이행경험공유
[KGC2014] DX9에서DX11로의이행경험공유Hwan Min
 
[1106 조진현] if you( batch rendering )
[1106 조진현] if you( batch rendering )[1106 조진현] if you( batch rendering )
[1106 조진현] if you( batch rendering )진현 조
 

What's hot (20)

Introduction to Parallel Programming
Introduction to Parallel ProgrammingIntroduction to Parallel Programming
Introduction to Parallel Programming
 
ffmpeg optimization using CUDA
ffmpeg optimization using CUDAffmpeg optimization using CUDA
ffmpeg optimization using CUDA
 
Compute shader DX11
Compute shader DX11Compute shader DX11
Compute shader DX11
 
게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPU게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPU
 
(2013 DEVIEW) 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
(2013 DEVIEW) 멀티쓰레드 프로그래밍이  왜이리 힘드나요? (2013 DEVIEW) 멀티쓰레드 프로그래밍이  왜이리 힘드나요?
(2013 DEVIEW) 멀티쓰레드 프로그래밍이 왜이리 힘드나요?
 
Modern gpu optimize
Modern gpu optimizeModern gpu optimize
Modern gpu optimize
 
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
박기헌 NDC12 초보 클라이언트 프로그래머의 병렬 프로그래밍 도전기
 
[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp
 
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
 
[2D7]레기온즈로 살펴보는 확장 가능한 게임서버의 구현
[2D7]레기온즈로 살펴보는 확장 가능한 게임서버의 구현[2D7]레기온즈로 살펴보는 확장 가능한 게임서버의 구현
[2D7]레기온즈로 살펴보는 확장 가능한 게임서버의 구현
 
[조진현] [Kgc2011]direct x11 이야기
[조진현] [Kgc2011]direct x11 이야기[조진현] [Kgc2011]direct x11 이야기
[조진현] [Kgc2011]direct x11 이야기
 
이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인
이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인
이기종 멀티코어 기반의 Open cv 응용 사례 및 효율적인 어플리케이션 디자인
 
병렬 프로그래밍
병렬 프로그래밍병렬 프로그래밍
병렬 프로그래밍
 
Compute shader
Compute shaderCompute shader
Compute shader
 
Lock free queue
Lock free queueLock free queue
Lock free queue
 
Visual Studio를 이용한 어셈블리어 학습 part 1
Visual Studio를 이용한 어셈블리어 학습 part 1Visual Studio를 이용한 어셈블리어 학습 part 1
Visual Studio를 이용한 어셈블리어 학습 part 1
 
Ndc12 2
Ndc12 2Ndc12 2
Ndc12 2
 
[KGC2014] DX9에서DX11로의이행경험공유
[KGC2014] DX9에서DX11로의이행경험공유[KGC2014] DX9에서DX11로의이행경험공유
[KGC2014] DX9에서DX11로의이행경험공유
 
[1106 조진현] if you( batch rendering )
[1106 조진현] if you( batch rendering )[1106 조진현] if you( batch rendering )
[1106 조진현] if you( batch rendering )
 
Processor
ProcessorProcessor
Processor
 

Viewers also liked

Algorithm Games
Algorithm GamesAlgorithm Games
Algorithm Gamesskku_npc
 
First Study Reference(Editted)
First Study Reference(Editted)First Study Reference(Editted)
First Study Reference(Editted)준혁 이
 
[H3 2012] 클라우드기반 앱 만들기 - baas.io SDK 활용
[H3 2012] 클라우드기반 앱 만들기 - baas.io SDK 활용[H3 2012] 클라우드기반 앱 만들기 - baas.io SDK 활용
[H3 2012] 클라우드기반 앱 만들기 - baas.io SDK 활용KTH, 케이티하이텔
 
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)Ubuntu Korea Community
 
알고리듬? 알고리즘?
알고리듬? 알고리즘?알고리듬? 알고리즘?
알고리듬? 알고리즘?Choulhyouc Lee
 
[H3 2012] 오픈 소스로 구현하는 실시간 데이터 처리를 위한 CEP
[H3 2012] 오픈 소스로 구현하는 실시간 데이터 처리를 위한 CEP[H3 2012] 오픈 소스로 구현하는 실시간 데이터 처리를 위한 CEP
[H3 2012] 오픈 소스로 구현하는 실시간 데이터 처리를 위한 CEPKTH, 케이티하이텔
 
Ndc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABCNdc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABCHo Gyu Lee
 
[발표자료]안드로메다에서 온 디자이너이야기 5차 next_web_지훈_20130221
[발표자료]안드로메다에서 온 디자이너이야기 5차 next_web_지훈_20130221[발표자료]안드로메다에서 온 디자이너이야기 5차 next_web_지훈_20130221
[발표자료]안드로메다에서 온 디자이너이야기 5차 next_web_지훈_20130221KTH, 케이티하이텔
 
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?nexusz99
 
Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀beom kyun choi
 
Spark 소개 2부
Spark 소개 2부Spark 소개 2부
Spark 소개 2부Jinho Yoo
 
Spark 소개 1부
Spark 소개 1부Spark 소개 1부
Spark 소개 1부Jinho Yoo
 
Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기iFunFactory Inc.
 
하둡2 YARN 짧게 보기
하둡2 YARN 짧게 보기하둡2 YARN 짧게 보기
하둡2 YARN 짧게 보기beom kyun choi
 
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐Terry Cho
 
지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기Ted Won
 
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴Terry Cho
 
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐Terry Cho
 
대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. rest대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. restTerry Cho
 

Viewers also liked (20)

Algorithm Games
Algorithm GamesAlgorithm Games
Algorithm Games
 
First Study Reference(Editted)
First Study Reference(Editted)First Study Reference(Editted)
First Study Reference(Editted)
 
[H3 2012] 클라우드기반 앱 만들기 - baas.io SDK 활용
[H3 2012] 클라우드기반 앱 만들기 - baas.io SDK 활용[H3 2012] 클라우드기반 앱 만들기 - baas.io SDK 활용
[H3 2012] 클라우드기반 앱 만들기 - baas.io SDK 활용
 
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
 
알고리듬? 알고리즘?
알고리듬? 알고리즘?알고리듬? 알고리즘?
알고리듬? 알고리즘?
 
[H3 2012] 오픈 소스로 구현하는 실시간 데이터 처리를 위한 CEP
[H3 2012] 오픈 소스로 구현하는 실시간 데이터 처리를 위한 CEP[H3 2012] 오픈 소스로 구현하는 실시간 데이터 처리를 위한 CEP
[H3 2012] 오픈 소스로 구현하는 실시간 데이터 처리를 위한 CEP
 
Ndc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABCNdc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABC
 
주키퍼
주키퍼주키퍼
주키퍼
 
[발표자료]안드로메다에서 온 디자이너이야기 5차 next_web_지훈_20130221
[발표자료]안드로메다에서 온 디자이너이야기 5차 next_web_지훈_20130221[발표자료]안드로메다에서 온 디자이너이야기 5차 next_web_지훈_20130221
[발표자료]안드로메다에서 온 디자이너이야기 5차 next_web_지훈_20130221
 
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
Dropbox와 같은 시스템은 파일을 어떻게 저장할까?
 
Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀
 
Spark 소개 2부
Spark 소개 2부Spark 소개 2부
Spark 소개 2부
 
Spark 소개 1부
Spark 소개 1부Spark 소개 1부
Spark 소개 1부
 
Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기
 
하둡2 YARN 짧게 보기
하둡2 YARN 짧게 보기하둡2 YARN 짧게 보기
하둡2 YARN 짧게 보기
 
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐
대용량 분산 아키텍쳐 설계 #4. soa 아키텍쳐
 
지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기지금 핫한 Real-time In-memory Stream Processing 이야기
지금 핫한 Real-time In-memory Stream Processing 이야기
 
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
 
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
 
대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. rest대용량 분산 아키텍쳐 설계 #5. rest
대용량 분산 아키텍쳐 설계 #5. rest
 

Similar to GPU를 위한 병렬 음원 방향 추정 알고리즘

PowerVR Low Level GLSL Optimisation
PowerVR Low Level GLSL Optimisation PowerVR Low Level GLSL Optimisation
PowerVR Low Level GLSL Optimisation 민웅 이
 
Son 기술 개발 2차
Son 기술 개발 2차Son 기술 개발 2차
Son 기술 개발 2차Young Hwan Kim
 
Buffer Overflow PPT (OneTwo)
Buffer Overflow PPT (OneTwo)Buffer Overflow PPT (OneTwo)
Buffer Overflow PPT (OneTwo)one_two_12
 
Landscape 구축, Unreal Engine 3 의 차세대 terrain system
Landscape 구축, Unreal Engine 3 의 차세대 terrain systemLandscape 구축, Unreal Engine 3 의 차세대 terrain system
Landscape 구축, Unreal Engine 3 의 차세대 terrain systemdrandom
 
AWS 환경에서 MySQL BMT
AWS 환경에서 MySQL BMTAWS 환경에서 MySQL BMT
AWS 환경에서 MySQL BMTI Goo Lee
 
Wire shark 사용법 및 네트워크 개론 살짝 설명
Wire shark 사용법 및 네트워크 개론 살짝 설명Wire shark 사용법 및 네트워크 개론 살짝 설명
Wire shark 사용법 및 네트워크 개론 살짝 설명진우 이
 
Netmanias L2,L3 Training (5) L3 SW Architecture
Netmanias L2,L3 Training (5) L3 SW ArchitectureNetmanias L2,L3 Training (5) L3 SW Architecture
Netmanias L2,L3 Training (5) L3 SW ArchitectureChris Changmo Yoo
 
Netmanias L2,L3 Training (1) L2 Ethernet
Netmanias L2,L3 Training (1) L2 EthernetNetmanias L2,L3 Training (1) L2 Ethernet
Netmanias L2,L3 Training (1) L2 EthernetChris Changmo Yoo
 
[데브루키]노대영_알고리즘 스터디
[데브루키]노대영_알고리즘 스터디[데브루키]노대영_알고리즘 스터디
[데브루키]노대영_알고리즘 스터디대영 노
 
Exploring Deep Learning Acceleration Technology Embedded in LLMs
Exploring Deep Learning Acceleration Technology Embedded in LLMsExploring Deep Learning Acceleration Technology Embedded in LLMs
Exploring Deep Learning Acceleration Technology Embedded in LLMsTae Young Lee
 
[14.10.21] Far Cry and DX9 번역(shaderstudy)
[14.10.21] Far Cry and DX9 번역(shaderstudy)[14.10.21] Far Cry and DX9 번역(shaderstudy)
[14.10.21] Far Cry and DX9 번역(shaderstudy)해강
 
강좌 01 ARM 프로세서 개요
강좌 01 ARM 프로세서 개요강좌 01 ARM 프로세서 개요
강좌 01 ARM 프로세서 개요chcbaram
 
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것NAVER D2
 
[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습
[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습
[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습Seongho Park
 

Similar to GPU를 위한 병렬 음원 방향 추정 알고리즘 (20)

PowerVR Low Level GLSL Optimisation
PowerVR Low Level GLSL Optimisation PowerVR Low Level GLSL Optimisation
PowerVR Low Level GLSL Optimisation
 
퀴즈요약
퀴즈요약퀴즈요약
퀴즈요약
 
Tcpdump
TcpdumpTcpdump
Tcpdump
 
Son 기술 개발 2차
Son 기술 개발 2차Son 기술 개발 2차
Son 기술 개발 2차
 
Buffer Overflow PPT (OneTwo)
Buffer Overflow PPT (OneTwo)Buffer Overflow PPT (OneTwo)
Buffer Overflow PPT (OneTwo)
 
Nvidia architecture
Nvidia architectureNvidia architecture
Nvidia architecture
 
Battlemesh(part.2)
Battlemesh(part.2)Battlemesh(part.2)
Battlemesh(part.2)
 
Landscape 구축, Unreal Engine 3 의 차세대 terrain system
Landscape 구축, Unreal Engine 3 의 차세대 terrain systemLandscape 구축, Unreal Engine 3 의 차세대 terrain system
Landscape 구축, Unreal Engine 3 의 차세대 terrain system
 
master_thesis
master_thesismaster_thesis
master_thesis
 
AWS 환경에서 MySQL BMT
AWS 환경에서 MySQL BMTAWS 환경에서 MySQL BMT
AWS 환경에서 MySQL BMT
 
Tcp summary
Tcp summaryTcp summary
Tcp summary
 
Wire shark 사용법 및 네트워크 개론 살짝 설명
Wire shark 사용법 및 네트워크 개론 살짝 설명Wire shark 사용법 및 네트워크 개론 살짝 설명
Wire shark 사용법 및 네트워크 개론 살짝 설명
 
Netmanias L2,L3 Training (5) L3 SW Architecture
Netmanias L2,L3 Training (5) L3 SW ArchitectureNetmanias L2,L3 Training (5) L3 SW Architecture
Netmanias L2,L3 Training (5) L3 SW Architecture
 
Netmanias L2,L3 Training (1) L2 Ethernet
Netmanias L2,L3 Training (1) L2 EthernetNetmanias L2,L3 Training (1) L2 Ethernet
Netmanias L2,L3 Training (1) L2 Ethernet
 
[데브루키]노대영_알고리즘 스터디
[데브루키]노대영_알고리즘 스터디[데브루키]노대영_알고리즘 스터디
[데브루키]노대영_알고리즘 스터디
 
Exploring Deep Learning Acceleration Technology Embedded in LLMs
Exploring Deep Learning Acceleration Technology Embedded in LLMsExploring Deep Learning Acceleration Technology Embedded in LLMs
Exploring Deep Learning Acceleration Technology Embedded in LLMs
 
[14.10.21] Far Cry and DX9 번역(shaderstudy)
[14.10.21] Far Cry and DX9 번역(shaderstudy)[14.10.21] Far Cry and DX9 번역(shaderstudy)
[14.10.21] Far Cry and DX9 번역(shaderstudy)
 
강좌 01 ARM 프로세서 개요
강좌 01 ARM 프로세서 개요강좌 01 ARM 프로세서 개요
강좌 01 ARM 프로세서 개요
 
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것
 
[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습
[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습
[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습
 

GPU를 위한 병렬 음원 방향 추정 알고리즘

  • 1. GPU를 위한 병렬 음원 방향 추정 알고리즘 이태우 고려대학교 음성정보처리연구실 twlee@speech.korea.ac.kr
  • 2. Abstract • Steered response power phase transform(SRP-PHAT)은 음원 방향 추정을 위해 널리 사용되는 알고리즘이다. SRP-PHAT는 매우 많은 수의 후보 좌표를 조사해야만 하므로 기존 SRP-PHAT들은 실시간에 실행되지 못할 수도 있었다. 이 문제를 극복하기 위해, SRP-PHAT를 graphics processing units(GPUs) 기반으로 병렬화하는 시도가 있었다. 그러나, 그 방법들은 on-chip 메모리를 모두 쓰지 못하여 GPUs의 최대 연산 능력을 활용할 수 없었다. 이 발표에서 우리는 SRP-PHAT의 GPU 기반 병렬 알고리즘들을 주파수 영역과 시간 영역의 두 버전으로 제안한다. 제안된 알고리즘들은 SRP-PHAT의 메모리 접근 패턴을 최적화하고 on-chip 메모리를 공격적으로 사용한다. 결과적으로 제안된 방법들은 CPU 기반 알고리즘들에 비해 주파수 영역에서 1,276 배 그리고 시간 영역에서 80 배의 속도 향상을, 그리고 기존 GPU 기반 알고리즘들에 비해 주파수 영역에서 1.5 배 그리고 시간 영역에서 6 배의 속도 향상을 보였다.
  • 3. 1. SRP-PHAT • SRP-PHAT는 steered response power(SRP)가 최대인 지점의 방향을 음원이 있는 방향으로 추정한다. SRP가 최대인 지점 𝒒는 다음과 같이 얻어진다: 𝒒 = 𝒂𝒓𝒈 𝒎𝒂𝒙 𝒒∈𝑸 𝒑 𝒒 • 여기서 𝑸는 모든 후보 음원 좌표들의 집합, 𝒑 𝒒는 좌표 𝒒에서의 SRP 이다. 𝒑 𝒒는 주파수 영역(FD)과 시간 영역(TD)에서 계산될 수 있다. • 주파수 영역: 𝒑 𝒒 = 𝑿 𝒎(𝝎) 𝑿 𝒎(𝝎) 𝒆𝒋𝝎𝝉[𝒒,𝒎] 𝑴 𝒎=𝟏 𝟐 𝟐𝝅 𝟎 𝒅𝝎 • 시간 영역: 𝒑 𝒒 = 𝑹 𝒒, 𝒎′, 𝒎″ 𝑴 𝒎″=𝒎′+𝟏 𝑴−𝟏 𝒎′=𝟏 여기서, 𝑹 𝒒, 𝒎′, 𝒎″ = 𝟏 𝟐𝝅 𝑿 𝒎′ 𝝎 𝑿 𝒎″ ∗ 𝝎 𝑿 𝒎′ 𝝎 𝑿 𝒎″ ∗ 𝝎 𝒆𝒋𝝎 𝝉 𝒒,𝒎′ −𝝉 𝒒,𝒎″ 𝒅𝝎 𝟐𝝅 𝟎 파라미터 설명 𝑀 마이크로폰 수 (𝑚 = 1: 𝑀) 𝑋 𝑚 𝝎 𝑚번째 마이크로폰의 푸리에 변환 𝑋 𝑚 ∗ 𝝎 𝑚번째 마이크로폰의 푸리에 변환의 conjugate 𝜏[𝑞, 𝑚] 좌표 𝑞에서 마이크로폰 𝑚까지의 도착 시간 (TOA) 𝑅[𝑞, 𝑚′, 𝑚″] 좌표 𝑞에서 마이크로폰 쌍 (𝑚′, 𝑚″)의 phase transform (PHAT) 가중된 시간 영역 cross-correlation
  • 4. 2. 병렬성 (Parallelism) • 병렬성은 연산들 사이에 서로 의존성이 없어 동시에 계산될 수 있는 성질이다. 예를 들어 스레드 수준 병렬성(thread level parallelism, TLP)은 두 스레드 사이에 서로 의존성이 없어 동시에 계산될 수 있는 성질이다. 여기서 의존성이란 연산들 사이에 반드시 지켜야 할 실행 순서가 있음을 뜻한다. 이를테면 한 스레드 안에는 읽고 쓰기(write-after-read, WAR), 쓰고 쓰기(write-after-write, WAW), 쓰고 읽기(read- after-write, RAW) 의존성이 있을 수 있다. 이 중에서, 오직 RAW만이 true 의존성으로 여겨진다. • 그러나, 다수의 스레드에서는 RAW, WAW, WAR 모두 true 의존성으로 여겨진다. 단, 읽고 읽기 (read-after-read, RAR) 의존성은 메모리 broadcasting에 의해 풀릴 수 있다.
  • 5. 3. Parallelism of FD SRP-PHAT 표 1에서 FD SRP-PHAT는 세 RAW 의존성을 갖는다: 줄 2,3 과 11 사이의 𝑋 𝑚, 줄 11 과 13 사이의 𝑠, 그리 고 줄 14 와 16 사이의 𝑝가 그것이다. 그러므로 FD SRP-PHAT는 fast Fourier transform(FFT), SRP 계산, 그리고 최대 SRP 탐색의 세 블록들로 나눠진다. 줄 1~4의 FFT 블록은 최대 𝑀 × log 𝑇의 TLP를 갖는다. 줄 10~12의 가장 안쪽 loop는 병렬화 될 수 없다. 그 결과가 RAW 의존성을 유발하며 반드시 같은 변수 𝑠에 저장되어야 하기 때문이다. 유사하게, 줄 8~15의 SRP 계산 블록도 병렬화 될 수 없다. 그 결 과가 RAW 의존성을 유발하며 같은 변수 𝑝에 저장 되어야 하기 때문이다. 줄 6~20의 바깥 loop는 줄 16~19를 제외하고 𝑄 개 스레드들의 TLP를 갖는 다. 줄 14와 16의 RAW 의존성은 parallel reduction 으로 분리되어 처리될 수 있다. 표 1. FREQUENCY DOMAIN SRP-PHAT ALGORITHM Input: 𝑥 𝑚 𝑡 , 𝜏 𝑞, 𝑚 , 𝜔 𝑘 , 𝑚 = 1:𝑀, 𝑡 = 1:𝑇, 𝑞 ∈ 𝑄, 𝑘 = 1:𝑇 1. for each microphone 𝑚 2. 𝑋 𝑚 ← FFT 𝑥 𝑚 3. 𝑋 𝑚 ← 1 𝑋 𝑚 4. end 5. 𝑝max ← −∞ 6. for each location 𝑞 7. 𝑝 ← 0 8. for each frequency 𝑘 9. 𝑠 ← 0 10. for each microphone 𝑚 11. 𝑠 ← 𝑠 + 𝑋 𝑚 𝑘 ∙ exp 𝑗𝜔 𝑘 𝜏 𝑞, 𝑚 12. end 13. 𝑠 ← 𝑠2 14. 𝑝 ← 𝑝 + 𝑠 15. end 16. if 𝑝max < 𝑝 17. 𝑝max ← 𝑝 18. 𝑞 ← 𝑞 19. end 20. end Output: 𝑞
  • 6. 4. Parallelism of TD SRP-PHAT 표 2의 TD SRP-PHAT는 네 RAW 의존성을 갖는다: 줄 2, 3 과 7 사이의 𝑋 𝑚, 줄 7 과 11 사이의 𝑍 𝑛, 줄 11 과 17 사 이의 𝑅 𝑛, 그리고 줄 17 과 19 사이의 𝑝가 그것이다. 그 러므로 TD SRP-PHAT는 FFT, cross spectrum(CS) 계산, inverse FFT(IFFT), SRP 계산, 그리고 최대 SRP 탐색의 다 섯 블록들로 나눠진다. FFT (줄 1~4) 와 IFFT (줄 10~12) 블록은 각각 𝑀 × log 𝑇 와 𝑁 × log 𝑇 스레드들의 TLP를 갖는다. 여기서 𝑁은 마이크로폰 쌍의 개수이다. 줄 6~8의 안쪽 loop 또한 TLP를 갖는다. 이는 각 요소의 계 산이 이전 loop의 결과들과 독립적이기 때문이다. 줄 5~9의 CS 계산 블록은 TLP를 갖는다. 이는 𝑋 𝑚을 공유 하는 스레드들 사이의 RAR 의존성은 메모리 broadcasting으로 풀릴 수 있기 때문이다. 줄 19~22를 제외하고 줄 14~23은 TLP를 갖는다. SRP 계산 (줄 16~18)은 병렬화될 수 없다. 왜냐하면 그 결과가 RAW 의존성을 유발하며 같은 변수 𝑝에 저장되어야 하기 때 문이다. 줄 19~22의 RAW 의존성은 parallel reduction으 로 분리되어 처리될 수 있다. 표 2. TIME DOMAIN SRP-PHAT ALGORITHM Input: 𝑥 𝑚 𝑡 , 𝜏 𝑞, 𝑛 , 𝑚 = 1:𝑀, 𝑡 = 1:𝑇, 𝑞 ∈ 𝑄, 𝑛 ≡ 𝑚′, 𝑚″ 1. for each microphone 𝑚 2. 𝑋 𝑚 ← FFT 𝑥 𝑚 3. 𝑋 𝑚 ← 1 𝑋 𝑚 4. end 5. for each microphone pair 𝑛 ≡ 𝑚′, 𝑚″ 6. for each frequency 𝑘 7. 𝑍 𝑛 𝑘 ← 𝑋 𝑚′ 𝑘 𝑋 𝑚″ ∗ 𝑘 8. end 9. end 10. for each microphone pair 𝑛 ≡ 𝑚′, 𝑚″ 11. 𝑅 𝑛 ← IFFT 𝑍 𝑛 12. end 13. 𝑝max ← −∞ 14. for each location 𝑞 15. 𝑝 ← 0 16. for each microphone pair 𝑛 ≡ 𝑚′, 𝑚″ 17. 𝑝 ← 𝑝 + 𝑅 𝑛 𝜏 𝑞, 𝑛 18. end 19. if 𝑝max < 𝑝 20. 𝑝max ← 𝑝 21. 𝑞 ← 𝑞 22. end 23. end Output: 𝑞
  • 7. 5. Parallel SRP-PHAT In FD (표 3) Algorithm Thread index Number of threads Time complexity Input: 𝑥 𝑚 𝑡 , 𝜏 𝑞, 𝑚 , 𝜔 𝑘 , 𝑚 = 1:𝑀, 𝑡 = 1:𝑇, 𝑞 ∈ 𝑄, 𝑘 = 1:𝑇 1. 𝑋 𝑚 ← FFT 𝑥 𝑚 2. 𝑋 𝑚 𝑘 ← 1 𝑋 𝑚 𝑘 FFT 𝑚, 𝑘 𝑀 × 𝑇 𝑂 𝑀 𝑇 𝐶 log 𝐶 3. load 𝜔 𝜅 into shared memory 𝜔 𝜅 4. load 𝑋1:𝑀 𝜅 into shared memory 𝑋1:𝑀 𝜅 5. synchronize all threads in a block 6. for each location 𝑞 in 𝜌 7. load 𝜏 𝑞, 1: 𝑀 into local memory 𝜏 𝑞 1: 𝑀 8. 𝑝 𝑞,𝜅 ← 0 9. for each frequency 𝑘 in 𝜅 10. 𝑠 ← 0 11. for each microphone 𝑚 12. 𝑠 ← 𝑠 + 𝑋 𝑚 𝑘 ⋅ exp 𝑗𝜔 𝑘 𝜏 𝑞 𝑚 13. end 14. 𝑝 𝑞,𝜅 ← 𝑝 𝑞,𝜅 + 𝑠2 15. end 16. end SRP 𝜌, 𝜅 𝑄 𝜌 × 𝑇 𝜅 𝑂 𝑄 𝐶 𝑇𝑀 17. accumulate 𝑝 𝑞,𝜅 over 𝜅 into 𝑝 𝑞 SRP 𝑞 𝑄 𝑂 𝑄 𝐶 𝜅 18. find 𝑞 such that 𝑝 𝑞 is the maximum MPS 𝑞 𝑄 𝑂 𝑄 𝐶 log 𝐶 Output: 𝑞
  • 8. 6. Parallel SRP-PHAT In TD (표 4) Algorithm Thread index Number of threads Time complexity Input: 𝑥 𝑚 𝑡 , 𝜏 𝑞, 𝑚 , 𝑚 = 1:𝑀, 𝑡 = 1:𝑇, 𝑘 = 1:𝑇 1. 𝑋 𝑚 ← FFT 𝑥 𝑚 2. 𝑋 𝑚 𝑘 ← 1 𝑋 𝑚 𝑘 FFT 𝑚, 𝑘 𝑀 × 𝑇 𝑂 𝑀 𝑇 𝐶 log 𝐶 3. load 𝑋1:𝑀 𝜅 into local memory 𝑋1:𝑀 𝑘 4. for each microphone pair 𝑛 ≡ 𝑚′, 𝑚″ 5. for each frequency 𝑘 in 𝜅 6. 𝑍 𝑛 𝑘 ← 𝑋 𝑚′ 𝑘 𝑋 𝑚″ ∗ 𝑘 7. end 8. end CS 𝜅 𝑇 𝜅 𝑂 𝑇 𝐶 𝑁 9. 𝑅 𝑛 ← IFFT 𝑍 𝑛 IFFT 𝑛, 𝑘 𝑁 × 𝑇 𝑂 𝑁 𝑇 𝐶 log 𝐶 10. load 𝑅 𝑛 into shared memory 𝑅 𝑛 11. synchronize all threads in a block 12. 𝑝 𝑞 ← 0 13. for each microphone pair 𝑛 ≡ 𝑚′, 𝑚″ 14. 𝑝 𝑞 ← 𝑝 𝑞 + 𝑅 𝑛 𝜏 𝑞, 𝑛 end SRP 𝑞 𝑄 𝑂( 𝑄 𝐶 𝑁) 16. find 𝑞 such that 𝑝 𝑞 is the maximum MPS 𝑞 𝑄 𝑂 𝑄 𝐶 log 𝐶 Output: 𝑞
  • 9. 7. GPU performance & result 표 5. 실험 환경 Sound source Corpus: TIMIT Sampling rate: 16 KHz Length: 104 seconds Frame size (𝑇): 4096 samples Overlap: 2048 samples Room Dimension: 3m×5m×3m Reverberation: RT60 0.43 seconds Search space ( 𝑄 ): 3888, 97200, 388800 Microphones Number of sensors (𝑀): 8, 16, 32 Host CPU: i7-2700K 3.5 GHz RAM: DDR3 PC3-10700 8 GB Devices GPU1: GTX 560 Ti, 900 MHz, 8 SMs, 384 cores GPU2: GTX 580, 815 MHz, 16 SMs, 512 cores GPU3: GTX 680, 1006 MHz, 8 SMs, 1536 cores 표 6. 마이크로폰 수 𝑀 변화에 따른 프레임 당 수행 시간 (MILLISECONDS) ( 𝑄 : 97200, DEVICE: GTX 680) 𝑀 Algorithm 8 16 32 Average Speedup FD CPU 110953 223072 453447 262490 1 Minotto 130.559 291.419 677.741 366.573 716 Proposed 53.3157 149.929 525.913 243.053 1080 TD CPU 8.67241 45.7703 210.365 88.2691 1 Minotto 1.67966 3.21136 16.4630 7.11799 12 Proposed 0.35004 0.60906 1.88197 0.94702 93 Minotto, V., Jung, C., Silveira, L., Lee, B., 2012. GPU-based approaches for real-time sound source localization using the SRP-PHAT algorithm. Int. J. High Perform. Comput. Appl., 27 (3), 291–306.
  • 10. 8. GPU performance & result 표 7. 탐색 후보 좌표 수 𝑄 변화에 따른 프레임 당 수행 시간 (MILLISECONDS) (𝑀: 16, DEVICE: GTX 680) 𝑄 Algorithm 3,888 97,200 388,800 Average Speedup FD CPU 9339.01 223072 876644 369685 1 Minotto 8.85731 291.419 865.507 388.595 951 Proposed 6.09673 149.929 597.590 251.205 1472 TD CPU 27.1977 45.7703 103.277 58.7482 1 Minotto 0.89618 3.21136 8.00686 4.03814 15 Proposed 0.26006 0.60906 1.80190 0.89034 66 표 8. 디바이스 별 프레임 당 수행 시간 (MILLISECONDS) Device Algorithm GTX 560 GTX 580 GTX 680 Average Speedup FD Minotto 1690.07 658.103 865.507 1071.23 1 Proposed 814.772 516.804 597.590 643.055 1.7 TD Minotto 13.7382 8.07846 8.00686 9.94117 1 Proposed 2.20939 1.33607 1.80190 1.78245 5.6
  • 11. 9. Conclusion • 이 발표에서, 우리는 FD와 TD에서 GPU 기반 병렬 SRP-PHAT 알고리즘을 제안하였다. 제안된 알고리즘은 메모리 통신 병목을 최소화하도록 on-chip 메모리 사용을 최대화하여 높은 속도 향상을 얻었다. • 제안된 방법들은 블록 당 스레드 수를 warp 크기의 배수로 설정할 수 있다. 이는 single instruction multiple data (SIMD) 연산들이 최대로 활용될 수 있도록 한다. • 제안된 방법들은 shared 메모리와 register들을 가능한 많이 사용한다. 이는 global 메모리 접근 횟수를 줄일 뿐 아니라 전력 소모 또한 최소화한다. • 표 3의 줄 18과 표 6의 줄 16의 parallel reduction은 두 단계로 구현된다. 먼저 global 메모리 접근 없이 한 SM에서 local maximum들을 찾고, 다음 그 local maximum들 중 global maximum을 찾는다. • 메모리 접근 패턴의 벡터화, on-chip 메모리 사용 최대화, 그리고 불필요한 scheduling overhead를 줄이기 위한 coarse grain 병렬성 사용은 기존 GPU 기반 SRP-PHAT 방법들에 비해 FD에서 1.5배 그리고 TD에서 6배의 속도 향상을 가져왔다. • CPU와 GPU의 협력 연산 또는 multi-GPU에서의 연산이 추가로 연구될 수 있다.
  • 12. 참고 자료 • Taewoo Lee, Sukmoon Chang, and Dongsuk Yook "Parallel SRP-PHAT for GPUs" Computer Speech and Language, vol. 35, pp. 1-13, Jan. 2016 (Demonstration)