ในสถาปัตยกรรมของ EvoX นั้นRuntime Schedulerเป็นศูนย์กลางการประมวลผลที่เชื่อมโยงตรรกะของอัลกอริทึมเข้ากับฮาร์ดแวร์ทางกายภาพ โดยมีหน้าที่แมปอัลกอริทึมเชิงวิวัฒนาการ การนิยามปัญหา และเวิร์กโฟลว์ในระดับบน ไปยังทรัพยากรประมวลผลแบบต่างชนิด เช่น GPU อุปกรณ์เร่งความเร็ว (เช่น TPU/NPU) และคลัสเตอร์แบบกระจาย พร้อมทั้งซ่อนความแตกต่างของฮาร์ดแวร์ไว้ ขณะเดียวกันก็รักษาความสามารถในการประกอบโมดูลของอัลกอริทึมให้มีประสิทธิภาพสูง
หน้าที่หลัก
- การจัดตารางพลังประมวลผลแบบต่างชนิด: บริหารจัดการทรัพยากรสำหรับการประมวลผลอย่างเป็นเอกภาพ ทั้ง GPU อุปกรณ์เร่งความเร็ว และคลัสเตอร์แบบกระจาย พร้อมจัดสรรงาน โอเปอเรเตอร์ และกราฟการคำนวณเทนเซอร์ในการประมวลผลเชิงวิวัฒนาการ ไปยังแบ็กเอนด์ฮาร์ดแวร์ที่เหมาะสมที่สุด
- การประสานความสัมพันธ์และการจัดการสถานะ: ประสานความสัมพันธ์ระหว่างงานและสถานะการประมวลผล เพื่อให้มั่นใจว่าแต่ละขั้นตอนของการสำรวจเชิงวิวัฒนาการแบบขนานสามารถซิงโครไนซ์ได้อย่างถูกต้อง
- อินเทอร์เฟซการจัดตารางแบบเอกภาพ: เลเยอร์อัลกอริทึมส่งงานการคำนวณผ่านอินเทอร์เฟซแบบเอกภาพ โดยไม่ต้องผูกกับอุปกรณ์หรือรูปแบบคลัสเตอร์เฉพาะใด จึงช่วยลดการพึ่งพาฮาร์ดแวร์
- ความสามารถในการประกอบโมดูล: รองรับการประกอบ การสลับ และการใช้ซ้ำของอัลกอริทึม ปัญหา โอเปอเรเตอร์ และแบ็กเอนด์การประมวลผลในลักษณะโมดูล ทำให้โค้ดชุดเดียวกันสามารถย้ายไปยังสภาพแวดล้อมฮาร์ดแวร์ที่แตกต่างกันได้อย่างง่ายดาย
คุณค่าและตัวอย่าง
คุณค่าหลักของ Runtime Scheduler คือ การทำให้การสำรวจเชิงวิวัฒนาการแบบขนานทำงานได้อย่างมีประสิทธิภาพบนฮาร์ดแวร์ที่หลากหลาย โดยไม่ทำลายการออกแบบแบบโมดูลของอัลกอริทึมในระดับบน ตัวอย่างเช่น เมื่ออัลกอริทึมเชิงวิวัฒนาการชุดเดียวกันย้ายจาก GPU เครื่องเดียวไปยังคลัสเตอร์หลายเครื่อง โค้ดในเลเยอร์อัลกอริทึมยังคงเดิม โดย Runtime จะทำการแมปงานการคำนวณและแบ็กเอนด์การประมวลผลใหม่ การออกแบบเช่นนี้ทำให้นักวิจัยสามารถมุ่งเน้นไปที่การสร้างสรรค์อัลกอริทึมได้ โดยไม่ต้องเขียนโค้ดใหม่สำหรับฮาร์ดแวร์แต่ละชนิด
