การปรับใช้ฟังก์ชัน ArcGIS แบบกำหนดเอง


9

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


ทำไมไม่เขียนแรสเตอร์ชั่วคราวลงในดิสก์ RAM จากนั้นคุณจะไม่ต้องเขียนรหัสการมองเห็นตั้งแต่เริ่มต้นซึ่งมาพร้อมกับความเสี่ยงและค่าใช้จ่ายของตัวเอง
whuber

เป็นความคิดที่ดี. ฉันจะทำยังไงต่อไป? นั่นไม่ใช่สิ่งที่รัฐ @Radar เป็นไปไม่ได้ในคำตอบด้านล่างหรือไม่
Ross Fuhrman

4
คุณติดตั้งดิสก์ RAMบนระบบของคุณ รายละเอียดแตกต่างกันไปตามระบบปฏิบัติการ จากนั้นคุณชี้โฟลเดอร์ scratch ArcGIS ที่มัน คุณสามารถทำได้โดยใช้SSDโดยเฉพาะถ้า rasters ของคุณมีขนาดใหญ่หรือถ้าคุณไม่มี RAM มาก
whuber

ฉันชอบความคิดของดิสก์ RAM SSD มีความเสี่ยงเนื่องจากไม่ดีสำหรับการอ่าน / เขียนอย่างต่อเนื่องเนื่องจากคุณสามารถสึกหรอได้อย่างรวดเร็ว
เรดาร์

2
SSD ที่ใช้แฟลชจะอยู่ได้ตั้งแต่ 1 - 5 ล้านการเขียน @Radar แต่ DRAM SSD จะไม่ "เสื่อมสภาพ" เลย เยี่ยมชมstoragesearch.comสำหรับข้อมูลเพิ่มเติม (มากมาย)
whuber

คำตอบ:


5

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

ดังนั้นวิธีหนึ่งในการเร่งความเร็วคอขวดเนื่องจากดิสก์ระดับกลาง I / O คือการตั้งค่าดิสก์ RAM (ซื้อ RAM เพิ่มเติมหากจำเป็น) และวางโฟลเดอร์ขูดไว้ที่นั่น (ซึ่งมักจะเป็นการตั้งค่าซอฟต์แวร์)

อีกทางเลือกหนึ่งคือการติดตั้งอุปกรณ์โซลิดสเตต DRAMระดับไฮเอนด์(SSD) ซึ่งเป็นบล็อกของ RAM ในบรรจุภัณฑ์ที่แยกต่างหากพร้อมด้วยอินเตอร์เฟสอิเล็กทรอนิกส์เพื่อทำหน้าที่เหมือนดิสก์ไดรฟ์ มันติดตั้งในระบบคอมพิวเตอร์แทนดิสก์ไดรฟ์และจะทำงานเหมือนกับดิสก์ไดรฟ์อื่น ๆ โดยไม่ต้องใช้ซอฟต์แวร์เพิ่มเติม แต่จะอ่านและเขียนได้เร็วเท่ากับการเข้าถึงหน่วยความจำ สิ่งเหล่านี้มีราคาค่อนข้างแพง แต่น่าจะมีเพียงชิ้นเล็ก ๆ เท่านั้นที่จำเป็นสำหรับการจัดเก็บแรสเตอร์ระดับกลางที่มีขนาดใหญ่มาก

ก่อนที่จะทำตามขั้นตอนเหล่านี้สิ่งสำคัญคือต้องมีโปรไฟล์กระบวนการในการตรวจสอบที่คอขวดเป็นจริง (Windows ได้รับการจัดส่งด้วยแอพรวบรวมและตรวจสอบแอพที่มีประสิทธิภาพมากขึ้นในช่วงไม่กี่ปีที่ผ่านมาพร้อมใช้งานใน Win 7 ในฐานะ Task Manager / Resource Monitor pair และแน่นอนว่ามีแอพที่คล้ายกันจำนวนมาก สามารถกำหนดค่าเพื่อแคชดิสก์อ่านและเขียนใน RAM ในช่วงเวลาสั้น ๆ การแคชทำงานเหมือนกับดิสก์ RAM แต่อาจเร็วกว่า: ซอฟต์แวร์คิดว่ากำลังเขียนไฟล์ระดับกลางไปยังดิสก์ แต่ระบบปฏิบัติการเขียนไว้ชั่วคราวกับ RAM ก่อนไม่ใช่การเข้าถึงดิสก์ด้วยหวังว่าเร็ว ๆ นี้ข้อมูลเดียวกัน จะถูกอ่านและลบกลับซึ่งในกรณีนี้การเขียนแบบฟิสิคัลจะไม่จำเป็น

ด้วยจำนวนการคำนวณที่จำเป็นสำหรับการคำนวณการมองเห็นอย่างเต็มรูปแบบ (ในอัลกอริทึมไร้เดียงสาทุกเซลล์จะต้องได้รับการตรวจสอบการมองเห็นเพียงครั้งเดียวสำหรับแต่ละทัศนะ) อย่างน้อยที่สุดเราควรสงสัยว่าความเร็วในการคำนวณไม่ใช่ดิสก์ I / O ที่นี่ หากเป็นเช่นนั้น RAM disk หรือ SSD จะเสียเวลาและเงิน ความพยายามควรมุ่งไปที่การวิเคราะห์และปรับปรุงอัลกอริทึมพื้นฐานแทน

การอภิปรายว่าประสิทธิภาพของดิสก์ RAM ช่วยให้ ArcGIS ปรากฏในเธรดอื่นหรือไม่


+1 การตอบสนองที่ยอดเยี่ยม ผมคิดว่าคน GIS ยังควรจับตามองในการใช้วัตถุประสงค์ทั่วไปของกราฟิกที่หน่วยประมวลผลหรือGPGPU ฉันสงสัยว่าเกมยิงคนแรกที่ใช้ประโยชน์จาก GPU เพื่อตรวจสอบการมองเห็นวัตถุจากที่ตั้งของนักกีฬา คงจะดีถ้าได้เห็นการใช้งานOpenCLของปัญหานี้ บางทีถ้า GIS ใช้ GPU มากกว่านั้นมันอาจดึงดูดความสนใจของเด็ก ๆ ที่โตขึ้นมาเล่นวิดีโอเกม
Kirk Kuykendall

ฉันตั้งใจจะพูดถึง GPU ที่ได้รับการปรับให้เหมาะกับการทำสิ่งต่าง ๆ เช่นการกำหนดพื้นผิวที่ซ่อนอยู่ซึ่งคล้ายกับสิ่งที่ ISurfaceOp2.Visibility ทำ
Kirk Kuykendall

ความคิดที่ดี @Kirk Manifold ใช้ NVIDIA GPUs (และทำมาหลายปีแล้ว) นอกจากนี้ยังมีงานวิจัยอิสระในหน้านี้ ฉันเป็นส่วนหนึ่งของความพยายามให้ข้อเสนอเพื่อพัฒนาการนำพีชคณิตมาใช้บนแผนที่
whuber

นี่คือคำตอบที่ยอดเยี่ยม ฉันทำโปรไฟล์ที่แนะนำและปรากฏว่าอาจมีคอขวด I / O ดังนั้นฉันจึงใช้โซลูชันที่ใช้ RAM disk (ฉันเลือก IMDisk) ในที่สุดสิ่งนี้ไม่ได้ลดเวลาในการดำเนินการให้เสร็จสมบูรณ์
Ross Fuhrman

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

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