Phần mềm máy tính để bàn với tài nguyên HPC cho crunching số cuối


17

Nhóm làm việc của chúng tôi tạo ra một ứng dụng máy tính để bàn mô phỏng hiệu suất năng lượng của tòa nhà. Nó là một ứng dụng .NET và khi người dùng đang chạy rất nhiều mô phỏng, chúng có thể khá tốn thời gian. Các mô phỏng hoàn toàn song song và chúng tôi có một số tài nguyên tính toán HPC rất quan trọng tại "văn phòng".

Một ý tưởng chúng tôi đã có là cho phép người dùng giảm tải các mô phỏng mà chúng tôi biết sẽ chạy rất lâu (trong khi mỗi mô phỏng riêng lẻ chạy khoảng 30-120 giây, chạy số lượng lớn mô phỏng có thể mất vài ngày). Có ai làm điều này trước khi? Nếu vậy, bạn đã sử dụng bất kỳ thư viện để làm cho công việc dễ dàng hơn? Có đáng để nỗ lực không?

chỉnh sửa để thêm:

Nhiệm vụ cá nhân để giảm tải mô phỏng sẽ là

  • đóng gói một tập tin (khoảng 5Mb),
  • tải nó lên máy chủ của chúng tôi,
  • phân tách gói thành các mô phỏng riêng lẻ (mỗi lần mất khoảng 30-120 giây và hoàn toàn song song), số lượng mô phỏng là một hàm của số tùy chọn được người dùng chọn (cách điện, hướng tòa nhà, v.v.) và trường hợp xấu nhất là chọn mọi tùy chọn có thể sẽ dẫn đến khoảng 1E50 mô phỏng. Chạy mô phỏng 100 đến ~ 1E5 không được biết, nhưng phần lớn người dùng sẽ chạy dưới 10.
  • tập hợp lại các mô phỏng đã hoàn thành và tải xuống tệp lớn hơn nhiều.

Chúng tôi không chắc chắn nên sử dụng giao diện nào, vì nhóm của chúng tôi chưa quen với điều này và với việc cắt giảm ngân sách, nó có thể được hoàn thành kịp thời, nhưng cần phải dễ dàng cho những người tiếp theo (nếu có) duy trì.

Ứng dụng này đã sử dụng .NET 4 và có thể mở rộng để sử dụng tất cả các lõi mà người dùng có (máy dev của chúng tôi có 8 lõi).


Tôi không rõ lắm về chính xác những gì bạn sẽ làm ở đây - là kết thúc HPC sẽ luôn ở trên máy chủ của bạn hoặc các máy chủ chuyên dụng khác? (Nếu vậy, điều đó sẽ làm cho nó dễ dàng hơn nhiều vì bạn có thể làm được nhiều máy chủ hơn.)
Aesin

@Aesin, kết thúc HPC sẽ có trên máy chủ của chúng tôi, vâng. Ứng dụng hiện có và phiên bản mới chạy mô phỏng trên màn hình của người dùng. Tôi đang tìm kiếm lời khuyên / đề xuất về cách nghĩ trước phiên bản tiếp theo để có thể sử dụng HPC cho người dùng lớn hơn.
Tangurena

Câu trả lời:


10

Bạn có thể cân nhắc sử dụng Condor: http://research.cs.wisc.edu/condor/ . Nó có thể là quá mức cần thiết, tùy thuộc vào loại tài nguyên HPC mà bạn đang nói đến và chúng sẽ thay đổi bao nhiêu. Tuy nhiên, việc bắt đầu khá dễ dàng và cần phải khởi động các công việc độc lập, khả năng chịu lỗi, cân bằng tải, v.v.

Sẽ hữu ích hơn nếu bạn cụ thể hơn về các tác vụ riêng lẻ (thời gian, mức độ không đồng bộ) và giao diện bạn sẽ sử dụng để tương tác (quá trình khởi chạy, thư viện, v.v.)

Matt


Tôi không chắc liệu condor có hoạt động với .net (Windows không?), Nhưng nhóm làm việc của chúng tôi sử dụng condor trên Linux và tôi có thể đề xuất nó để gửi công việc +1
Sebastian

Condor có thể giao tiếp thông qua hệ thống tập tin, vì vậy nó không cần phải theo .NET. Nó không chạy trên Windows.
Matt Knepley

5

Nếu bạn đang ở trong thế giới .NET, bạn đã xem hỗ trợ đa luồng trong .NET 4; và các tính năng không đồng bộ đang được thêm vào .NET 4.5?

Đa luồng không giúp bạn giảm tải xử lý cho các máy khác, nhưng nó cho phép bạn sử dụng tốt hơn các PC đa lõi mà chúng ta đang sử dụng ngày nay. 4.0 có một số tính năng tốt trong vấn đề này.

4.5 hiện đang trong bản xem trước công nghệ - vì vậy nó đáng để xem nếu nó sẽ giúp. Có một bài viết trong MSDN giới thiệu các tính năng không đồng bộ mới trong tháng trước hoặc lâu hơn (tháng 10 hoặc tháng 11 và chắc chắn không sớm hơn tháng 9). Có vẻ như các tính năng này đã được thúc đẩy như một cách song song mã song song truyền thống ít hơn, nhưng IIRC chúng cũng bao gồm một số hỗ trợ đa máy chủ.


4

Câu trả lời phụ thuộc vào những gì bạn có là phụ trợ HPC. Câu hỏi đề cập đến các tài nguyên hiện có cho người dùng NREL. Có các cụm Linux và một cụm Windows dựa trên Windows Compute Cluster Server.

  1. Để sử dụng cụm linux, tác giả cần đảm bảo thói quen mô phỏng chạy trên Mono (việc triển khai nền tảng .NET cho linux) và đảm bảo Mono được cài đặt trên các nút.

  2. Câu hỏi tiếp theo là liệu người dùng có tài khoản trên các cụm tính toán và có thể lấy dữ liệu đến các nút không. Trường hợp đơn giản nhất là với một hệ thống tệp duy nhất có thể truy cập từ các PC cục bộ và từ các nút.

    Tôi không chắc chắn nếu một hệ thống tập tin như vậy có sẵn cho người dùng NREL, do đó một số sao chép sẽ được tham gia. Điều này đã làm cho mọi thứ phức tạp.

  3. Tiếp theo, ứng dụng sẽ có thể biên dịch tập lệnh mô tả công việc, gửi nó đến cụm tương ứng và truy vấn hệ thống xếp hàng cho trạng thái mô phỏng cho đến khi công việc thoát khỏi hàng đợi.

  4. Cuối cùng, ứng dụng sẽ có thể lấy kết quả.

Tất cả Điều này có thể thực hiện được mặc dù không tầm thường và sẽ rất cụ thể đối với việc thiết lập phòng thí nghiệm cụ thể này.

Các ứng dụng thương mại từ Ansys hoặc MSC cho phép người dùng lưu mô tả công việc mô phỏng mà sau này có thể chạy ở chế độ hàng loạt trên một cụm từ xa.

Một giải pháp tổng quát hơn sẽ là sử dụng cơ sở hạ tầng Grid nếu có.

Tiếp theo, người ta có thể tìm kiến ​​trúc hướng dịch vụ trong đó dịch vụ Web được thiết lập ở đâu đó để chờ yêu cầu mô phỏng và gửi chúng lên cụm, do đó tách ứng dụng khỏi kiến ​​thức về các tài nguyên cụ thể có sẵn.

Điều này được sử dụng rộng rãi, ví dụ trong sinh học tính toán, trong đó các công cụ được sử dụng để soạn các quy trình công việc mô phỏng bao gồm toàn bộ các yêu cầu dịch vụ web để xử lý.

Chỉ cần lưu ý rằng việc giảm tải tính toán cho các tài nguyên điện toán từ xa thường được sử dụng trong các ứng dụng như nhận dạng giọng nói của Google cho Android.

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.