Đặt vấn đề bài toán

Một phần của tài liệu Giải pháp thiết kế và đánh giá hiệu năng siêu máy tính sử dụng CPU GPU (Trang 87 - 88)

Nhiệm vụ của chƣơng trình khá đơn giản. Chƣơng trình sẽ tính giá trị cạnh huyền của các tam giác vuông đầu vào. Đầu tiên, đầu vào của chƣơng trình là hai mảng chứa độ dài hai cạnh của các tam giác vuông tƣơng ứng, chƣơng trình sẽ tính

√ và lƣu vào mảng kết quả theo thứ tự tƣơng ứng. Việc tính toán này đƣợc triển khai trên cả CPU và khi kết hợp CPU và GPU, chƣơng trình sẽ ghi lại thời gian xử lý tƣơng ứng trong hai kịch bản và tỷ lệ giữa thời gian xử lý trên CPU và CPU-GPU.

Để xác định đƣợc sự thay đổi thời gian xử lý tính toán của CPU và CPU-GPU theo sự thay đổi của kích thƣớc của bài toán phải xử lý, ta có thể thay đổi hai thông số là chiều dài của mảng đầu vào và mảng kết quả (gọi chung là mảng cần xử lý) hoặc thay đổi số lần tính toán đƣợc lặp lại (số lƣợng phép tính) tức là máy tính sẽ liên tục tính c rồi tiếp tục lƣu các giá trị c bằng với các giá trị đang lƣu ở mảng kết quả. Về mặt lý thuyết thì sự lặp lại này hoàn toàn vô ích nhƣng đối với mục đích tính toán thống kê hiệu năng thì cơ chế này hoàn toàn đáp ứng đƣợc nhu cầu thay đổi kích thƣớc của bài toán tƣơng tự nhƣ cách thay đổi độ dài của mảng xử lý. Nhƣng khi thay đổi độ dài của mảng xử lý thì cũng đồng thời tăng lƣợng dữ liệu truyền tải giữa bộ nhớ của CPU và GPU còn việc lặp lại số lần tính toán của chƣơng

89

trình chỉ thuần túy tăng thêm số lƣợng phép tính của chƣơng trình (độ phức tạp của bài toán).

Giả sử chƣơng trình nhận vào n tam giác vuông thì chƣơng trình sẽ phải thực hiện 2n phép nhân, n phép cộng và n phép căn bậc hai. Khi đó chƣơng trình sẽ phải thực hiện phép tính. Khi ta lặp lại số lần tính toán của chƣơng trình k lần thì chƣơng trình lúc đó phải thực hiện hiện phép tính. Trong khi đó khi ta tăng thêm độ dài mảng xử lý thêm k lần thì độ phức tạp của chƣơng trình cũng phải thực hiện hiện phép tính nhƣng để thực hiện việc tính toán trên GPU thì ta phải chuyển dữ liệu mảng chứa độ dài hai cạnh của tam giác từ CPU tới GPU rồi tiếp tục chuyển dữ liệu mảng kết quả từ GPU tới CPU. Chƣơng trình của ta làm việc trên số dấu phẩy động độ chính xác đơn tƣơng đƣơng với khoảng trống bộ nhớ 32bit (4 byte). Vậy với n tam giác đầu vào thì lƣợng dữ liệu trung chuyển giữa CPU và GPU là : byte dữ liệu. Nếu ta tăng thêm k lần kích cỡ mảng xử lý thì ngoài việc tăng thêm k lần độ phức tạp của bài toán thì ta cũng tăng thêm k lần lƣợng dữ liệu trung chuyển giữa CPU và GPU do đó hao phí chuyển dữ liệu giữa nút thắt cổ chai PCIe cũng tăng tƣơng ứng.

Chƣơng trình đƣợc chạy với thông số vòng lặp tính toán tăng dần theo bƣớc nhảy 100. Trong mỗi lần tính toán, thời gian xử lý trên CPU, CPU-GPU và tỷ lệ giữa chúng sẽ đƣợc lấy mẫu 10 lần và giá trị trung bình của 10 lần lấy mẫu này sẽ đƣợc ghi vào file kết quả.Bài toán trên không có sự trao đổi dữ liệu giữa các luồng trong khối do đó chƣơng trình không cần sử dụng đến tính năng đồng bộ rào chắn, mỗi phần tử của mảng đƣợc tính toán một cách độc lập và không phụ thuộc lẫn nhau.

Một phần của tài liệu Giải pháp thiết kế và đánh giá hiệu năng siêu máy tính sử dụng CPU GPU (Trang 87 - 88)

Tải bản đầy đủ (PDF)

(126 trang)