너무 많은 데이터를 처리하는 방법?


14

플라즈마 역학 시뮬레이션은 종종 너무 많은 정보를 생성합니다. 시뮬레이션 중에 최소 10 개의 속성에 대해 (8192x1024x1024x1500)의 그리드 (x, y, z, t)에 다양한 물리적 속성을 기록합니다. 이 정보는 시뮬레이션이 완료된 후에 처리됩니다. 그것으로 우리는

  1. 속성 영화를 만들고
  2. 푸리에 분석,
  3. 평균 속성을 계산합니다.

우리가 작은 시스템을 연구 할 때 가능한 한 많은 양의 정보를 간단히 덤프하면 제대로 작동했습니다. 이를 통해 결과와 상호 작용할 수있는 유연성을 갖게되었으며 나중에 원하는 결과를 결정할 수 있습니다. 또한 계산 리소스 (CPU 시간)를 시뮬레이션 실행에 할당 할 수있었습니다.

푸리에 분석을 즉석에서 수행하고 선택된 범위의 길이 스케일 만 필터링하는 프로세스를 시작했습니다. 수치적인 이유로, 때때로 우리가 실제로 관심있는 것보다 작은 길이 스케일을 해결해야하므로이 필터가 크게 도움이됩니다. 또한 병렬 I / O 옵션, 특히 병렬 HDF5 와 같은 다양한 병렬 IO 라이브러리를 탐색하고 있습니다 .

데이터 처리 효율성을 극대화하기 위해 어떤 전략을 사용할 수 있습니까?

모든 분석 (영화 및 플롯과 같은 사후 처리 제외)을 즉석에서 수행하면 어떤 이점이 있습니까?

다른 연구 분야에서도이 문제가 발생한다고 상상할 수 있습니다. 예를 들어, 오랫동안 진화해야하는 분자 역학 시뮬레이션이있을 수 있지만 흥미로운 일이 일어나고있는 짧은 순간에 관심이 있습니다. 또는 CFD에서 초기 개발 시간이 느릴 수 있지만 일단 난기류가 발생하면 역학을 모니터링하기 위해 더 높은 시간 해상도가 필요할 수 있습니다.

시뮬레이션에서 정교한 결과 수집의 예를 자유롭게 이용할 수 있습니까?


이것은 광범위한 질문처럼 보일 수 있습니다. 이런 느낌이 든다면 내가 좀 더 구체적이 될 수있는 방법에 대해 제안하십시오.
Yann

1
또한 일부 실험 그룹이이 문제를 어떻게 처리하는지 살펴보십시오. 고 에너지 물리학 (CERN)과 천체 물리학은 저장해야하는 데이터의 규모가 더 커질 수 있습니다 (또는 데이터가 모든 스토리지에 쓸 수있는 것보다 더 빨리 들어 오기 때문에 저장하기 전에 필터링 될 수도 있음).
Brian Diggs

답변:


10

목표와 일치하도록 출력을 분할해야 할 수도 있습니다.

  1. 속성 영화의 경우 전체 공간 해상도와 모든 변수가 필요하지 않을 수 있습니다. 보여주고 싶은 것을 신중하게 선택하고 보여줄 영화의 최종 해상도에 대해 생각하십시오. 아마도 80 억 픽셀이 없을 것입니다.
  2. 푸리에 분석 (또는 POD와 같은 것)의 경우 시간적 일 경우, 도메인에서 현명하게 선택한 몇 백 점만 샘플링 할 수 있습니다. 공간적인 경우 1500 개가 아닌 몇 개의 스냅 샷 만 필요할 수 있습니다. 다시 한 번 모든 속성이 아닙니다.
  3. 시간 평균화를 위해 동일한 필드에 계속 추가하고 시간 차원에 대해 걱정할 필요가 없습니까? 공간적 평균화는 고통 스럽습니다. 특히 시간이 지남에 따라 진화를보고 싶다면 특히 그렇습니다. 그러나 데이터를 덤프하기 전에 더 많은 온라인 처리로 데이터 크기를 줄일 수 있습니다 ...

즉, 큰 일반적인 출력 대신 전용 출력을 사용하는 데 상당한 노력이 필요하지만 비용과 크기를 줄이는 데 도움이됩니다. 도움이 되었기를 바랍니다 !

일반적으로 데이터의 전체 해상도는 파일을 다시 시작할 때만 필요합니다. 즉 시뮬레이션을 다시 시작할 때만 필요합니다. 주어진 시뮬레이션에 대해 많은 것들이 필요하지 않습니다 (100이라고 말하면 2 번의 재시작 사이에 어떤 일이 발생하면 계산의 최대 1 %를 잃게됩니다) 반면에 영화 산업. 그리고 예를 들어 해상도의 1/64에서 (각 방향에서 4 포인트마다 1) 그렇게 할 수 있습니다.


공간 평균화가 왜 고통스러운가요? 즉석에서 작업을 수행하고 결과를 작게 작성하십시오.
David Ketcheson

@DavidKetcheson 공간 평균화는 많은 통신이 필요하고 도메인의 토폴로지에 영향을받을 수 있기 때문에 고통 스럽습니다. 물론 참조 프레임과 정렬 된 순수한 직교 그리드가 너무 나쁘지는 않지만 그 크기의 그리드로 1에서 ALL_REDUCE를 수행 할 수 없기 때문에 계산과 MPI_REDUCE의 현명한 조합을 수행해야합니다. 내가 생각 프로세서 ...
FrenchKheldar

1
좋아요, 이제 당신의 의견을 이해합니다. 그러나 각 프로세스에 대해 로컬로 평균을 내고 프로세스 당 단일 플로트를 줄일 수 있기 때문에 통신은 일반적으로 그리 나쁘지 않습니다. 내 경험 (65K 코어 BlueGene / P)에서이 비용은 특히 I / O 비용과 비교하면 사소한 수준입니다. 실제로 모든 단계에서 65K 코어 전체에 대해 ALL_REDUCE를 수행하며 매우 빠릅니다.
David Ketcheson

@DavidKetcheson 사실 나는 이제 당신의 요점을 잘못 이해했다고 생각하며 데이터 절감 비용을 과대 평가하고 있습니다. 내가 염두에 둔 것은 계산 그리드와 동일한 그리드에 있거나 없을 수있는 전체 2D 데이터를 저장 / 출력 해야하는 범위 방향 / 방위 평균과 같은 것입니다. 그러나 MPI_ALL_REDUCE의 실제 비용은 그 자체로는 문제가되지 않습니다.
FrenchKheldar

8

이 기술의 현재 마스터는 큰 입자 물리학 실험이라고 생각합니다 ( 시카고 대학교에서 오래되어 일하고 있기 때문에 CDFD0에 가장 익숙합니다 ). 1 년에 페타 바이트 (또는 그 이상)를 버리는 하드웨어 트리거가 있습니다. 그러나 이것은 양자화 / 분산의 전체 주제이거나 "필요하지 않은 것만 버리는 것"입니다. 나는 당신이 일반적으로 합리적인 대답을 줄 수 있는지 잘 모르겠습니다. "다음과 같은 방식으로 PDE 시뮬레이션을 분리하여 효율적으로 다운 샘플링하고 싶습니다"와 같은 문제로 범위를 좁히는 것이 좋습니다.


3

Peter LePage는 격자 -QCD 서클에서 꽤 유명하며 좋은 단거리 분석 솔루션을 찾아 적용하여 실현할 수없는 격자 격자를 줄일 수있는 방법을 제안합니다.

이것은 잘 선택된 스플라인 세트가 사다리꼴 방법보다 적은 수의 매듭으로 정확한 통합을 허용 할 수 있다는 점과 거의 같습니다 (귀하의 경우와 같이 한 번에 4 개 이상의 치수를 이용할 수 있다는 점은 제외).

결과적으로 노드 당 더 많은 계산 단계를 위해 데이터 세트의 원시 크기를 교환하지만 문제의 높은 차원 때문에 결국에 나옵니다 .

나는 괜찮은 힌트를 줄만큼 충분히 잘 알고있는 주제는 아니지만 과거의 일부 분야에서 효과가있었습니다.


3

질문은 약간 광범위하므로 그러한 경우 가능한 기술을 제안하는 모호한 답변을 제공 할 것입니다.

1) 이미 작업중인 즉시 처리. 즉시 처리를 수행하면서 데이터 생성 단계에서 분리하는 한 가지 방법은 항상 마지막 N 단계를 포함하는 순환 출력 파일을 생성하고 별도의 프로세스에서 분석을 실행하는 것입니다. 경쟁 조건을 방지하려면 두 가지를 동기화해야합니다.

2) 저장된 데이터를보다 신중하게 선택하십시오. 불행히도 상황에 따라 다릅니다.

3) 데이터를 저장하기 전에 압축하거나 HDF5와 같은 압축 옵션이 통합 된 스토리지 라이브러리를 사용하십시오.

4) 전체 출력 대신 정기적 인 체크 포인트를 저장하십시오. N 단계마다 전체 검사 점, 즉 시뮬레이션을 다시 시작하기에 충분한 데이터를 저장하면 필요한 경우 누락 된 데이터를 고도의 병렬 방식으로 재구성 할 수 있습니다. Monte-Carlo 방법의 경우 검사 점에 난수 생성기의 상태가 포함되어야합니다. 실제로이를 응용 프로그램 별 압축 기술로 간주 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.