Tải bản đầy đủ (.doc) (21 trang)

SỰ KIỆN, VẤN ĐỀ VÀ CÂU HỎI ĐỘ TIN CẬY CHO GPUs

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.23 MB, 21 trang )

ĐẠ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
1
ĐẠ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:
TS. NGUYỄN MẬU HÂN TRẦN NHƯ ĐĂNG TUYÊ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
2
MỤ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
3
LỜ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.
4
Tiể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
5
GeForce 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ể
6
đọ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.
7
Hoặ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.
8
Hình 3. Hiệu suất hệ thống trong khi thay đổi tần số đồng hồ
PCIe-Slot Làn/ Hướng Băng thông Đồng hồ
x1 1 0,5 Gbyte/s 2,5 GHz
x4 4 2 Gbyte/s 2,5 GHz
x8 8 4 Gbyte/s 2,5 GHz
x16 16 8 Gbyte/s 2,5 GHz
x32 32 16 Gbyte/s 2,5 GHz
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
9
khố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ạ.
10

Chú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(2
24
) 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ế.
Type Single Double INT32
Add 0 0 0
Sub 0 0 0
Mul 0 0 0
Div 0,125 0 0
Sqrt 0,0000152588 0 0
Sin 0,000000119209 1*10
-16
0
Cos 0,000000119209 1*10
-16
0
Log 0,000000953674 9*10
-16
0
Exp 0,00195313 4*10

-16
0
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 18
5
lần. Ngoài ra, chúng tôi tính toán khối lượng công việc trên
11
CPU với một lõi và một phiên bản song song trên 8 lõi có sẵn. Chúng tôi đo thời
gian cho từng tính toán, GPU và CPU và tính toán số học trung bình. Các card
đồ họa đã được cấu hình trong chế độ không SLI. Các kết quả được mô tả trong
hình. 5. Đối với một số trường hợp (INT hoạt động), việc thực hiện OpenMP
thậm chí còn nhanh hơn so với các GPU.
Hình 5: Kết quả thời gian
Từ kết quả trên, đầu tiên chúng ta thấy hoạt động phức tạp và chức năng
siêu việt cần nhiều thời gian-điều này không đáng ngạc nhiên, từ khi chỉ có hai
SFUs trên một SM. Xấp xỉ số nguyên cần thiết cho hai lần thời gian tương tự
hơn float, xấp xỉ đôi hai lần hơn các số nguyên(trong trung bình).
Hình 6.Thời gian Benchmark, biến thể, thấp nhất, cao nhất, trung bình
12

Các biến thể khác, ví dụ: Gây ra bởi các tương tác của người sử dụng bình
thường.Chúng tôi kết luận rằng kết quả không thể dự kiến được tại một thời gian
nhất định.Như vậy, tính toán trên card đồ họa có thể không được thực hiện phù
hợp cho các ứng dụng thời gian thực.Thú vị là thời gian từ CPU và GPU có một
kết nối, nghĩa là nếu thời gian cho các GPU lớn, thời gian của việc thực hiện
CPU tương ứng cũng cao hơn.Độ lệch kết quả trong mỗi lần chạy và kết quả
dường như tương quan.Điều này là đáng ngạc nhiên, kể từ khi chúng tôi thực
hiện một phiên bản không đồng bộ cho GPU chạy độc lập với CPU.Trong thí
nghiệm, không có độ lệch không bình thường (trừ trường hợp chính xác) giữa
CPU và GPU xảy ra.Các kết quả ổn định trong toàn bộ thời gian quan sát.
II. CƠ HỘI ĐÁNG TIN CẬY
Trong phần này, chúng tôi sẽ thảo luận về những cơ hội đáng tin cậy được
cung cấp bởi card đồ họa. Lưu ý, thuật ngữ của chúng tôi là dựa vào 0. Đầu tiên
chúng ta sẽ nhìn vào phần có nghĩa từ cây tin cậy (từ 0) trong hình 7. Sau đó,
chúng ta sẽ thảo luận về các phương tiện phòng chống lỗi, lỗi chịu đựng, lỗi loại
bỏ và lỗi dự báo trong các phần phụ sau. Chúng tôi không xác định bản chất
chính xác (ví dụ như flip-bit lỗi, lỗi truyền dẫn, lâu dài) của những lỗi trong một
mô hình, nhưng ý thức của thực tế, một mô hình lỗi đã được phát triển sau này.
Hình 7: Một phần từ cây tin cậy
Chúng tôi phân biệt các mức độ khác nhau có nghĩa là độ tin cậy khác nhau
có thể được áp dụng.Vì vậy, chúng tôi mô tả các ký hiệu quy ước trong bảng 3
và lưu ý các cấp, nơi không (0) có nghĩa là cấp cao nhất.
13
Tầng Tên Ý nghĩa
0 Host
Các máy chủ hoặc hệ thống,
Một hệ thống máy tính có chứa 1 hoặc nhiều CPU
và phần cứng đồ họa
Tích hợp phần cứng máy tính
1 CPU Đơn vị xử lý trung tâm

2 Processing core Lõi trong CPU
3 Thread Phần cứng mạch, bao gồm của đăng ký
Phần cứng đồ họa
1 Device Card đồ họa đơn
2 GPU Card đồ họa xử lý trung tâm
3 GP core Lõi trong GPU
4 Grid Tập hợp các khối mạch
5 Thread Block (TB) Khối truyền dẫn của đa mạch
Bảng 3. Ký hiệu quy ước
2.1 Phòng chống lỗi
Chúng tôi lưu ý rằng sự phát triển của nhân GPU bổ sung, thực hiện nhiệm
vụ tương tự như các CPU cùng một lúc, tự động liên quan đến sự đa dạng trong
phần cứng, phần mềm và thiết kế, kể từ khi hiện thực thông qua khác nhau và
bằng cách sử dụng trình biên dịch khác nhau, chúng tôi có tính đa dạng, xem xét
thực tế mà chúng tôi đã chỉ ra có một hệ thống, nhưng nhiều phiên bản của một
chương trình. Lưu ý, dự báo các lỗi cũng có thể được nhìn thấy như là một phần
thiết yếu của công tác phòng chống lỗi (xem mục 0 để biết thêm chi tiết).
2.2 Lỗi chịu đựng
Phương tiện cơ bản của lỗi chịu đựng là lỗi cấu trúc, thời gian, thông tin và
chức năng dự phòng. Đương nhiên, tất cả các mã liên quan đến dự phòng thông
tin có thể được tính bằng thẻ đồ họa. Một ý tưởng thú vị là để tăng tốc độ tính
toán của Reed-Solomon-Codes bởi GPU 0. Chức năng dư thừa có thể dễ dàng
đạt được bằng máy tính hoặc tính toán trên CPU và GPU, liên quan đến sự đa
dạng trong phần mềm hoặc bằng cách lập trình một tập hợp các chức năng cho
GPU. Khi bầu chọn giữa các kết quả, chúng ta có thể sử dụng khả năng vốn có
quyền biểu quyết được hỗ trợ bởi CUDA.
2.2.1 Dư thừa cấu trúc
Dự phòng cấu trúc có thể đạt được bằng cách tích hợp nhiều card đồ họa
vào một hệ thống máy tính duy nhất. Kết quả là dự phònglớn, ví dụ: thông qua
hai, ba, cấu hình tăng gấp bốn lần. Đương nhiên, chúng tôi thấy các lỗi chịu

đựng CPU không thể vĩnh viễn, nhưng lỗi GPU vĩnh viễn. Lưu ý, nó cũng có thể
kết hợp bo mạch chủ GPU và card đồ họa bên ngoài. Người ta phải nhận thức
14
được thực tế rằng nhiều (PCIe) card đồ họa có thể được cài đặt đồng thời, phát
sinh sự đa dạng trong phần cứng. Các mô hình đa xử lý cũng đã đến cho GPU.
NVIDIA GeForce 9800 GX2 bao gồm một cặp 65 nm G92 đồ họabộ vi xử lý
chạy ở 600 MHz. Các ATI Radeon ™ HD 4870 X2 có hai GPU 55 nm, một
GDDR3 bộ nhớ 512-bit giao diện và các tùy chọn để xây dựng một chế độ cấu
hình kép CrossfireX, kết quả là tổng cộng bốn GPU. Để giảm phụ thuộc vật lý,
ta nên thực hiện tính toán dư thừa trên thẻ khác nhau, sau đó trên GPU khác
nhau, sau đó trên lưới khác nhau. Hệ thống chương trình / hoạt động bổ sung có
thể thực hiện một lịch trình, phát sinh các tính toán dự phòng để các bộ phận
khác nhau của các hệ thống đồ họaphụ. Các tính toán dự phòng có thể được gọi
từ chương trình chính và chạy song song với việc tính toán CPU. So sánh có thể
được thực hiện bởi CPU hay GPU. Tuy nhiên, việc sản xuất các kết quả phải
được đồng bộ. Hình 8 cho thấy sự tích hợp. Nhược điểm bên cạnh việc đồng bộ
hóa mà người dùng phải quyết định mã nên được xác nhận bởi GPU và mã
nguồn của ứng dụng phải được sửa đổi. Ngoài ra, chỉ có hệ thống thủ tục có liên
quan có thể được sửa đổi.
Hình 8. CPU/GPU tính toán dự phòng
Hình 8, cho thấy rằng sự kết hợp của nhiều luồng và luồng GPU. Để thực
hiện đồng bộ mà không có thời gian chờ đợi CPU và /hoặc GPU, kết quả có thể
được viết vào một bộ đệm, nơi mà việc tính toán xác định nhận được rất riêng
của nó. Vì vậy, chúng ta không phải chờ kết quả để đi đến. Một bất lợi là trong
trường hợp của rollback, kết quả đã tính toán phải loại bỏ.Việc đồng bộ hóa của
máy chủ và các chủ đề GPU cung cấp một viễn cảnh mới cho nghiên cứu.
2.2.2 Dư thừa thời gian
15
Thời gian dự phòng là một đặc tính cần thiết của một hệ thống đa luồng, do
đó cũng cho card đồ họa bao gồm hàng trăm hoặc hàng ngàn luồng. Một tính

toán thời gian dự phòng có thể được thực hiện trên mọi phần tử có thể truy cập
của card đồ họa bằng cách làm lại việc tính toán trên cùng một hoặc (tốt hơn)
trên một thành phần khác nhau. Điểm duy nhất có cấu trúc hoặc luồng dư thừa
thời gian phụ thuộc là kiểm tra kết quả.Việc thực hiện trong phần mềm là rất
khó, kể từ khi CUDA không có khác biệt giữa vật lý và luồngảo.Hình9 minh họa
hai hình thức có thể dự phòng thời gian.
Hình 9. Dư thừa thời gian, phụ thuộc dữ liệu
Thời gian dự phòng trên GPU một lần nữa để đồng bộ hóa vấn đề.
2.3 Loại bỏ lỗi
Ngoài việc loại bỏ lỗi ECC trong bộ nhớ GPU 0, việc loại bỏ lỗi là một
điều khó khăn thực hiện bằng cách sử dụng GPU, bởi vì các đơn vị bị lỗi phải
được đặt trước và đúng mựcnhất được phục hồi. Trên một tính toán lỗi, chúng
ta phải lưu trữ một trạm kiểm soát. Ở đây, chúng tôi có thể dự phòng đề án cổ
điển lưu trữ các trạm kiểm soát trên các ổ đĩa cứng để lưu trữ các trạm kiểm soát
trên các thẻ. Điều đầu tiên là sử dụng một cấu hình thẻ gấp ba lần để phát hiện,
xác định vị trí và loại bỏ các lỗi trong cấu hình đồ họa. Ở đây, các card đồ họa
phải thực thi cùng mã, không đúng đồng bộ, nhưng trong một cách mà lỗi không
thể truyền giữa các thẻ. Chúng tôi không thảo luận về việc loại bỏ các lỗi bắt
đầu từ CPU với GPU (CPU ⇒ GPU) ở đây, mục tiêu của chúng tôi là hỗ trợ tính
toán của CPU.
2.3.1 Watchdog
16
GPU có thể được định kỳ kích hoạt bởi một bộ đếm thời gian bên ngoài để
theo dõi hoạt động. Bộ đếm thời gian thường xuyên phải có khả năng truy cập
trực tiếp vào bộ nhớ của card đồ họa. Bộ đếm thời gian bên ngoài là cần thiết,
bởi vì GPU không có khả năng tại thời điểm này. Các hoạt động được ví dụ:
CPU hoặc các chức năng đĩa cố định. Bất cứ hoạt động và thời gian hiện tại ví
dụ: bằng văn bản bộ nhớ kết cấu. Trên một ghi lại của thời điểm hiện tại, thời
gian cuối cùng sẽ được sao chép vào một vị trí khác nhau trong bộ nhớ. Nếu giá
trị bộ đếm thời gian mới không khác biệt từ cuối cùng, lỗi báo hiệu. Ngoài ra,

GPU kiểm tra các hoạt động. Nếu không có hoạt động được ghi trong ngắt
quãng (không có giá trị đã được ghi vào bộ nhớ) một tín hiệu báo thức có thể
được phát sinh. Hình 10 cho thấy các thuật toán.
Hình 10. Thuật toán Watchdog
Các tín hiệu báo thức có thể được xuất ra bằng văn bản cho 1 vị trí bộ nhớ
chuyên dụng trong bộ nhớ của máy chủ. Nếu không áp dụng hệ điều hành hạn
chế, GPU có thể viết địa chỉ nhập cảnh phục hồi để chương trình truy cập CPU.
2.3.2 Lỗi loại bỏ GPU

GPU
Chúng ta có thể tưởng tượng một cái gì đó giống như một cấu hình RAIGx
(Redundant Array of Independent, according to a RAIDx – Redundant Array of
Independent Disks). Như chúng ta đã không điều khiển phần cứng để hỗ trợ
RAIG, chúng tôi chỉ hỗ trợ phần mềm RAIG. Như RAIG, chúng ta có thể xem
xét các phương thức thông thường, được liệt kê trong Bảng 4.
Dạng Ý nghĩa, cấu hình
0 Hai hay nhiều card đồ họa làm các tính toán độc lập
1 Hai trong số nhiều card đồ họa làm các tính toán song song
5
Hai card đồ họa làm các tính toán song song, đảm bảo các toán hạng
và kết quả trong bộ nhớ bằng cách kiểm tra, ví dụ như chẵn lẻ
Bảng 4. Chế độ RAIG
Phát hiện lỗi, chúng ta có thể bỏ phiếu trong số các kết quả. Nếu chúng ta
có các tính toán trong CPU, chúng tôi có một cấu hình TMR và do đó có thể xác
định vị trí các đơn vị bị lỗi, nếu hai kết quả là bằng nhau. Nếu các nhân là dữ
17
liệu độc lập, chúng tôi chỉ đơn giản là có thể tiếp tục. Nếu chúng ta có phụ thuộc
trong số những tính toán, chúng ta có tùy chọn để sao chép tất cả bộ nhớnội
dung và các trạng thái xử lý thẻ lỗi miễn phí giả định với tất cả các thẻ hoặc bản
sao sửa đổi các bộ phận (xem tiểu mục 0).

2.3.3 Loại bỏ GPU

CPU
Loại bỏ lỗi trong một CPU từ một GPU là có thể nhưng khó hơn rất
nhiều.Trạng thái CPU phải được ghi vào bộ nhớ của card đồ họa, các vị trí bộ
nhớ cũng được cập nhật. Chúng tôi đề nghị các khoảng thời gian kiểm soát giữa
10
6
(~ 4 MBytes bằng văn bản) và 10
7
(~ 40 MBytes bằng văn bản) bộ nhớ viết.
Khoảng cách kiểm soát bị hạn chế bởi bộ nhớ chính của thẻ đồ họa, đáng tin cậy
và hiệu năng hệ thống. Trạng thái CPU cũng được lưu giữ trong chính bộ nhớ
của thẻ. Một lỗi, bộ nhớ và trạng thái CPU phải được chuyển trở lại. Trong hình
4 nó được hiển thị băng thông có thể đạt được. Khi bản đồ chính toàn bộ nhớ
của các máy chủ để bộ nhớ điện thoại, vì nó là nhỏ hơn so với bộ nhớ của máy
chủ, hoặc là chúng ta làm tất cả các ghi bộ nhớ của CPU cùng một lúc trên thẻ,
đáng kể làm giảm hiệu suất hoặc làm một loại bỏ lỗi cho một ứng dụng duy nhất
(hệ thống có liên quan) chạy trên CPU như một daemon. Đối với trạng thái
CPU, không có vấn đề, bởi vì số lượng dữ liệu chuyển giao là rất nhỏ. Khó khăn
là thêm một trạng thái trước đó trong CPU. Ở đây chúng ta có thể tưởng tượng
một bộ nhớ trạng thái cho mỗi CPU có thể được viết từ GPU và được đọc bởi
CPU. Trong thời hạn một hệ thống đa lõi, một CPU (lành mạnh) có thể thêm các
điểm trạng thái thành CPU bị lỗi.
2.4 Dự báo lỗi (với GPUs)
Đối với dự đoán của những lỗi lầm, một lịch sử của lỗi phải được lưu trữ
trong bộ nhớ card đồ họa, bởi vì không có kiến thức về quá khứ, chúng tôi
không thể dự đoán lỗi trong tương lai. Dự đoán có thể được thực hiện với các
phương pháp khác nhau, ví dụ như mạng lưới Bayesian quan hệ nhân quả, mô
hình Markov ẩn (HMMs) và thuật toán chuyển tiếp… Chúng tôi đề xuất sử dụng

MCE (máy kiểm tra ngoại lệ) của các bộ vi xử lý hiện đại nhập vào một thói
quen đặc biệt để tính toán dự báo. Chúng tôi giả định lịch sử được tổ chức như
bộ đệm vòng đơn giản của N. chiều dài thuật toán trong hình 11 một thời gian
ngắn phác thảo phương pháp mà không đi vào chi tiết.
18
Hình 11.Cơ bản (tóm tắt) dự báo lỗi
Lưu ý, rằng những dự báo với HMMs ngụ ý con số rất nhỏ và do đó vấn đề
độ chính xác. Một độ lệch nhỏ có thể dẫn đến kết quả bị lỗi. Mở rộng quy mô
phải là sốnguyên lớn có thể hạn chếnhững ảnh hưởng này.
III. KẾT LUẬN – HƯỚNG PHÁT TRIỂN
Tiểu luận này trình bày bước đầu tiên và cách tiếp cận sáng tạo để sử dụng
GPU cho độ tin cậy. Chúng tôi nhận thức rằng, việc nghiên cứu này còn hết sức
thô sơ nhưng nó có thể phục vụ như là khởi đầu công việc trong tương lai. Nó đã
thể hiện song song như thế nào của các GPU hiện tại có thể được khai thác cho
độ tin cậy. Mặc dù chúng tôi đã không xác định bản chất chính xác của lỗi, vì
chúng ta không muốn hạn chế hướng của chúng ta bằng cách liên quan đến một
tập đặc biệt của các loại lỗi, kết quả và bối cảnh vật lý của thiết lập thử nghiệm
mạnh mẽ đề nghị mô hình thoáng qua lỗi. Để giảm phụ thuộc vật lý, ta nên thực
hiện các tính toán thẻ dự phòng khác nhau, sau đó trên GPU khác nhau, sau đó
trên lưới khác nhau. Từ thực nghiệm kết quả một số kết luận có thể được bắt
nguồn: Một hệ thống trong chế độ SLI là ít đáng tin cậy hơn một trong chế độ
không SLI. Tính toán đáng tin cậy nên được thực hiện trên một hệ thống không
SLI. Một hệ thống cấu hình trong SLI có lợi thế hơn (đã được chứng minh)
trong các ứng dụng tính toán chuyên sâu. Đối với các ứng dụng chuyên sâu băng
thông hệ thống SLI không được ưa thích. Trong các thí nghiệm, không có độ
lệch không bình thường (trừ trường hợp chính xác) giữa CPU và GPU xảy ra kết
quả. Các kết quả ổn định trong toàn bộ thời gian quan sát. Một số căn cứ để phát
triển của đề tài này trong tương lai là:
- Từ độ chính xác của kết quả (may mắn là tất cả các phép tính số học cơ
bản như add, sub, mul và tất cả các hoạt động số nguyên đều dẫn đến kết quả

chính xác) ta 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 CPU và GPU, kết quả sẽ không khác nhau.
- Việc đồng bộ hóa của máy chủ và các luồng GPU cung cấp một cái nhìn
hoàn toàn mới cho nghiên cứu. Các thời gian từ CPU và GPU khác nhau có một
19
kết nối cho mỗi tính toán, nghĩa là nếu thời gian cho các GPU đủ lớn, thời gian
của CPU thực hiện tương ứng cũng cao hơn. Điều này là đáng ngạc nhiên, kể từ
khi chúng tôi thực hiện một phiên bản không đồng bộ cho GPU chạy
độc lập trên CPU. Trong triển khai thực hiện hiện tại, card đồ họa không
thích hợp cho các ứng dụng thời gian thực. Hướng tương lai, đề tài sẽ tiếp tục
nghiên cứu việc thực hiện và phân tích của các phương tiện đáng tin cậy thông
qua thảo luận và đánh giá độ tin cậy lâu dài.
TÀI LIỆU THAM KHẢO
[1] ACM Queue, GPUs Not Just for Graphics, Vol. 6, No. 2, March/ April
2008, ISSN: 1542-7730.
[2] J.S. Huang et al. (NVidia corporation), United States Patent 7053901,
System and method for accelerating a special purpose processor
[3] GPGPU, General-Purpose Computation Using Graphics Hardware,
, checked 05/15/2008.
[4] NVidia.Technical Brief. NVidia GeForce 8800 GPU Architecture
Overview, Nov. 2006. checked
05/15/2008.
[5] Larrabee: A Many-Core x86 Architecture for Visual Computing. Seiler, L.,
Carmean, D.,Sprangle, D., Forsyth, T., Abrash, M., Dubey, P., Junkins, S., Lake,
A., Sugerman, J.,Cavin, R., Espasa, R., Grochowski, E., Juan, T.,
Hanrahan, P. Proceedings of SIGGRAPH 2008.
[6] www.vision4ce.com, checked 06/16/2009.
[7] Schatz, M.C., Trapnell, C., Delcher, A.L., Varshney, A. (2007). High-
throughput sequence alignment using Graphics Processing Units. BMC
Bioinformatics 8:474: 474. doi:10.1186/1471-2105-8-474

[8] J.C. Laprie, Dependability: Basic Concepts and Terminology Springer-
Verlag, 1992. ISBN 0387822968
[9] I. Pharr, Matt. II. Fernando, Randima. GPU gems 2: programming
techniques for high-performance graphics and general-purpose computation,
edited by Matt Pharr; Randima Fernando, series editor. ISBN 0-321-33559-7.
[10] John D. Owens et al. A Survey of General-Purpose Computation on
Graphics Hardware, Computer Graphics Forum, 2007,
,
pp. 80-113, vol. 26 , no. 1
20
[11] Khronos OpenCL Working Group. The OpenCL Specification. Version:
1.0, Revision: 33, Aaftab Munshi (ed.),

[12] checked 06/03/2009
[13] checked,
06/03/2009.
[14] Curry, M.L.; Skjellum, A.; Ward, H.L.; Brightwell, R. Accelerating Reed-
Solomon coding in RAID systems with GPUs. In Proc.Of the IEEE International
Symposium on Parallel and Distributed Processing, pp. 1 – 6, 2008.
[15] R. Strzodka, D. Göddeke. Mixed precision methods for convergent iterative
schemes. In Proc. of the 2006 Workshop on Edge Computing Using New
Commodity Architectures, pp. D–59–60, 2006.
[16] A. Moss, D. Page, N. Smart, Toward Acceleration of RSA Using 3D
Graphics Hardware. Cryptography and Coding, pp. 369–388. December 2007.
[17] N. Maruyama, A. Nukada, S. Matsuoka, Software-Based ECC for
GPUs, Symp. on Application Accelerators in High Performance Computing,
2009.
21

×