Kiến Trúc Gpu Của Nvida - final

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 11

KIẾN TRÚC AMPERE TRÊN GPU A100 TENSOR CORE CỦA NVIDIA

Lê Đức Lộc và Đặng Minh Quang


Lớp CNTT21B, Trường Công nghệ thông tin & Truyền thông, Trường Đại học Bách Khoa Hà Nội
Loc.LD211033M@sis.hust.edu.vn, Quang.DM211034M@sis.hust.edu.vn

Tóm tắt: NVIDIA GPU là công cụ tính toán hàng đầu trong công cuộc cách mạng AI, cung
cấp khả năng tăng tốc đáng kể cho quá trình huấn luyện và suy luận AI. Ngoài ra, GPU
NVIDIA tăng tốc nhiều loại ứng dụng và hệ thống phân tích dữ liệu, siêu máy tính một cách
hiệu quả. Nền tảng tính toán của NVIDA là trung tâm xử lý của nhiều ngành công nghiệp
quan trọng và phát triển trên thế giới hiện nay. GPU NVIDIA A100 Tensor Core được thiết
kế dựa trên dòng GPU V100 với nhiều tính năng được bổ sung và cải tiến. Được thiết kế với
kiến trúc Ampere, GPU A100 Tensor Core cho tốc độ tính toán vượt trội và khả năng mở
rộng hệ thống rất tốt.
Từ khóa: GPU, NVIDIA, Ampere, Tensor Core

I Mở đầu đám mây. Các ứng dụng đòi hỏi khối


GPU là từ viết tắt của cụm lượng tính toán lớn bao gồm huấn
Graphics Processing Unit, là một bộ xử luyện học sâu và học máy, phân tích dữ
lý chuyên dùng để giải quyết những liệu, tính toán khoa học, xử lý video tại
vấn đề liên quan tới khả năng hiển thị biên, dịch vụ 5G, xử lý ảnh, các cloud
hình ảnh của máy tính. GPU được thiết gaming… Từ mở rộng quy mô đào tạo
kế theo kiến trúc song song mức dữ AI và tính toán khoa học, mở rộng các
liệu, giúp thực hiện khối lượng tính ứng dụng suy luận, cho phép xử lý AI
toán lớn trong thời gian ngắn, đảm bảo theo thời gian thực, NVIDIA đã phát
các tác vụ liên quan tới hình ảnh hay đồ triển GPU A100 Tensor Core trên nền
họa, video. Năm 1999, bộ xử lý hình tảng kiến trúc Ampere, cung cấp khả
ảnh GPU lần đầu tiên được NVIDIA năng tính toán cần thiết để tăng tốc
đưa ra thị trường. Cho đến nay, nhiều khối lượng công việc phức tạp và
NVIDIA đã cho ra đời nhiều thế hệ không thể đoán trước đang chạy trong
GPU với kiến trúc khác nhau, có thể các trung tâm dữ liệu đám mây ngày
liệt kê ra như sau: kiến trúc Kelvin nay.
(2001), kiến trúc Rankine (2003), Curie
GPU A100 bao gồm nhiều cải
(2004), Tesla (2006), Fermi (2010),
tiến về kiến trúc cốt lõi mang lại tốc độ
Kepler (2012), Maxwell (2014), Pascal
đáng kể cho khối lượng công việc phân
(2016), Volta (2017), Turing (2018),
tích dữ liệu AI, HPC như: tính năng
Ampere (2020) và mới nhất là kiến trúc
Sparsity mới tăng tốc hơn nữa các phép
Hopper (2022). Từ mức chỉ tập trung
toán lên đến gấp 2 lần, bộ nhớ băng
xử lý hình ảnh, các GPU đã được phát
thông cao HBM2 và bộ nhớ đệm lớn
triển để trở thành một bộ vi xử lý cho
hơn, nhanh hơn, cung cấp dữ liệu cho
các ứng dụng yêu cầu tính toán khối
số lượng ngày càng tăng của CUDA
lượng lớn và phức tạp như: học sâu, mô
core và Tensor core, NVLink thế hệ thứ
phỏng…
ba và PCIe thế hệ 4 mới tăng tốc cấu
Sự đa dạng của các ứng dụng hình hệ thống đa GPU. Nhiều cải tiến
tính toán lớn chạy trên nền tảng cloud khác cho phép mở rộng quy mô mạnh
đã thúc đẩy các hãng trong việc phát mẽ cho các trung tâm dữ liệu siêu cấp
triển các dòng GPU hỗ trợ điện toán và tính năng ảo hóa MultiInstance GPU
1
(MIG) hỗ trợ mạnh mẽ cho các hệ II Kiến trúc Ampere trên GPU
thống của Nhà cung cấp dịch vụ đám A100 Tensor Core của NVIDIA
mây (CSP) và khách hàng. Kiến trúc 1 Tổng quan kiến trúc Ampere
NVIDIA Ampere cũng cải thiện tính dễ trên GPU A100 Tensor Core
lập trình, đồng thời hạ thấp độ trễ và Kiến trúc của GPU NVIDIA
giảm độ phức tạp của phần mềm AI và A100 Tensor Core được biểu diễn như
HPC. GPU kiến trúc NVIDIA Ampere Hình 2, thành phần tính toán của GPU
cung cấp tất cả các tính năng mới này gồm 6912 nhân xử lý tính toán FP32
với hiệu suất trên mỗi watt cao hơn thế (gọi là FP32 CUDA Core hoặc là FP32
hệ trước GPU NVIDIA Volta. Streaming processor, SP) 3456 FP64
GPU NVIDIA A100 được kiến CUDA Core, 6912 INT32 CUDA Core,
trúc để không chỉ tăng tốc khối lượng 432 Tensor Core, được chia thành 108
công việc phức tạp lớn mà còn tăng tốc đơn vị nhỏ gọi là streaming
hiệu quả nhiều khối lượng công việc Multiprocessor (SM). Kiến trúc
nhỏ hơn. A100 cho phép xây dựng các Ampere được thiết kế với bộ nhớ đệm
trung tâm dữ liệu có thể đáp ứng nhu L2 cache có kích thước 40 MB có thể
cầu khối lượng công việc không thể được truy cập bởi tất cả các SM trên
đoán trước, đồng thời tối ưu hóa việc GPU. Ngoài ra, để tăng tốc độ truy cập
cân bằng tải giữa các GPU, tối ưu hiệu dữ liệu từ ổ cứng, A100 còn được thiết
quả tài nguyên GPU. kế cùng với bộ nhớ DRAM tốc độ cao
HBM2 có kích thước 40GB với băng
Kiến trúc Ampere đánh dấu một thông đọc/ghi lên đến 1555GB/s, nằm
cột mốc quan trọng cho NVIDIA – đó bên ngoài chip.
là GPU 7nm đầu tiên của công ty.
Trong báo cáo này, nhóm sẽ tập trung Thành phần Giga thread Engine
đi vào giới thiệu và phân tích kiến trúc với chức năng MIG Control là bộ điều
Ampere của GPU NVIDIA A100 khiển chung của GPI và tính năng MIG
Tensor Core. Phần trình bày của báo trên A100, cho phép chia GPU A100
cáo sẽ gồm có 2 phần: phần đầu tiên là thành các GPU ảo nhỏ hơn với chức
giới thiệu mở đầu về GPU A100 năng và thành phần hoàn chỉnh, chạy
Tensor Core của NVIDIA. Tiếp theo, song song trên A100. Tính năng này
báo cáo sẽ phân tích kiến trúc Ampere, giúp nhiều người dùng có thể cùng sử
đưa ra các đặc điểm, nâng cấp nổi bật dụng A100 mà không làm ảnh hưởng
trên kiến trúc Ampere. đến ứng dụng của nhau.

Hình 2: Kiến trúc phần cứng của GPU A100


Hình 1: GPU NVIDIA A100 với 108 SM

Đường kết nối GPU tốc độ cao


thế hệ thứ 3 do NVIDIA thiết kế -

2
NVLink được sử dụng trên kiến trúc một chương trình CUDA sẽ bao gồm
Ampere của A100 hỗ trợ tính năng thiết các bước:
kế hệ thống gồm nhiều GPU hoạt động
- Copy dữ liệu từ bộ nhớ host vào
song song. NVLink3 cho tốc độ truyền
bộ nhớ thiết bị DRAM.
dữ liệu lên đến 50 GB/s trên mỗi đường
- Nạp chương trình GPU và thực
kết nối, có tổng cộng 12 đường kết nối
thi, nạp dữ liệu từ bộ nhớ thiết bị
trên A100, cho tốc độ lên đến 600GB/s.
(GPU) vào bộ nhớ đệm trên
Đường truyền dữ liệu PCIe Gen chip.
4 phục vụ giao tiếp giữa CPU máy chủ - Sao chép kết quả tính toán từ bộ
với GPU cho tốc độ lên đến 31.5 GB/s nhớ thiết bị vào bộ nhớ host.
gấp đôi PCIe Gen 3.
Một chương trình khi thực thi
Thông số kỹ thuật Chi tiết trên GPU – CUDA Kernel gọi là một
của GPU Grid, được chia thành nhiều thread
GPU Codename GA100 block thự thi song song. Mỗi Thread
GPU Architecture NVIDIA block sẽ chỉ được phụ trách bởi một
Ampere SM, không có trường hợp 2 SM cùng
GPU Board Form SXM4 điều khiển 1 thread block. Ngược lại,
Factor một SM lại có thể điều khiển cùng lúc
SMs 108 nhiều Thread block tùy thuộc vào tài
FP32 Cores / SM 64 nguyên mà thread block yêu cầu.
FP32 Cores / GPU 6912
FP64 Cores / SM 32
(excl. Tensor)
FP64 Cores / GPU 3456
(excl. Tensor)
INT32 Cores / SM 64
INT32 Cores / GPU 6912
Tensor Cores / SM 4
Tensor Cores / GPU 432
GPU Boost Clock 1410 MHz
Texture Units 432 Hình 3: Thực thi chương trình trên GPU
Memory Interface 5120bit
Mỗi CUDA Thread được thực
HBM2
hiện trên CUDA Core, mỗi GPU sẽ có
Memory Size 40 GB
hàng trăm đến hàng nghìn CUDA core.
Memory Data Rate 1215 GB
Mỗi CUDA core có bộ thanh ghi riêng
2 Thực hiện chương trình trên và ID định danh thread. Số ID có thể là
GPU 1D, 2D hoặc 3D dựa trên Block mà nó
Mô hình lập trình CUDA cung thuộc về
cấp một cấu trúc GPU trừu tượng đóng
vai trò là cầu nối giữa một ứng dụng và Thread Block – CUDA block là
khả năng triển khai của nó trên phần tập hợp của nhiều CUDA core có thể
cứng GPU. Mô hình lập trình của phối hợp với nhau để tính toán một
CUDA gồm có 2 thành phần là host cách song song hoặc tuần tự. Mỗi
(CPU) và thiết bị (GPU). Để thực thi thread block được thiết kế một vùng

3
nhớ dùng chung - shared memory, cho L1 / Bộ nhớ dùng chung
phép các Core trong cùng một block có (SMEM): Mỗi SM trên A100 đều được
thể truy cập dữ liệu. Hiện nay, mỗi thiết kế với bộ nhớ trong 192KB, sử
block được sẽ bao gồm 1024 Core. dụng làm bộ nhớ đệm L1 và bộ nhớ
Giữa các CUDA block sẽ không thể sử dùng chung. Trong quá trình tính toán,
dụng core của nhau mà chỉ có thể sử tất cả các CUDA Core trong một
dụng các core của chính nó. CUDA block có thể chia sẻ bộ nhớ
dùng chung, trao đổi dữ liệu với nhau
Kernel Grid – là tập hợp của
và tất cả các khối CUDA chạy trên một
nhiều Thread Block, Grid được dùng để
SM nhất định có thể chia sẻ tài nguyên
thực hiện các tính toán song song cho
bộ nhớ vật lý do SM cung cấp. Điều
các phép tính lớn (ví dụ: những loại
này giúp lưu dữ liệu gần với bộ tính
yêu cầu nhiều hơn 1024 luồng), một
toán hơn, giảm thời gian truy cập dữ
GPU có chưa nhiều Grid, và cho phép
liệu toàn cục. A100 được thiết kế bộ
ghép nối nhiều GPU với nhau để tăng
nhớ đệm L1 có kích thước 192 KB lớn
năng lực tính toán, tuy nhiên không cho
hơn so với 128 KB trên kiến trúc Volta,
phép các GPU chia sẻ Grid với nhau.
giúp tăng khả năng thực hiện phép toán
3 Phân cấp bộ nhớ trong kiến phức tạp cao.
trúc
Bộ nhớ chỉ đọc (Read-only
Phân cấp bộ nhớ trong kiến trúc
Memory): Mỗi SM đều có bộ nhớ đệm
Ampere bao gồm các thành phần: bộ
câu lệnh, bộ nhớ biến cố định và bộ
nhớ DRAM HBM2, bộ nhớ đệm L2
nhớ texture, bộ nhớ này chỉ cho phép
Cache, bộ nhớ L1 cache, thanh ghi
đọc.
(Hình 4)
L2 cache: Bộ nhớ đệm L2 cache
cho phép tất cả các SM bên trong GPU
được truy cập, dùng để lưu dữ liệu, chia
sẻ thông tin giữa các SM trong quá
trình xử lý tính toán. Trên GPU A100,
bộ nhớ L2 có kích thước 40MB. Tốc độ
đọc trên bộ nhớ đệm L2 của A100 là
5120 Byte/clk. Ngoài ra, kiến trúc
Ampere cung cấp chức năng điều khiển
bộ nhớ đệm L2, cho phép lập trình viên
Hình 4: Tổ chức bộ nhớ bên trong A100 có thể xóa hoặc giữ lại dữ liệu bên
trong bọ nhớ đệm L2.
Tầng đầu tiên là các thanh ghi
nằm bên trong multiprocessor (SM) có Bộ nhớ toàn cục: là vùng nhớ
chức năng nạp và lưu các câu lệnh, các đệm của GPU, các vùng bộ nhớ toàn
toán tử trong quá trình thực hiện tính cục được truy cập bởi các chương trình
toán của GPU. Thanh ghi trong 1 SM CUDA nằm trong không gian bộ nhớ
có kích thước 256 KB, tổng cộng toàn HBM2, và được gọi là bộ nhớ thiết bị
bộ GPU có kích thước 27648 KB. Mỗi theo cách nói CUDA. Chip A100 hỗ trợ
CUDA core tính toán trong SM được DRAM lên đến 40 GB. Đây là bộ nhớ
gán với một thanh ghi riêng và không để chia sẻ dữ liệu, thông tin giữa GPU
chia sẻ với các CUDA core khác. và CPU.

4
4 Kiến trúc của Streaming FP32 CUDA Core và 64 FP/IN32
Multiprocessor trên GPU A100 CUDA Core. Tại 1 thời điểm chỉ có 1
Tensor Core trong 2 loại CUDA Core được thực thi.
Streaming Multiprocessor (SM)
Một SM trên A100 được thiết kế
là một đơn vị thực thi một hoặc nhiều
với 4 bộ Tensor Core: là thành phần
thread block bên trong GPU. Mỗi kiến
tính toán nhân ma trận nhiều chiều, hỗ
trúc của GPU bao gồm nhiều SM. Mỗi
trợ dấu phẩy động chuyên dụng cho các
SM có một vi xử lý có tốc độ xung nhịp
ứng dụng AI, học sâu và suy luận.
thấp và bộ nhớ cache nhỏ để lấy và nạp
Tensor Core bắt đầu xuất hiện trên kiến
lệnh để thực thi các lệnh trên các thread
trúc Volta của NVIDIA (2017), đối với
block một cách song song. Kiến trúc
kiến trúc Ampere, Tensor core đã phát
của một SM được biểu diễn như Hình
triển đến phiên bản thứ ba. Ngoài ra,
5:
trên SM còn có 32 các thành phần nạp
và lưu cho tính toán các địa chỉ -
LD/ST.
Bộ tính toán hàm đặc biệt SFU
trên mỗi SM có chức thực thi các chức
năng đặc biệt như hàm nhân, bộ tính
toán logic cho các hàm siêu việt, phép
nội suy, hàm tam giác…
Các CUDA Core trên NVIDIA
A100 được tổ chức thành 4 warp, đon
vị cơ bản nhất thực thi các chương trình
của GPU. Các CUDA Core trên cùng 1
warp thực thi cùng 1 câu lệnh. Trong
mỗi câu lệnh, SM nạp các câu lệnh vào
bộ nhớ đệm câu lệnh (Instruction
Cache) và lưu ở trong bộ nhớ đệm. Sau
Hình 5: Kiến trúc của một Streaming đó 4 bộ lập lịch cho warp (Warp
Multiprocessor (SM) trên GPU A100 scheduler) bên trong SM sẽ nạp vào 4
bộ Instruction dispatch 4 câu lệnh. Các
Trong đó, thành phần trực tiếp câu lệnh sẽ được truyền xuống các bộ
thực thi các câu lệnh toán học và logic phần cứng (CUDA Core, LD/ST,
là 32 CUDA Core, thường được thiết Tensor Core, SFU) để thực hiện.
kế thành 32 làn vì các CUDA Core làm
việc một cách song song. CUDA core Streaming multiprocessor có
bao gồm FP32 CUDA Core bộ tính nhiệm vụ giữ cho các warp luôn làm
toán số nhân – cộng dấu phẩy động 32- việc và cân bằng tải giữa các warp để
bit và FP/INT32 CUDA một thành giảm độ trễ trong thực thi chương trình.
phần tính toán số nguyên 32-bit ALU. 2 Khi một warp đang ở trạng thái chờ, bộ
CUDA Core cạnh nhau có thể cùng làm lập lịch sẽ chuyển câu lệnh tiếp cho
việc như một bộ tính toán dấu phẩy một warp khác thực thi. Khi một câu
động 64-bit. CUDA Core đọc và ghi dữ lệnh không bị phụ thuộc vào dữ liệu,
liệu vào các thanh ghi. Một SM trên các toán hạng bên trong phép tính đều
A100 có 128 CUDA Core trong đó 64 đã sẵn sàng, warp tương ứng với câu

5
lệnh đó sẽ được coi là đã sẵn sàng thực hình, trong đó, các tham số ít quan
thi. Việc ưu tiên các warp ứng với câu trọng đến độ chính xác của quá trình
lệnh có thời gian tính toán ngắn thực huấn luyện sẽ được lưu bằng kiểu dữ
thi trước sẽ giảm thiểu thời gian trễ liệu FP16. Kỹ thuật này làm cho quá
trong thực hiện lệnh. Nếu tại một thời trình đào tạo nhanh hơn, tốn ít bộ nhớ
điểm, có nhiều warp cùng ở trạng thái hơn. Kỹ thuật hợp nhất nhân - cộng
sẵn sàng, bộ lập lịch trên SM ưu tiên (FMA) là kỹ thuật thực hiện phép nhân
các warp theo luật đã được cài đặt. và phép cộng số thực trong cùng một
bước tính toán.
Tensor Core thế hệ thứ 3 tăng
tốc độ tính toán các phép hợp nhất nhân
– cộng ma trận một cách đáng kể so với
thế hệ trước đó. Cụ thể, đối với phép
tính có độ chính xác hỗn hợp
FP16/FP32, Tensor Core thế hệ thứ 3
có thể thực hiện 256 phép tính FMA
trên 1 xung nhịp trong khi Tensor Core
thế hệ trước chỉ thực hiện được 64 phép
tính FMA với số FP16. Tính trên tổng
Hình 6: SM điều khiển việc lập lịch cho các
warp thể khả năng tính toán của GPU, quá
trình thực hiện với kỹ thuật độ chính
5 Tensor Core thế hệ thứ 3 SM xác hỗn hợp FP16/FP32 của A100
của GPU A100 nhanh gấp 2.5 lần so với GPU V100
Tensor Core là Core máy tính khi so sánh với Tensor Core thế hệ thứ
hiệu suất cao chuyên dụng cho các 2 và 20 lần khi so với việc sử dụng
phép toán ma trận cung cấp hiệu suất CUDA Core FP32 thông thường.
đột phá cho các ứng dụng AI và HPC.
Tensor Core thực hiện phép tính nhân Tensor Core trên A100 hỗ trợ
và tích lũy (MMA) ma trận. Hàng trăm cho các kiểu dữ liệu chuyên dụng cho
Tensor Core hoạt động song song trong học sâu và siêu máy tính như
một GPU NVIDIA cho phép tăng đáng TensorFloat-32(TF32), BF16 và FP64.
kể thông lượng và hiệu quả, đặc biệt Trong đó BF16 là một một dạng của
cho các ứng dụng học sâu và siêu máy kiểu dữ liệu FP16, bao gồm 1-bit dấu,
tính (HPC). 7-bit mantisa và 8-bit exponent, kiểu
dữ liệu này được dùng trong quá trình
Mật độ Tensor trên GPU A100 huấn luyện với độ chính xác hỗn hợp,
gấp đôi so với thế hệ trước V100, hỗ giúp tăng băng thông lên 16 lần so với
trợ nhiều kiểu dữ liệu và tăng tốc độ FP32. Kiểu dữ liệu TF32 là một dạng
tính toán ma trận thưa lên 2 lần. Mỗi của FP32, dành riêng cho huấn luyện
SM trên A100 được thiết kế với 4 học máy trên Tensor Core, giúp tăng
Tensor Core, tổng số lượng Tensore tốc độ quá trình học máy lên 8 lần so
Core trên A100 là 432. với FP32.
Trong đào tạo học máy, kỹ thuật Kiểu Khả năng tính
độ chính xác hỗn hợp FP16/FP32 là kỹ dữ liệu toán (TFLOPS)
thuật sử dụng cả số thực có dấu phẩy Peak FP64 9.7 TFLOPS
động 16-bit và 32-bit trong một mô

6
Peak FP64 19.5 TFLOPS lượng cao để truyền dữ liệu trực tuyến
Tensor Core đồng thời cung cấp khả năng truy cập
Peak FP32 19.5 TFLOPS với băng thông cao và độ trễ thấp tới
Peak FP16 78 TFLOPS dữ liệu được tái sử dụng thường xuyên.
Peak BF16 39 TFLOPS Hệ thống tích hợp L1 / bộ nhớ chia sẻ
Peak TF32 156 TFLOPS | lớn hơn trên A100 giúp khuếch đại hiệu
Tensor Core 312 TFLOPS2 suất của các ứng dụng sử dụng bộ đệm
Peak FP16 312 TFLOPS | L1 khi truy cập.
Tensor Core 624 TFLOPS2 7 Thực hiện đồng thời các phép
Peak BF16 312 TFLOPS | tính với số FP32 và INT32
Tensor Core 624 TFLOPS2 A100 SM bao gồm lõi CUDA
Peak INT8 624 TOPS | FP32 và INT32 riêng biệt, cho phép
Tensor Core 1,248 TOPS2 thực hiện đồng thời các phép toán với
Peak INT4 1,248 TOPS | số FP32 và INT32 với thông lượng tối
Tensor Core 2,496 TOPS2 đa, đồng thời cũng làm tăng thông
- FLOPS: tera floating point lượng câu lệnh. Nhiều ứng dụng có các
operation per second – nghìn vòng lặp bên trong thực hiện tính toán
tỷ phép tính trong một giây địa chỉ bộ nhớ số nguyên kết hợp với
- TOPS: tera operation per các phép tính dấu phẩy động sẽ được
second (int, float, …) hưởng lợi từ việc thực thi đồng thời các
Tính năng hỗ trợ ma trận thưa lệnh FP32 và INT32. Mỗi vòng lặp,
sparsity trên A100 cho khả năng pipelined có thể đồng thời cập nhật địa
tăng gấp đôi băng thông tính toán chỉ số học INT32 và tải dữ liệu cho lần
trên Tensor Core. lặp tiếp theo trong khi xử lý đồng thời
thực thi phép lặp với số FP32.
6 Kết hợp bộ nhớ đệm L1 và bộ
nhớ chia sẻ (Shared Memory) 8 Ma trận thưa có cấu trúc mịn
Lần đầu tiên được giới thiệu (Fine-Grained structured
trong Volta V100, kiến trúc kết hợp bộ Sparsity)
nhớ đệm L1 và bộ nhớ chia sẻ trên Với GPU A100, NVIDIA giới
A100 cải thiện đáng kể hiệu suất, đồng thiệu một cách tiếp cận mới trong tính
thời đơn giản hóa việc lập trình và giảm toán cho các mạng học sâu giúp tăng
mức điều chỉnh cần thiết để đạt được gấp đôi thông lượng, đó là ma trận thưa
hiệu suất ứng dụng ở mức cao nhất. Kết có cấu trúc mịn.
hợp bộ nhớ đệm và chức năng bộ nhớ Trong quá trình đào tạo học
được chia sẻ thành một khối bộ nhớ máy, các trong số không quan trọng, ít
duy nhất cung cấp hiệu suất tổng thể tốt ảnh hưởng đến độ chính xác của model
nhất cho cả hai loại truy cập bộ nhớ. sẽ được gán là 0 để giảm thiểu khối
Dung lượng tổng hợp của L1 và bộ nhớ lượng tính toán. Tính năng ma trận thưa
chia sẻ là 192 KB / SM trong A100 so cấu trúc mịn trên A100 cho phép phần
với 128 KB / SM trong V100. cứng có thể loại bỏ các thành phần
Tích hợp bộ đệm L1 trong khối trọng số không quan trọng trong mô
bộ nhớ được chia sẻ đảm bảo bộ đệm hình giúp tăng hiệu suất tính toán của
L1 có độ trễ thấp và băng thông cao. L1 GPU.
hoạt động như một ống dẫn thông

7
9 Bộ nhớ HBM2 và L2 Cache Compression) để tăng tốc độ xử lý ma
Thiết kế cấu trúc và phân cấp bộ trận sparsity và các dữ liệu ở dạng có
nhớ của GPU rất quan trọng đối với thể nén được. Chức năng nén dữ liệu ở
hiệu suất ứng dụng và ảnh hưởng đến L2 cho phép tăng tốc 4 lần băng thông
kích thước GPU, chi phí, mức sử dụng đọc/ghi trên DRAM và 4 lần đối với
điện năng và khả năng lập trình. Nhiều băng thông quá trình đọc trên L2, tăng
bộ nhớ con khác nhau tồn tại trong dung lượng L2 lên 2 lần.
GPU, bộ nhớ DRAM, đến các loại bộ
10 Kiến trúc Multi-Instance GPU
nhớ trên chip khác nhau, đến các thanh
Đối với những ứng dụng không
ghi được sử dụng trong tính toán trên
đòi hỏi tài nguyên xử lý lớn, ví dụ như
SM. Bộ nhớ HBM2 hiệu suất cao là
những ứng dụng đang ở giai đoạn đầu
công nghệ DRAM được sử dụng trong
của quá trình phát triển, hoặc các mô
GPU A100.
hình đơn giản với batch size nhỏ, việc
Để đáp ứng khả năng tính toán chạy nhiều ứng dụng trên cùng một
lớn, NVIDIA GPU A100 được thiết kế GPU sẽ giúp tối ưu hiệu suất sử dụng
với bộ nhớ tốc đô cao HBM2 có dung của GPU. Kiến trúc MIG (multi –
lượng 40GB. Với một Tốc độ dữ liệu instance GPU) được NVIDIA phát triển
1215 MHz (DDR) A100 HBM2 cung để giúp GPU có thể phục vụ nhiều user
cấp băng thông bộ nhớ 1555 GB / giây, khác nhau với môi trường chạy ứng
cao hơn 1,7 lần so với băng thông bộ dụng khác nhau (VM, container, tiến
nhớ Tesla V100. trình) trên cùng một phần cứng, một
cách riêng biệt, tối ưu hóa khả năng
GPU A100 trong GPU A100
truy cập dữ liệu từ bộ nhớ, giảm độ trễ
Tensor Core bao gồm 40 MB bộ nhớ
khi có nhiều ứng dụng chạy song song.
đệm L2, lớn hơn 6,7 lần hơn bộ đệm
Tesla V100 L2. Sự gia tăng đáng kể về MIG cho phép chia tài nguyên
kích thước bộ nhớ cache L2 cải thiện của A100 thành tối đa 7 GPU ảo (GPU
đáng kể hiệu suất của nhiều khối lượng instance) để phục vụ 7 user khác nhau.
công việc HPC và AI vì cho phép lưu Mỗi GPU Instance có đầy đủ các thành
nhiều dữ liệu training và mô hình trên phần như một GPU hoàn chỉnh: SM,
bộ nhớ đệm, do đó, được truy cập nhiều đường truyền đến bộ nhớ được cách ly
lần với tốc độ cao hơn nhiều so với việc hoàn toàn với các GPU instance khác,
đọc và ghi vào bộ nhớ HBM2. Một số bộ nhớ đệm L2, bộ điều khiển bộ nhớ,
khối lượng công việc bị giới hạn bởi DRAM bus riêng. MIG hỗ trợ chất
băng thông DRAM sẽ được hưởng lợi lượng dịch vụ (QoS) và sự cách ly giữa
từ bộ đệm L2 lớn, chẳng hạn như mạng các client, để chúng không bị ảnh
nơ-ron sâu sử dụng kích thước batch hưởng đến nhau khi chạy song song
nhỏ. nhiều client.
Tốc độ đọc trên bộ nhớ đệm L2
của A100 là 5120 Byte/clk. Ngoài ra,
kiến trúc Ampere cung cấp chức năng
điều khiển bộ nhớ đệm L2, cho phép
lập trình viên có thể xóa hoặc giữ lại dữ
liệu bên trong bọ nhớ đệm L2. Kiến
trúc Ampere còn bổ sung tính năng tính
toán nén dữ liệu (Compute Data
8
NVLink để truy cập vào bộ nhớ của
GPU ngang hàng với tốc độ nhanh hơn
so với chuẩn PCIe.
Mối đường kết nối của NVLink
thế hệ thứ ba bao gồm 4 làn tín hiệu
cho mỗi chiều truyền/nhận, cho tốc độ
băng thông lên đến 25GB/s. A100 được
thiết kế với 12 đường kết nối, cho tốc
độ tổng cộng lên tới 600GB/s, cho phép
Hình 7: Tính năng MIG trên GPU A100
đa dạng hóa cấu hình kết nối giữa các
Mỗi GPU instance được tạo nên GPU và bộ chuyển đổi. Để đáp ứng các
từ các GPU slice, mỗi GPU Slide bao hệ thống mạng noron phức tạp hay các
gồm các thành phần: Sys pipe, GPC, bộ mô phỏng trên các siêu máy tính, nhiều
nhớ đệm L2 cache, bộ nhớ buffer. A100 được sử dụng để kết nối với nhau
thông qua NVLink.

Hình 8: Cấu trúc của GPU Slide


Hình 10: Các GPU được nối với nhau thông
qua NVLink
Trên mỗi đơn vị phần cứng GPU
Instance, có thể chia nhỏ phần cứng 12 PCIe Gen 4 với SR-IOV
cho các tác vụ tính toán khác nhau. GPU A100 hỗ trợ PCI Express
Gen 4 (PCIe Gen 4) cung cấp băng
thông 31,5 GB/giây mỗi chiều dữ liệu
cho 16 kết nối, gấp đôi băng thông của
PCIe 3.0. Tốc độ càng nhanh càng đặc
biệt có lợi cho khi kết nối với CPU hỗ
trợ PCIe 4.0 hoặc các giao diện mạng
tốc độ cao, chẳng hạn như hỗ trợ
InfiniBand 200 Gbit / giây để cải thiện
Hình 9: Một GPU Instance có thể chia làm khả năng của cụm GPU (GPU Cluster).
nhiều GPU Compute nhằm phục vụ cho việc tính toán
nhiều tác vụ khác nhau
A100 cũng hỗ trợ chức năng SR-IOV
cho phép chia sẻ và ảo hóa một GPU
11 NVLink thế hệ thứ 3 cho nhiều quá trình xử lý hoặc nhiều
NVLink là đường kết nối tốc độ máy ảo (VM). A100 cũng cho phép 1
cao, băng thông rộng, độ trễ thấp giữa chức năng ảo hoặc chức năng vật lý
các bộ nhớ của GPU. NVLink thế hệ trên 1 GPU đang kết nối PCIE truy cập
thứ 3 được thiết kế trên A100 cho phép đến GPU khác thông qua NVLink.
tăng cường khả năng mở rộng GPU,
13 Phát hiện, cô lập và cách ly lỗi
giao tiếp giữa GPU – GPU nhanh hơn,
Thay vì khởi động lại GPU mỗi
ổn định hơn. GPU A100 có thể sử dụng
khi gặp lỗi, việc phát hiện các lỗi, cách
9
ly và sửa lỗi sẽ tốt hơn cho tính sẵn
sàng và tăng thời gian hoạt động của
GPU, đặc biệt trong các hệ nhiều GPU,
hoặc chạy nhiều client trên cùng một
GPU. Kiến trúc Ampere của NVIDIA
A100 bao gồm các công nghệ mới để
cải thiện khả năng phát hiện lỗi, cô lập
và cách ly các lỗi, không để lỗi lan sang Hình 11: So sánh quy trình nạp dữ liệu khi có
và không có chức năng sao chép không đồng bộ
các ứng dụng khác.
Các công nghệ xử lý lỗi kiến III Tài liệu tham khảo
trúc NVIDIA Ampere mới đặc biệt [1]
quan trọng đối với môi trường MIG để
đảm bảo cách ly và bảo mật thích hợp
giữa các máy khách chia sẻ một GPU.
Các GPU được kết nối với NVLink giờ
đây cũng có khả năng phát hiện và khôi
phục lỗi mạnh mẽ hơn các tính năng
như được mô tả trong phần NVLink ở
trên. Lỗi trang ở GPU từ xa được gửi
quay lại GPU nguồn thông qua
NVLink. Giao tiếp lỗi truy cập từ xa là
một yếu tố quan trọng tính năng phục
hồi cho các cụm tính toán GPU lớn để
giúp đảm bảo các lỗi trong một quy
trình hoặc máy ảo không làm hỏng các
quy trình hoặc máy ảo khác.
14 Lệnh sao chép không đồng bộ
GPU A100 bao gồm lệnh sao
chép không đồng bộ mới tải dữ liệu
trực tiếp từ bộ nhớ chung L2 vào bộ
nhớ dùng chia sẻ trên SM, loại bỏ nhu
cầu sử dụng tệp thanh ghi trung gian
(RF). Async-copy làm giảm băng thông
thanh ghi, sử dụng băng thông bộ nhớ
hiệu quả hơn và giảm tiêu thụ điện
năng. Sao chép không đồng bộ có thể
được thực hiện ở chế độ background
trong khi SM đang thực hiện các tính
toán khác.

IV Deng, Y. (2013). A Survey on GPU Based Electronic Design Automation


Computing. Foundations and Trends in Electronic Design Automation.
[2] Evanson, N. (2020, July 27). Explainer: What Are Tensor Cores? Retrieved from
Techspot: https://www.techspot.com/article/2049-what-are-tensor-cores/

10
[3] Gupta, P. (2020, June). NVIDIA Developer. Retrieved from
https://developer.nvidia.com/blog/cuda-refresher-cuda-programming-model/
[4] Jayshree Ghorpade, J. P. (2012). GPGPU PROCESSING IN CUDA
ARCHITECTURE. Advanced Computing: An International Journal.
[5] KHARYA, P. (2020, May 14). TensorFloat-32 in the A100 GPU Accelerates AI
Training, HPC up to 20x. Retrieved from NVIDIA Developer:
https://blogs.nvidia.com/blog/2020/05/14/tensorfloat-32-precision-format/
#:~:text=TensorFloat%2D32%20is%20the%20new,(FP32)%20on%20Volta
%20GPUs.
[6] NVIDIA. (2020). NVIDIA A100 Tensor Core GPU Architecture. NVIDIA.
[7] NVIDIA. (2020, May 14). NVIDIA Ampere Architecture In-Depth. Retrieved from
NVIDIA Developer: https://developer.nvidia.com/blog/nvidia-ampere-
architecture-in-depth/
[8] NVIDIA. (2020). NVIDIA Ampere GA102 GPU Architecture. NVIDIA.
[9] Pool, J. (2021, July 20). Accelerating Inference with Sparsity Using the NVIDIA
Ampere Architecture and NVIDIA TensorRT. Retrieved from NVIDIA
Developer: https://developer.nvidia.com/blog/accelerating-inference-with-
sparsity-using-ampere-and-tensorrt/

11

You might also like