Khi tôi hoàn thành việc viết mã cho dự án của mình cho một lớp lập trình đa lõi, tôi đã nghĩ ra điều gì đó thực sự kỳ lạ mà tôi muốn thảo luận với bạn.Nhân OpenCL của tôi chậm hơn trên phần cứng nhanh hơn .. Nhưng tại sao?
Chúng tôi đã được yêu cầu tạo bất kỳ chương trình nào có thể cải thiện đáng kể khi được lập trình cho nền tảng đa lõi. Tôi đã quyết định thử và mã hóa thứ gì đó trên GPU để dùng thử OpenCL. Tôi đã chọn vấn đề chuyển đổi ma trận vì tôi khá quen thuộc với nó (tôi đã song song nó trước đó với open_mpi với tốc độ tuyệt vời cho hình ảnh lớn).
Vì vậy, ở đây là, tôi chọn một tệp GIF lớn (2,5 MB) [2816X2112] và tôi chạy phiên bản tuần tự (mã gốc) và tôi nhận được trung bình 15,3 giây.
Tôi sau đó chạy phiên bản OpenCL mới tôi vừa viết trên MBP tích hợp của tôi GeForce 9400M và tôi nhận được thời gian trung bình 1.26s .. Cho đến nay rất tốt, đó là một tốc độ 12X !!
Nhưng bây giờ tôi vào bảng tiết kiệm năng lượng để bật “Chế độ hiệu suất đồ họa” Chế độ đó tắt GeForce 9400M và bật hệ thống Geforce 9600M GT của tôi. Apple cho biết thẻ này nhanh hơn gấp hai lần so với thẻ tích hợp.
Đoán những gì, thời gian của tôi bằng cách sử dụng card đồ họa kick-ass là 3,2 giây ở mức trung bình ... My 9600M GT có vẻ là chậm hơn so với 9400M hơn hai lần ..
Đối với những người bạn mà là OpenCL nghiêng , Tôi sao chép tất cả dữ liệu vào bộ đệm từ xa trước khi bắt đầu, do đó, tính toán thực tế không yêu cầu khứ hồi tới ram chính. Ngoài ra, tôi cho phép OpenCL xác định phương pháp tối ưu hóa địa phương tối ưu vì tôi đã đọc rằng họ đã thực hiện triển khai khá tốt khi tìm ra thông số đó ..
Có ai có đầu mối không?
chỉnh sửa: mã nguồn đầy đủ với makefiles đây http://www.mathieusavard.info/convolution.zip
cd gimage
make
cd ../clconvolute
make
put a large input.gif in clconvolute and run it to see results
Bạn có khởi động lại máy tính sau khi chuyển đổi cạc đồ họa không? AFAIK này là bắt buộc đối với các máy tính này. –
Tôi đã đăng xuất .. khi bạn muốn thay đổi card đồ họa, nó buộc bạn phải đăng xuất và đăng nhập + đầu ra chương trình của tôi tên của card đồ họa hiện đang được sử dụng để tôi có thể đảm bảo nó đang chạy .. – matdumsa
đã thử khởi động lại .. cũng đã cố gắng tăng kích thước vấn đề bằng cách sử dụng hình ảnh 3264x2448 với mặt nạ 12X12 chỉ để tìm kết quả tương tự ... – matdumsa