Đặt banner 324 x 100

High Performance Computing (HPC) là gì?


Khi nói đến điện toán hiệu năng cao hay High Performance Computing (HPC), chúng ta thường hướng đến việc giải quyết một số loại bài toán. Những bài toán này thường sẽ rơi vào một trong bốn loại:

Nặng về Xử lý (compute intensive) – Một bài toán duy nhất đòi hỏi một lượng lớn tính toán.

Nặng về Bộ nhớ (memory intensive) – Một bài toán duy nhất đòi hỏi một lượng lớn bộ nhớ.

Nặng về Dữ liệu (data intensive) – Một bài toán duy nhất hoạt động trên một tập dữ liệu lớn.

Thông lượng cao (throughput intensive) – Nhiều bài toán không liên quan được tính toán đồng loạt.

Bài viết này sẽ giới thiệu chi tiết về HPC giúp bạn hiểu rõ ý nghĩa của chúng trong việc giải quyết các bài toán phổ biến được liệt kê ở trên.

Các workload nặng về xử lý

Đầu tiên, chúng ta cùng xem xét các bài toán đòi hỏi nhiều về xử lý. Mục tiêu là phân phối công việc cho một bài toán duy nhất cho nhiều CPU để giảm thời gian xử lý càng nhiều càng tốt. Để thực hiện điều này, chúng ta cần thực hiện song song các bước của bài toán. Mỗi process hoặc thread, xử lý một phần của khối lượng công việc và thực hiện chúng một cách đồng thời. Các CPU thường cần trao đổi dữ liệu nhanh chóng, đòi hỏi phần cứng chuyên dùng cho việc giao tiếp. Ví dụ về các loại bài toán này có thể tìm thấy khi phân tích dữ liệu liên quan đến các tác vụ như mô hình hóa trong lĩnh vực tài chính, quản trị rủi ro hay chăm sóc sức khỏe. Đây có lẽ là phần lớn nhất trong các tập vấn đề của HPC và là lĩnh vực truyền thống của HPC.

Khi cố gắng giải quyết các vấn đề nặng về xử lý, chúng ta có thể nghĩ rằng việc thêm nhiều CPU sẽ giảm thời gian thực hiện. Điều này không phải lúc nào cũng đúng. Hầu hết các parallel codebase thường có cái mà chúng ta gọi là scaling-limit. Lý do là vì hệ thống bị quá tải bởi việc quản lý quá nhiều bản sao, ngoài ra còn do các ràng buộc cơ bản khác.

>>> Xem thêm: máy chủ tốt R450

 

Điều này được tóm tắt trong luật định Amdahl.

Trong kiến ​​trúc máy tính, định luật Amdahl là một công thức giúp tăng tốc độ lý thuyết về độ trễ của việc thực hiện một nhiệm vụ với khối lượng công việc cố định có thể được dự kiến ​​của một hệ thống có tài nguyên được cải thiện. Nó được đặt theo tên của nhà khoa học máy tính Gene Amdahl, và được trình bày tại sự kiện AFIPS Spring Joint Computer Conference năm 1967.

Định luật Amdahl, thường được sử dụng trong điện toán song song để dự đoán sự tăng tốc lý thuyết khi sử dụng nhiều bộ xử lý. Ví dụ: nếu một chương trình cần 20 giờ sử dụng lõi xử lý đơn và một phần cụ thể của chương trình mất một giờ để thực thi thì không thể song song, trong khi 19 giờ (p = 0,95) thời gian thực hiện có thể được song song bất kể có bao nhiêu bộ xử lý được dành cho việc thực thi song song chương trình này, thời gian thực hiện tối thiểu không thể ít hơn một giờ quan trọng đó. Do đó, việc tăng tốc lý thuyết bị giới hạn tối đa 20 lần (1 / (1 – p) = 20). Vì lý do này, xử lý song song với nhiều bộ xử lý chỉ hữu ích cho các chương trình có bản chất song song tự nhiên – Wikipedia

Định luật Amdahl có thể được xây dựng theo cách sau, trong đó:

  • S[latency] là sự tăng tốc lý thuyết của việc thực hiện toàn bộ nhiệm vụ;

  • s là sự tăng tốc của một phần của nhiệm vụ được hưởng lợi từ tài nguyên hệ thống được cải thiện;

  • p là tỷ lệ thời gian thực hiện mà phần được hưởng lợi từ các tài nguyên được cải thiện ban đầu bị chiếm dụng.

Hơn nữa,

Biểu đồ ví dụ: Nếu 95% chương trình có thể được song song, tốc độ tối đa theo lý thuyết sử dụng xử lý song song sẽ là 20 lần.

Điểm mấu chốt: Khi bạn tạo ra nhiều phần của bài toán có thể chạy đồng thời, bạn có thể phân chia công việc giữa nhiều bộ xử lý hơn và do đó, đạt được nhiều lợi ích hơn. Tuy nhiên, do sự phức tạp và chi phí vận hành, cuối cùng việc sử dụng nhiều CPU trở nên bất lợi thay vì thực sự hữu ích.

Có nhiều thư viện giúp hỗ trợ song song hóa bài toán, như OpenMP hoặc Open MPI, nhưng trước khi chuyển sang các thư viện này, chúng ta nên cố gắng tối ưu hóa hiệu suất trên một CPU, sau đó làm cho p càng lớn càng tốt.

Các workload nặng về bộ nhớ

Các workload nặng về bộ nhớ sẽ cần nhiều đến không gian bộ nhớ lớn, hơn là có nhiều CPU. Theo tôi, đây là một trong những các vấn đề khó giải quyết nhất và thường đòi hỏi sự cẩn thận cao khi thiết lập nên hệ thống của bạn. Lập trình và chuyển mã sẽ dễ dàng hơn vì bộ nhớ sẽ liền lạc, cho phép tạo ra một hình ảnh hệ thống duy nhất. Tuy nhiên, việc tối ưu hóa trở nên khó khăn hơn khi càng kéo dài xa ngày khởi tạo ban đầu của hệ thống vì tính đồng nhất của các component. Theo truyền thống, trong các data center, bạn sẽ không thay thế các máy chủ sau mỗi ba năm một lần. Nếu chúng ta muốn có nhiều tài nguyên hơn trong cluster, và chúng ta muốn hiệu năng được đồng nhất, bộ nhớ không đồng nhất sẽ tạo ra độ trễ thực tế. Chúng ta cũng phải suy nghĩ về sự kết nối giữa CPU và bộ nhớ.

Ngày nay, phần lớn trong số những lo ngại này đã được loại bỏ bởi các máy chủ thông dụng. Chúng ta có thể yêu cầu hàng nghìn instance giống nhau có cùng thông số kỹ thuật và phần cứng, và các công ty như Amazon Web Services rất vui lòng cho chúng ta sử dụng chúng.

>>> Xem thêm: cau hinh dell r550