SỰ KIỆN, VẤN ĐỀ VÀ CÂU HỎI ĐỘ TIN CẬY CHO GPUs TIỂU LUẬN MÔN HỌC XỬ LÝ SONG SONG Đơn vị xử lý đồ họa (GPUGraphics Processing Units) cung cấp quá trình song song lớn, bao gồm các mô hình thực tế như đa nhân, đa luồng và SIMD. Ngày nay, hầu hết các máy tính đều được trang bị ít nhất một card đồ họa, có chứa một hoặc nhiều GPU song song trong máy tính để bàn. GPU thường được sử dụng với các chức năng chính của nó, đó là tính toán khả năng hiển thị, ánh sáng, phối cảnh… trong các trò chơi.
Trang 1ĐẠI HỌC HUẾ
TRƯỜNG ĐẠI HỌC KHOA HỌC
KHOA CÔNG NGHỆ THÔNG TIN
NHÓM 4 – CAO HỌC KHOA HỌC MÁY TÍNH B
(NĂM HỌC 2010 – 2012)
SỰ KIỆN, VẤN ĐỀ VÀ CÂU HỎI
- ĐỘ TIN CẬY CHO GPUs
TIỂU LUẬN MÔN HỌC
XỬ LÝ SONG SONG
Thành phố Huế, tháng 2/2012
Trang 2ĐẠI HỌC HUẾ
TRƯỜNG ĐẠI HỌC KHOA HỌC KHOA CÔNG NGHỆ THÔNG TIN
SỰ KIỆN, VẤN ĐỀ VÀ CÂU HỎI
- ĐỘ TIN CẬY CHO GPUs
TIỂU LUẬN MÔN HỌC
XỬ LÝ SONG SONG
GIÁO VIÊN GIẢNG DẠY: NHÓM HỌC VIÊN THỰC HIỆN:
LÊ BÁ MINH PHONG NGUYỄN THỊ THANH TÂM NGUYỄN THỊ THÀNH
NGUYỄN VŨ CÁT TƯỜNG
Thành phố Huế, tháng 2/2012
Trang 3MỤC LỤC
0Trang
LỜI NÓI ĐẦU 4
I Nghiên cứu các trường hợp và mô hình lập trình 5
1.1 Nghiên cứu trường hợp: NVIDIA GeForce 8800TX 5
1.2 Mô hình lập trình CUDA 6
1.3 Cài đặt thử nghiệm và biến thể đồng hồ 7
1.4 Thí nghiệm băng thông 8
1.5 Thí nghiệm chính xác 10
1.6 Thời gian và thí nghiệm giữa kỳ 11
II Cơ hội đáng tin cậy 14
2.1 Phòng chống lỗi 15
2.2 Lỗi chịu đựng 15
2.3 Loại bỏ lỗi 16
2.4 Dự báo lỗi 17
III Kết luận – Hướng phát triển 19
TÀI LIỆU THAM KHẢO 20
Trang 4LỜI NÓI ĐẦU
Đơn vị xử lý đồ họa (GPU-Graphics Processing Units) cung cấp quá trình song song lớn, bao gồm các mô hình thực tế như đa nhân, đa luồng và SIMD Ngày nay, hầu hết các máy tính đều được trang bị ít nhất một card đồ họa, có chứa một hoặc nhiều GPU song song trong máy tính để bàn GPU thường được
sử dụng với các chức năng chính của nó, đó là tính toán khả năng hiển thị, ánh sáng, phối cảnh… trong các trò chơi Khi công nghệ này được sử dụng rộng rãi, chi phí sẽ thấp hơn Phần lớn các trường hợp, card đồ họa không dành toàn bộ thời gian hoạt động của nó để thực hiện mã hóa trò chơi Do vậy, một hệ thống song song lớn là đảm bảo cho việc dành hết thời gian
Ngay sau khi có sự sẵn sàng của môi trường lập trình, dựa trên CUDA (Compute Unified Device Architecture) hoặc HLSL (ngôn ngữ shader cao cấp), các nhà nghiên cứu đã quan tâm đến việc sử dụng điện chung cho máy tính có cùng mục đích (GPGPU - tính toán mục đích chung trên GPU) Vì vậy, các ứng dụng có nguồn gốc khác nhau, ví dụ: Vật lý, mật mã 0, tuần tự 0 ADN và hình ảnh y tế Xu hướng để tính toán khối lượng công việc với GPU sẽ là DirectX11 (tính toán) hoặc là tiêu chuẩn OpenCL 0 Khối lượng công việc thực hiện chịu lỗi trên GPU không được đề xuất Tính toán hợp lý được thực hiện một cách đáng tin cậy Ý nghĩa của tính toán để tìm một khóa riêng là nếu chương trình chính xác, nhưng phần cứng bị lỗi và chương trình không bao giờ tìm thấy khóa
Ví dụ: Lỗi nhất thời có thể được gây ra từ sự biến động trong hiện tại, do bức xạ, hoặc RAM không hoạt động do đặc điểm kỹ thuật của nó Điều gì sẽ xảy ra nếu
mã hóa bị lỗi do lỗi thời hoặc làm thế nào chúng ta có thể phát hiện một chẩn đoán bị lỗi? Sự cần thiết phải làm là tính toán chính xác đã dẫn đến sự phát triển tinh vi hơn và đôi khi đắt tiền của đơn vị xử lý đồ họa 0, cần thiết bởi các ứng dụng CAD (đồ họa trong ngành kiến trúc, xây dựng)
Larrabee 0 là kiến trúc nhiều lõi cho máy tính thị giác Nó vẫn còn sử dụng nhiều lõi cũ CPUx86 trong trật tự và được tăng cường bởi một đơn vị xử lý vector rộng, cũng như một số các khối chức năng logic cố định Điều này cung cấp hiệu suất cao hơn nhiều mỗi watt và trên một đơn vị diện tích hơn so với ngoài trật tự của CPU trên khối lượng công việc song song cao Vision4ce 0 tung ra một dòng sản phẩm GRIP mới là SPIE gần đây tại Hội nghị chuyên đề Quốc phòng và An ninh Các GRIP-Beta cho thấy GPGPU dựa trên mô hình xử
lý hình ảnh, tương tự và Gigabit Ethernet video trực tuyến và chức năng trong khuôn khổ Gripworkx xử lý hình ảnh.Vision4ce nhúng địa chỉ thách thức các máy tính bình thường được phục vụ bởi các phương pháp FPGA đắt tiền hơn
Trang 5Tiểu luận này này trình bày các nghiên cứu cơ bản, trả lời các câu hỏi của một hệ thống, được trang bị với nhiều card đồ họa có thể được khai thác để phát hiện, dự đoán, ngăn chặn và chịu đựng lỗi hay không? Dĩ nhiên, chúng tôi không hạn chế tính toán chạy trên GPU một mình và cũng có thể xem xét gia công phần mềm của các bộ phận ứng dụng từ CPU với GPU Chúng tôi nhận thức một thực tế là, đánh giá này chỉ có thể được làm mẫu - nhưng nó có thể phục vụ như là một điểm khởi đầu cho một công việc trong tương lai Tất cả các
cơ chế phương tiện đầy đủ trong phần mềm và không yêu cầu phần cứng đặc biệt hoặc sửa đổi
Tiểu luận gồm các phần: Đầu tiên chúng ta trình bày ví dụ về việc triển khai GPU hiện tại trong mục 2 Phần tiếp theo cho thấy cách xử lý song song lớn của các GPU hiện đại có thể được khai thác cho độ tin cậy Phần cuối tóm tắt và kết luận tiểu luận
I NGHIÊN CỨU CÁC TRƯỜNG HỢP VÀ MÔ HÌNH LẬP TRÌNH 1.1 Nghiên cứu trường hợp: NVIDIA GeForce 8800 GTX
Trong mục này, chúng tôi mô tả kiến trúc cơ bản của gia đình GPU G80 từ NVIDIA vì điều này sẽ giúp hiểu các khả năng đáng tin cậy
Hình1 NVIDIA GeForce 8800 GTX
Trang 6GeForce 8800 GTX được chia thành 16 bộ xử lý trực tiếp (SMs), bao gồm
8 bộ xử lý trực tiếp (SPs), tạo ra tổng cộng 128 SP Mỗi SM có 8.192 đăng ký được chia sẻ giữa tất cả các luồng giao cho SMs Các luồng trên một lõi SM thực hiện trong SIMD thời trang, với những đơn vị hướng dẫn (IU) phát sóng các hướng dẫn hiện hành đểntám SPs Mỗi SP có một đơn vị số học thực hiện điểm số học đơn chính xác và hoạt động của số nguyên 32-bit Hình 1 cho thấy cái nhìn tổng quan về GeForce 8800 GTX Mỗi SM đã có hai đơn vị chức năng đặc biệt (SFUs), thực hiện hoạt động phức tạp hơn FP chẳng hạn như các chức năng siêu việt Các đơn vị số học và SFUs đầy đủ
Mỗi chỉ dẫn FP là hoạt động lên đến 8 byte dữ liệu Một yếu tố quan trọng ảnh hưởng đến cả hiệu suất và chất lượng là chính xác cho các hoạt động và đăng ký GeForceSeries hỗ trợ 32 bit và 16 định dạng điểm bit (gọi là phao và một nửa, tương ứng) 0 Các kiểu dữ liệu phao tương tự như IEEE754 (s23e8), một nửa có một định dạng s10e5 Một số mô hình, ví dụ: G200 cũng hỗ trợ độ chính xác tăng gấp đôi trong định dạng IEEE754R (một trong hai đơn vị chính xác trên một SM) Các bộ vi xử lý hỗ trợ thu thập và phân tán Vì vậy, nó có khả năng đọc và viết bất cứ nơi nào trong bộ nhớ địa phương trên các card đồ họa hoặc trong các phần khác của hệ thống Các G80 có nhiều trên chip nhớ có thể khai thác dữ liệu địa phương và chia sẻ dữ liệu, ví dụ như 64 KB off-chip bộ nhớ liên tục và 8 KB-chuyển bộ nhớ cache bộ nhớ liên tục trong mỗi SM Nếu nhiều luồng truy cập vào địa chỉ tương tự trong cùng một chu kỳ, các chương trình phát sóng bộ nhớ cache địa chỉ các luồng với độ trễ tương tự như truy cập đăng ký Ngoài các bộ nhớ cache liên tục, mỗi SM có 16 KB chia sẻ (dữ liệu) bộ nhớ hoặc bằng văn bản và tái sử dụng hoặc chia sẻ giữa các luồng Cuối cùng,
dữ liệu chỉ đọc được bởi các luồng nhưng không nhất thiết phải được truy cập đồng thời, bộ nhớ kết cấu off-chip và các on-chip lưu trữ kết cấu khai thác dữ liệu địa phương 2D
1.2 Mô hình lập trình CUDA
Các mô hình lập trình CUDA bao gồm ANSI C được hỗ trợ bởi một số từ khóa và xây dựng CUDA xử lý GPU như một coprocessor (bộ đồng xử lý) thực thi dữ liệu chức năng nhân song song Các nhà phát triển cung cấp một chương trình nguồn duy nhất bao gồm cả máy chủ (CPU, C) và mã nhân (GPU, CU)
Mã máy chủ truyền dữ liệu và mã đến và đi của GPU bộ nhớ toàn cầu thông qua cuộc gọi API và khởi tạo nhân Ở cấp độ cao nhất, mỗi nhân tạo ra một mạng lưới duy nhất, trong đó bao gồm nhiều khối luồng Mỗi khối luồng được giao cho một đơn SM trong suốt thời gian thực hiện của nó Một khối luồng bao gồm một số giới hạn các luồng mà có thể hợp tác Số lượng tối đa của luồng cho mỗi khối là 512 Luồng từ các khối khác nhau có thể hợp tác Mỗi luồng có thể
Trang 7đọc/ghi từ/đăng ký đề tài, bộ nhớ luồng - địa phương, chia sẻ bộ nhớ trong một khối, bộ nhớ toàn cầu và đọc từ không đổi bộ nhớ hoặc bộ nhớ kết cấu trong một mạng lưới Các máy chủ đã đọc/ghi truy cập trên hằng số, bộ nhớ toàn cầu và kết cấu Luồng trong cùng một khối có thể chia sẻ dữ liệu thông qua chia sẻ bộ nhớ và có thể thực hiện hàng rào đồng bộ.Nếu luồng là không độc lập, và đồng
bộ hóa giữa các khối luồngan toàn thực hiện bằng cách chấm dứt nhân
IU quản lý mọi thứ trong nhóm các luồng song song, được gọi là warps SM có thể thực hiện bằng cách lập kế hoạch trên không chen vào warps trên cơ sở theo hướng dẫn để ẩn độ trễ truy cập bộ nhớ toàn cầu và hoạt động số học độ trễ dài Khi một warps bị ngăn lại, SM có thể chuyển sang một warps đã sẵn sàng trong khối cùng một luồng khác nhau được SM phân công Mỗi warps thực hiện trong kiểu SIMD, với IU phát sóng cùng một hướng dẫn tám lõi trên một SM trên bốn chu kỳ đồng hồ liên tiếp Kể từ khi một trong những điểm ảnh tương đương với một luồng, và kể từ khi SPs là vô hướng, trình biên dịch lập lịch trình yếu tố điểm ảnh để thực hiện tuần tự: đỏ, sau đó màu xanh lá cây, sau đó màu xanh, và sau đó alpha
Hình 2 cho thấy Cụm xử lý luồng (TPC) được sử dụng trên các dòng G200 với 10 TPCs /tổng số Như mô tả, TPC gồm nhiều IU, SP và bộ nhớ địa phương
Hình 2 Cụm xử lý luồng (TPC)
1.3 Cài đặt thử nghiệm và biến thể đồng hồ
Trong mục này chúng ta trình bày kết quả đánh giá thử nghiệm đầu tiên của
sự thay đổi đồng hồ, từ khi chúng tôi muốn tăng tỷ lệ lỗi nhân tạo, quan sát hành
vi của hệ thống liên quan đến độ tin cậy và mô tả các số liệu hiệu suất cơ bản.Thiết lập thử nghiệm của chúng tôi bao gồm một hệ thống 6 GB bộ nhớ Core i7, cấu hình với hai NVIDIA GTX260 thẻ (PCIe 2.0 x16) Hai đĩa cứng (500 GB) trong chế độ RAID 0 Trong thí nghiệm đầu tiên với SLI, chúng tôi điều chỉnh đồng hồ động cơ, bóng đổ và tần số bộ nhớ Một hệ thống SLI được xây dựng trên cấp độ phần cứng và phải được cấu hình trên cấp độ phần mềm
Trang 8Hoặc là GPU làm việc độc lập trong chế độ SLI không hỗ trợ hiển thị đa trưng bày, tất cả các GPU trong một cấu hình SLI xuất hiện như là một đơn vị duy nhất, chủ yếu được sử dụng để tăng tốc độ các ứng dụng 3D và tính toán Đối với môi trường lập trình CUDA, một tổ chức phi-SLI hệ thống xuất hiện như là một tập hợp các card đồ họa, một hệ thống như là một card đồ họa SLI Nhiều GPU xuất hiện như nhiều luồng chủ Đồng hồ tỷ lệ điều chỉnh trong chế độ SLI được thực hiện cho cả hai thẻ đồng thời, trong chế độ không SLI, cả hai thẻ có thể được cấu hình riêng Các đồng hồ tốc độ tối đa (động cơ = 800, shader =
1650, bộ nhớ = 2700) MHz đôi khi kết quả trong các lỗi thực hiện của một nhân trong chế độ không SLI và hệ thống hoàn chỉnh thất bại trong chế độ SLI Vì vậy, chúng tôi áp dụng các cài đặt ít tích cực và đa dạng tần số đồng hồ giữa (Động cơ = 500, shader = 1150, bộ nhớ = 1.900) và (700, 1400, 2500) MHz Khối lượng công việc bao gồm một tính toán của công thức blackscholes cho
512 lặp đi lặp lại Cùng khối lượng công việc cũng đã được tính toán trên CPU Bên cạnh các vấn đề chính xác (xem Phần 0) không có độ lệch trừ cho các thiết lập đồng hồ cao nhất xảy ra Hình 3 cho thấy ảnh hưởng của biến thể của các tần
số đồng hồ của các shader, động cơ và bộ nhớ hiệu năng (SLI) Lưu ý rằng băng thông là băng thông thẻ nội bộ và không phải là băng thông của giao diện bên ngoài (PCIe) Từ thí nghiệm 2 kết luận đơn giản nhưng quan trọng là:
1 Một hệ thống trong chế độ SLI là ít đáng tin cậy hơn trong chế độ không SLI.Tính đáng tin cậy nên được thực hiện trên một hệ thống phi-SLI.Một hệ thống SLI có lợi thế hơn trong các ứng dụng tính toán chuyên sâu.Đối với các ứng dụng băng thông rộng hệ thống SLI không được ưa thích
2 Trong các thí nghiệm ép xung GPU thay vì có xu hướng hoàn toàn từ chối việc thực hiện của một nhân thay vì những tính toán bị lỗi (ép xung áp dụng vào đầu các thực hiện)
Thực tế, những con số này chỉ làm mẫu, nhưng kết quả có thể phục vụ như
là một định hướng trong tương lai
1.4 Thí nghiệm băng thông
Các câu hỏi trong mục này là để xác định băng thông trong MB cho mỗi thứ các kích cỡ chuyển giao khác nhau và các cấu hình khác nhau của một hệ thống SLI và không-SLI Băng thông là quan trọng ví dụ như khi kết quả của một tính toán dự phòng phải được chuyển giao lại cho CPU để so sánh Băng thông cơ bản của giao diện PCIe 2.0 được mô tả trong Bảng 1
Trang 9Hình 3 Hiệu suất hệ thống trong khi thay đổi tần số đồng hồ
Bảng 1 Băng thông cơ bản của PCIe 2.0
Khối với một kích thước nhất định hoặc chuyển từ máy chủ đến thiết bị, từ thiết bị tới máy chủ và từ thiết bị đến thiết bị Băng thông tối đa cho mỗi thiết bị trong thí nghiệm là 8 GBytes /s Hình4 cho thấy các băng thông cho bộ nhớ phân trang và ghim chặt Ghim chặt bộ nhớ cho phép các nhân tính toán để truy cập và chia sẻ bộ nhớ của máy chủ Chúng tôi áp dụng các thiết lập đồng hồ thấp nhất (động cơ = 500, shader = 1150, bộ nhớ = 1.900) xác định một băng thông thấp hơn bị ràng buộc Từ những kết quả, chúng ta thấy rằng các máy chủ chuyển giao thiết bị (gắn bộ nhớ) là hình thức thấp nhất để truyền dữ liệu, tiếp theo là thiết bị để lưu trữ (phân trang) thông tin liên lạc Bắt đầu từ kích thước
Trang 10khối lớn hơn 65536 byte, các thiết bị thông tin liên lạc là thiết bị nhanh nhất để truyền dữ liệu.
Hình 4 Băng thông cho các khối kích cỡ chuyển giao khác nhau
Chúng tôi lưu ý rằng băng thông thử nghiệm cho các thiết bị thông tin liên lạc thiết bị cao hơn giới hạn của đặc tả PCIe x16 2.0.Lý do cho điều này là việc chuyển được thực hiện trên card đồ họa và không vượt qua bus PCIe bên ngoài
1.5 Thí nghiệm chính xác
Các lĩnh vực của (COTS) GPU là không chính xác, đó là tốc độ Vì vậy, các ứng dụng chạy trên GPU phải được đặt câu hỏi chung Hầu hết các GPU sử dụng IEEE754R như định dạng điểm nổi Trong so sánh với IEEE754 làm tròn xảy ra, dẫn đến sự thiếu chính xác Tuy nhiên, có một số công việc ở quanh, bao gồm các độ chính xác 0
Trong mục này, chúng tôi không tập trung vào các lỗi làm tròn số Chúng tôi thích một phân tích thực nghiệm, vì chúng ta không biết thực hiện các thuật toán dấu chấm động trong GPU
Đặc biệt là thực hiện các chức năng siêu việt có nghĩa các thuật toán xấp xỉ,
mà chúng ta không thể biết nếu chúng ta không có một tiết lộ của GPU thực hiện đầy đủ, mà không phải là do lý do thương mại Kiến thức của tác giả, phương pháp này để kiểm tra độ chính xác của GPU là một sự mới lạ
Trang 11Chúng tôi đưa ra tiêu chuẩn để tính toán độ lệch hoạt động của GPU so với việc thực hiện CPU và coi ba loại dữ liệu khác nhau: integer, float và double Nửa-float được hỗ trợ bởi các shader và do đó không trực tiếp truy cập bằng CUDA Khi một haft-float được lấy cảm hứng từ IEEE754, tồn tại vô cùng nếu tất cả các bit của số mũ là một và phần định trị là số không.Một haft- float là một NaN nếu tất cả các bit số mũ và phần định trị là không phải số không.Tập hợp các tiêu chuẩn độ chính xác có thể được tải về từ các tiêu chuẩn 0.
Việc các vector hoạt động thực hiện trong dim(224) với các dữ liệu và hoạt động khác nhau được liệt kê trong bảng 2 Các dữ liệu vector ngẫu nhiên trong mỗi lần chạy Mỗi ô trong bảng 2 có độ lệch tối đa từ việc thực hiện CPU Đối với các tính toán mà có thể gây tràn, chẳng hạn như chức năng theo cấp số nhân, kích thước của các con số trong các vectơ ngẫu nhiên đã được hạn chế
Bảng 2 Độ lệch tối đa tuyệt đối từ thực hiện CPU
Thật đáng ngạc nhiên, các phép tính số học cơ bản như addvà sub hoặc mul và tất cả các hoạt động số nguyên không dẫn đến sự thiếu chính xác.Từ đó, chúng ta có thể kết luận rằng một mở rộng quy mô của float nhỏ không phải là
số nguyên có thể cải thiện độ chính xác trong một cách mà CPU và GPU kết quả
sẽ không khác nhau
1.6 Thời gian và thí nghiệm giữa kỳ
Trong phần này, chúng tôi trình bày kết quả thí nghiệm giữa kỳ để xác định đúng thời gian và độ tin cậy /ổn định của kết quả.Một đánh giá giữa kỳ, có nghĩa
là một khoảng thời gian quan sát của một tuần Một khoảng thời gian quan sát lâu hơn, ví dụ: qua hơn một tháng sẽ được đánh giá cao, nhưng không khả thi do những hạn chế kịp thời của công việc này Các tiêu chuẩn chính xác từ tiểu mục
0 được tính toán 185 lần Ngoài ra, chúng tôi tính toán khối lượng công việc trên