2011-12-30 33 views
15

Mặc dù GPU được cho là sử dụng với các kiểu dữ liệu điểm động, tôi muốn quan tâm đến tốc độ xử lý bit của GPU. Đây là CPU nhanh nhất có thể, nhưng GPU có mô phỏng hoạt động bitwise hay chúng được tính toán đầy đủ trên phần cứng? Tôi đang có kế hoạch sử dụng chúng trong các chương trình shader được viết bằng GLSL. Ngoài ra tôi cho rằng nếu các hoạt động bitwise có đầy đủ preformance, các kiểu dữ liệu số nguyên cũng phải có, nhưng tôi cần xác nhận về điều đó.Hiệu suất của các hoạt động số nguyên và bitwise trên GPU

Để chính xác hơn, các phiên bản được nhắm mục tiêu là OpenGL 3.2 và GLSL 1.5. Phần cứng cần chạy là bất kỳ card đồ họa Radeon HD và GeForce series 8 và mới hơn .. Nếu có một số thay đổi lớn trong phiên bản OpenGL và GLSL mới hơn liên quan đến tốc độ xử lý của các hoạt động bit/số nguyên, tôi sẽ rất vui nếu bạn ' sẽ chỉ cho họ.

+0

Bạn cần chỉ định cấu trúc GPU cụ thể hoặc ít nhất phiên bản OpenGL. Ngay bây giờ câu hỏi này là mơ hồ khủng khiếp. –

+0

@BenVoigt được cập nhật, có đủ chính xác hay bạn cần tên mã kiến ​​trúc cụ thể (chúng thay đổi chúng như đối với mỗi thẻ mới) – Raven

+0

Raven: Có một số thay đổi lớn giữa Radeon HD 1xxx và HD 7xxx, nhưng thông tin bổ sung đó là cải tiến lớn. Giả sử bạn đang xem các thẻ quảng cáo hỗ trợ OpenGL 3.2 (hoặc mới hơn), điều đó có thể đủ rõ ràng. –

Trả lời

8

Câu hỏi này được trả lời một phần Integer calculations on GPU

Trong GPU hiện đại ngắn có tương đương INT và FP hiệu suất cho dữ liệu 32bit. Vì vậy, các hoạt động hợp lý của bạn sẽ chạy ở cùng một tốc độ.

Từ phối cảnh lập trình, bạn sẽ mất hiệu suất nếu bạn đang xử lý dữ liệu số nguyên SCALAR. GPU giống như làm việc với các hoạt động PARALLEL và PACKED.

for(int i=0; i<LEN_VEC4; i++) 
    VEC4[i] = VEC4[i] * VEC4[i]; // (x,y,z,w) * (x,y,z,w) 

Nếu bạn đang làm một cái gì đó giống như ...

for(int i=0; i<LEN_VEC4; i++) 
    VEC4[i].w = (VEC4[i].x & 0xF0F0F0F0) | (VEC4[i].z^0x0F0F0F0F)^VEC4[i].w; 

... làm nhiều hoạt động khác nhau trên các yếu tố của vectơ cùng bạn sẽ chạy vào vấn đề hiệu suất.

+0

Cảm ơn câu trả lời của bạn. Kết hợp với bài đăng liên kết là đủ, nhưng tôi có thêm một câu hỏi nữa. Như đã viết, hiệu năng INT và FP phải giống nhau. Nhưng không có gì giống như hoạt động bitwise cho FP (hoặc ít nhất nó sẽ là lạ để làm). Vì vậy, họ đang nói gì để được bình đẳng .. thêm và như vậy? Và nếu đó là trường hợp, là các ops bitwise (ví dụ: dịch chuyển) nhanh hơn các phép toán (thêm ..) cho các kiểu dữ liệu INT, hoặc sự hoàn hảo cũng bằng nhau. – Raven

+0

Liệu "X bit shift left by 1" có nhanh hơn "x + x" hay không phụ thuộc vào kiến ​​trúc. Tôi hy vọng rằng một số tối ưu hóa sẽ xảy ra khi bóng râm của bạn được biên soạn (trừ khi bạn viết nó trong hội đồng GPU). "X chia cho 2" là nguồn chậm hơn "X bit shift right 1" chỉ vì có nhiều logic liên quan đến chia hơn bit shift. –

+3

"GPU hoạt động với các hoạt động PARALLEL và PACKED". GPU gần đây nhất của NVIDIA và AMD là kiến ​​trúc vô hướng. Vì vậy, hiệu suất cho các hoạt động hoàn toàn vô hướng là trên thực tế cao hơn cho các hoạt động vector. – datenwolf

Các vấn đề liên quan