Làm thế nào để đối phó với quá nhiều dữ liệu?


14

Mô phỏng động lực học plasma của chúng tôi thường tạo ra quá nhiều thông tin. Trong quá trình mô phỏng, chúng tôi ghi lại các thuộc tính vật lý khác nhau trên lưới (x, y, z, t) lớn bằng (8192x1024x1024x1500), cho ít nhất 10 thuộc tính. Thông tin này được xử lý sau khi mô phỏng được hoàn thành. Với nó, chúng tôi

  1. làm phim về tài sản,
  2. thực hiện phân tích Fourier,
  3. tính toán trung bình.

Việc bán phá giá đơn giản này càng nhiều thông tin càng tốt đã hoạt động tốt khi chúng tôi nghiên cứu các hệ thống nhỏ hơn. Điều này cho chúng tôi sự linh hoạt để tương tác với kết quả và quyết định sau đó chúng tôi muốn làm gì với nó. Nó cũng cho phép chúng tôi phân bổ tài nguyên tính toán (thời gian CPU) để chạy mô phỏng.

Chúng tôi đã bắt đầu quá trình thực hiện phân tích Fourier một cách nhanh chóng và chỉ lọc cho một phạm vi tỷ lệ chiều dài được chọn. Vì lý do số, đôi khi chúng ta cần giải quyết các thang đo chiều dài nhỏ hơn mức chúng ta thực sự quan tâm, vì vậy trong những trường hợp đó, bộ lọc này giúp ích rất nhiều. Chúng tôi cũng đang khám phá các thư viện IO song song khác nhau, ví dụ: tùy chọn I / O song song, đặc biệt là HDF5 song song .

Những chiến lược nào có sẵn để tối đa hóa hiệu quả xử lý dữ liệu?

Có bất kỳ lợi ích nào để thực hiện tất cả các phân tích (không bao gồm xử lý bài, ví dụ như phim và cốt truyện) một cách nhanh chóng?

Tôi có thể tưởng tượng vấn đề này sắp tới trong các lĩnh vực nghiên cứu khác. Ví dụ, bạn có thể có một mô phỏng động lực phân tử cần phát triển trong một thời gian dài, nhưng bạn quan tâm đến khoảnh khắc ngắn ngủi khi một điều thú vị đang xảy ra. Hoặc trong CFD, việc phát triển thời gian đầu có thể chậm, nhưng một khi nhiễu loạn xảy ra, bạn có thể cần độ phân giải thời gian cao hơn để theo dõi động lực học.

Có các ví dụ có sẵn miễn phí của bộ sưu tập kết quả tinh vi từ mô phỏng?


Điều này có vẻ như một câu hỏi rộng. Nếu bạn cảm thấy như vậy, xin vui lòng đưa ra gợi ý về cách tôi có thể cụ thể hơn.
Yann

1
Cũng xem cách một số nhóm thử nghiệm đối phó với vấn đề này. Vật lý năng lượng cao (al a Cern) và vật lý thiên văn có thể có các thang dữ liệu lớn hơn phải được lưu trữ (hoặc thậm chí được lọc trước khi lưu trữ vì dữ liệu đến nhanh hơn bất kỳ lưu trữ nào), được phân phối và phân tích.
Brian Diggs

Câu trả lời:


10

Tôi nghĩ rằng bạn có thể phải phân chia đầu ra của mình để phù hợp với mục tiêu của bạn:

  1. đối với phim thuộc tính, có lẽ bạn không cần độ phân giải không gian đầy đủ và tất cả các biến. Chọn cẩn thận những gì bạn muốn chiếu và suy nghĩ về độ phân giải cuối cùng của bộ phim bạn sẽ chiếu, có lẽ nó sẽ không có 8 tỷ pixel.
  2. Đối với các phân tích Fourier (hoặc những thứ như POD), nếu chúng là tạm thời, có lẽ bạn chỉ cần lấy mẫu vài trăm điểm được chọn một cách khôn ngoan trong miền của mình. Nếu chúng là không gian, có lẽ bạn chỉ cần một vài ảnh chụp nhanh chứ không phải 1500. Và một lần nữa, không phải tất cả các thuộc tính.
  3. Để tính trung bình thời gian, bạn có thể tiếp tục thêm vào cùng một trường và không phải lo lắng về kích thước thời gian phải không? Trung bình không gian là đau đớn, đặc biệt là nếu bạn muốn xem xét sự tiến hóa của nó theo thời gian. Nhưng xử lý trực tuyến nhiều hơn trước khi đổ dữ liệu có thể làm giảm kích thước của nó ...

Điều này có nghĩa là khá nhiều công việc để có đầu ra chuyên dụng thay vì đầu ra chung chung nhưng điều này sẽ giúp giảm chi phí và kích thước. Hi vọng điêu nay co ich !

Nói chung, tôi muốn thêm một điều nữa, độ phân giải đầy đủ của dữ liệu chỉ cần cho các tệp khởi động lại, tức là các tệp để khởi động lại mô phỏng của bạn. Bạn không cần nhiều trong số này cho một mô phỏng nhất định (giả sử 100, để nếu có gì đó xảy ra giữa 2 lần khởi động lại, bạn sẽ mất tối đa 1% tính toán của mình), trong khi bạn có thể muốn tăng tần suất đầu ra cho phim. Và bạn có thể làm điều đó chỉ bằng 1/64 độ phân giải chẳng hạn (cứ 4 điểm cho mỗi hướng).


Tại sao không gian trung bình đau? Chỉ cần làm điều đó một cách nhanh chóng và viết kết quả, sẽ rất nhỏ.
David Ketcheson

@DavidKetcheson Tính trung bình không gian là đau đớn vì nó đòi hỏi nhiều giao tiếp và có khả năng bị ảnh hưởng bởi cấu trúc liên kết của tên miền của bạn không? Chắc chắn nếu bạn có lưới trực giao thuần túy được căn chỉnh với khung tham chiếu của mình thì điều đó không quá tệ, nhưng bạn vẫn phải thực hiện một số kết hợp thông minh giữa tính toán và MPI_REDUCE vì với lưới có kích thước đó, bạn không thể thực hiện ALL_REDUCE trên 1 Tôi sẽ nghĩ rằng ...
FrenchKainedar

1
Được rồi, bây giờ tôi hiểu nhận xét của bạn. Nhưng giao tiếp thường không quá tệ, vì bạn có thể trung bình trên mỗi quy trình cục bộ và sau đó chỉ cần giảm một lần thả nổi cho mỗi quy trình. Theo kinh nghiệm của tôi (trên BlueGene / P lõi 65K), chi phí cho việc này là không đáng kể, đặc biệt là so với chi phí I / O. Trên thực tế, chúng tôi thực hiện ALL_REDUCE trên toàn bộ 65K lõi mỗi lần và nó rất nhanh.
David Ketcheson

@DavidKetcheson Thực ra bây giờ tôi nghĩ rằng tôi đã hiểu nhầm quan điểm của bạn và tôi cũng đã đánh giá quá cao chi phí giảm dữ liệu. Những gì tôi có trong đầu là một thứ gì đó giống như tính trung bình theo chiều ngang / phương vị, nơi bạn sẽ phải lưu trữ / xuất dữ liệu 2D đầy đủ có thể có hoặc không nằm trên cùng một lưới với lưới tính toán. Nhưng bạn đã đúng, chi phí thực tế của MPI_ALL_REDUCE không phải là vấn đề.
FrenchKainedar

8

Tôi nghĩ các bậc thầy hiện tại của nghệ thuật này là các thí nghiệm vật lý hạt lớn (tôi quen thuộc nhất với CDFD0 vì tôi đã già và làm việc tại Đại học Chicago). Họ có các kích hoạt phần cứng loại bỏ petabyte (hoặc nhiều hơn) một năm. Tuy nhiên, đây là toàn bộ chủ đề của lượng tử hóa / sự rời rạc hoặc "chỉ vứt bỏ những gì bạn không cần". Tôi không chắc chắn bạn có thể đưa ra một câu trả lời hợp lý nói chung. Sẽ tốt hơn nếu thu hẹp vấn đề thành một cái gì đó như, "Tôi có một mô phỏng PDE được phân tách theo cách sau và muốn giảm hiệu quả".


3

Peter LePage khá nổi tiếng trong các mạng tinh thể-QCD vì đã đề xuất một phương pháp theo đó các lưới mắt cáo lớn không thể có thể được giảm bằng cách tìm và áp dụng các giải pháp phân tích phạm vi ngắn tốt.

Điều này gần tương đương với việc nhận thấy rằng một tập hợp các spline được chọn tốt có thể cho phép tích hợp chính xác với ít nút thắt hơn phương pháp hình thang (ngoại trừ trường hợp của bạn, bạn có thể tận dụng lợi thế của nó trên bốn chiều cùng một lúc).

Kết quả là bạn giao dịch kích thước thô của tập dữ liệu để tính toán nhiều hơn cho mỗi nút - bước cuối cùng, nhưng đi ra phía trước tính đa chiều của vấn đề của bạn.

Tôi không phải là một chủ đề tôi biết đủ để đưa ra bất kỳ gợi ý hay nào, nhưng nó đã hoạt động trong một số lĩnh vực trong quá khứ.


3

Câu hỏi hơi rộng, vì vậy tôi sẽ cung cấp một câu trả lời mơ hồ tương ứng gợi ý các kỹ thuật có thể trong các trường hợp như vậy.

1) Xử lý nhanh, mà bạn đang làm việc. Một cách để xử lý nhanh chóng và tách nó ra khỏi bước tạo dữ liệu là tạo tệp đầu ra theo chu kỳ luôn chứa N bước cuối cùng và phân tích chạy trong một quy trình riêng. Rõ ràng bạn phải đồng bộ hóa cả hai để ngăn chặn tình trạng đua.

2) Chọn dữ liệu được lưu trữ cẩn thận hơn. Điều này là rất cụ thể tình huống, không may.

3) Nén dữ liệu của bạn trước khi lưu trữ hoặc sử dụng thư viện lưu trữ với các tùy chọn nén tích hợp, chẳng hạn như HDF5.

4) Lưu trữ điểm kiểm tra thường xuyên thay vì đầu ra đầy đủ. Nếu bạn lưu trữ một điểm kiểm tra đầy đủ mỗi N bước, tức là đủ dữ liệu để khởi động lại mô phỏng từ đó, bạn có thể xây dựng lại dữ liệu bị thiếu theo cách song song cao nếu và khi cần thiết. Lưu ý rằng trong trường hợp phương pháp Monte-Carlo, điểm kiểm tra phải bao gồm trạng thái của các trình tạo số ngẫu nhiên. Bạn thực sự có thể coi đây là một kỹ thuật nén dành riêng cho ứng dụng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.