The advent of large multi-core systems has renewed interest in programming models that simplify parallel programming. Recursive parallel programming models, as exemplified by Cilk [4], put forth a simple concurrency model. A
programmer divides the given work into smaller work units
whose results are recursively combined to provide the final
result. This divide-and-conquer strategy simplifies programmer’s effort to specifying concurrency. Often, a concurrencyannotated version of a sequential recursive program (a principle referred to as “serial elision” in Cilk).
However, this divide-and-conquer strategy can impose additional constraints on concurrency in the program. SpecifACM acknowledges that this contribution was authored or co-authored by an employee, or contractor of the national government. As such, the Government retains
a nonexclusive, royalty-free right to publish or reproduce this article, or to allow others to do so, for Government purposes only. Permission to make digital or hard copies
for personal or classroom use is granted. Copies must bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than
ACM must be honored. To copy otherwise, distribute, republish, or post, requires prior
specific permission and/or a fee. Request permissions from permissions@acm.org.
SC ’15, November 15-20, 2015, Austin, TX, USA
c 2015 ACM. ISBN 978-1-4503-3723-6/15/11. . . $15.00
DOI: http://dx.doi.org/10.1145/2807591.2807597
ically, all work represented by two work units are ordered if
any operation in one unit depends on any operation in the
other. In general, Cilk-like programming models represent
the computation as a series-parallel directed acyclic graph
(dag). Computations whose dependence structure is modeled by a more general dag need to be embedded into an
SP-dag by introducing additional edges. This can significantly limit available parallelism and thus scalability.
In this paper, we try to answer the question: is it possible
to achieve the best performance for arbitrary computation
dags while retaining Cilk’s simplicity? We present an approach to speculatively recover the concurrency lost due to
a recursive parallel program specification. We exploit several
characteristics of the structured expression of concurrency in
Cilk programs. In many Cilk computations, the dag structure is independent of the problem size, enabling us to capture data-independent concurrency constraints efficiently1.
Unlike speculation for loop programs, relaxing such concurrency constraints in Cilk exposes significant additional
work and concurrency therein, which, in turn, greatly increases the benefits achievable from optimistic parallelization. Finally, scalable Cilk programs employ coarse-grained
base cases that can be efficiently annotated to track data
accesses and detect conflicts.
We design a runtime system that enables speculative execution of Cilk programs. We present schemes that employ
increasing degrees of speculation to explore additional opportunities for relaxing concurrency constraints. These include single-task, multi-task (a.k.a. deep), and parallel speculation. We develop a predictor to efficiently and accurately
identify opportunities for speculation while considerably reducing the number of mis-speculations. We design a userlevel API to annotate Cilk programs and achieve efficient
data versioning and conflict detection under speculation.
We evaluate the various schemes and demonstrate that
speculation can significantly reduce idle times induced by
concurrency constraints and improve upon original Cilk programs. We demonstrate that the speculation framework incurs low space and time overheads. In addition, we show
that speculation incurs low overheads in the absence of profitable speculation opportunities. Evaluation of the speculation predictor shows it can precisely identify speculation
opportunities and keep mis-speculations low.
The primary contributions of the paper are:
• A speculation approach to overcome concurrency constraints in recursive parallel programs
การถือกำเนิดของระบบมัลติคอร์ขนาดใหญ่ได้ต่อสัญญาสนใจในการเขียนโปรแกรมรูปแบบที่ทำให้การเขียนโปรแกรมแบบขนาน ซ้ำแบบขนานรุ่น การเขียนโปรแกรมเป็นแบบอย่าง โดยซิลก์ ซีสตาร์ [4], ใส่ไว้แบบง่าย ๆ กัน Aโปรแกรมเมอร์แบ่งการทำงานให้เป็นหน่วยงานขนาดเล็กมีผลลัพธ์คือ recursively รวมเพื่อให้สุดท้ายผลการค้นหา กลยุทธ์นี้แบ่ง และพิชิตช่วยโปรแกรมเมอร์พยายามระบุเกิดพร้อมกัน มักจะ concurrencyannotated รุ่นของโปรแกรมตามลำดับซ้ำ (หลักการที่เรียกว่า "อนุกรม elision" ในซิลก์ ซีสตาร์)อย่างไรก็ตาม กลยุทธ์นี้แบ่ง และพิชิตสามารถกำหนดข้อจำกัดเพิ่มเติมพร้อมกันในโปรแกรม SpecifACM รับทราบว่า เงินส่วนนี้ถูกเขียน หรือเขียนร่วมพนักงาน หรือผู้รับเหมาของรัฐบาล เช่นนี้ รัฐบาลยังคงไม่เฉพาะเจาะจง เสียสิทธิเผยแพร่ หรือทำซ้ำบทความนี้ หรือ การให้ผู้อื่นทำ รัฐบาลเท่านั้น การทำดิจิตอลหรือฉบับสำหรับใช้ส่วนตัวหรือห้องเรียนได้รับ สำเนาต้องหมีตัวนี้และการอ้างอิงเต็มบนหน้าแรก สำหรับส่วนประกอบของงานนี้มากกว่าผู้อื่นเป็นเจ้าของลิขสิทธิ์ACM ต้องสามารถใช้ได้ เพื่อคัดลอกมิฉะนั้น กระจาย ประกาศใหม่ หรือโพสต์ กำหนดล่วงหน้าสิทธิ์เฉพาะและ/หรือค่าธรรมเนียม ร้องขอสิทธิ์จาก permissions@acm.orgSC ' 15, 15-20, 2558, Austin, TX สหรัฐอเมริกาACM c ใน 2015 ISBN 978-1-4503-3723-6/15/11 . . $15.00ดอย: http://dx.doi.org/10.1145/2807591.2807597ically มีสั่งงานทั้งหมดที่แสดง โดยสองหน่วยงานถ้าการดำเนินการใด ๆ ในหนึ่งหน่วยตามการดำเนินการใด ๆ ในการอื่น ๆ ทั่วไป ซิลก์ ซีสตาร์เหมือนเขียนโปรแกรมรุ่นแทนการคำนวณเป็นชุดคู่ขนานนำ acyclic graph(dag) ประมวลผลใหม่ที่มีโครงสร้างพึ่งพา โดยการ dag ทั่วไปจำเป็นต้องฝังเข้าไปในตัวSP-dag โดยการแนะนำเพิ่มเติมขอบ นี้อย่างมากสามารถจำกัดขนานพร้อมใช้งาน และ scalabilityในกระดาษนี้ เราพยายามตอบคำถาม: เป็นไปได้เพื่อให้เกิดประสิทธิภาพที่ดีที่สุดสำหรับการคำนวณโดยพลการdags ยังคงความเรียบง่ายของซิลก์ ซีสตาร์ เรานำเสนอวิธีการเกี่ยวกับการพิจารณาเงินกู้คืนครบกำหนดไปพร้อมกันข้อมูลจำเพาะขนานโปรแกรมซ้ำ เราใช้ประโยชน์จากหลายลักษณะของนิพจน์ที่มีโครงสร้างการเกิดพร้อมกันในโปรแกรมซิลก์ ซีสตาร์ ในการประมวลผลหลายในซิลก์ ซีสตาร์ โครงสร้าง dag เป็นอิสระจากปัญหาขนาด ทำให้เราสามารถจับข้อมูลอิสระกันข้อจำกัด efficiently1ซึ่งแตกต่างจากการเก็งกำไรสำหรับโปรแกรมวนรอบ ผ่อนคลายข้อจำกัดดังกล่าวพร้อมกันในซิลก์ ซีสตาร์ exposes สำคัญเพิ่มเติมทำงานและพร้อมกันนั้น ซึ่ง ในทางกลับกัน ช่วยเพิ่มผลประโยชน์ทำได้จาก parallelization ในเชิงบวก ในที่สุด โปรแกรมซิลก์ ซีสตาร์ขนาดจ้างเนื้อหยาบกรณีพื้นฐานที่สามารถ annotated ประสิทธิภาพการติดตามข้อมูลเข้าถึง และตรวจหาความขัดแย้งเราออกแบบระบบรันไทม์ซึ่งช่วยให้การดำเนินการเก็งกำไรของโปรแกรมซิลก์ ซีสตาร์ เรานำเสนอรูปแบบการจ้างงานเพิ่มองศาของการเก็งกำไรโอกาสเพิ่มเติมสำหรับข้อจำกัดกันผ่อนคลาย เหล่านี้รวมถึง งานเดี่ยว หลายงาน (หรือลึก), และการเก็งกำไรแบบขนาน เราพัฒนาทำนายไปอย่างมีประสิทธิภาพ และถูกต้องระบุโอกาสสำหรับการเก็งกำไรในขณะที่ลดจำนวน speculations ผิด เราออกแบบ userlevel API เพื่ออธิบายโปรแกรมซิลก์ ซีสตาร์ และบรรลุอย่างมีประสิทธิภาพข้อมูลการกำหนดรุ่นและความขัดแย้งการตรวจจับภายใต้การเก็งกำไรเราประเมินแผนงานต่าง ๆ และแสดงให้เห็นว่าการเก็งกำไรสามารถลดเวลาว่างที่เกิดจากข้อจำกัดการเกิดพร้อมกัน และปรับปรุงโปรแกรมซิลก์ ซีสตาร์ เราแสดงให้เห็นว่า กรอบการเก็งกำไรเกิดขึ้นพื้นที่ต่ำและเสียเวลา นอกจากนี้ เราแสดงการเก็งกำไรที่ incurs ค่าโสหุ้ยต่ำขาดโอกาสในการเก็งกำไร การประเมินผลของ predictor เก็งกำไรแสดงมันสามารถระบุเก็งกำไรได้อย่างแม่นยำโอกาสและ speculations ผิดให้ต่ำผลงานหลักของกระดาษคือ:•วิธีการเก็งกำไรเพื่อเอาชนะข้อจำกัดเกิดพร้อมกันในโปรแกรมขนานซ้ำ
การแปล กรุณารอสักครู่..
