ฉันคิดว่าฉันจะเพิ่มมุมมองอื่นที่นี่ คำตอบนั้นขึ้นอยู่กับว่าคำถามนั้นมีการคาดเดาขนาดเล็กหรือขนาดใหญ่หรือไม่
จากWikipedia :
การปรับขนาดที่อ่อนแอ:เวลาที่ใช้ในการแก้ไขจะแตกต่างกันอย่างไรกับจำนวนตัวประมวลผลสำหรับขนาดของปัญหาที่คงที่ต่อตัวประมวลผล
การปรับสเกลที่แข็งแกร่ง:เวลาที่โซลูชันแตกต่างกันไปตามจำนวนตัวประมวลผลสำหรับขนาดปัญหาทั้งหมดคงที่
หากคำถามสมมติว่ามีการปรับสเกลเล็กน้อยดังนั้นคำตอบของ @ Gonzalo ก็เพียงพอ อย่างไรก็ตามหากคำถามสมมติว่ามีการปรับสเกลสูงจะมีสิ่งที่ต้องเพิ่มอีกมาก ในสเกลที่แข็งแกร่งคุณจะถือว่าขนาดเวิร์กโหลดคงที่ดังนั้นหากคุณเพิ่มจำนวนเธรดขนาดของข้อมูลที่แต่ละเธรดต้องทำงานลดลง ในการเข้าถึงหน่วยความจำซีพียูสมัยใหม่นั้นมีราคาแพงและน่าจะดีกว่าที่จะรักษาตำแหน่งโดยการเก็บข้อมูลไว้ในแคช ดังนั้นจำนวนเธรดที่เหมาะสมน่าจะพบได้เมื่อชุดข้อมูลของแต่ละเธรดเหมาะกับแคชของคอร์แต่ละแกน (ฉันไม่ได้เข้าไปดูรายละเอียดของการอภิปรายว่าเป็นแคช L1 / L2 / L3 ของระบบ) หรือไม่
สิ่งนี้จะเป็นจริงแม้ว่าจำนวนเธรดจะเกินจำนวนแกน ตัวอย่างเช่นสมมติว่ามี 8 งานตามอำเภอใจ (หรือ AU) ของการทำงานในโปรแกรมซึ่งจะถูกดำเนินการบนเครื่อง 4 คอร์
กรณีที่ 1:รันด้วยสี่เธรดที่แต่ละเธรดต้องการ 2AU ที่สมบูรณ์ แต่ละหัวข้อใช้เวลา 10 วินาทีที่จะสมบูรณ์ ( ที่มีจำนวนมากคิดถึงแคช ) ด้วยสี่คอร์เวลาทั้งหมดจะเป็น 10 วินาที (10s * 4 เธรด / 4 คอร์)
กรณีที่ 2:รันด้วยแปดเธรดที่แต่ละเธรดต้องการให้เสร็จสิ้น 1AU แต่ละเธรดใช้เวลาเพียง 2 วินาที (แทนที่จะเป็น 5 วินาทีเนื่องจากจำนวนแคชที่ลดลงลดลง ) ด้วยสี่คอร์เวลาทั้งหมดจะเป็น 4s (2s * 8 เธรด / 4 คอร์)
ฉันได้ทำให้ปัญหาง่ายขึ้นและไม่สนใจค่าโสหุ้ยที่กล่าวถึงในคำตอบอื่น ๆ (เช่นสวิทช์บริบท) แต่หวังว่าคุณจะได้รับจุดที่อาจเป็นประโยชน์ในการมีจำนวนเธรดมากกว่าจำนวนแกนที่มีอยู่ทั้งนี้ขึ้นอยู่กับขนาดข้อมูลของคุณ กำลังจัดการกับ