6.1.2 · D3 · HinglishParallelism & Multicore

Worked examplesInstruction-level vs thread-level parallelism

2,465 words11 min read↑ Read in English

6.1.2 · D3 · Hardware › Parallelism & Multicore › Instruction-level vs thread-level parallelism

Yeh page parent topic ka "koi bhi scenario chhootne nahi denge" wala companion hai. Shuru karne se pehle, ek vaada: yahan use hone wala har symbol pehli baar define kiya jayega. Agar tumne abhi tak Amdahls-Law nahi dekha, koi baat nahi — hum use neeche se rebuild karenge.

Picture dekho: amber block serial part hai — yeh kabhi shrink nahi hoti. Cyan blocks parallel part hain — inhe hum tukdon mein kaat dete hain. Total time hai amber + (ek cyan slice). Chahe kitna bhi bada ho jaaye, amber block ek aisi floor hai jiske neeche kabhi nahi ja sakte. Yahi ek idea is page pe har surprise drive karta hai.


Scenario matrix

Parallelism ka har problem jo tum mileoge in mein se kisi ek cell mein aayega. Neeche ke examples un cells ke saath label kiye gaye hain jo unhe cover karti hain, aur mil ke yeh sabhi ko hit karte hain.

Cell Kya cheez ise khaas banati hai Covered by
A. High-, high- Zyada kuch parallel, zyada workers (best case) Ex 1
B. Low- (serial chain) Dependencies dominate; parallelism fail ho jaata hai Ex 2
C. (degenerate) Poora serial — sanity floor Ex 3
D. (degenerate) Perfectly parallel — sanity ceiling Ex 3
E. (limiting) Infinite hardware — ceiling kahan hai? Ex 4
F. Combining ILP × TLP Do speedups multiply karte hain Ex 5
G. Word problem Real workload, aur khud extract karne honge Ex 6
H. Exam twist "Speedup diya hai, nikalo" — ulta solve karo Ex 7
I. Wrong category SIMD ko ILP/TLP ki tarah mislabel karna (classic trap) Ex 8

Forecast (pehle guess karo): aath cores — kya tum exactly 8× expect karte ho? Apna guess likh lo.

  1. Pieces identify karo. Yeh step kyun? Master formula ko aur chahiye; unhe naam do taaki ILP aur TLP numbers mix na ho jayein. Yahan aur .
  2. Serial part . Kyun? Yeh amber floor hai — woh 1% jo chahe kuch bhi ho chalti hai.
  3. Parallel part shrunk . Kyun? Cyan block 8 slices mein kata; hum sirf ek slice ka wait karte hain.
  4. Jodo aur invert karo. Kyun? Master equation. Total time = floor + ek slice, aur speedup uska reciprocal hai.

Verify karo: 7.48× 8× se neeche hai (guess), jo sahi hai — 1% floor baaki cheen leta hai. Sanity: agar floor hoti, to kya hum exactly paate? Nahi — floor aur ke saath hum exactly 8 paate. Sahi, hamara answer perfect ceiling ke thoda neeche hai, jaise hona chahiye.


Forecast: 4-wide hardware — pakka kam se kam 2× toh hoga? Guess karo.

  1. Pieces naam karo: , . Kyun? Yeh ab ILP hai, isliye = instruction independence, = instructions/cycle. Dekho Pipelining-Hazards kyun chain stall hoti hai: yeh ek load-to-use hazard hai.
  2. Serial part . Kyun? 90% instructions ko wait karna padta hai — ek bada amber floor.
  3. Parallel part shrunk . Kyun? Sirf 10% overlap hota hai, 4 slots mein.
  4. Combine karo:

Verify karo: 1.08× ≈ almost kuch nahi. 4-wide machine waste ho rahi hai kyunki dependency chain dominate karti hai — yahi lesson hai: data structure, hardware width nahi, ceiling decide karta hai. Units check: ek ratio hai, dimensionless. ✓

Figure ek array (independent cyan arrows, sab ek saath fire karte hain) ko ek linked list (amber chain, har arrow ko pehle wale ka wait karna padta hai) se contrast karta hai. Isliye arrays ILP aur TLP dono mein jeette hain.


Forecast: har extreme par tum kya speedup expect karte ho?

  1. Case . Yeh step kyun? Yeh floor test hai — agar formula yahan galat behave kare, toh woh wrong hai. Kuch bhi parallel nahi ⇒ koi speedup nahi. Sahi.
  2. Case . Kyun? Yeh ceiling test hai. Sab kuch parallel ⇒ poora × speedup. Sahi.

Verify karo: deta hai 1 (koi gain nahi) aur deta hai exactly (perfect scaling). Yeh har real answer ko bracket karte hain: koi bhi real program strictly inke beech mein hoga, isliye Ex 1 ka answer 7.48 (ceiling ke paas) aur Ex 2 ka 1.08 (floor ke paas) aaya. ✓


Forecast: infinite cores — kya speedup infinity tak blow up ho jaata hai?

  1. Formula likho aur ko upar push karo. Kyun? Hum ceiling chahte hain, isliye ki limit lete hain.
  2. Shrinking term ko vanish hone do. Kyun? jab — ek fixed number ko ever-bigger se divide karne par zero milta hai.
  3. plug karo: .

Verify karo: infinite hardware ke baad bhi, 5% serial part 20× par cap kar deta hai. Yeh amber floor ko numeric banata hai — yahi Figure 1 wali "floor jo kabhi nahi khod sakte" hai. Related trap Power-Performance-Tradeoffs mein: is point ke baad cores add karna zero gain ke liye power jalaata hai.

Curve dashed amber line ki taraf par flatten ho jaata hai. Notice karo kitni jaldi yeh plateau ho jaata hai — 32 cores tak zyada faayda khatam ho jaata hai. Yahi flattening wajah hai ki scheduling aur low serial overhead raw core count se zyada matter karte hain.


Forecast: kya yeh add hote hain (2.11 + 7.46) ya multiply?

  1. dobara calculate karo , ke saath. Kyun? Combine karne se pehle input confirm karo.
  2. dobara calculate karo , ke saath. Kyun? Usi wajah se.
  3. Multiply karo, add nahi. Kyun? ILP har core ka time 2.11× shrink karta hai; TLP phir already-shrunk time ko 7.46× aur shrink karta hai. Sequential shrinks compound hote hain.

Verify karo: agar hum add karte toh 9.57× milta, jo galat hai — shrinks independent multipliers hain, jaise do discounts stack kiye ho. SMT aur superscalar ILP layer par hain; cache coherence TLP layer ko govern karta hai — alag layers hain, isliye multiply karte hain. ✓


Forecast: 6 cores ke saath, final time guess karo.

  1. Total serial baseline s. Kyun? ek fraction hai original single-thread time ka, isliye hume woh total chahiye.
  2. calculate karo = parallel seconds ÷ total = . Kyun? Definition se original time ka woh fraction hai jo overlap hota hai.
  3. Master formula apply karo, , .
  4. Time mein convert karo: naya time s. Kyun? Speedup = old/new, isliye new = old/.

Verify (units!): naya time serial part + parallel part on 6 cores ke barabar hona chahiye s. ✓ Exactly match karta hai, aur units poore time seconds mein hain.


Forecast: high ya low ? Solve karne se pehle guess karo.

  1. Master formula se shuru karo aur ko unknown maan lo. Kyun? Hume aur pata hai; algebra recover karta hai.
  2. Dono sides invert karo. Kyun? Reciprocals lekar fraction se chhutkaara paao.
  3. Right side expand karo. Kyun? terms collect karo.
  4. ke liye solve karo.

Verify karo: , wapas plug karo: , , sum , reciprocal . ✓ To sirf 76% parallel tha — baaki 24% serial ne gain ko 3× par cap kar diya.


Forecast: kya student sahi hai?

  1. Categories yaad karo. Kyun? Poori page ILP, TLP, aur DLP ko alag rakhne par tiki hai. Dekho SIMD-Vector-Processing.
    • ILP = bahut saari independent instructions overlap karti hain.
    • TLP = bahut saare independent threads.
    • DLP (data-level) = ek instruction bahut saare data elements par (SIMD).
  2. SIMD add classify karo. Kyun? Ek vaddps pipeline mein ek single instruction hai, chahe woh kitne bhi floats touch kare.
  3. Sahi se count karo. Ek akela SIMD add ILP mein contribute karta hai, 8 nahi. Woh "8" SIMD width (DLP) hai, ek bilkul alag axis — dekho Memory-Level-Parallelism ek aur orthogonal axis ke liye.

Verify karo (numeric): agar woh SIMD add akeli instruction hai per cycle, to ILP factor hai, jo ILP se deta hai — speedup DLP se aaya tha, ILP se nahi. Student ne axis galat label kiya. ✓


Recall Self-test — answers chhupao

Kaunsi cell mein speedup hai jo chahe hardware kitna bhi ho, kabhi exceed nahi ho sakta? ::: Cell E — limit hai , serial floor. Agar ILP 2× deta hai aur TLP 5× deta hai, combined speedup kya hai? ::: — yeh multiply karte hain, add nahi (Cell F). Ek pure SIMD add tumhare ILP count mein kya contribute karta hai? ::: Sirf — yeh data-level parallelism hai, ILP nahi (Cell I). 8 cores par measured 3× matlab roughly kaunsa parallel fraction? ::: Lagbhag (Cell H).