วิธีจัดการกับข้อมูลมากเกินไป


14

การจำลองพลศาสตร์พลาสมาของเรามักจะสร้างข้อมูลมากเกินไป ในระหว่างการจำลองเราบันทึกคุณสมบัติทางกายภาพต่าง ๆ บนกริด (x, y, z, t) ที่มีขนาดใหญ่เท่ากับ (8192x1024x1024x1500) เป็นเวลาอย่างน้อย 10 คุณสมบัติ ข้อมูลนี้จะถูกประมวลผลหลังจากการจำลองเสร็จสมบูรณ์ กับเรา

  1. ทำภาพยนตร์ของคุณสมบัติ
  2. ทำการวิเคราะห์ฟูริเยร์
  3. คำนวณคุณสมบัติเฉลี่ย

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

เราได้เริ่มกระบวนการของการทำการวิเคราะห์ฟูริเยร์ได้ทันทีและกรองเฉพาะสเกลความยาวที่เลือกเท่านั้น ด้วยเหตุผลเชิงตัวเลขบางครั้งเราจำเป็นต้องแก้ไขสเกลความยาวที่เล็กกว่าที่เราสนใจจริง ๆ ดังนั้นในกรณีเหล่านี้ตัวกรองนี้ช่วยได้อย่างมาก นอกจากนี้เรายังมีการสำรวจห้องสมุดขนาน IO ต่างๆเช่นขนาน I / O ตัวเลือกใน HDF5

มีกลวิธีใดบ้างที่จะช่วยให้การประมวลผลข้อมูลมีประสิทธิภาพสูงสุด?

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

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

มีตัวอย่างของการรวบรวมผลลัพธ์ที่ซับซ้อนจากแบบจำลองหรือไม่?


นี่อาจดูเหมือนคำถามทั่วไป หากคุณรู้สึกแบบนี้โปรดให้คำแนะนำเกี่ยวกับวิธีที่ฉันจะเจาะจงมากขึ้น
Yann

1
ดูว่ากลุ่มทดลองบางกลุ่มจัดการกับปัญหานี้อย่างไร ฟิสิกส์พลังงานสูง (อัลเซิร์น) และฟิสิกส์ดาราศาสตร์สามารถมีข้อมูลขนาดใหญ่กว่าที่ต้องเก็บไว้ (หรือแม้แต่กรองก่อนที่จะจัดเก็บเพราะข้อมูลมาเร็วกว่าที่จะเขียนลงในที่เก็บใด ๆ ) กระจายและวิเคราะห์
Brian Diggs

คำตอบ:


10

ฉันคิดว่าคุณอาจต้องแยกเอาท์พุทของคุณเพื่อให้ตรงกับเป้าหมายของคุณ:

  1. สำหรับภาพยนตร์คุณสมบัติคุณอาจไม่ต้องการความละเอียดเชิงพื้นที่เต็มรูปแบบและตัวแปรทั้งหมด เลือกสิ่งที่คุณต้องการแสดงอย่างรอบคอบและคิดถึงความละเอียดสุดท้ายของภาพยนตร์ที่คุณจะแสดงมันอาจจะไม่มี 8 พันล้านพิกเซล
  2. สำหรับการวิเคราะห์ฟูริเยร์ (หรือสิ่งต่าง ๆ เช่น POD) หากพวกเขาเป็นชั่วขณะคุณอาจลองสุ่มเลือกสองสามร้อยคะแนนอย่างชาญฉลาดในโดเมนของคุณ หากเป็นพื้นที่คุณอาจต้องการเพียงแค่สแน็ปช็อตเพียงเล็กน้อยและไม่ใช่ 1500 และอีกครั้งไม่ใช่คุณสมบัติทั้งหมด
  3. สำหรับการหาเวลาเฉลี่ยคุณสามารถเพิ่มไปยังฟิลด์เดียวกันและไม่ต้องกังวลเกี่ยวกับมิติเวลาใช่ไหม ค่าเฉลี่ยเชิงพื้นที่นั้นเจ็บปวดแม้ว่าโดยเฉพาะถ้าคุณต้องการดูวิวัฒนาการในช่วงเวลาหนึ่ง แต่การประมวลผลออนไลน์มากขึ้นก่อนที่จะทิ้งข้อมูลสามารถลดขนาดของมัน ...

นี่หมายถึงการทำงานที่ค่อนข้างเล็กเพื่อให้มีเอาต์พุตเฉพาะแทนที่จะเป็นงานทั่วไปขนาดใหญ่ แต่สิ่งนี้จะช่วยลดต้นทุนและขนาดลง หวังว่านี่จะช่วยได้!

อีกสิ่งหนึ่งที่ฉันต้องการเพิ่มโดยทั่วไปความละเอียดของข้อมูลเป็นสิ่งจำเป็นสำหรับรีสตาร์ทไฟล์เท่านั้นเช่นไฟล์เพื่อเริ่มการจำลองของคุณ คุณไม่ต้องการสิ่งเหล่านี้จำนวนมากสำหรับการจำลองที่กำหนด (สมมุติว่า 100 ดังนั้นถ้าเกิดอะไรขึ้นระหว่างการรีสตาร์ท 2 ครั้งคุณจะสูญเสียการคำนวณของคุณไม่เกิน 1%) ในขณะที่คุณอาจต้องการเพิ่มความถี่ของผลลัพธ์สำหรับคุณ ภาพยนตร์. และคุณสามารถทำได้ด้วยความละเอียดเพียง 1 / 64th (1 ทุก 4 คะแนนในแต่ละทิศทาง)


ทำไมค่าเฉลี่ยเชิงพื้นที่จึงเจ็บปวด? เพียงแค่ทำทันทีและเขียนผลซึ่งควรมีขนาดเล็ก
David Ketcheson

@DavidKetcheson Spatial averaging เจ็บปวดเพราะมันต้องใช้การสื่อสารจำนวนมากและอาจได้รับอิทธิพลจากโทโพโลยีของโดเมนของคุณไม่ใช่หรือ? แน่นอนว่าถ้าคุณมีตาราง orthogonal ที่บริสุทธิ์ตรงกับกรอบอ้างอิงของคุณมันก็ไม่ได้เลวร้ายเกินไป แต่คุณยังต้องทำการผสมผสานที่ชาญฉลาดของการคำนวณและ MPI_REDUCE เพราะด้วยตารางที่มีขนาดนั้นคุณไม่สามารถทำได้ ALL_REDUCE ในวันที่ 1 โปรเซสเซอร์ฉันคิดว่า ...
FrenchKeldar

1
ตกลงตอนนี้ฉันเข้าใจความคิดเห็นของคุณแล้ว แต่โดยทั่วไปแล้วการสื่อสารนั้นไม่ได้เลวร้ายนักเนื่องจากคุณสามารถเฉลี่ยในแต่ละกระบวนการภายในและจากนั้นลดการลอยเพียงครั้งเดียวต่อกระบวนการ จากประสบการณ์ของฉัน (บน 65K core BlueGene / P) ค่าใช้จ่ายนี้เป็นเรื่องเล็กน้อยโดยเฉพาะเมื่อเทียบกับค่าใช้จ่าย I / O ในความเป็นจริงเราทำ ALL_REDUCE เหนือแกน 65K ทั้งหมดในทุกขั้นตอนและมันเร็วมาก
David Ketcheson

@DavidKetcheson จริงๆแล้วตอนนี้ฉันคิดว่าฉันเข้าใจจุดของคุณผิดและฉันก็ประเมินค่าใช้จ่ายในการลดข้อมูลด้วยเช่นกัน สิ่งที่ฉันมีอยู่ในใจคือสิ่งที่คล้ายกับค่าเฉลี่ย spanwise / azimuthal ซึ่งคุณจะต้องจัดเก็บ / ส่งออกข้อมูล 2D เต็มรูปแบบซึ่งอาจหรืออาจจะไม่อยู่ในกริดเดียวกับกริดการคำนวณ แต่คุณถูกต้องค่าใช้จ่ายจริงของ MPI_ALL_REDUCE นั้นไม่ใช่ปัญหาในตัวเอง
FrenchKeldar

8

ฉันคิดว่าอาจารย์คนปัจจุบันของศิลปะนี้คือการทดลองทางฟิสิกส์ของอนุภาคขนาดใหญ่ (ฉันคุ้นเคยกับCDFและD0มากที่สุดเพราะฉันแก่แล้วและทำงานที่มหาวิทยาลัยชิคาโก) มีทริกเกอร์ฮาร์ดแวร์ที่ละทิ้งเพตาไบต์ (หรือมากกว่า) ต่อปี อย่างไรก็ตามนี่เป็นเรื่องของ quantization / discretization หรือ "ทิ้งสิ่งที่คุณไม่ต้องการ" ฉันไม่แน่ใจว่าคุณสามารถให้คำตอบที่สมเหตุสมผลโดยทั่วไป มันจะเป็นการดีกว่าที่จะ จำกัด ปัญหาให้แคบลงเช่น "ฉันมีการจำลอง PDE ที่แยกได้ด้วยวิธีต่อไปนี้และต้องการลดตัวอย่างได้อย่างมีประสิทธิภาพ"


3

Peter LePage มีชื่อเสียงมากในแวดวง lattice-QCD สำหรับการแนะนำวิธีการที่สามารถลดกริด lattice ขนาดใหญ่ที่ไม่สามารถทำได้โดยการค้นหาและใช้โซลูชันการวิเคราะห์ระยะสั้นที่ดี

สิ่งนี้เทียบเท่ากับการสังเกตว่าชุดของเส้นโค้งที่ได้รับการคัดเลือกมาอย่างดีสามารถอนุญาตให้ใช้การรวมที่แม่นยำพร้อมกับนอตน้อยกว่าวิธีการสี่เหลี่ยมคางหมู (ยกเว้นในกรณีของคุณ

ผลลัพธ์คือคุณทำการค้าขนาดข้อมูลดิบของชุดข้อมูลเพื่อการคำนวณต่อโหนด - ขั้นตอน แต่ออกมาข้างหน้าในที่สุดเพราะปัญหามิติของคุณสูง

ฉันไม่ใช่วิชาที่ฉันรู้ดีพอที่จะให้คำแนะนำที่ดี แต่มันได้ผลในบางสาขาในอดีต


3

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

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

2) การเลือกข้อมูลที่เก็บไว้อย่างระมัดระวังมากขึ้น นี่เป็นสถานการณ์เฉพาะสูงโชคไม่ดี

3) บีบอัดข้อมูลของคุณก่อนจัดเก็บหรือใช้ไลบรารีหน่วยเก็บข้อมูลพร้อมตัวเลือกการบีบอัดรวมเช่น HDF5

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

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