Số lượng luồng trong một khố i

Một phần của tài liệu Tính toán hiệu năng cao với bộ xử lý đồ họa GPU và ứng dụng (Trang 61)

Khái niệm số lượng luồng trên lưới, số luồng trên khối lệnh (block) hoặc số khối lệnh nên được lựa chọn nhằm tối ưu hóa tài nguyên sẵn dung của bộ xử lý. Điều này có nghĩa là, với việc xử lý nhiều tập lệnh khác nhau nên cần nhiều bộ xử lý trên mỗi thiết bị

Hơn nữa, việc xử lý một khối lệnh trên bộ xử lý đa nhân tương đương với việc làm tăng thời gian nghỉ của bộ xử lý trong suốt quá trình đồng bộ và truy cập bộ nhớ nếu không đủ luồng trên một khối lệnh. Điều này vẫn tốt hơn cho việc xử lý hai hoặc nhiều tập lệnh thực hiện trên cùng một bộ xử lý đa nhân, các khối lệnh vẫn phải đợi thực hiện theo hàng. Đối với vấn đề này, việc xử lý nhiều khối lệnh đòi hỏi phải có nhiều bộ xử lý trên cùng một thiết bị, mà còn liên quan tới việc phân chia vùng nhớ chia sẻ cho mỗi khối lệnh nên được dành phần lớn số lượng bộ nhớ sẵn dùng đối với mỗi bộ đa xử lý. Rất nhiều luồng xử lý theo luồng thông qua thiết bị và được thực thi dần dần tuần tự.

Với những khối lệnh có số lượng lớn, số lượng luồng thực thi trên mỗi khối lệnh nên được lựa chọn xử lý với nhiều kích cỡ khác nhau nhằm tránh phải chờ đợi tài nguyên tính toán sai lệch, để xử lý tốt hơn, tham khảo toán tử 64 bit được nêu trong mục V.1.2.5. Việc tổ chức nhiều luồng xử lý trên khối lệnh được cho hiệu quả tốt hơn khi chi nhỏ theo thời gian, nhưng nhiều luồng xử lý trên một bộ lệnh tương ứng với việc mất nhiều chi phí

đăng ký cho mỗi luồng. Điều này sẽ ngăn chặn cách gọi hàm nhân xử lý tuần tự nếu hàm nhân thực hiện xử lý nhiều đăng ký hơn là việc được phép bởi cấu hình thực hiện từ

trước.

Đối với các thiết bị tính toán gấp 1.x, số lượng đăng ký sẵn sàng trên một luồng

được tính theo công thức:

ceil(T,32)

×

B R

Trong đó:

R – tổng số đăng ký trên bộ đa xử lý (phụ lục A, B chính là số lượng khối lệnh hiện thời)

T – số luồng xử lý trên một khối lệnh

ceil(T,32) – là phép tính làm tròn lên số bội số của 32.

64 luồng trên một khối lệnh là tối thiểu và tạo ra cảm giác có rất nhiều khối lệnh

đang thực hiện đồng thời. Với các giá trị 192 hoặc 256 luồng trên khối lệnh thường hợp lý hơn và cho phép đăng ký vừa đủđể xử lý.

Số lượng khối lệnh trên lưới nên để tối thiểu là 100 nếu muốn các khối lệnh này phân chia thành các thiết bị tương lai; 1000 khối lệnh sẽ phân ngang cấp thành một số

phát sinh khác.

Tỉ lệ số lượng sai lệch khi thực thi xử lý đồng thời trên bộ đa xử lý so với số lượng tối đa được gọi là thời gian chiếm giữ bộ xử lý (occupancy).

Một phần của tài liệu Tính toán hiệu năng cao với bộ xử lý đồ họa GPU và ứng dụng (Trang 61)

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

(81 trang)