0
0
Lập trình
Harry Tran
Harry Tran106580903228332612117

Hướng Dẫn Chi Tiết Về Hiệu Năng GPU: Tìm Hiểu Về Compute và Memory Bound (Phần 1)

Đăng vào 2 tháng trước

• 3 phút đọc

Hiệu Năng Trong Lập Trình: Khái Niệm Compute và Memory

Khi nói về hiệu năng trong lập trình, có hai khái niệm chủ chốt mà chúng ta cần xem xét: memorycompute.

Định Nghĩa Computer và Memory

  • Compute (khả năng tính toán) được đánh giá thông qua chỉ số FLOPS rate - đơn vị đo lường hiệu năng máy tính trong việc thực hiện các phép toán số thực động (dấu chấm động) trong 1 giây.

FLOPS rate: floating point operations per second

  • Memory trong ngữ cảnh này không chỉ là lượng bộ nhớ mà là memory bandwidth - tốc độ mà dữ liệu được load/store giữa bộ nhớ và các thành phần xử lý.

Memory Bandwidth: bytes per second

Tại Sao Lại Cần Đánh Giá Tỷ Lệ Compute và Memory?

Desired compute to memory ratio (OP/B) là thước đo quan trọng để xác định sự cân bằng giữa khả năng xử lý của máy tính và khả năng load/store trong bộ nhớ.

Tại sao phải đảm bảo cân bằng?

Điều này là cần thiết để đảm bảo rằng tài nguyên phần cứng được sử dụng một cách hiệu quả nhất, tránh tình trạng bottleneck.

  • OP/B Tỉ lệ Thấp: Máy tính đang thực hiện tác vụ nặng nhưng khả năng tính toán không đủ đáp ứng ==> tình trạng compute bound (hạn chế về khả năng tính toán).
  • OP/B Tỉ lệ Cao: Không đủ dữ liệu (data starvation) cung cấp cho máy tính xử lý ==> tình trạng memory bound (hạn chế về khả năng load/store memory).

Compute Bound và Memory Bound

Compute Bound

  • Compute bound xảy ra khi hiệu năng máy tính bị giới hạn bởi khả năng tính toán có thể thực hiện được. Tình trạng này thường xuất hiện khi thực hiện nhiều phép toán phức tạp.

Memory Bound

  • Memory bound xảy ra khi hiệu năng bị giới hạn bởi khả năng truy cập dữ liệu từ bộ nhớ. Tình trạng này thường xảy ra khi load/store một lượng lớn dữ liệu.

Cách Xác Định Code Bị Compute/Memort Bound

Sử Dụng Speed Of Light Throughput (SoL)

Trong Nsight Compute, chúng ta có thể xác định liệu code của mình có đang gặp tình trạng Compute/Memory bound hay không bằng cách sử dụng SoL.

SoL giúp thể hiện mức độ hoạt động của máy tính (không phải hiệu suất mã nguồn). Mục tiêu của chúng ta là đạt được sự cân bằng giữa compute và memory.

Phân Tích Từng Trường Hợp:

  • Latency (M & SM < 60): Khi giá trị M và SM đều dưới 60, chứng tỏ cả hai chưa được sử dụng với hiệu suất tối đa.
  • Compute bound (SM > 60 || M < 60): Chúng ta có khả năng xử lý dữ liệu (M < 60) nhưng lại sử dụng quá nhiều tài nguyên cho tính toán (SM > 60).
  • Memory bound (SM < 60 || M > 60): Việc load/store cần hiệu suất lớn trong khi tính toán lại đơn giản, dẫn đến data starvation.
  • Compute/Memory bound (SM & M > 60): Có thể đoạn code đã tối ưu hoặc gặp các tình huống trên.

Các Chỉ Số Quan Trọng

  • SM: Inst Executed Pipe Lsu(%): Nếu tỷ lệ này cao, có nghĩa là SM đang dành quá nhiều thời gian để load/store thay vì tính toán.
  • SM: Pipe Fma/Alu Cycles Active (%): Phản ánh tỷ lệ phần trăm SM đang thực hiện phép toán.

Phân tích cẩn thận các chỉ số này sẽ giúp chúng ta xác định vấn đề trong code, từ đó tìm cách cải thiện hiệu suất.

source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào