ฉันสนใจที่จะเพิ่มประสิทธิภาพการไหลของข้อมูลและกราฟการไหลของการควบคุมและโดยเฉพาะอย่างยิ่งการคำนวณที่ซับซ้อนมากขึ้น แต่มันจะน่าสนใจที่จะทราบเกี่ยวกับการประดิษฐ์ล่าสุดในด้านการปรับปรุงประสิทธิภาพช่องมอง
ฉันสนใจที่จะเพิ่มประสิทธิภาพการไหลของข้อมูลและกราฟการไหลของการควบคุมและโดยเฉพาะอย่างยิ่งการคำนวณที่ซับซ้อนมากขึ้น แต่มันจะน่าสนใจที่จะทราบเกี่ยวกับการประดิษฐ์ล่าสุดในด้านการปรับปรุงประสิทธิภาพช่องมอง
คำตอบ:
ฉันไม่แน่ใจว่ามันเป็นเรื่องแปลกใหม่หรือถ้ามันอยู่ในด้านที่คุณสนใจมากเกินไป แต่Hooplแสดงให้เห็นว่าการเพิ่มประสิทธิภาพการควบคุม / การไหลของข้อมูลสามารถถูกทำให้เป็นโมดูลได้อย่างไรด้วยการเผยแพร่ข้อเท็จจริงเกี่ยวกับจุดยอดกราฟควบคุม ภาษาและการเพิ่มประสิทธิภาพเฉพาะ
พวกเขาอ้างถึงอัลกอริธึมของ Lerner, Grove และ Chambers ปี 2002 ซึ่งประกอบด้วยการปรับแต่งอย่างง่ายให้เป็น "superoptimization"
ฉันคิดว่าเทคนิคEquality Saturationซึ่งเป็นวิธีการที่แตกต่างกันในการแก้ไขปัญหาของการปรับให้เหมาะสมนั้นจะเกี่ยวข้องกัน สำหรับความรู้ของฉันมันยังไม่ได้รับการพิสูจน์ในทางปฏิบัติโดยการนำไปปฏิบัติอย่างเป็นรูปธรรมในคอมไพเลอร์ที่เต็มเปี่ยม การสร้างการปรับแต่งคอมไพเลอร์ต่อไปนี้จากบทพิสูจน์อาจเป็นที่สนใจเช่นกัน
มีการฟื้นฟูเล็กน้อยในการปรับแต่งคอมไพเลอร์ที่ได้รับการยืนยันแล้ว นอกจากกระดาษของ Lerner (ที่กล่าวถึงในความคิดเห็นก่อนหน้า) คุณอาจดูโครงการCompCertนำโดย Xavier Leroy พวกเขาทำสิ่งที่ยอดเยี่ยมด้วยการระบุการเพิ่มประสิทธิภาพเป็นหลักฐานที่ตรวจสอบได้ด้วยเครื่อง (ใช้Coq ) ฉันยังไม่ได้อ่านเอกสาร แต่โครงการซอฟต์แวร์ที่ได้รับการตรวจสอบแล้วที่ Princeton ดูเหมือนว่าจะให้ผลลัพธ์ที่น่าสนใจในพื้นที่นี้
การรับรู้ว่า baz [i] + = แรง (foo [i], foo [j]) ใน double FOR loop มีผลลัพธ์ที่เป็นอิสระสำหรับ (i, j) และเรียงลำดับการโทรในช่องว่างเพื่อเติม (i, j) ถึง ลดการคิดถึงแคช
ไม่ใช่ "ช่องมอง" แต่การได้รับพฤติกรรมที่ลบเลือนจากแคชสำหรับ "ฟรี" นั้นเป็นสิ่งที่ดี