큰 Data 병렬처리 문의

1 visualizzazione (ultimi 30 giorni)
Sangho Lim
Sangho Lim il 27 Dic 2022
Risposto: Dheeraj il 5 Set 2023
Matlab 프로그램을 사용 중 병렬처리 관련 궁금한 부분이 있어 문의드리고자 연락드립니다.
현재 고민하고 있는 부분은 아래와 같습니다.
[Target이 작은경우]
A : 4 x 1 배열 - target
P : 2000 x 1 배열 - pulse
S : 1 x 8000 배열 - sample
- repmat 함수를 이용하여, 4 x 8000 배열을 만들고, P Parfor를 활용하여 빠르게 연산 수행함
[Target이 많은경우]
A : 4000000 x 1 배열 - target
P : 2000 x 1 배열 - pulse
S : 1 x 8000 배열 - sample
- repmat 함수를 이용하여 4000000 x 8000 배열 구성 시 메모리 overflow 발생 : 해당방법 사용 X
- Parfor 4000000 번을 수행 (sample 수 고려) : 전체 소요시간 - 90 (워커 36)
- For 2000번 수행 - 전체 소요 시간 - 50 시간...
위와 같이 Target이 많은 경우 어떻게 연산시간을 줄일 수 있는지 조언 부탁드립니다.
gpuArray를 활용하는것이 적절한 case인지, CPU를 더 확보해야 하는 것인지 문의드립니다.

Risposte (1)

Dheeraj
Dheeraj il 5 Set 2023
안녕하세요,
대량의 대상을 처리할 때 메모리 사용량과 계산 시간은 상당한 문제가 될 수 있습니다. "repmat"을 사용하여 4,000,000 x 8000 배열을 생성하려면 메모리 오버플로우가 발생할 수 있으며, 이를 관찰하셨다고 합니다.
다음은 계산 오버헤드를 줄이는 데 도움이 되는 몇 가지 방법입니다:
  1. 분산 컴퓨팅: MATLAB의 Parallel Computing Toolbox는 여러 대의 컴퓨터나 코어에 계산을 분산시킬 수 있는 기능을 제공합니다. 이를 통해 메모리와 계산을 더 효율적으로 관리할 수 있습니다.
  2. 메모리 효율적인 데이터 구조: 데이터를 복제하는 대신 spmd (단일 프로그램, 다중 데이터)와 같은 메모리 효율적인 데이터 구조를 사용하는 것을 고려해보세요. 이를 통해 큰 데이터를 복제하지 않고도 작업을 여러 작업자(worker)로 분할할 수 있습니다.
  3. 일괄 처리: 작업을 일괄(batch)로 나누고 작은 덩어리로 순차적으로 처리하세요. 이렇게 하면 메모리 오버플로우를 방지하고 계산 부하를 더 효과적으로 관리할 수 있습니다.
그리고 이러한 규모의 데이터를 정기적으로 처리한다면 더 많은 메모리와 계산 능력을 갖춘 컴퓨팅 클러스터를 고려하는 것이 유용할 수 있습니다.
MATLAB 문서 https://in.mathworks.com/help/parallel-computing/ 를 참조하여 병렬 컴퓨팅 툴박스에 대한 더 나은 이해를 얻을 수 있습니다.
이 도움이 되었으면 좋겠습니다.

Categorie

Scopri di più su 병렬 연산 기본 사항 in Help Center e File Exchange

Prodotti


Release

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!