Abstract:
การลดสัญญาณรบกวนในภาพ (Image Denoising) เป็นกระบวนการขจัดสัญญาณรบกวนในภาพให้เหลือน้อยที่สุด ถูกนำมาใช้เพื่อให้ภาพมีคุณภาพดีมากขึ้น ซึ่งสัญญาณรบกวนภาพอาจเกิดได้จากหลายสาเหตุ ทั้งจาากระบวนการสร้าง, เก็บหรือส่งภาพ ส่งผลให้ภาพที่ได้ไม่ชัดเจนหรือผิดเพี้ยนไปจากความเป็นจริง จึงมีการค้นคว้ากระบวนการเพื่อลดสัญญาณรบกวนภาพหลากหลายวิธี เพื่อปรับปรุงแก้ไขให้ภาพมีคุณภาพมากขึ้น สำหรับวิธีการลดสัญญาณรบกวนภาพ การใช้วิธีเกาส์ไซเดล (Gauss Seidel) เป็นหนึ่งในวิธีการแก้ปัญหาทางวิทยาศาสตร์ที่ได้รับความนิยมและได้ถูกนำวิจัย (Moghnieh, 2010) เพื่อลดสัญญาณรบกวนภาพ ด้วยการนำมาประมวลผลแบบขนานบนหน่วยประมวลผลแบบหลายแกน ด้วยโปรแกรมโอเพ่นเอ็มพี (OpenMP) ที่ให้ความเร็วในการประมวลเทียบกับใช้หน่วยประมวลผลแบบแกนเดียวมากกว่าเดิมถึง 38 เท่า ในชื่อ สไลดิ้งวนิโดวส์ เกาส์ ไซเดล (Sliding Window Gauss Seidel) ซึ่งยังมีข้อจำกัดอยู่ที่จำนวนแกนของหน่วยประมวลผลที่ไม่มากนักในปัจจุบัน เช่น 2, 4, 6, 8 แกน เป็นต้น จากนั้นมีการนำงานวิจัยดังกล่าวมาพัฒนาจากการใช้บนหน่วยประมวลผลแบบหลายแกนมาพัฒนาบนหน่วยประมวลผลกราฟิกส์2 ที่ทำงานแบบขนานด้วยจำนวนหลายพันแกน โดยสถาปัตยกรรมคูด้า ซึ่งทำให้ใช้เวลาประมวลผลน้อยลง ในงานวิจัยชิ้นนี้จะนำงานวิจัยที่พัฒนาบนหน่วยประมวลผลกราฟิกส์ (Dolwithayakul, 2013) มาปรับปรุงด้วยวิธีการสตรีมมิ่ง ด้วยความคาดหวังว่าจะใช้เวลาที่น้อยลง และภาพมีคุณภาพเหมือนเดิม
Gauss Seidel is a popular iterative method used in many scientific computations. We are interested in using Gauss Seidel for denoising images and videos. Several attempts have been proposed to parallelize the algorithm. The recent one is based on multicore, called Sliding Window Gauss Seidel (Moghnieh, 2010). However, when applying the algorithm to the GPUs which has hundreds to thousands of cores. The algorithm cannot utilize the all threads effectively. Thus, the further improvement is to rearrange the thread management and apply the technique specific to GPU such as streaming. Our preliminary experiments show that the streaming technique can improve the speedup up to 38x compared to the one without streaming. In scientific computing, Gauss Seidel (GS) is the iterative method that has been used for solving the systems of linear equations. Sliding Window Gauss Seidel was the efficient way effect to parallelize Gauss Seidel (GS) and Successive over-relaxation method (SOR) currently. The work1 was designed based on multi-core processor, running OpenMP. In this Work, we extend the Sliding Window Gauss-Seidel on GPU (Dolwithayakul, 2013) with better utilization of GPU cores, using many threads, utilizing idle cores by using horizontal sliding window which makes the cores start working earlier. We consider the support of CUDA architecture such as streaming with the asynchronous memory transfer, and memory optimization.