กลับไปหน้าบทความ

อ่าน 12 นาที

อัลกอริทึม SPIKE

อัลกอริทึม SPIKEเป็น ตัวแก้ปัญหาแบบ ขนานไฮบริ ด สำหรับระบบเชิงเส้นแบบแถบ ที่พัฒนาโดย Eric Polizzi และAhmed Sameh ^

อัลกอริทึม SPIKE

อัลกอริทึม SPIKEเป็น ตัวแก้ปัญหาแบบ ขนานไฮบริ ด สำหรับระบบเชิงเส้นแบบแถบ ที่พัฒนาโดย Eric Polizzi และAhmed Sameh [1] ^ [2]

ภาพรวม

อัลกอริทึม SPIKE จัดการกับระบบเชิงเส้นAX = Fโดยที่Aเป็นเมทริกซ์แบบแถบที่ มี แบนด์วิดท์น้อยกว่ามากและFเป็นเมทริกซ์ที่มีด้านขวา โดยแบ่งออกเป็นขั้นตอนการประมวลผลล่วงหน้าและขั้นตอนการประมวลผลภายหลัง

ขั้นตอนการประมวลผลล่วงหน้า

ในขั้นตอนการประมวลผลเบื้องต้น ระบบสมการเชิงเส้นAX = Fจะถูกแบ่งออกเป็นรูปแบบ บล็อกสามแถว

สมมติไว้ก่อนว่าบล็อกแนวทแยงA j ( j = 1,..., pโดยที่p ≥ 2 ) ไม่ เป็นเมทริกซ์เอกฐาน กำหนดเมทริกซ์ บล็อกแนวทแยง

D = diag( A 1 ,..., A p ),

ดังนั้นDจึงเป็นเมทริกซ์ไม่เอกฐานเช่นกัน การคูณD −1ทางซ้ายทั้งสองข้างของระบบจะได้

ซึ่งจะต้องแก้ไขในขั้นตอนการประมวลผลภายหลัง การคูณทางซ้ายด้วยD −1เทียบเท่ากับการแก้ระบบสมการในรูปแบบ

A j [ V j W j G j ] = [ B j C j F j ]

(โดยละเว้นW 1และC 1สำหรับและV pและB pสำหรับ) ซึ่งสามารถดำเนินการแบบขนานได้

เนื่องจากลักษณะเป็นแถบของAทำให้มีเพียงไม่กี่คอลัมน์ซ้ายสุดของแต่ละV jและเพียงไม่กี่คอลัมน์ขวาสุดของแต่ละW jเท่านั้นที่จะมีค่าไม่เป็นศูนย์ คอลัมน์เหล่านี้เรียกว่าสไปค์ (spikes )

ขั้นตอนการประมวลผลภายหลัง

โดยไม่เสียความเป็นทั่วไปสมมติว่าแต่ละสไปค์ประกอบด้วยคอลัมน์จำนวนหนึ่ง ( ซึ่งน้อยกว่ามาก) (เติมคอลัมน์ศูนย์ให้กับสไปค์หากจำเป็น) แบ่งสไปค์ในV jและW j ทั้งหมด ออกเป็น

และ

โดยที่V ( t ) j , วี ( ) j ,  ( t ) j และดับเบิลยู ( ) j มีมิติ แบ่ง X jและG jทั้งหมดในลักษณะเดียวกันออกเป็น

และ

โปรดสังเกตว่าระบบที่ได้จากขั้นตอนการประมวลผลเบื้องต้นสามารถลดขนาดลงเป็นระบบบล็อกห้าเหลี่ยมที่มีขนาดเล็กกว่ามาก (โปรดจำไว้ว่ามีขนาดเล็กกว่ามาก)

ซึ่งเราเรียกว่าระบบลดรูปและใช้สัญลักษณ์S̃X̃ = แทน

เมื่อX ทั้งหมด ( t ) j และX ( ) j หากพบXj ทั้งหมด จะสามารถกู้คืนได้ด้วยความขนานที่สมบูรณ์แบบผ่านทาง

SPIKE เป็นตัวแก้ระบบเชิงเส้นแบบแถบหลายอัลกอริทึม

แม้ว่าในเชิงตรรกะจะแบ่งออกเป็นสองขั้นตอน แต่ในเชิงการคำนวณแล้ว อัลกอริทึม SPIKE ประกอบด้วยสามขั้นตอน:

  1. แยกตัวประกอบของบล็อกแนวทแยง
  2. การคำนวณค่าสูงสุด
  3. แก้ระบบสมการที่ลดรูปแล้ว

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

SPIKE แบบเรียกซ้ำ

ขั้นตอนการประมวลผลล่วงหน้า

ขั้นตอนแรกของขั้นตอนการประมวลผลล่วงหน้าคือการแยกตัวประกอบของบล็อกแนวทแยงA jเพื่อความเสถียรเชิงตัวเลขเราสามารถใช้รูทีนของLAPACK ในการแยกตัวประกอบ LUโดยใช้การสลับแกนบางส่วน หรืออีกทางเลือกหนึ่ง เราสามารถแยกตัวประกอบโดยไม่ต้องใช้การสลับแกนบางส่วน แต่ใช้กลยุทธ์ "การเพิ่มความแข็งแกร่งของแนวทแยง" วิธีหลังนี้จะช่วยแก้ปัญหาของบล็อกแนวทแยงที่เป็นเอกฐานได้ XGBTRF

ในทางปฏิบัติ กลยุทธ์การเพิ่มประสิทธิภาพแนวทแยงมีดังนี้ ให้0 εแทน "ศูนย์เครื่องจักร" ที่กำหนดค่าได้ ในแต่ละขั้นตอนของการแยกตัวประกอบ LU เราต้องการให้ตัวหมุนเป็นไปตามเงื่อนไข

|pivot| > 0 εA1 .

หากจุดหมุนไม่ตรงตามเงื่อนไข ก็จะได้รับการเสริมกำลังโดย

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

ขั้นตอนการประมวลผลภายหลัง

กรณีแบ่งสองส่วน

ในกรณีสองพาร์ติชัน กล่าวคือ เมื่อp = 2ระบบที่ลดรูปS̃X̃ = จะมีรูปแบบดังนี้

สามารถแยกระบบที่เล็กลงไปอีกได้จากจุดศูนย์กลาง:

ซึ่งสามารถแก้ไขได้โดยใช้การแยกตัวประกอบแบบบล็อก LU

เมื่อX ( ) 1 และX ( t ) 2 พบX ( t ) 1 และX ( ) 2 สามารถคำนวณได้ผ่านทาง

X ( t ) 1 = จี ( t ) 1 วี ( t ) 1 X ( t ) 2 ,
X ( ) 2 = จี ( ) 2  ( ) 2 X ( ) 1 .
กรณีการแบ่งพาร์ติชันหลายรายการ

สมมติว่าpเป็นกำลังของสอง นั่นคือp = 2d พิจารณาเมทริกซ์บล็อกแนวทแยง

1 = diag( [1] 1 ,...,  [1] หน้า /2 )

ที่ไหน

สำหรับk = 1,..., p /2สังเกตว่า 1ประกอบด้วยบล็อกแนวทแยงมุมลำดับ4 mที่ดึงมาจากตอนนี้เราแยกตัวประกอบเป็น

= 1 2 .

เมทริกซ์ใหม่ 2มีรูปแบบดังนี้

โครงสร้างของมันคล้ายคลึงกับโครงสร้างของ 2 มาก โดยแตกต่างกันเพียงจำนวนหนามแหลมและความสูงของหนามแหลมเท่านั้น (ความกว้างยังคงเท่าเดิมที่m ) ดังนั้น ขั้นตอนการแยกตัวประกอบที่คล้ายกันจึงสามารถดำเนินการกับ 2เพื่อสร้างได้

2 = 2 3

และ

= 1 2 3 .

ขั้นตอนการแยกตัวประกอบดังกล่าวสามารถทำซ้ำได้ หลังจากd − 1ขั้นตอน เราจะได้การแยกตัวประกอบ

= 1 d −1 d ,

โดยที่dมีเพียงสองจุดสูงสุด ระบบที่ลดขนาดลงจะได้รับการแก้ไขโดยวิธีต่อไปนี้

= −1 วัน  −1 d −1  −1 1 จี .

เทคนิคการแยกตัวประกอบ LU แบบบล็อกในกรณีสองพาร์ติชันสามารถใช้จัดการขั้นตอนการแก้ปัญหาที่เกี่ยวข้องกับ 1 , ..., d −1และd ได้ เนื่องจากขั้นตอนเหล่านี้โดยพื้นฐานแล้วเป็นการแก้ระบบอิสระหลายระบบของรูปแบบสองพาร์ติชันทั่วไป

การสรุปผลไปยังกรณีที่pไม่ใช่กำลังของสองนั้นแทบไม่ต้องทำอะไรเพิ่มเติมเลย

หนามที่ถูกตัดทอน

เมื่อAเป็นเมทริกซ์เด่นในแนวทแยงมุม ในระบบที่ลดรูปแล้ว

บล็อกV ( t ) j และดับเบิลยู ( ) j โดยทั่วไปแล้วค่าเหล่านี้มักน้อยมาก เมื่อตัดค่าเหล่านี้ออกไป ระบบที่ลดรูปจะกลายเป็นระบบบล็อกแนวทแยง

และสามารถแก้ไขได้อย่างง่ายดายแบบขนาน[3 ]

อัลกอริทึม SPIKE ที่ถูกตัดทอนสามารถนำไปใช้ร่วมกับวิธีการวนซ้ำภายนอกบางอย่าง (เช่นBiCGSTABหรือการปรับปรุงแบบวนซ้ำ ) เพื่อเพิ่มความแม่นยำของคำตอบได้

SPIKE สำหรับระบบสามเหลี่ยม

การแบ่งพาร์ติชันและอัลกอริทึม SPIKE ครั้งแรกได้รับการนำเสนอใน[4]และได้รับการออกแบบมาเพื่อปรับปรุงคุณสมบัติความเสถียรของตัวแก้ปัญหาแบบขนานที่ใช้การหมุน Givens สำหรับระบบสามแถว อัลกอริทึมเวอร์ชันหนึ่งที่เรียกว่า g-Spike ซึ่งใช้การหมุน Givens แบบอนุกรมที่ใช้แยกกันในแต่ละบล็อกได้รับการออกแบบสำหรับ GPU ของ NVIDIA [5]อัลกอริทึมแบบ SPIKE สำหรับ GPU ที่ใช้กลยุทธ์การหมุนแนวทแยงของบล็อกแบบพิเศษได้รับการอธิบายไว้ใน[6 ]

SPIKE ในฐานะตัวปรับสภาพเบื้องต้น

อัลกอริทึม SPIKE ยังสามารถทำหน้าที่เป็นตัวปรับสภาพเบื้องต้น (preconditioner) สำหรับวิธีการวนซ้ำในการแก้ระบบสมการเชิงเส้นได้อีกด้วย ในการแก้ระบบสมการเชิงเส้นAx = bโดยใช้ตัวแก้แบบวนซ้ำที่ปรับสภาพเบื้องต้นด้วย SPIKE นั้น จะทำการดึงแถบตรงกลางจากAเพื่อสร้างตัวปรับสภาพเบื้องต้นแบบแถบMและแก้ระบบสมการเชิงเส้นที่เกี่ยวข้องกับMในแต่ละรอบการวนซ้ำด้วยอัลกอริทึม SPIKE

เพื่อให้ตัวปรับสภาพมีประสิทธิภาพ มักจำเป็นต้องมีการสลับแถวและ/หรือคอลัมน์เพื่อย้ายองค์ประกอบ "หนัก" ของเมทริกซ์ Aไปใกล้กับแนวทแยงมุม เพื่อให้ครอบคลุมโดยตัวปรับสภาพ ซึ่งสามารถทำได้โดยการคำนวณการเรียงลำดับสเปกตรัมแบบถ่วงน้ำหนักของ เมทริก ซ์ A

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

การนำไปใช้

Intelนำเสนอการใช้งานอัลกอริทึม SPIKE ภายใต้ชื่อIntel Adaptive Spike-Based Solver [7]นอกจากนี้ยังมีการพัฒนาตัวแก้ปัญหาแบบไตรไดอะโกนัลสำหรับ GPU ของ NVIDIA [8] [9]และ ตัวประมวลผลร่วม Xeon Phiวิธีการใน [10]เป็นพื้นฐานสำหรับตัวแก้ปัญหาแบบไตรไดอะโกนัลในไลบรารี cuSPARSE [ 1 ]ตัวแก้ปัญหาแบบหมุน Givens ก็ได้รับการใช้งานสำหรับ GPU และ Intel Xeon Phi เช่นกัน[ 2 ]

อ่านเพิ่มเติม

  • Gallopoulos, E.; Philippe, B.; Sameh, AH (2015). การประมวลผลแบบขนานในเมทริกซ์ Springer. ISBN 978-94-017-7188-7.
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=SPIKE_algorithm&oldid=1310306566 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ อัลกอริทึม SPIKE

อัลกอริทึม SPIKEเป็น ตัวแก้ปัญหาแบบ ขนานไฮบริ ด สำหรับระบบเชิงเส้นแบบแถบ ที่พัฒนาโดย Eric Polizzi และAhmed Sameh ^

ภาพรวม

อัลกอริทึม SPIKE จัดการกับระบบเชิงเส้น AX = F โดยที่ A เป็นเมทริกซ์แบบแถบที่ มี แบนด์วิดท์ น้อยกว่ามากและ F เป็นเมทริกซ์ที่มีด้านขวา โดยแบ่งออกเป็นขั้นตอนการประมวลผลล่วงหน้าและขั้นตอนการประมวลผลภายหลัง n × n {\displaystyle n\times n} n {\displaystyle n} n × ส...

ขั้นตอนการประมวลผลล่วงหน้า

ในขั้นตอนการประมวลผลเบื้องต้น ระบบสมการเชิงเส้น AX = F จะถูกแบ่งออกเป็นรูปแบบ บล็อกสามแถว

ขั้นตอนการประมวลผลภายหลัง

โดยไม่เสียความเป็นทั่วไป สมมติว่าแต่ละสไปค์ประกอบด้วยคอลัมน์จำนวนหนึ่ง ( ซึ่งน้อยกว่ามาก) (เติมคอลัมน์ศูนย์ให้กับสไปค์หากจำเป็น) แบ่งสไปค์ใน V j และ W j ทั้งหมด ออกเป็น m {\displaystyle m} m {\displaystyle m} n {\displaystyle n}