Câu trả lời đơn giản là GPU hoạt động tốt nhất khi bạn cần thực hiện một phép tính khá nhỏ, khá đơn giản trên mỗi số lượng rất lớn các mục. Để thực hiện được nhiều cách này, tính toán cho từng mục phải độc lập với tính toán cho các mục khác. Nếu có (thông thường) một số phụ thuộc giữa một mục này và một mục khác, bạn thường cần tìm ra một cách nào đó để phá vỡ nó trước khi bạn sẽ nhận được nhiều từ việc thực thi mã đó trên GPU. Nếu sự phụ thuộc hoàn toàn không thể bị phá vỡ hoặc đòi hỏi quá nhiều công việc để phá vỡ, mã có thể thực thi nhanh hơn trên CPU.
Hầu hết các CPU hiện tại cũng hỗ trợ khá nhiều loại hoạt động mà GPU hiện tại đơn giản là không cố gắng hỗ trợ chút nào (ví dụ: bảo vệ bộ nhớ cho đa nhiệm).
Nhìn từ một hướng hơi khác, CPU đã được thiết kế (phần lớn) để thuận tiện cho các lập trình viên, và những người làm phần cứng đã làm hết sức mình (và tốt nhất là tốt nhất!) Để tạo ra phần cứng duy trì mô hình thuận tiện đó cho lập trình viên, nhưng vẫn thực thi càng nhanh càng tốt.
GPU đến từ những thứ hoàn toàn ngược lại: chúng được thiết kế phần lớn để thuận tiện cho nhà thiết kế phần cứng và những thứ như OpenCL đã cố gắng cung cấp một mô hình lập trình hợp lý nhất có thể với các ràng buộc của phần cứng.
Viết mã để chạy trên GPU thường sẽ tốn nhiều thời gian và công sức hơn (vì vậy sẽ tốn nhiều tiền hơn) so với làm tương tự trên CPU. Như vậy, làm như vậy chủ yếu có ý nghĩa khi / nếu một trong hai:
- Vấn đề là song song đến mức bạn có thể mong đợi một khoản lãi lớn từ nỗ lực tối thiểu, hoặc
- Tốc độ đạt được rất quan trọng đến nỗi nó biện minh cho rất nhiều công việc làm thêm.
Có một số khả năng rõ ràng cho từng loại - nhưng một số lượng lớn các ứng dụng rõ ràng thậm chí không gần với một trong số đó. Tôi sẽ khá ngạc nhiên khi thấy (ví dụ) một ứng dụng CRUD chạy trên GPU bất cứ lúc nào (và nếu có, nó có thể sẽ xảy ra vì ai đó đặt ra mục tiêu chính xác đó, không nhất thiết là bất cứ điều gì tiếp cận tối ưu tỷ lệ chi phí / lợi ích).
Thực tế là cho rất nhiều (tôi bị cám dỗ để nói "nhất") ứng dụng, một CPU điển hình là xa hơn đủ nhanh, và tiện lợi (dẫn đến những thứ như sự phát triển dễ dàng hơn các tính năng mới) lập trình là nhiều quan trọng hơn tốc độ thực hiện.