
ซอร์สโค้ดสำหรับกระดาษ ASPLOS 2023 ของเรา " MinimAlloc: หน่วยหน่วยความจำที่มีน้ำหนักเบาสำหรับการเรียนรู้ด้วยเครื่องฮาร์ดแวร์ "
จำนวนภาระงานการเรียนรู้เชิงลึกที่เพิ่มขึ้นนั้นได้รับการสนับสนุนจาก การเร่งความเร็วของฮาร์ดแวร์ เพื่อที่จะปลดล็อกประสิทธิภาพสูงสุดของเครื่องเร่งฮาร์ดแวร์รูปแบบการเรียนรู้ของเครื่องจะต้องแมปอย่างระมัดระวังลงบนส่วนประกอบภายในที่หลากหลายโดย คอมไพเลอร์ ปัญหาสำคัญอย่างหนึ่งที่ต้องเผชิญกับคอมไพเลอร์ระดับการผลิตคือ การจัดสรรหน่วยความจำ โดยชุดของบัฟเฟอร์ที่มีอายุการใช้งานที่กำหนดไว้ล่วงหน้าจะถูกแมปเข้ากับออฟเซ็ตในหน่วยความจำทั่วโลก เนื่องจากการจัดสรรนี้มีการดำเนินการแบบคงที่คอมไพเลอร์มีอิสระในการวางบัฟเฟอร์อย่างมีกลยุทธ์ แต่ต้องต่อสู้กับการระเบิดแบบ combinatorial ในจำนวนความเป็นไปได้ที่ได้รับมอบหมาย
MinimAlloc เป็นอัลกอริทึมที่ล้ำสมัยที่ออกแบบมาโดยเฉพาะสำหรับการจัดสรรหน่วยความจำแบบสแตติกที่ใช้เทคโนโลยีการค้นหาใหม่หลายอย่างเพื่อแก้ปัญหาดังกล่าวได้อย่างมีประสิทธิภาพและมีประสิทธิภาพ
ข้อมูลเชิงลึกที่สำคัญที่กระตุ้นให้เกิดวิธีการของเราคือการค้นพบหมวดหมู่ของโซลูชันที่เฉพาะเจาะจงซึ่งเราเรียกว่า โซลูชั่นที่เป็นที่ยอมรับ - ซึ่งสอดคล้องกับสมาชิกของขัดเกลาพีชคณิต:

ด้วยการ จำกัด การสำรวจของเราไปยังชุดย่อยของโซลูชั่นที่เป็นที่ยอมรับเราสามารถลดขนาดของพื้นที่การค้นหาได้อย่างมากในขณะเดียวกันก็มั่นใจได้ว่าอัลกอริทึมของเรายังคงเป็นเสียงและสมบูรณ์ นอกจากนี้เรายังใช้เทคนิคการอนุมานเชิงพื้นที่ใหม่ที่ใช้ประโยชน์จากโครงสร้างพิเศษนี้ทำให้ผู้แก้ปัญหาของเราสามารถย้อนกลับได้เร็วกว่าที่เป็นไปได้ ในที่สุดเราใช้กลไกใหม่สำหรับการตรวจจับและกำจัดโซลูชั่นที่โดดเด่นจากการพิจารณา
$ git clone --recursive [email protected]:google/minimalloc.git &&
cd minimalloc && cmake -DCMAKE_BUILD_TYPE=Release && make
id,lower,upper,size
b1,0,3,4
b2,3,9,4
b3,0,9,4
b4,9,21,4
b5,0,21,4
$ ./minimalloc --capacity=12 --input=benchmarks/examples/input.12.csv --output=output.12.csv
id,lower,upper,size,offset
b1,0,3,4,8
b2,3,9,4,8
b3,0,9,4,4
b4,9,21,4,4
b5,0,21,4,0
@inproceedings { Moffitt2023 ,
title = { {MiniMalloc}: A Lightweight Memory Allocator for Hardware-Accelerated Machine Learning } ,
booktitle = { Proceedings of the 28th International Conference on Architectural Support for Programming Languages and Operating Systems } ,
volume = { 4 } ,
pages = { 238--252 } ,
author = { Moffitt, Michael D. } ,
year = { 2023 } ,
series = { ASPLOS 2023 } ,
url = { https://doi.org/10.1145/3623278.3624752 } ,
doi = { 10.1145/3623278.3624752 }
}นี่ไม่ใช่ผลิตภัณฑ์ Google ที่ได้รับการสนับสนุนอย่างเป็นทางการ