คำตอบง่ายๆคือ GPU ทำงานได้ดีที่สุดเมื่อคุณต้องการคำนวณขนาดเล็กและใช้งานง่ายในแต่ละรายการจำนวนมาก เพื่อให้บรรลุผลอย่างมากการคำนวณสำหรับแต่ละรายการจะต้องไม่ขึ้นอยู่กับการคำนวณสำหรับรายการอื่น ๆ หากมี (ปกติ) การพึ่งพาระหว่างไอเท็มหนึ่งกับอีกไอเท็มคุณต้องคิดหาวิธีที่จะทำลายมันก่อนที่คุณจะได้รับประโยชน์จากการใช้รหัสนั้นบน GPU หากการพึ่งพาไม่สามารถถูกทำลายได้ทั้งหมดหรือต้องใช้งานมากเกินไปในการทำลายรหัสอาจทำงานได้เร็วขึ้นบน CPU
ซีพียูปัจจุบันส่วนใหญ่รองรับการทำงานบางประเภทที่ GPU ปัจจุบันไม่พยายามสนับสนุนเลย (เช่นการป้องกันหน่วยความจำสำหรับมัลติทาสก์)
เมื่อมองจากทิศทางที่แตกต่างกันเล็กน้อยซีพียูได้รับการออกแบบมาให้สะดวกสำหรับนักเขียนโปรแกรมและผู้ใช้ฮาร์ดแวร์ก็พยายามอย่างดีที่สุดเพื่อสร้างฮาร์ดแวร์ที่รักษาแบบจำลองที่สะดวกสำหรับ โปรแกรมเมอร์ แต่ยังคงดำเนินการโดยเร็วที่สุด
GPU มาจากสิ่งต่าง ๆ ค่อนข้างตรงข้าม: ได้รับการออกแบบส่วนใหญ่เพื่อความสะดวกสำหรับนักออกแบบฮาร์ดแวร์และสิ่งต่าง ๆ เช่น OpenCL ได้พยายามที่จะจัดให้มีรูปแบบการเขียนโปรแกรมที่เหมาะสมที่สุดเท่าที่จะทำได้เนื่องจากข้อ จำกัด ของฮาร์ดแวร์
การเขียนโค้ดเพื่อใช้งานบน GPU โดยทั่วไปจะใช้เวลาและความพยายามมากขึ้น (ดังนั้นจะมีราคาสูงกว่า) ในการทำเช่นเดียวกันกับ CPU ด้วยเหตุนี้การทำเช่นนั้นจะสมเหตุสมผลเมื่อ / หาก:
- ปัญหานั้นขนานกันมากจนคุณสามารถคาดหวังผลตอบแทนมหาศาลจากความพยายามขั้นต่ำหรือ
- ความเร็วที่เพิ่มขึ้นนั้นสำคัญอย่างยิ่งที่จะช่วยให้คุณทำงานได้มากขึ้น
แต่ - มีบางความเป็นไปได้ที่ชัดเจนสำหรับแต่ละขนาดใหญ่จำนวนการใช้งานอย่างชัดเจนจะไม่ได้ใกล้เคียงกับคนใดคนหนึ่ง ฉันค่อนข้างประหลาดใจที่เห็น (ตัวอย่าง) แอปพลิเคชั่น CRUD ที่ทำงานบน GPU เร็ว ๆ นี้ (และถ้าเป็นเช่นนั้นมันอาจจะเกิดขึ้นเพราะมีคนกำหนดเป้าหมายที่แน่นอนไว้ในใจไม่จำเป็นต้องเข้าใกล้ที่เหมาะสม อัตราส่วนต้นทุน / ผลประโยชน์)
ความจริงก็คือว่าสำหรับจำนวนมาก (ฉันอยากจะบอกว่า "ส่วนใหญ่") การใช้งานซีพียูทั่วไปอยู่ไกลเกินพอที่รวดเร็วและความสะดวกสบายในการเขียนโปรแกรม (นำไปสู่สิ่งที่ต้องการได้ง่ายขึ้นการพัฒนาของคุณสมบัติใหม่) เป็นมากมีความสำคัญมากกว่า ความเร็วในการทำงาน