Tôi đang làm việc trong tối ưu hóa thuật toán sử dụng các chỉ lệnh SSE2. Nhưng tôi đã chạy vào vấn đề này khi tôi đã được thử nghiệm hiệu suất:Chương trình SSE mất nhiều thời gian hơn trên AMD so với Intel
I) Intel E6750
- Làm 4 lần so với thuật toán phi SSE2 mất 14,85 giây
- Làm 1 lần thuật toán SSE2 (quá trình cùng một dữ liệu) mất 6.89 giây
II) Phenom II x4 2.8GHz
- Làm 4 lần so với thuật toán phi SSE2 mất 11,43 giây
- Làm 1 lần thuật toán SSE2 (xử lý dữ liệu giống nhau) mất 12,15 giây
Bất cứ ai có thể giúp tôi tại sao điều này đang xảy ra? Tôi thực sự bối rối về kết quả.
Trong cả hai trường hợp, tôi đang biên soạn bằng g ++ sử dụng -O3 làm cờ.
PS: Thuật toán không sử dụng phép toán dấu chấm động, nó sử dụng các chỉ lệnh số nguyên SSE.
Gần gấp đôi so với cùng một tệp nhị phân và trên CPU có tốc độ cao hơn và (giả sử "Deneb") có cùng kích thước bộ nhớ cache? Rất tiếc. Điều duy nhất tôi có thể nghĩ đến là nếu bạn làm rất nhiều sự xáo trộn, vì chúng có độ trễ gấp 3 lần so với thế hệ vi xử lý AMD này so với thế hệ CPU Intel (trông khác với thế hệ mới nhất). Hướng dẫn khác chắc chắn có thể có một chu kỳ nhiều hơn hoặc ít hơn ở đây và ở đó, nhưng tất cả trong tất cả nó không nên chạy 2x chậm hơn. (Bộ vi xử lý AMD cũng được biết đến với "chậm trễ định dạng", nhưng vì bạn không trộn phao/int, điều đó không quan trọng.) – Damon
Sự khác biệt hơn 20% âm thanh lạ. Phiên bản AMD Phenom là gì? Kích thước Cache L1/L2/L3? Triển khai thuật toán là gì? – alecco