Lập trình song song trên nền đơn vị xử lý đồ họa và ứng dụng Hoàng Đình Thắng Trường Đại học Công nghệ Luận văn ThS. Chuyên ngành: Công nghệ thông tin; Mã số: 60 48 05 Người hướng dẫn: TS. Nguyễn Trí Thành Năm bảo vệ: 2010 Abstract: Giới thiệu nêu lên mục đích của lập trình song song, những khó khăn của lập trình song song truyền thống, dẫn đến yêu cầu một mô hình lập trình song song kiểu mới linh hoạt hơn. Tổng quan về đơn vị xử lý đồ họa (GPU): cung cấp cái nhìn tổng quan về tính toán song song đa dụng trên đơn vị xử lý đồ họa; mô tả sự khác nhau cơ bản giữa đơn vị xử lý trung tâm (CPU) và đơn vị xử lý đồ họa (GPU); giải thích các nguyên tắc cơ bản của tính toán song song đa dụng trên đơn vị xử lý đồ họa và giao diện lập trình ứng dụng (API) trên GPU. Mô hình trường ngẫu nhiên có điều kiện (CRF): trình bày mô hình lý thuyết CRF, phương pháp ước lượng tham số của mô hình CRF và một số ứng dụng của CRF. Ứng dụng GPU song song hóa từng phần công cụ CRF++, giới thiệu công cụ CRF++, cách thức mà tác giả của CRF++ thực hiện, từ đó đề xuất chiến lược song song CRF++ bằng GPU thông qua các thư viện lập trình cho GPU như CUDA, Thrust. Phần cuối của chương sẽ đưa ra kết quả thực nghiệm cũng như một số đánh giá, nhận xét. Keywords: Đồ họa; Công nghệ thông tin; Hệ thống thông tin; Lập trình song song. Content: MỞ ĐẦU Tính toán song song hay xử lý song song là quá trình xử lý thông tin trong đó nhấn mạnh việc nhiều đơn vị dữ liệu được xử lý đồng thời bởi một hay nhiều bộ xử lý để giải quyết một bài toán. Trái ngược với xử lý nối tiếp, đòi hỏi phải xử lý các công việc theo thứ tự tuần tự Có hai kiểu song song đó là: Song song về dữ liệu (data parallelism): là cơ chế sử dụng nhiều đơn vị xử lý thực hiện cùng một thao tác trên nhiều đơn vị dữ liệu . Song song lệnh (control parallelism): là cơ chế trong đó nhiều thao tác khác nhau tác động lên nhiều đơn vị dữ liệu khác nhau một cách đồng thời. Chíp đồ họa, với hàng chục lõi được sử dụng để tạo ra hình ảnh thực trên màn hình máy tính, rất phù hợp cho các nhiệm vụ xử lý song song. Trong khi đó thì bộ xử lý, với những lõi mạnh hơn nhưng số lượng ít hơn (giống như Core i7) lại phù hợp hơn cho các ứng dụng xử lý nối tiếp. Trong một báo cáo các nhà nghiên cứu của Intel cho biết, trung bình, NVIDIA GeForce GTX 280 (tung ra hồi tháng 6/2008) nhanh hơn gấp 2,5 lần so với bộ xử lý (BXL) Intel Core i7 960 3,2GHz, và nhanh hơn trên 14 lần trong những hoàn cảnh nhất định. Xử lý song song là hướng nghiên cứu quan trọng, nó giúp cho việc thực hiện các bài toán được nhanh hơn rất nhiều so với xử lý tuần tự. Luận văn sẽ hướng tới tìm hiểu bài toán xử lý song song trên nền đơn vị xử lý đồ họa (Graphic Processing Unit-GPU), một trong những hướng xử lý song song đang được phát triển mạnh trong thời gian gần đây. Đồng thời luận văn này cũng tìm hiểu về mô hình trường ngẫu nhiên có điều kiện (Conditional Random Fields-CRFs), một mô hình được ứng dụng thành công trong rất nhiều lĩnh vực như tin-sinh học, xử lý ngôn ngữ tự nhiên và khai phá text/web. CRF++ là một công cụ được xây dựng cho mô hình CRF, áp dụng cho các tác vụ xử lý ngôn ngữ tự nhiên như: nhận dạng thực thể tên (Named Entity Recognition), trích chọn thông tin (Information Extraction) và Text Chunking. CRF++ là một phần mềm nguồn mở, được xây dựng bằng ngôn ngữ C++. Luận văn này sẽ nghiên cứu cách mà tác giả của CRF++ thực hiện mô hình CRF lý thuyết. Từ đó đề xuất cách song song một số phần của CRF++ sử dụng mô hình song song trên đơn vị xử lý đồ họa. TÀI LIỆU THAM KHẢO Tiếng Việt 1. Hà Quang Thụy, Phan Xuân Hiếu, Đoàn Sơn, Nguyễn Trí Thành, Nguyễn Thu Trang, Nguyễn Cẩm Tú (2009), Giáo trình khai phá dữ liệu web, Nhà xuất bản Giáo dục Việt Nam. tr. 260-267. Tiếng Anh 2. NVIDIA Corporation (2010), NVIDIA CUDA C Programming Guide Version 3.1, NVIDIA Corporation 2701 San Tomas Expressway Santa Clara, CA 95050: http://developer.download.nvidia.com/compute/cuda/3_1/toolkit/docs/NVIDIA_CUDA_C_ ProgrammingGuide_3.1.pdf 3. NVIDIA Corporation (2010), NVIDIA CUDA C Best Practices Guide Version 3.1, NVIDIA Corporation 2701 San Tomas Expressway Santa Clara, CA 95050: http://developer.download.nvidia.com/compute/cuda/3_1/toolkit/docs/NVIDIA_CUDA_C_ BestPracticesGuide_3.1.pdf 4. NVIDIA Corporation (2010), NVIDIA CUDA Reference Manual Version 3.1, NVIDIA Corporation 2701 San Tomas Expressway Santa Clara, CA 95050: http://developer.download.nvidia.com/compute/cuda/3_1/toolkit/docs/CudaReferenceManua l.pdf 5. Jason Sanders, Edward Kandrot (2010), CUDA by example : an introduction to general- purpose GPU programming, Addision Wesley. 6. John Lafferty, Andrew McCallum, Fernando Pereira (2001), Conditional Random Fields: Probabilistic Models for Segmenting and Labeling Sequence Data, Proceedinhs of ICML- 2001. 7. Graphics processing unit: http://en.wikipedia.org/wiki/Graphics_processing_unit 8. 3dfx Interactive: http://en.wikipedia.org/wiki/3dfx_Interactive 9. CRF++: Yet Another CRF toolkit: http://crfpp.sourceforge.net/ 10. Thrust: http://code.google.com/p/thrust/ 11. Jared Hoberock, Nathan Bell, An Introduction To Thrust, NVIDIA Research: http://thrust.googlecode.com/files/An%20Introduction%20To%20Thrust.pdf 12. Neil Matthew, Richard Stones (2004), Beginning LinuxProgramming Third Edition, Wiley Publishing, Inc. 13. Mark Mitchell, Jeffrey Oldham, Alex Samuel (2001), Advanced Linux Programming, New Riders Publishing. 14. David B. Kirk and Wen-mei W. Hwu (2010), Programming Massively Parallel Processors: A Hands-on Approach, Elsevier Inc. 15. Hubert Nguyen (2007), GPU Gems 3, Addison Wesley Professional 16. Taku Kudo: http://chasen.org/~taku/index.html.en 17. Pinto, D., McCallum, A. Wei, X., and Croft, W. B. (2003). Table extraction using conditional random fields, Proceedings of the 26 th Annual International ACM SIGIR Conference on Research and Development in Information Retrieval (ACM SIGIR 2003) 18. Kristjansson, T., Culotta, A., Viola, P., and McCallum (2004). A. Interactive information extraction with constrained conditional random fields, Proceedings of the 19 th National Conference on Artificial Intelligence (AAAI-2004). 19. Taku Kudo, Kaoru Yamamoto, Yuji Matsumoto, Applying Conditional Random Fields to Japanese Morphological Analysis 20. Wayne Wood, (2010). A Brief Test on the Code Efficiency of CUDA and Thrust: http://www.codeproject.com/KB/Parallel_Programming/test-on-thrust-efficiency.aspx 21. Message Passing Interface: http://vi.wikipedia.org/wiki/MPI 22. Parallel Virtual Machine: http://en.wikipedia.org/wiki/Parallel_Virtual_Machine 23. Open Multi-Processing: http://en.wikipedia.org/wiki/OpenMP 24. POSIX Threads Programming: https://computing.llnl.gov/tutorials/pthreads/ 25. McCallum, A. and Li, W. (2003). Early results for named entity recognition with conditional random fields: feature induction and Web-enhanced lexicons, Proceedings of the 7 th Conference of the Natural Language Learning (CoNLL 2003). 26. Fuchun Peng, Andrew McCallum (1998), Accurate information extraction from research papers using conditional random fields, Proceedings of Human Language Technology Conference and North American Chapter of the Association for Computational Linguistics (HLT-NAACL), 2004. 27. Yejin Choi, Claire Cardie, Ellen Riloff and Siddharth Patwardhan, Identifying Sources of Opinions with Conditional Random Fields and Extraction Patterns, Proceedings of HLT/EMNLP 2005. 28. Zhu, J., Nie, Z., Wen, J. R., Zhang, B., and Ma, W. Y. (2005). 2D conditional random fields for Web information extraction, Proceeding of the 22nd International Conference on Machine Learning (ICML), 2005. 29. Erik F. Tjong Kim Sang and Sabine Buchholz. 2000. Intro-duction to the CoNLL-2000 shared task: Chunking. In Proceedings of CoNLL-2000 and LLL-2000, pages 127–132, Lisbon, Portugal. 30. Chunking: http://www.cnts.ua.ac.be/conll2000/chunking/ 31. Supervise itinerary: http://giamsathanhtrinh.vn/ . toán song song đa dụng trên đơn vị xử lý đồ họa; mô tả sự khác nhau cơ bản giữa đơn vị xử lý trung tâm (CPU) và đơn vị xử lý đồ họa (GPU); giải thích các nguyên tắc cơ bản của tính toán song song. đích của lập trình song song, những khó khăn của lập trình song song truyền thống, dẫn đến yêu cầu một mô hình lập trình song song kiểu mới linh hoạt hơn. Tổng quan về đơn vị xử lý đồ họa (GPU):. song song. Content: MỞ ĐẦU Tính toán song song hay xử lý song song là quá trình xử lý thông tin trong đó nhấn mạnh việc nhiều đơn vị dữ liệu được xử lý đồng thời bởi một hay nhiều bộ xử lý