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