Sự ra đời của các bộ xử lý đồ họa GPU (Graphics Processing Units) đã làm thay đổi đáng kể hiệu năng của các hệ thống tính toán bởi khả năng xử lý song song trong các bộ xử lý này. Tuy nhiên, với những bài toán song song không đầy đủ NFPP (not-fully parallelized problems) khi vẫn tồn tại trong nó các ràng buộc về xử lý và dữ liệu thì việc sử dụng GPU khi thực hiện các bài toán này không đạt được hiệu quả như mong đợi. Trong phạm vi của bài báo, nhóm tác giả đề xuất một số phương pháp nhằm nâng cao hiệu suất tính toán trên GPU cho các bài toán NFPP.
THE INTERNATIONAL CONFERENCE ON MARINE SCIENCE AND TECHNOLOGY 2016 Một số phương pháp gia tăng hiệu suất xử lý GPU tốn song song khơng đầy đủ Methods to enhance the computing performance on GPU in not-fully parallelized problems Vũ Đình Trung, Nguyễn Trọng Đức Trường Đại học Hàng hải Việt Nam, trungvd@vimaru.edu.vn Tóm tắt Sự đời xử lý đồ họa GPU (Graphics Processing Units) làm thay đổi đáng kể hiệu hệ thống tính tốn khả xử lý song song xử lý Tuy nhiên, với tốn song song khơng đầy đủ NFPP (not-fully parallelized problems) tồn ràng buộc xử lý liệu việc sử dụng GPU thực tốn khơng đạt hiệu mong đợi Trong phạm vi báo, nhóm tác giả đề xuất số phương pháp nhằm nâng cao hiệu suất tính tốn GPU cho tốn NFPP Các phương pháp đề xuất áp dụng trường hợp cụ thể tốn tìm trọng tâm cụm phân cụm liệu mờ tổng quát GFKM (Generalized Fuzzy k-Means clustering) Từ khóa: Song song khơng đầy đủ, xử lý đồ họa, phân cụm Abstract The introduction of the Graphics Processing Units have changed significantly the performance of the computing system by the parallel processing capability of this processors However, with the not-fully parallelized problems (NFPP) when it still exists the constraints of data and processing, the use of GPU performing this task has not achieved the expected efficiency Within the scope of this paper, the authors propose some methods to enhance the computing performance on the GPU for NFPP The proposed methods are applied in a specified case, which is the problem of finding cluster centers in the generalized fuzzy k-means clustering Keywords: Not-fully Parallelized, GPU, data clustering Đặt vấn đề Trong toán song song không đầy đủ tồn ràng buộc xử lý liệu Như vậy, việc sử dụng GPU thực tốn khơng đạt hiệu khơng thể tách rời bước xử lý để thực thi song song Ngoài ra, tốn song song khơng đầy đủ tạo lên từ toán song song không đầy đủ khác, việc truy cập liệu không đồng Để hạn chế ràng buộc liệu, tăng tính song song cho toán NFPP, giải pháp đề xuất [1, 7] thường tập trung vào việc xếp lại liệu nhằm đạt hiệu truy cập nhớ tốt nhất, sau giải thuật song song áp dụng để thu gọn liệu Trong phạm vi báo, nhóm tác giả đề xuất hai giải thuật: giải thuật xếp đếm song song, giải thuật xếp theo khóa ổn định Các giải thuật áp dụng tốn tìm trọng tâm cụm phân cụm liệu mờ tổng quát Để triển khai thuật toán, thư viện Thrust CUDA [2] sử dụng Nội dung báo bao gồm 04 mục: mục - Đặt vấn đề; mục - Bộ xử lý đồ họa GPU: mơ hình, kiến trúc xử lý đồ họa GPU CUDA; mục - Bài tốn tìm trọng tâm cụm: bước xử lý, phương pháp đề xuất kết thực nghiệm; mục - Kết luận, đánh giá phương pháp đề xuất, hướng nghiên cứu, phát triển Bộ xử lý đồ họa GPU 2.1 Kiến trúc GPU Bộ xử lý đồ họa GPU thiết kế đặc biệt cho việc tính tốn chun sâu song song hóa [1, 10] Để đạt hiệu suất song song cao, GPU sử dụng kiến trúc dòng lệnh - đa luồng HỘI NGHỊ QUỐC TẾ KHOA HỌC CÔNG NGHỆ HÀNG HẢI 2016 441 THE INTERNATIONAL CONFERENCE ON MARINE SCIENCE AND TECHNOLOGY 2016 xử lý (SIMT - Single Instruction - Multi Threads) (hình 1) Một số lượng lớn luồng thực thi song song liệu khác Hình Kiến trúc xử lý đồ họa GPU 2.2 Kiến trúc tính tốn hợp CUDA Nhằm tăng hiệu xử lý cho GPU, kiến trúc lập trình song song mục đích chung kiến trúc thiết bị tính tốn hợp CUDA (Compute Unified Device Architecture) NVIDIA đề xuất [1] Trong mơ hình lập trình theo kiến trúc CUDA, GPU xem đồng xử lý có khả xử lý số lượng lớn luồng song song Một chương trình nguồn đơn giản bao gồm mã chủ chạy CPU mã hạt nhân chạy GPU, tính tốn chun sâu tác vụ song song cài đặt mã hạt nhân thực thi GPU Các luồng GPU tổ chức thành khối luồng, khối xử lý đồng xử lý luồng Các luồng khối luồng chia sẻ liệu thơng qua nhớ chia sẻ thực đồng biên, khơng có chế đồng tự nhiên cho khối luồng khác ngoại trừ việc dừng chạy mã hạt nhân Tùy thuộc vào số xử lý luồng GPU mà mã hạt nhân chạy song song xen kẽ; mã hạt nhân kết thúc, xử lý luồng lên lịch trình để xử lý mã hạt nhân Bài toán tìm trọng tâm cụm 3.1 Tính tốn trọng tâm cụm Trong thuật toán phân cụm mờ tổng quát GFKM, việc tính tốn trọng tâm cụm xác định biểu thức (1) [8]: u Cj(p+1) = XiS j q i, j u XiS j Xi , for S j = {Xi: Cj NNTi, i = to N} (1) q i, j Trong đó: p: vòng lặp tại, Cj(p+1) trọng tâm cụm thứ j (j = k); Xi: điểm liệu thứ I; NNTi: M số trọng tâm cụm gần Xi Giá trị tối ưu M [8] 2; ui,j: hệ số thành viên xác định mức độ Xi thuộc cụm Cj, ui,j [0;1]; q: hệ số mờ hóa (fuzzifier), giá trị tối ưu q xác định theo biểu thức (2) [9] 1418 12.33 q =1+( +22.05)d-2 + ( +0.243)d-0.0406In(N)-0.1134 (2) N N với N số điểm liệu tập liệu d số chiều liệu HỘI NGHỊ QUỐC TẾ KHOA HỌC CÔNG NGHỆ HÀNG HẢI 2016 442 THE INTERNATIONAL CONFERENCE ON MARINE SCIENCE AND TECHNOLOGY 2016 Trong bước cập nhật hệ số thành viên ui,j trước đó, liệu ma trận hai chiều kích thước N×d với số hàng số điểm liệu số cột số chiều liệu Ma trận hai chiều N×d lưu dạng mảng chiều Mỗi luồng truy cập đến vùng nhớ điểm liệu liên tục hợp thể hình tính tốn M hệ số thành viên lớn cho điểm liệu Điều giúp đạt hiệu suất truy cập nhớ tốt tiêu tốn chu kỳ lệnh hơn, thời gian thực thi lệnh giảm đáng kể nhiều luồng hoạt động song song đồng GPU Các luồng T1 T2 T3 … TN-1 TN Dữ liệu X (N ×d ) X1 X2 X3 … XN-1 XN Hình Sự truy cập liệu hợp Tuy nhiên, việc lưu trữ liệu dạng gây khó khăn cho bước tìm trọng tâm cụm Tại bước này, luồng thực việc tính tốn trọng tâm cụm dựa việc thu gọn điểm liệu thuộc cụm Các điểm thuộc cụm rời rạc, việc truy cập tới điểm liệu lúc thiếu hợp (hình 3) Các luồng T1 T2 T3 … Tk-1 Tk Dữ liệu X (N ×d ) X1 X2 X3 X4 X5 X6 … XN-1 XN Hình Sự truy cập liệu không hợp Trong biểu thức (1), phần tử số, việc nhân hệ số thành viên với véc tơ điểm liệu thực thi song song chiều (hình 4), nhiên, việc truy cập tới hệ số thành viên điểm liệu thiếu hợp Các luồng T1,1 T1,2 T1,3 … T1,d-1 T1,d Điểm liệu X1 X1,1 X1,2 X1,3 … X1,d-1 X1,d Điểm liệu X3 X3,1 X3,2 X3,3 … X3,d-1 X3,d Hình Xử lý song song chiều điểm liệu 3.2 Phương pháp đề xuất Đầu tiên, liệu chuyển vị từ N×d thành d×N sử dụng hàm chuyển vị thư viện CUBLAS CUDA [3], nhằm đạt truy cập nhớ tốt chiều liệu (hình 5) Lượt thứ d Lượt thứ hai Lượt thứ Dữ liệu X (d ×N ) T1 T2 X1,1 X2,1 … … T1 T2 … … … XN ,2 T1 T2 … … X1,d X2,d … XN ,d … XN ,1 X1,2 X2,2 … Hình Dữ liệu chuyển vị (d×N) HỘI NGHỊ QUỐC TẾ KHOA HỌC CÔNG NGHỆ HÀNG HẢI 2016 443 THE INTERNATIONAL CONFERENCE ON MARINE SCIENCE AND TECHNOLOGY 2016 Tiếp theo, để đạt hiệu suất truy cập điểm liệu hệ số thành viên tốt hơn, mảng NNT xếp theo khóa số trọng tâm cụm giá trị xếp theo số điểm liệu hệ số thành viên thuộc cụm Các giải thuật xếp cho mảng NNT: Giải thuật xếp đếm song song: Bước 1: tìm histogram hay số điểm liệu thuộc cụm; Bước 2: quét scan để tính số điểm liệu bắt đầu cụm; Bước 3: xếp đếm dựa mảng scan Bước sử dụng kỹ thuật song song thao tác nguyên tử Khi nhiều luồng gia tăng số điểm cụm định, thao tác nguyên tử đảm bảo luồng thực mà không bị xung đột việc đọc ghi liệu với luồng khác Tuy nhiên, việc sử dụng thao tác nguyên tử để xếp không đảm bảo thứ tự số điểm liệu thuộc cụm dẫn đến việc truy cập chéo liệu làm giảm hiệu suất (hình 6) Luồng Dữ liệu X (d ×N ) T1 T2 … T3 … X1,1 X2,1 T1 T2 XN ,1 X1,2 X2,2 T3 … … XN ,2 T1 … T2 X1,d X2,d T3 … … XN ,d Hình Truy cập chéo tới điểm liệu Giải thuật xếp theo khóa ổn định sử dụng thư viện Thrust CUDA Giải thuật xếp đảm bảo thứ tự số điểm liệu sau xếp, giúp tránh việc truy cập chéo liệu (hình 7) Song, việc khởi tạo trì thứ tự hàm dẫn tới việc tốn thời gian xử lý hơn, không bù cho thời gian xử lý nhanh bước tiếp theo, đặc biệt liệu không đủ lớn Luồng Dữ liệu X (d ×N ) T1 T2 X1,1 X2,1 T3 … … T1 T2 XN ,1 X1,2 X2,2 T3 … … XN ,2 T1 … T2 X1,d X2,d T3 … … XN ,d Hình Truy cập tới điểm liệu Sau hai bước tiền xử lý trên, việc tính tốn trọng tâm cụm đạt hiệu suất tốt Cụ thể, mã hạt nhân xử lý cụm chiều liệu Các mã hạt nhân sử dụng giải thuật rút gọn song song tối ưu phát triển Mark Harris [7] chạy song song xen kẽ xử lý luồng độc lập (hình 8) Trong ví dụ minh họa hình 8, sau bước chuyển vị xếp, mã hạt nhân thực thi xử lý luồng định Với cụm thứ nhất, SM1 thực thi mã hạt nhân tính tổng hệ số thành viên hay mẫu số biểu thức (1) SM2, SM3, SM4 thực thi mã hạt nhân tính tổng tích hệ số thành viên hay tử số biểu thức (1) chiều thứ nhất, thứ hai thứ Sau đó, cơng việc chia tử số cho mẫu số thực GPU CPU HỘI NGHỊ QUỐC TẾ KHOA HỌC CÔNG NGHỆ HÀNG HẢI 2016 444 THE INTERNATIONAL CONFERENCE ON MARINE SCIENCE AND TECHNOLOGY 2016 Đầu vào Chuyển vị liệu Chỉ số Dữ liệu X (8x3) 9 10 6 10 10 X (3x8) 1 NNT Sắp xếp theo Chỉ số X số cụm U' 0.9 NNT(M=2) 3 4 4 10 1 0.9 0.85 SM1 4 0.1 0.1 6 Hệ số thành viên U 0.9 0.1 0 0.9 0.1 0.85 0 0.15 0.1 0.9 0 0.75 0.25 0.8 0.2 0 0.85 0.15 0.1 0.9 10 10 SM2 SM3 SM4 2 0.8 0.85 0.1 0.1 Cụm Histogram Scan U' 0.9 0.1 0.9 0.1 0.85 0.15 0.9 0.1 0.75 0.25 0.8 0.2 0.85 0.15 0.9 0.1 4 4 4 12 10 11 12 13 14 15 3 4 4 0.9 0.75 0.2 0.15 0.25 0.15 0.9 Hình Sắp xếp theo số cụm 3.3 Kết thực nghiệm Để kiểm chứng phương pháp đề xuất, nhóm tác giả tiến hành thực nghiệm PC với cạc đồ họa tầm trung NVIDIA GeForce GTX 760 [4, 5] CPU Intel(R) Core(TM) i5-4690 [6] Thực nghiệm thứ nhất: thực với liệu trung bình “LBP” sinh từ ba ảnh thực: “Lena,” “Baboon,” “Peppers” Bộ liệu 16 chiều, bao gồm 49.152 điểm liệu số trọng tâm cụm Kết thực nghiệm bảng cho thấy phương pháp xếp đếm cho kết tốt phương pháp xếp theo khóa ổn định Kết khơng tốt phương pháp xếp theo khóa ổn định trường hợp việc tốn thời gian khởi tạo trì thứ tự xử lý xếp với liệu khơng đủ lớn trình bày phần 3.2 Bảng Sắp xếp liệu “LBP” CPU GPU - xếp đếm 1.00 1.52 GPU - xếp theo khóa ổn định 0.98 Thực nghiệm thứ hai: thực liệu lớn “poker”, bao gồm 10 chiều liệu với 1.025.010 dòng số trọng tâm cụm 10 Kết thực nghiệm Bảng Hình cho thấy k < phương pháp xếp theo khóa ổn định tốt phương pháp xếp đếm Ngược lại, k > 8, tăng tốc hai phương pháp có chênh lệch khơng lớn Kết với liệu số trọng tâm cụm lớn số điểm liệu thuộc cụm giảm, khơng khai thác hết khả tính toán song song GPU, dẫn đến tăng tốc hai phương pháp giảm Bảng Sắp xếp liệu “poker” CPU GPU - xếp đếm GPU - xếp theo khóa ổn định 1.00 1.85 1.89 HỘI NGHỊ QUỐC TẾ KHOA HỌC CÔNG NGHỆ HÀNG HẢI 2016 445 THE INTERNATIONAL CONFERENCE ON MARINE SCIENCE AND TECHNOLOGY 2016 Hình Quan hệ hiệu suất hệ thống số lượng trọng tâm cụm Thực nghiệm thứ ba: thực liệu nhân tạo với 491.520 điểm liệu, trọng tâm cụm số chiều liệu d thay đổi Hình 10 Quan hệ hiệu suất hệ thống số chiều liệu Hình 10 cho thấy, phương pháp sử dụng xếp đếm, tốc độ giảm nhanh từ khoảng 2.3 xuống 1.8 d nhỏ 16; sau đó, tốc độ có lên xuống khơng ổn định trì khoảng 1.6 đến 1.8 Với phương pháp sử dụng xếp theo khóa ổn định, tốc độ tăng nhanh từ khoảng 1.5 tới 2.5 d nhỏ 64; số chiều lớn hơn, tốc độ trì ổn định khoảng 2.5 HỘI NGHỊ QUỐC TẾ KHOA HỌC CÔNG NGHỆ HÀNG HẢI 2016 446 THE INTERNATIONAL CONFERENCE ON MARINE SCIENCE AND TECHNOLOGY 2016 Trong thí nghiệm này, với số lượng trọng tâm cụm nhỏ số điểm liệu thuộc cụm đủ lớn sức mạnh GPU khai thác tốt Sự khác biệt kết đạt hai phương pháp lí giải phương pháp xếp đếm liên quan đến thao tác nguyên tử, thiếu tính ổn định cho số điểm liệu thuộc cụm làm giảm hiệu suất truy cập nhớ Phương pháp xếp theo khóa ổn định giúp cho việc truy cập nhớ chiều liệu hiệu quả, đặc biệt số lượng chiều liệu ngày tăng Kết luận Trong báo, nhóm tác giả phân tích yếu tố ảnh hưởng đến hiệu suất xử lý song song tốn song song khơng đầy đủ, từ đưa phương pháp gia tăng hiệu suất xử lý toán xử lý đồ họa Kết thực nghiệm xử lý đồ họa GPU tầm trung, số lượng xử lý luồng hạn chế, phương pháp đề xuất cho kết khả quan, nhanh trung bình từ 1.5 đến lần so với xử lý CPU Những kết nghiên cứu làm sở giải toán liệu lớn phương pháp phân cụm, như: tốn phân tích liệu tuyến, luồng giao thơng, toán nguồn nhân lực thuyền viên,… Tài liệu tham khảo [1] NVIDIA “CUDA C programming guide” CUDA toolkit documentation March-2015 NVIDIA corporation, accessed 01 April 2015 [2] NVIDIA “Thrust quick start guide” CUDA toolkit documentation March-2015 NVIDIA corporation, accessed 01 April 2015 [3] NVIDIA “CUBLAS library v7.0” CUDA toolkit documentation March-2015 NVIDIA corporation, accessed 01 April 2015 [4] NVIDIA “CUDA GPUs” NVIDIA developer March-2015 NVIDIA corporation accessed 01 April 2015 [5] NVIDIA “Geforce GTX 760” Geforce March-2015 NVIDIA corporation, accessed 01 April 2015 [6] Intel “CPU Intel(R) Core(TM) i5-4690” Intel processor specifications Intel corporation accessed 01 April 2015 [7] Harris M “Optimizing parallel reduction in cuda” NVIDIA developer technology, 2007 pp1-38 [8] Jen-Che Lai “Generalized fuzzy k-means clustering using m nearest cluster centers” Master of science thesis National Taiwan Ocean University June-2013 pp1-18 [9] V Schwammle and O N Jensen “A simple and fast method to determine k-means cluster analysis” Bioinformatics, Vol 26 September-2010 pp2841-2848 [10] You Li, Kaiyong Zhao, Xiaowen Chu, and Jiming Liu “Speeding up k-means algorithm by GPU” CIT 2010 IEEE 10th international conference on Bradford June-2010 pp115-122 [11] Bin Zheng, Jinbiao Chen, Shaosheng Xia, and Yongxing Jin “Data analysis of vessel traffic flow using clustering algorithms” Intelligent computation technology and automation (ICICTA) 2008 international conference on, Hunan Vol#2 November-2008 pp243-246 [12] Eva Lema, George P Vlachos, and Dimitrios Zikos Linking causal factors and the human element in maritime accidents using K-means clustering International journal of risk assessment and management Vol.19 No.3 pp.214-227 HỘI NGHỊ QUỐC TẾ KHOA HỌC CÔNG NGHỆ HÀNG HẢI 2016 447 ... hiệu suất xử lý song song tốn song song khơng đầy đủ, từ đưa phương pháp gia tăng hiệu suất xử lý toán xử lý đồ họa Kết thực nghiệm xử lý đồ họa GPU tầm trung, số lượng xử lý luồng hạn chế, phương. .. trúc CUDA, GPU xem đồng xử lý có khả xử lý số lượng lớn luồng song song Một chương trình nguồn đơn giản bao gồm mã chủ chạy CPU mã hạt nhân chạy GPU, tính toán chuyên sâu tác vụ song song cài đặt... xử lý (SIMT - Single Instruction - Multi Threads) (hình 1) Một số lượng lớn luồng thực thi song song liệu khác Hình Kiến trúc xử lý đồ họa GPU 2.2 Kiến trúc tính tốn hợp CUDA Nhằm tăng hiệu xử