Clear Filters
Clear Filters

큰 Data 병렬처리 문의

3 views (last 30 days)
Sangho Lim
Sangho Lim on 27 Dec 2022
Answered: Dheeraj on 5 Sep 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를 더 확보해야 하는 것인지 문의드립니다.

Answers (1)

Dheeraj
Dheeraj on 5 Sep 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/ 를 참조하여 병렬 컴퓨팅 툴박스에 대한 더 나은 이해를 얻을 수 있습니다.
이 도움이 되었으면 좋겠습니다.

Categories

Find more on 병렬 연산 기본 사항 in Help Center and File Exchange

Products


Release

R2022a

Community Treasure Hunt

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

Start Hunting!