คำถามติดแท็ก parallel-computing

คำถามเกี่ยวกับอัลกอริทึมหรือโปรแกรมที่คำนวณหน่วยประมวลผลหลายหน่วยพร้อมกัน ไม่ต้องสับสนกับการประมวลผลพร้อมกันหรือแบบกระจาย!

4
ความแปลกใหม่ใน MapReduce คืออะไร?
ไม่กี่ปีที่ผ่านมาMapReduceได้รับการยกย่องว่าเป็นการปฏิวัติการเขียนโปรแกรมแบบกระจาย นอกจากนี้ยังมีนักวิจารณ์แต่โดยมากแล้วก็มีโฆษณาที่กระตือรือร้น มันยังจดสิทธิบัตร! [1] ชื่อนี้เป็นที่ระลึกถึงmapและreduceในการเขียนโปรแกรมการทำงาน แต่เมื่อฉันอ่าน (Wikipedia) ขั้นตอนแผนที่:โหนดหลักจะรับอินพุตแบ่งเป็นปัญหาย่อยที่เล็กกว่าและกระจายไปยังโหนดผู้ปฏิบัติงาน โหนดผู้ปฏิบัติงานอาจทำสิ่งนี้อีกครั้งในทางกลับนำไปสู่โครงสร้างต้นไม้หลายระดับ โหนดผู้ปฏิบัติงานประมวลผลปัญหาที่เล็กกว่าและส่งคำตอบกลับไปที่โหนดหลัก ลดขั้นตอน:โหนดหลักจะรวบรวมคำตอบสำหรับปัญหาย่อยทั้งหมดและรวมเข้าด้วยกันในรูปแบบเอาต์พุตบางส่วน - คำตอบสำหรับปัญหาที่พยายามแก้ไขในขั้นต้น หรือ [2] Internals of MAP: [... ] MAP แยกค่าอินพุตเป็นคำ [... ] MAP หมายถึงการเชื่อมโยงคู่คีย์ / ค่าที่กำหนดของอินพุตกับคู่กลางคีย์ / ค่าที่อาจเกิดขึ้น Internals of REDUCE: [... ] [REDUCE] ดำเนินการรวมที่จำเป็น (พูดลด): รับค่าจำนวนมากและลดลงเป็นค่าเดียว ฉันไม่สามารถช่วย แต่คิดว่า: นี่คือการแบ่ง & พิชิต (ในแง่ของการควบรวมกิจการ) ธรรมดาและเรียบง่าย! ดังนั้นมีความแปลกใหม่ (แนวคิด) ใน MapReduce …

6
การคำนวณแบบกระจายเทียบกับแบบขนาน
ฉันมักจะได้ยินคนพูดถึงการคำนวณแบบขนานและการคำนวณแบบกระจายแต่ฉันรู้สึกว่าไม่มีขอบเขตที่ชัดเจนระหว่าง 2 และผู้คนมักจะสับสนอย่างง่ายดายในขณะที่ฉันเชื่อว่ามันแตกต่างกันมาก: การคำนวณแบบขนานนั้นมีความเชื่อมโยงกับมัลติเธรดอย่างแน่นหนามากขึ้นหรือวิธีการใช้งาน CPU อย่างเต็มรูปแบบ การคำนวณแบบกระจายหมายถึงแนวคิดของการแบ่งและพิชิตการเรียกใช้งานย่อยในเครื่องที่แตกต่างกันแล้วรวมผลลัพธ์ อย่างไรก็ตามเนื่องจากเราก้าวเข้าสู่ยุคข้อมูลขนาดใหญ่ดูเหมือนว่าความแตกต่างกำลังจะละลายและระบบส่วนใหญ่ในปัจจุบันใช้การผสมผสานระหว่างการคำนวณแบบขนานและแบบกระจาย ตัวอย่างที่ฉันใช้ในงานประจำวันของฉันคือ Hadoop พร้อมแผนที่ / ลดกระบวนทัศน์ระบบการกระจายที่ชัดเจนกับพนักงานที่ปฏิบัติงานบนเครื่องที่แตกต่างกัน แต่ยังใช้ประโยชน์จากเครื่องแต่ละเครื่องด้วยการคำนวณแบบขนาน ฉันต้องการคำแนะนำเพื่อให้เข้าใจว่าจะสร้างความแตกต่างในโลกปัจจุบันได้อย่างไรและถ้าเรายังพูดถึงการคำนวณแบบขนานหรือไม่มีความแตกต่างที่ชัดเจนอีกต่อไป สำหรับฉันดูเหมือนว่าการคำนวณแบบกระจายได้เพิ่มขึ้นอย่างมากในช่วงหลายปีที่ผ่านมาในขณะที่การคำนวณแบบขนานดูเหมือนจะนิ่งซึ่งอาจอธิบายได้ว่าทำไมฉันได้ยินมากขึ้นเกี่ยวกับการกระจายการคำนวณมากกว่าการขนานกัน

5
ความแตกต่างระหว่างการเขียนโปรแกรมแบบขนานและแบบพร้อมกัน?
เมื่อดูที่การเขียนโปรแกรมพร้อมกันคำสองคำที่ใช้กันทั่วไปคือพร้อมกันและขนาน และบางภาษาโปรแกรมเฉพาะเรียกร้องการสนับสนุนสำหรับการเขียนโปรแกรมแบบขนานเช่นJava สิ่งนี้หมายความว่าการเขียนโปรแกรมแบบขนานและพร้อมกันนั้นแตกต่างกันจริงหรือ

2
เหตุใด C ประเภทโมฆะจึงไม่คล้ายกับประเภทที่ว่าง / ด้านล่าง
Wikipedia ตลอดจนแหล่งข้อมูลอื่น ๆ ที่ฉันได้พบรายการvoidประเภทC เป็นหน่วยประเภทซึ่งตรงข้ามกับประเภทที่ว่างเปล่า ฉันพบว่ามันสับสนเพราะฉันคิดว่าvoidเหมาะกับนิยามของประเภทที่ว่าง / ล่าง ไม่มีค่านิยมใด ๆ อยู่voidเท่าที่ฉันจะบอกได้ ฟังก์ชั่นที่มีประเภทคืนค่าเป็นโมฆะระบุว่าฟังก์ชั่นจะไม่ส่งคืนสิ่งใดดังนั้นจึงสามารถทำงานได้เพียงผลข้างเคียงเท่านั้น ตัวชี้ชนิดvoid*เป็นชนิดย่อยของชนิดตัวชี้อื่นทั้งหมด นอกจากนี้การแปลงไปยังและจากvoid*ใน C นั้นเป็นนัย ผมไม่แน่ใจว่าถ้าจุดสุดท้ายมีบุญใด ๆ ที่เป็นข้อโต้แย้งสำหรับvoidการเป็นประเภทที่ว่างเปล่าเป็นมากหรือน้อยเป็นกรณีพิเศษที่มีความสัมพันธ์ไม่มากที่จะvoid*void ในทางกลับกันvoidตัวมันเองไม่ใช่ประเภทย่อยของประเภทอื่นทั้งหมดซึ่งเท่าที่ฉันสามารถบอกได้ว่าเป็นข้อกำหนดสำหรับประเภทที่จะเป็นประเภทด้านล่าง
28 type-theory  c  logic  modal-logic  coq  equality  coinduction  artificial-intelligence  computer-architecture  compilers  asymptotics  formal-languages  asymptotics  landau-notation  asymptotics  turing-machines  optimization  decision-problem  rice-theorem  algorithms  arithmetic  floating-point  automata  finite-automata  data-structures  search-trees  balanced-search-trees  complexity-theory  asymptotics  amortized-analysis  complexity-theory  graphs  np-complete  reductions  np-hard  algorithms  string-metrics  computability  artificial-intelligence  halting-problem  turing-machines  computation-models  graph-theory  terminology  complexity-theory  decision-problem  polynomial-time  algorithms  algorithm-analysis  optimization  runtime-analysis  loops  turing-machines  computation-models  recurrence-relation  master-theorem  complexity-theory  asymptotics  parallel-computing  landau-notation  terminology  optimization  decision-problem  complexity-theory  polynomial-time  counting  coding-theory  permutations  encoding-scheme  error-correcting-codes  machine-learning  natural-language-processing  algorithms  graphs  social-networks  network-analysis  relational-algebra  constraint-satisfaction  polymorphisms  algorithms  graphs  trees 

3
อัลกอริทึมใดที่ไม่สามารถทำการขนานกันได้
มีอัลกอริทึมใดที่ยากต่อการขนานหรือการวิจัยยังคงทำงานอยู่หรือไม่? ฉันต้องการทราบเกี่ยวกับอัลกอริทึมหรือสาขาการวิจัยใด ๆ ในการคำนวณแบบขนาน ฉันค้นหาทุกสิ่งมีการใช้งาน 'แบบขนาน' เสร็จสิ้น เพียงแค่ต้องการศึกษาเกี่ยวกับเขตข้อมูลการคำนวณแบบขนานที่ยังไม่ได้สำรวจ

5
P-ครบถ้วนและการคำนวณแบบขนาน
ผมเพิ่งอ่านเกี่ยวกับขั้นตอนวิธีการในการตรวจสอบและอ่าน bisimilarity ว่าปัญหาคือP-สมบูรณ์ นอกจากนี้ผลที่ตามมาก็คือปัญหานี้หรือปัญหา P-Complete ใด ๆ ไม่น่าจะมีอัลกอริทึมแบบขนานที่มีประสิทธิภาพ สัญชาตญาณที่อยู่เบื้องหลังคำพูดสุดท้ายนี้คืออะไร?

2
วิธีลดขนาดความซับซ้อนแบบขนานส่งผลให้มีหลายคอร์อย่างต่อเนื่อง
ฉันมีปัญหาในการยอมรับมุมมองเชิงทฤษฎีที่ซับซ้อนของ "การแก้ไขอย่างมีประสิทธิภาพโดยอัลกอริทึมแบบขนาน" ซึ่งให้โดยNCระดับ: NC เป็นชั้นของปัญหาที่สามารถแก้ไขได้โดยขั้นตอนวิธีการแบบคู่ขนานในเวลาบนประมวลผลด้วย{N}p ( n ) ∈ O ( n k ) c , k ∈ NO ( บันทึกคn )O(logc⁡n)O(\log^cn)p ( n ) ∈ O ( nk)p(n)∈O(nk)p(n) \in O(n^k)c,k∈Nc,k∈Nc,k \in \mathbb{N} เราสามารถสมมติรถเข็น ปัญหาของฉันคือสิ่งนี้ดูเหมือนจะไม่ค่อยพูดเกี่ยวกับเครื่องจักร "ของจริง" นั่นคือเครื่องจักรที่มีตัวประมวลผลจำนวน จำกัด ตอนนี้ฉันได้รับการบอกแล้วว่า "เป็นที่รู้กันดีว่า" เราสามารถ "มีประสิทธิภาพ" จำลองอัลกอริทึมของตัวประมวลผลบนตัวประมวลผลp ∈ NO(nk)O(nk)O(n^k)p∈Np∈Np \in \mathbb{N} "ประสิทธิภาพ" หมายถึงอะไรที่นี่ ชาวบ้านนี้หรือมีทฤษฎีบทที่เข้มงวดซึ่งคำนวณปริมาณค่าใช้จ่ายที่เกิดจากการจำลอง? …

3
หน่วยประมวลผลแบบขนานขนาดใหญ่ในปัจจุบันสามารถเรียกใช้ออโตมาตาเซลลูลาร์ได้อย่างมีประสิทธิภาพหรือไม่?
ฉันสงสัยว่าหน่วยการคำนวณแบบขนานขนาดใหญ่ที่มีอยู่ในการ์ดกราฟิกในปัจจุบัน (ตัวอย่างที่ตั้งโปรแกรมได้ในOpenCLเป็นต้น) ดีพอที่จะจำลองออโตเซล 1D เซลลูลาร์ (หรืออาจเป็นออโตเซล 2D)? หากเราเลือกกริดที่ จำกัด ใด ๆ ที่จะพอดีกับหน่วยความจำของชิปเราสามารถคาดหวังการเปลี่ยนแปลงของออโตเมติกเซลลูลาร์ที่กำหนดบนกริดนี้เพื่อคำนวณได้ในเวลาคงที่ (เสมือน) หรือไม่? ฉันคิดว่าออโตมาร์เซลลูลาร์ 2D จะต้องใช้แบนด์วิดท์มากขึ้นสำหรับการสื่อสารระหว่างส่วนต่าง ๆ ของชิปมากกว่าออโตมาตา 1D ฉันสนใจคำถามเดียวกันในกรณีของการเขียนโปรแกรม FPGA หรือชิปที่กำหนดเอง

3
การอ่านแบบสุ่มที่ขนานกันดูเหมือนว่าจะทำงานได้ดี - เพราะอะไร
พิจารณาโปรแกรมคอมพิวเตอร์ที่ง่ายมากต่อไปนี้: for i = 1 to n: y[i] = x[p[i]] นี่คือและคืออาร์เรย์ -element ของไบต์และคืออาร์เรย์ของคำศัพท์ -element ที่นี่มีขนาดใหญ่เช่น (เพื่อให้มีเพียงเศษเสี้ยวเล็กน้อยของข้อมูลที่พอดีกับหน่วยความจำแคชทุกประเภท)xxxYYynnnพีพีpnnnnnnn = 2วันที่ 31n=2วันที่ 31n = 2^{31} สมมติว่าประกอบด้วยตัวเลขสุ่มกระจายสม่ำเสมอระหว่างและnพีพีp111nnn จากมุมมองของฮาร์ดแวร์สมัยใหม่สิ่งนี้ควรหมายถึงสิ่งต่อไปนี้: การอ่านราคาถูก (การอ่านตามลำดับ)p [ i ]พี[ผม]p[i] การอ่านมีราคาแพงมาก (การอ่านแบบสุ่ม; การอ่านเกือบทั้งหมดเป็นแคชที่หายไป; เราจะต้องดึงข้อมูลแต่ละไบต์จากหน่วยความจำหลัก)x [ p [ i ] ]x[พี[ผม]]x[p[i]] การเขียนนั้นถูก (การเขียนตามลำดับ)Y[ i ]Y[ผม]y[i] และนี่คือสิ่งที่ฉันสังเกต โปรแกรมช้ามากเมื่อเปรียบเทียบกับโปรแกรมที่อ่านและเขียนตามลำดับเท่านั้น ยิ่งใหญ่ มาถึงคำถาม: โปรแกรมนี้ขนานกับแพลตฟอร์มมัลติคอร์ที่ทันสมัยได้อย่างไร สมมติฐานของฉันคือว่าโปรแกรมนี้ไม่ขนานกัน ท้ายที่สุดคอขวดคือหน่วยความจำหลัก …

2
ความแปรปรวนของเวลาในการทำภารกิจมีผลต่อการเลื่อนอย่างไร
สมมติว่าเรามีคอลเลกชันขนาดใหญ่ของงานτ1,τ2,...,τnτ1,τ2,...,τn\tau_1, \tau_2, ..., \tau_nและคอลเล็กชันของโปรเซสเซอร์ (ในแง่ของประสิทธิภาพ) ที่เหมือนกันซึ่งทำงานได้อย่างสมบูรณ์แบบขนาน สำหรับสถานการณ์ที่น่าสนใจที่เราอาจคิดn แต่ละใช้เวลา / รอบในการดำเนินการให้เสร็จสมบูรณ์เมื่อกำหนดให้กับโปรเซสเซอร์และเมื่อได้รับมอบหมายจะไม่สามารถกำหนดใหม่ได้จนกว่าจะเสร็จสมบูรณ์ สมมติว่าแต่ละτ ฉันใช้เวลาระยะเวลา / รอบρ1,ρ2,...,ρmρ1,ρ2,...,ρm\rho_1, \rho_2, ..., \rho_mm≤nm≤nm \leq nτiτi\tau_iρjρj\rho_jτiτi\tau_iXiXiX_iซึ่งไม่ทราบล่วงหน้านำมาจากการกระจายแบบสุ่มโดยสิ้นเชิง สำหรับคำถามนี้เรายังสามารถสันนิษฐานได้ว่าการกระจายง่าย:P(Xi=1)=P(Xi=5)=1/2P(Xi=1)=P(Xi=5)=1/2P(X_i = 1) = P(X_i = 5) = 1/2และทุกXiXiX_iมีความเป็นอิสระจากจำนวน ดังนั้นμi=3μi=3\mu_i = 3และσ2=4σ2=4\sigma^2 = 4 4 สมมติว่าในเวลา / รอบที่ 0 งานทั้งหมดจะถูกกำหนดอย่างสม่ำเสมอเท่าที่จะเป็นไปได้สำหรับตัวประมวลผลทั้งหมดโดยการสุ่มอย่างสม่ำเสมอ ดังนั้นโปรเซสเซอร์แต่ละชิ้นρjρj\rho_jจึงได้รับมอบหมายงานn/mn/mn/m (เราสามารถสมมติm|nm|nm | nสำหรับวัตถุประสงค์ของคำถามได้เช่นกัน) เราเรียกว่าตัวเลื่อนทำให้เวลา / รอบที่ตัวประมวลผลตัวสุดท้ายρ∗ρ∗\rho^*ให้เสร็จตามที่ได้รับมอบหมายจนเสร็จงานที่ได้รับมอบหมาย คำถามแรก: ในฐานะที่เป็นฟังก์ชันของmmm , nnn …

2
คำถามบางข้อเกี่ยวกับการคำนวณแบบขนานและคลาส NC
ฉันมีคำถามที่เกี่ยวข้องจำนวนมากเกี่ยวกับสองหัวข้อนี้ ขั้นแรกให้ข้อความที่ซับซ้อนมากที่สุดจะปัดเฉพาะคลาสNCNC\mathbb{NC}เท่านั้น มีทรัพยากรที่ดีที่ครอบคลุมการวิจัยในเชิงลึกมากขึ้นหรือไม่? ตัวอย่างเช่นสิ่งที่กล่าวถึงคำถามทั้งหมดของฉันด้านล่าง นอกจากนี้ฉันสมมติว่าNCNC\mathbb{NC}ยังคงเห็นงานวิจัยจำนวนพอสมควรเนื่องจากลิงก์เชื่อมโยงไปยังการขนาน แต่ฉันอาจผิด ส่วนในสวนสัตว์ที่ซับซ้อนไม่ได้ช่วยอะไรมาก ประการที่สองการคำนวณบน semigroup อยู่ในหากเราถือว่าการดำเนินการของ semigroup นั้นต้องใช้เวลาคงที่ แต่จะเกิดอะไรขึ้นถ้าการดำเนินการไม่ใช้เวลาคงที่เช่นเดียวกับจำนวนเต็มที่ไม่ได้ จำกัด มีปัญหาใด ๆ ที่ยังไม่ทราบN C iหรือไม่?NC1NC1\mathbb{NC}^1NCiNCi\mathbb{NC}^i ประการที่สามเนื่องจากมีอัลกอริทึมในการแปลงอัลกอริธึม logspace ใด ๆ ให้เป็นเวอร์ชั่นคู่ขนานหรือไม่?L⊆NC2L⊆NC2\mathbb{L} \subseteq \mathbb{NC}^2 ประการที่สี่เสียงเหมือนคนส่วนใหญ่คิดว่าในลักษณะเดียวกับที่P ≠ N P สัญชาตญาณที่อยู่เบื้องหลังสิ่งนี้คืออะไร?NC≠PNC≠P\mathbb{NC} \ne \mathbb{P}P≠NPP≠NP\mathbb{P} \ne \mathbb{NP} ประการที่ห้าข้อความที่ฉันได้อ่านทุกกล่าวถึงชั้นแต่ให้ตัวอย่างของปัญหามันไม่มี ยังมี .... บ้าง?RNCRNC\mathbb{RNC} สุดท้ายคำตอบนี้กล่าวถึงปัญหาในมีเวลาดำเนินการแบบขนานเชิงเส้นย่อย ตัวอย่างของปัญหาเหล่านี้มีอะไรบ้าง มีคลาสความซับซ้อนอื่น ๆ ที่มีอัลกอริทึมแบบขนานที่ไม่ทราบว่าอยู่ใน N Cหรือไม่PP\mathbb{P}NCNC\mathbb{NC}

1
รับรายการแบบขนานในการแก้ปัญหาการพึ่งพา
ฉันได้จัดเรียงทอพอโลยีตามบทความ Wikipediaซึ่งฉันใช้สำหรับการแก้ปัญหาการพึ่งพา แต่มันจะส่งกลับรายการเชิงเส้น อัลกอริทึมชนิดใดที่ฉันสามารถใช้เพื่อค้นหาเส้นทางที่เป็นอิสระ

1
ทำไมต้องใช้ SIMD ถ้าเรามี GPGPU
ฉันคิดว่าคำถามนี้ตอบสนองได้ดีขึ้นในส่วน CS ของ Stack Exchange ตอนนี้เรามี GPGPU ที่ใช้ภาษาเช่น CUDA และ OpenCL แล้วส่วนขยาย SIMD มัลติมีเดีย (SSE / AVX / NEON) ยังมีจุดประสงค์หรือไม่ ฉันอ่านบทความเมื่อเร็ว ๆ นี้เกี่ยวกับวิธีการใช้คำสั่ง SSE เพื่อเร่งการคัดแยกเครือข่าย ฉันคิดว่ามันค่อนข้างเรียบร้อย แต่เมื่อฉันบอกอาจารย์วิชาคอมพ์เขาก็หัวเราะแล้วบอกว่าการใช้รหัสที่คล้ายกันบน GPU จะทำลายรุ่น SIMD ฉันไม่สงสัยเลยว่าเพราะ SSE นั้นง่ายมากและ GPU เป็นตัวเร่งความเร็วสูงที่มีความซับซ้อนสูงพร้อมความขนานมากขึ้น แต่ฉันคิดว่ามีสถานการณ์มากมายที่ส่วนขยาย SIMD มัลติมีเดียมีประโยชน์มากกว่าการใช้ GPU หรือไม่ ถ้า GPGPU ทำ SIMD ซ้ำซ้อนเหตุใด Intel จะเพิ่มการรองรับ SIMD ของพวกเขา SSE …

3
Multicore SAT Solver
ฉันกำลังพยายามที่จะแก้ปัญหา SAT ข้อ 25k 5k เนื่องจากมันทำงานมาเป็นเวลาหนึ่งชั่วโมง (precosat) และฉันต้องการแก้ปัญหาที่ใหญ่กว่าหลังจากนั้นฉันกำลังมองหา SAT-Solver แบบมัลติคอร์ ดูเหมือนว่าจะมี SAT-Solvers หลายคนฉันจึงค่อนข้างแพ้ ใครช่วยชี้ให้ฉันดีที่สุดสำหรับกรณีของฉัน ฉันก็จะมีความสุขถ้ามีคนให้เวลาฉันโดยประมาณ (ถ้าเป็นไปได้)

3
มีอัลกอริธึมการยกกำลังแบบขนานที่มีประสิทธิภาพมากกว่าการคูณตามลำดับหรือไม่
จำเป็นต้องใช้เพื่อค้นหากำลัง (จำนวนเต็มบวก) ของเมทริกซ์ของจำนวนจริง มีอัลกอริธึมการคูณเมทริกซ์ที่มีประสิทธิภาพมากมาย (เช่นอัลกอริธึมแบบขนานบางอย่างคือแคนนอน, DNS ) แต่มีอัลกอริทึมที่มีจุดมุ่งหมายเพื่อค้นหาพลังของเมทริกซ์และมีประสิทธิภาพมากกว่าการดำเนินการคูณเมทริกซ์ ฉันสนใจอัลกอริทึมแบบขนานโดยเฉพาะอย่างยิ่ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.