Tăng tốc độ giải thuật mã hóa Huffman cho nén ảnh số bằng GPU

9 187 1
Tăng tốc độ giải thuật mã hóa Huffman cho nén ảnh số bằng GPU

Đang tải... (xem toàn văn)

Thông tin tài liệu

Trong bài viết này, tác giả đưa ra phương pháp cải tiến giải thuật Huffman áp dụng trong nén ảnh có độ phân giải cao bằng cách chia ảnh thành các khối con để có thể thực hiện mã hóa song song trên các lõi của GPU.

Điều khiển – Cơ điện tử - Truyền thông TĂNG TỐC ĐỘ GIẢI THUẬT MÃ HÓA HUFFMAN CHO NÉN ẢNH SỐ BẰNG GPU Đào Huy Du* Tóm tắt: Trong phương pháp nén đặc biệt phương pháp nén không tổn hao muốn kết nén đạt tỷ lệ nén cao đồng nghĩa với việc thời gian nén cao Giải thuật mã hóa Huffman giải thuật mã hóa khơng mát thơng tin áp dụng vào việc nén đối tượng (văn bản, hình ảnh,…) cần độ xác cao, nhiên giải thuật cần khoảng thời gian lớn để thực thi thao tác mã hóa Trong báo này, tác giả đưa phương pháp cải tiến giải thuật Huffman áp dụng nén ảnh có độ phân giải cao cách chia ảnh thành khối để thực mã hóa song song lõi GPU Việc thực thi giải thuật đề xuất thực thi GPU NVIDIA kết hợp với thư viện hỗ trợ xử lý song song MatLab, đồng thời, đưa kết để so sánh hiệu suất việc mã hóa có sử dụng khơng sử dụng GPU Từ khóa: Paralell Computing, GPU, Huffman, Paralell Coding ĐẶT VẤN ĐỀ Với mục đích cắt giảm chi phí việc lưu trữ ảnh thời gian để truyền ảnh xa đảm bảo chất lượng ảnh, nén ảnh bước quan trọng q trình truyền thơng lưu trữ Nén ảnh áp dụng rộng rãi thực tế như: truyền văn dạng đồ họa, nén ảnh y tế, ảnh liệu chụp từ vệ tinh v.v Nén ảnh kỹ thuật sử dụng để làm giảm kích thước ảnh cách loại bỏ số thành phần dư thừa ảnh hay thay thành phần ảnh thành phần khác nhằm làm giảm kích thước ảnh Phương pháp cắt giảm thơng tin dư thừa liệu gốc làm cho liệu sau nén nhỏ nhiều so với liệu gốc gọi phương pháp nén mát thông tin Ngược lại, phương pháp nén mà sau giải nén thu xác liệu gốc gọi phương pháp nén không mát thông tin [1] Một số ảnh cần độ xác cao thường phải áp dụng kỹ thuật mã hóa khơng mát thơng tin để truyền thơng lưu trữ Ví dụ lĩnh vực y tế, kỹ thuật chụp CT-Scanner lát cắt hình ảnh lên đến 150MB cao hơn, vậy, tập liệu đầy đủ cho chẩn đốn trung bình từ 200MB đến 400MB [2] Với liệu ảnh vậy, độ phân giải lớn cần nhiều dung lượng lưu trữ đặc biệt chi phí cho thời gian nén giải nén cao Giải thuật mã hóa Huffman sử dụng rộng rãi ứng dụng liên quan đến truyền thông, ứng dụng nén liệu ảnh video [3] [4], giải thuật đặc biệt phù hợp với tập liệu lớn có số lượng đối tượng xuất Giải thuật mã hóa Huffman gồm có bước chính: Bước thứ nhất, liệu ảnh đầu vào xử lý để tạo nhị phân bảng từ mã; Bước thứ 2, mức xám liệu đầu vào so sánh với bảng từ mã để tạo luồng bit nhị phân Trong bước thứ 2, giai đoạn chiếm nhiều thời gian giai đoạn nén Huffman việc phải so sánh phần tử tập liệu với bảng từ mã để tạo chuỗi liệu mã hóa Cho dù việc mã hóa Huffman song song vấn đề phức tạp, song có nhiều cơng trình tập trung nghiên cứu như: tác giả P Berman, M Karpinski Y Nekrich [5] nghiên cứu việc sử dụng n xử lý để tạo bảng từ mã song song, chưa đề cập đến vấn đề mã hóa song song Trong [6], tác giả trình bày phương pháp giải mã song song mà có bị lỗi q trình truyền từ tập liệu mã hóa Trong [7], tác giả đề cập đến 80 Đào Huy Du, “Tăng tốc độ giải thuật mã hóa Huffman cho nén ảnh số GPU.” Nghiên cứu khoa học công nghệ ảnh hưởng kiến trúc phần cứng khác đến việc mã hóa Huffman theo phương pháp động Các kỹ thuật nén JPEG MPEG áp dụng phương pháp mã hóa Huffman để làm tăng tốc độ nén [8] [9] [10] [11] Với đời phát triển nhanh chóng xử lý đồ họa GPU (Graphics Processing Unit) với Kiến trúc thiết bị tính toán hợp CUDA (Compute Unified Device Architecture ) NVIDIA với mơ hình xử lý SIMD (Single Instruction Multi Data), nhiều nhà nghiên cứu tập trung giải toán xử lý liệu GPU Trong [12], tác giả sử dụng GPU để song song hóa giải thuật mã hóa theo độ dài đạt tốc độ xử lý cao cách giới hạn cho độ dài từ mã; Trong [13], tác giả thay đổi giải thuật Huffman để tạo khối liệu nén giải nén hoàn toàn độc lập với làm tăng tốc độ lên gấp lần so với mã hóa Huffman Trong nghiên cứu này, chúng tơi thực việc mã hóa ảnh mầu có độ phân giải cao sử dụng giải thuật Huffman cách tạo ma trận mầu sau chia ma trận thành khối để đưa vào thực lõi GPU Kết kiểm nghiệm cho thấy tốc độ mã hóa giải mã tăng khoảng lần so với thực giải thuật Huffman Bài báo trình bày 04 mục: Mục trình bày kiến trúc CPU-GPU phương thức xử lý GPU[3]; Mục 3: Mã hóa Huffman song song; Mục 4: Kiểm thử Phương pháp mã hóa Huffman song song để thực thi GPU kết so sánh việc thực giải thuật CPU GPU; Mục 5: Kết luận KIẾN TRÚC BỘ XỬ LÝ ĐỒ HỌA - GPU CPU xem não hệ thống máy tính, hệ thống máy tính thường tích hợp hệ thống card đồ họa; hệ thống không phục vụ cho ứng dụng xử lý đồ họa mà phát triển để thực số chức tính tốn theo mơ hình SIMD Hệ thống Card đồ họa gọi GPU (Graphics Processing Unit) Để thực thao tác tính tốn cách hiệu quả, GPU cần hỗ trợ kiến trúc tính toán song song Nvidia phát triển gọi CUDA (Compute Unified Device Architecture - Kiến trúc thiết bị tính tốn hợp nhất) [14] Như hình 1, CPU thường thiết kế với vài lõi nhiên nhớ Cache có kích thước lớn nên việc truy cập nhớ không bị giới hạn Trong đó, GPU bao gồm hàng trăm lõi xử lý đồng thời hàng nghìn luồng lệnh, GPU hỗ trợ việc tăng tốc độ thực công việc đồng thời tiết kiệm chi phí đầu tư Qui trình tính tốn GPU thực thi sau [14]: Dữ liệu chuyển từ nhớ (trên CPU) đến ng nhị phân Huf_Tree tương ứng cách xếp giá trị bảng theo giá trị tăng dần nút nhị phân gán trọng số W mức xám GreyLevel bảng Pro_Table 84 Đào Huy Du, “Tăng tốc độ giải thuật mã hóa Huffman cho nén ảnh số GPU.” Nghiên cứu khoa học công nghệ Algorithm3 BinaryTree Parfor iii=1:3 // each CPU Sort Pro_table_(Red, Green, Blue) ascending i=n while i>=1 if(Huf_tree[i]≠null) T=merge(Huf_Tree[i], Wi[1]) Remove Wi[1] from Wi if (weight(Greylevel) ≠ 1/2i-1)or (Wi≠ ) if(Next_greylevel[i] ≠i-1 ) Next_greylevel[i-1]= next_greylevel[i] Next_greylevel[i]=i-1 if(weight(greylevel) > 1/2i-1) Wi-1=merger(Wi-1,Greylevel) if(Huf_Tree(i)is odd) Huf_Tree(Next_greylevel[i]=last(Wi)) i= Next_greylevel[i] Giải thuật Chia ma trận thành phần thành khối (Block) mã hóa block ma trận thành phần thành file nhị phân tương ứng (song song CPU) Chia ma trận thành phần khối khối mã hóa đồng thời số lõi NumberGPUCore GPU, kết mã hóa lưu file nhị phân binarry_file Algorithm4 BinaryBlocks thread=NumberGpuCore Parfor n=(1÷thread) for i= (1:lenght(Huff_Tree)) codeword[i]=’’ parfor xx=gpuarray(1:length(index) ) for ind=1:length(symb) if index(xx)==symb(ind) np_data_t{xx}=np(ind); end end end convert block into binary_file add2bytes(binary_file); end Giải thuật Ghép File nhị phân thành File tổ hợp hoàn chỉnh Algorithm5 Mergefile(n); for x=1:n(Binary_File) Final_File(Merge Binary_File); end Tạp chí Nghiên cứu KH&CN quân sự, Số Đặc san ACMEC, 07 - 2017 85 Điều khiển – Cơ điện tử - Truyền thông KIỂM THỬ Trong phần thử nghiệm cho giải thuật nén Huffman song đề xuất, cài đặt giải thuật CPU GPU hỗ trợ kiến trúc CUDA Nvidia có cụ thể sau: Cấu hình CPU GPU Intel(R)Xeon(R)CPUE3NVIDIA Quadro 600, 96 Cores, Phần cứng 1225V2@3.3Ghz@3.3Ghz GPU Memory Specs: GB DDR3, Core, 7GB Ram MaxThreadsPerBlock: 1024 Windows 10, 64-bit Windows 10, 64-bit Operating System Phần mềm Operating System Matlab Matlab R2014c R2014a Hai ảnh mầu chụp với độ phân giải cao đưa vào mã hóa VietnamFlag Flowers: Hình VietNamFlag Hình Flowers Cơ sở liệu ảnh sau: Bảng Các thông số liệu ảnh Tên ảnh VietNamFlag Flowers Dung lượng 5,8MB 24,7MB Kích thước 3000x4496 3920x2205 Thử nghiệm thứ nhất: thực nén ảnh sở liệu giải thuật Huffman CPU Thử nghiệm thứ hai: thực giải thuật nén Huffman đề xuất GPU Hai ảnh mầu đưa vào để thực mã hóa chia thành Block đưa đến Core GPU để xử lý Cụ thể, với ảnh VietNamFlag chia thành 3000 Blocks; ảnh Flowers chia thành 3920 Blocks Hai ảnh xử lý 1024 Thread 96 Core GPU Kết thu sau: Bảng So sánh kết giải thuật cài đặt CPU GPU Tên ảnh VietNamFlag Flowers Dung lượng 5,8MB 24,7MB Kích thước 3000 x 4496 3920 x 2205 Số Block 3000 3920 Thời gian CPU 1,5027 27,337 mã hóa(s) GPU 2,170 4,614 86 Đào Huy Du, “Tăng tốc độ giải thuật mã hóa Huffman cho nén ảnh số GPU.” Nghiên cứu khoa học cơng nghệ Hình Kết mô giải thuật CPU GPU KẾT LUẬN Trong báo, tác giả xây dựng giải thuật Huffman song song phép thực song song xử lý đồ họa GPU Trong giải thuật này, ảnh mầu có kích thước lớn phân chia thành Block, số Block số hàng ma trận, giá trị phần tử Block tương ứng với mức xám mã hóa dựa bảng từ mã xây dựng Kết mã hóa cuối thu lưu thành file nhị phân Do giải thuật thiết kế cho phép tách chuyển Block vào Core GPU để thực thao tác mã hóa cách đồng thời cho nhiều Block nên rút ngắn khoảng thời gian mã hóa ảnh Dựa kết thực thi cho thấy, khoảng thời gian rút ngắn từ đến lần so với thực giải thuật CPU Ngoài ra, tốc độ mã hóa phụ thuộc vào số Core GPU, giải thuật cài đặt GPU có nhiều Core tốc độ tính tốn nhanh TÀI LIỆU THAM KHẢO [1] M Rabbani and P W Jones, "Digital Image Compression," vol Spie, 1991 [2] Anders Eklund, Paul Dufort, Daniel Forsberg and and Stephen LaConte, "Medical Image Processing on the GP: Past, Present and," Medical Image Processing, vol 17, no 8, pp 1073-1094, 2013 [3] M Adler, "Deflate algorithm," [Online] Available: http://www.gzip.org [4] ISO/IEC JTC 1/SC 29/WG1 – Coding of Still [Performance] ISO/IEC JTC 1/SC 29/WG1 N6922, 2015 [5] P Berman,M Karpinsk and Y Nekrich, "Approximating Huffman Codes in Parallel," Journal of Discrete Algorithms, Vols Vol 5, no 3, pp 479-490, 2007 [6] M B a W Plandowski, "Guaranteed Synchronization of Huffman Codes with Known Position of Decoder," Proceedings of Data Compression Conference, pp 3342, 2009 [7] L.Y Liu, J.F Wang, R.J Wang and J.Y Lee, "Design and hardware architectures for dynamic Huffman coding," Proc Computers and Digital Techniques, pp 411418, 1995 [8] J.S Patrick, J.L Sanders, L.S DeBrunner and and V.E DeBrunner, "JPEG Tạp chí Nghiên cứu KH&CN quân sự, Số Đặc san ACMEC, 07 - 2017 87 Điều khiển – Cơ điện tử - Truyền thông compression/decopmression via parallel processing," Proc Signals,Systems and Computers, pp 596-600, 1996 [9] Y Nishikawa and S Kawahito and T Inoue, "A Parallel Image Compression System for High-Speed Cameras," Proc International Workshop on Imaging Systems and Techniques, pp 53-57, 2005 [10] S.T Klein and Y Wiseman, "Parallel huffman decoding with applications to jpeg files," The Computer Journal, vol 46, p 487–497, 2003 [11] S Wahl, H.A Tantawy, Z Wang and P Wener and S Si, "Exploitation of Context Classification for Parallel Pixel Coding in Jpeg-LS," Proc IEEE International Conference on Image Processing, pp 2001-2004, 2011 [12] A Balevic, "Parallel Variable-Length Encoding on GPGPUs," Proc Parallel Processing Workshops, pp 26-35, 2010 [13] R.L Cloud, M.L Curry, H.L Ward and A Skjellum and P Bangalore, "Accelerating Lossless Data Compression with GPUs," Journal of Undergraduate Research, vol 3, pp 26-29, 2009 [14] I Buck and and J Nickolls , “NVIDIA CUDA software and GPU parallel computing architecture”, In Microprocessor Forum, 2007 [15] Cuda, https://en.wikipedia.org/wiki/CUDA, [Online] [16] J D Owens, M Houston, D Luebke, S Green, J E Stone and a J C Phillips, "GPU Computing," IEEE Proceedings, Vols Vol 96, No 5, p DOI: 10.1109/JPROC.2008.917757, May 2008 [17] D A Huffman, "A Method for the Construction of Minimum Redundancy Codes," Proceedings of the Institute of Radio Engineers, vol 40, pp 1098-1101, 1952 ABSTRACT ACCELERATING HUFFMAN CODING FOR IMAGE COMPRESSION ON GPU Dijkstra's algorithm executed parallel on multi-core processor is the best option, but the cost of multi-core processors is extremely expensive GPU launch to be a new choice for the field of parallel computing There are many research methods to build algorithm Dijkstra that allows to run on the graphics processor and give positive results in terms of time than the execution on multiple processors In parallel the implementation phase of the algorithm on GPUs requires data copy operations from the CPU to the GPU to calculate and vice versa when returning results It is the speed limit of the algorithm calculations In this paper, the author would like to present parallelization method Dijkstra algorithm to execute on the GPU with the method that does not copy the data to maximize the speed calculation algorithm Keywords: Paralell Computing, GPU, Huffman, Paralell Coding Nhận ngày 12 tháng 05 năm 2017 Hoàn thiện ngày 10 tháng năm 2017 Chấp nhận đăng ngày 20 tháng năm 2017 Địa chỉ: 88 Khoa Điện Tử - Trường Đại Học Kỹ Thuật Công Nghiệp Thái Nguyên * Email: daohuydu@tnut.edu.vn Đào Huy Du, “Tăng tốc độ giải thuật mã hóa Huffman cho nén ảnh số GPU.” ... Số Block 3000 3920 Thời gian CPU 1,5027 27,337 mã hóa( s) GPU 2,170 4,614 86 Đào Huy Du, Tăng tốc độ giải thuật mã hóa Huffman cho nén ảnh số GPU. ” Nghiên cứu khoa học cơng nghệ Hình Kết mơ giải. .. giải thuật Huffman để tạo khối liệu nén giải nén hoàn toàn độc lập với làm tăng tốc độ lên gấp lần so với mã hóa Huffman Trong nghiên cứu này, chúng tơi thực việc mã hóa ảnh mầu có độ phân giải. .. sử dụng giải thuật Huffman cách tạo ma trận mầu sau chia ma trận thành khối để đưa vào thực lõi GPU Kết kiểm nghiệm cho thấy tốc độ mã hóa giải mã tăng khoảng lần so với thực giải thuật Huffman

Ngày đăng: 30/01/2020, 06:43

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan