เกี่ยวกับการสร้างความแตกต่างโดยอัตโนมัติซอร์สโค้ด - การแปลง (STC) มีประสิทธิภาพมากกว่าตัวดำเนินการโอเวอร์โหลด (OO) หรือไม่


12

เรากำลังทำงานกับแบบจำลอง Bayesian สำหรับกระบวนการ space-time และกำลังใช้ตัวเก็บตัวอย่าง No-U-Turn (NUTS) ที่ต้องใช้แบบจำลองสำหรับความน่าจะเป็นในการบันทึกและการไล่ระดับสีตามพารามิเตอร์ของแบบจำลอง ยิ่งไปกว่านั้นเรามีฟังก์ชั่นความน่าจะเป็นบันทึกที่ค่อนข้างซับซ้อน , ที่เกี่ยวข้องกับการแจกแจงเชิงสถิติ, ผลิตภัณฑ์ kronecker, เลขชี้กำลัง, อัตราส่วน, คำแถลง if-else เป็นต้นและจำเป็นต้องจัดให้มัน แพ็คเกจจำนวนมาก ( MCMC ของสแตนเลย์และ จูเลีย ) ใช้ตัวดำเนินการมากเกินไป (เพื่อความรู้ที่ดีที่สุดของฉัน) เพื่อรับการไล่ระดับสีโดยอัตโนมัติf:RnR

หากเราสามารถสร้างฟังก์ชั่นการไล่ระดับสีของเราเองได้บางทีอาจใช้เครื่องมือกระจายรหัสอัตโนมัติการแปลงซอร์สโค้ดเราจะได้ประสิทธิภาพที่ดีขึ้นหรือ OO ดีหรือดีกว่าหรือไม่

คำตอบ:


9

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

มีแพ็กเกจ OO เพิ่มเติมเนื่องจากมีความง่ายในการใช้เครื่องมือสร้างความแตกต่างโดยอัตโนมัติโดยใช้ตัวดำเนินการโอเวอร์โหลดมากกว่าที่จะใช้การแปลซอร์สไปยังซอร์ส การใช้ตัวแปลซอร์สโค้ดกับซอร์สนั้นเท่ากับการเขียนคอมไพเลอร์: ซอร์สโค้ดต้องแยกวิเคราะห์และโทเค็นจากนั้นกฎการแปลงจะต้องนำไปใช้กับแผนผังนิพจน์ที่เกิดขึ้น หนังสือของ Andreas Griewank การประเมินอนุพันธ์: หลักการและเทคนิคการแยกความแตกต่างของอัลกอริทึมรุ่นที่สองจะมีรายละเอียดเพิ่มเติมเกี่ยวกับการแลกเปลี่ยน


ขอบคุณ Geoff สิ่งนี้ช่วยได้มากโดยเฉพาะการประมาณการค่าใช้จ่ายโดยทั่วไปของคุณ
Matthew Emmett

1

สำหรับการคำนวณแบบไล่ระดับสีคุณใช้โหมดย้อนกลับของ AD สิ่งนี้ต้องการในทั้งสองกรณีเพื่อสร้างตัวถูกดำเนินการสแต็กรุ่น OO ยังต้องการสร้างการดำเนินการสแต็กซึ่งจะต้องตีความในการสำรวจเส้นทางย้อนกลับของรหัส รหัสที่แปลงแล้วจะเขียนการดำเนินการที่สั่งย้อนกลับเป็นซอร์สโค้ดเพิ่มเติมที่รวบรวม ค่าใช้จ่ายที่มีล่ามการดำเนินการในรหัสอาจมีความสำคัญ มีการเปรียบเทียบรหัส Tapenade ที่สร้างขึ้นและ Adol-C ที่ออกมาเพื่อสนับสนุน Tapenade

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