การแบ่งงานระหว่างเธรด

ฉันรู้ว่ามีคำถามที่คล้ายกัน แต่ไม่มีคำถามใดที่ตอบคำถามของฉัน

ฉันกำลังพยายามแบ่งลูปใหญ่ (2^60) ออกเป็นลูปเล็ก ๆ หลายๆ ลูปโดยกระจายไปตามเธรด ช่วงของการวนซ้ำอาจแตกต่างกันตั้งแต่ (2^4) ถึง (2^60) คำถามของฉันคือฉันจะตัดสินใจจำนวนเธรดที่เหมาะสมที่สุด (สูงสุด = 8, นาที = 1) ได้อย่างไร และจะแบ่งงานกันอย่างไร หากมีใครสามารถแสดงตัวอย่างได้จะดีมาก

ตัวอย่างเช่น .. ฉันพยายามแบ่ง 2^32 เป็น 8 เธรด ดังนั้นทุกเธรดจะทำงานได้ 2^29 ใช่ไหม? แต่ฉันจะแบ่งช่วงได้อย่างไร? (0... 2^29),(2^29....2^30)... ? ขออภัยถ้านั่นเป็นคณิตศาสตร์ที่ไม่ดี แต่จิตใจของฉันทำงานไม่ถูกต้องอีกต่อไป


person questions    schedule 14.03.2012    source แหล่งที่มา


คำตอบ (3)


วิธีง่ายๆ คือเพียงหารจำนวนกับจำนวนเธรดแล้วนำไปใช้งาน ให้ m=พื้น(n/k) 0..(m-1), m..(2m-1).... คือจุดเริ่มต้นและจุดสิ้นสุดของลูป

ไม่แน่ใจว่าทำไมคุณถึงหมกมุ่นอยู่กับ 2^as มีเหตุผลอะไรเป็นพิเศษหรือไม่? มิฉะนั้นให้ทำอย่างที่คุณทำกับช่วงอื่น แบ่งเท่าๆ กัน.

person ElKamina    schedule 14.03.2012
comment
@Elkamina- คำถามคือจะตัดสินใจจำนวนเธรดได้อย่างไรตามช่วงซึ่งไม่สูงหรือต่ำเกินไป - person questions; 16.03.2012
comment
@questions นั่นขึ้นอยู่กับสิ่งอื่น ๆ อีกมากมาย! คุณมีคอร์จำนวนเท่าใด คุณสามารถรอได้นานแค่ไหน มีหน่วยความจำเท่าใด หน่วยความจำที่แต่ละเธรดใช้ไปเท่าใด เวลา IO สำหรับแต่ละเธรดคือเท่าใด... ในสถานการณ์ที่ต้องใช้การคำนวณอย่างง่ายซึ่งไม่ต้องการมากนัก RAM ฉันจะบอกว่ารันเธรดได้มากเท่ากับจำนวนคอร์ในคอมพิวเตอร์ของคุณ - person ElKamina; 16.03.2012

ช่วงเวลาของ 2E29 จะเป็นดังนี้:

0 * 2E29 ~ 1 * 2E29    =     0           ~ 2E29
1 * 2E29 ~ 2 * 2E29    =     2E29        ~ 2E30
2 * 2E29 ~ 3 * 2E29    =     2E30        ~ 2E30 + 2E29
3 * 2E29 ~ 4 * 2E29    =     2E30 + 2E29 ~ 2E31
person Community    schedule 14.03.2012

นี่คือช่วงเวลาที่ฉันได้รับ

(0, 2^29 - 1)

(2^29, 2^30 - 1)

(2^30, 2^30 + 2^29 -1)

(2^30 + 2^29, 2^31 - 1)

(2^31, 2^31 + 2^29 - 1)

(2^31 + 2^29, 2^31 + 2^30 - 1)

(2^31 + 2^30, 2^31 + 2^30 + 2^29 - 1)

(2^31 + 2^30 + 2^29, 2^32 - 1)

คุณอาจสับสนเพราะ 2^29 + 2^29 = 2^30 ( monomial) อย่างไรก็ตาม ไม่สามารถเพิ่ม 2^30 + 2^29 ลงใน monomial ได้

person Wilmer E. Henao    schedule 14.03.2012