Những lý do căn bản cho mối quan tim nay 1a s_ lIiệu năng tính toán của các bộ xử lý đồ hoa GPU ngay cảng vượt trội so với oáo bộ xử lý trung tâm truyền thông e Các hãng sản xuất hộ xử
Trang 1
lì
Zz
ấ
Trang 2
BỘ GIÁO DỤC VÀ ĐÀO TẠO
'TRỜNG ĐẠI HỌC BÁCH KHOA HÃ NỘI
LUẬN VĂN THẠC SĨ KHOA HỌC
NGHIÊN CỨU CÔNG NGHỆ TÍNH TOÁN TỔNG QUÁT
TREN CAC BO XULY BO HOA VA UNG DUNG
TRONG BAI TOAN MO PHONG N-BODY
NGÀNH : CÔNG NGHỆ ‘THONG ‘IN
Trang 3LỜI CAM ĐOAN Tôi xin cam đoan rằng đồ án tốt nghiệp này không copy, sao chép, chỉnh
sửa đưới mọi hình thức ur bat ky các dé an nao đã có trước đó Các tài liệu tham
khảo, thông tin tham khảo được lẫy, trích dẫn từ các nguồn có thật, chính xác,
không bịa đặt
Trang 4Tóm tắt
Tải toán N-Rody là một bài toán kinh điển, ứng dụng trong nhiều lĩnh vực
của khoa học như vật ly, y sinh, thiên văn học, Trong bài toán mô phỏng này,
khi số lượng Body mô phỏng trong bài toán là một số rất lớn, việc tính toán
tương tác trên tắt că các cặp N-Body mất rất nhiều thời gian (đồ phức tạp trong
trường hợp tôi nhất O(N?)) Vì vậy chúng ta cần nghiên cửu một phương pháp
mới nhằm tăng tốc độ tính Loán cia bai toán mô phỏng N-Body, đó là lận dụng
sức mạnh tính toán của các bộ xử lý đỗ họa
Dé tai nay nhém tìm hiểu mồi trường tính toán hiệu năng cao trên bộ xử lý
đồ họa sử dụng công nghệ CUDA của hãng nVidia, và bước đầu thử nghiệm
thanh công bải toán mô phỏng N-Body trên dơn GPU, cũng như dưa ra một số
để xuất giải thuật trén GPU cluster
Trang 5kỳ
Abstract
N-body algorithms are applicable to a number of common problems in
computational physics including gravitation, electrostatics, and fluid dynamics
Fast algorithms (those with better than O(N?) performance) exist, but have not
‘been su
sÍully implomentod on GPU hardware for practical problems In the
present work, we introduce not only best-in-class performance for a all-pairs
method, but a series of improvements thal supporl implementation of this solver
on highly-data-parallel graphics processing units (GPUs) ‘Ihe greatly reduced computation times suggest that this problem is ideally suited for the current and
next generations of single and cluster CPU-GPU architcctures We believe that
this is an ideal method for practical computation of large-scale turbulent flows
on future supercompuling hardware using parallel vortex particle methods
Trang 6CHUGNG 1 TINII TOAN IIIEU NANG CAO VOI GPU —
1.1 Tỉnh toán hiệu năng cao và vai trò ứng đụng trong thực tiễn 9
1.1.1 Thách thức tỉnh toán hiệu năng cao trong khoa học vả công nghề 10
1.2 Một số tiếp cân trong tính toán hiệu năng cao - - 12
1.2.1 Cáo hệ thống máy tính đa vi xử lý với mô hình Vip tinh song song chia sé
1.2.2 Cum máy tỉnh với mô hình lập trình song song truyền thông, diệp 14 1.2.3 Cáo bộ xử lý đồ họa với mô hình lập trình song song đỡ liệu 15
CITƯƠNG II GIỚI TIIfU KIÊN TRÚC TESIL.A VÀ MÔ IIÌNH LẬP
TRINH SONG SONG CUDA - 20
2.1 Giới thiệu kiến trúc phần cứng Tesla cla Nvidia (Vesta Architecture) 20
2.2 Kiến trúc tính toán trên GPU Tosla và mô hình lập trình song song CƯDA 21
2.2.1 Kiến trúc tính toán trên GPU Tesla ¬ ,_,,Ô
2.2.3 Những mặt hạn chế của CUD/ " _ wn BS
2.3.2 Bộ công cụ phát triển phần mễm - 37
2.3.3 Quy trình cải đặt
CIHUGNG III BAI TOAN MO PIIONG N-BODY
Trang 73.3.2 Giải thuật Barnes-ITut (The Barnes-Iut Algorithm) —
3.3.3 Phuong phap da cye nhanh (The Fast Multipole Method “FMM
3.3.4 Giải thuật cây đa cực song song enilel Mullipole Tree Algorithm —
PMTA)
3.4 Tổng kết các giải thuật
CHƯƠNG IV MÔ PHONG N-BODY Vì vớt DON GPU
4.1 Mục dích mô phỏng N-Body trên GPU
4.2 Tỉnh toán lực tương táo các oặp N-Body
4.3 Sự thực thi CUDA của giải thuật tất câ các cặp N-Body
4.3.1 Tỉnh toán lực body - body
4.3.2 Tính toán tile
433 Xếp nhóm các tilc vào trong các Thrcad Bloek
4.3.4 Định nghĩa một Grid của các Thread Dloek
4.4 Môi trường thứ nghiêm bãi toán
4.5 Cách thử nghiệm bài toán N-Dody trên hệ thống
4.6 Các kết quả thực hiện
4L7 Sự tốt ưu hóa
4.7.1 Gia tăng hiệu năng với lặp không cuộn (loop waroling)
4.7.2 Hiệu năng từng khi kích thước Block thay đối
4.73 Cải thiện hiệu năng khi N nhỏ :
CHƯƠNG V XÂY DỰNG GIẢI THUẬT MÔ PHÔNG N-BODY
VỚI ĐA GPU
5.1 Tỉnh chất cúa các hệ thống tính toán da GPU
5.2 Kiến trúc hệ thống GPU cluster
Trang 85.3 Thiết kê giải thuật mô phỏng N-! Body trén hé thing da GPU
5.3.1 Su thue thi song song dau tiên
5.3.2 Giải thuật N-Body cho cac hé thong da GPU ececcccsccssssssssesseneeeeeessasee
5.3.3 Tối ưu hóa giải thuật song song
Trang 9LỜI MỞ ĐÀU
Trong vải năm gần đây, khái niệm tính toán thông dụng trên các bộ xử lý
đồ họa (GPGPU — (ieneral-Purpose Computing on Graphies Processing Units)
thu hút được nhiều sự quan tâm từ các nhà nghiên cửu phương pháp tính toán
khoa học Những lý do căn bản cho mối quan tim nay 1a
s_ lIiệu năng tính toán của các bộ xử lý đồ hoa (GPU) ngay cảng vượt trội so
với oáo bộ xử lý trung tâm truyền thông
e Các hãng sản xuất hộ xử lý đỗ họa như nVidia, AMI liên tục đưa ra
những hệ thông phần mềm trung gian (midđleware) và môi trường phát
triển ứng dụng (trình dịch, trình gỡ rối, ) cho phép người phát triển dễ
đàng xây dựng các ứng dụng phi đồ họa trên các bộ xử lý đồ họa nảy
«_ Giá thành cũng như các chỉ phí năng lượng cho hoạt dông của các bộ xử lý
46 hoa thập hơn nhiều so với các hệ thống máy tính cùng chỉ số hiệu năng
lý thuyết
Cac GPU có khả năng Tỉnh toán thông dụng như vậy có mặt ử khắp nơi, từ
máy tính cơ quan cho tới trường học, đến máy tính nhà riêng của mọi người Sự
phat Iriển rộng rãi về mặt số lượng của các GPU nay dan đến một yêu cầu hết
sức cấp bách và đầy thách thức đối với công dỗng phát triển phần mềm (đặc biệt
là các phan mềm tính toán khoa hgc), dé 14 1am thế nào tận dụng được sức mạnh
song song của các GPU đối với những phần mềm ứng dụng dang và sẽ dược phát
triển trong một vài năm nữa
Trong bối cảnh đó, tôi đã lựa chọn dễ tài: *Nphiên cứu công nghệ Tính taán
thông dụng trên các bộ xử lý đồ họa và ứng dụng trong bài taản mô phông
Trang 10N-Bo” để làm đồ án tốt nghiệp cao học của mình Bài toán N-Body là một bài
toán kinh điển, ứng dụng trong nhiều lĩnh vực của khoa học như vật lý, y sinh,
thiên văn học, Trong bải toán mô phỏng này, khi số lượng Body mô phỏng
trong bài toán là một số rất lớn, việc tính toán tương tác trên tất cả các cặn N-
Body mất rất nhiều thời gian (O(N?) Vi vây chúng ta cần nghiên củu một
phương nháp mới nhằm tăng tốc độ tính Loán oủa bài toán mô phỏng N-Body, đó
là tân đụng sức mạnh tỉnh toán của các bộ xử lý đỗ họa
Qua đề tài này, tôi đã tìm hiểu được môi trường tính toán hiệu năng cao trên
bộ xử lý đồ họa sử dụng công nghệ CUDA của hing nVidia, và bước đầu thử
nghiệm thánh công bài loán mỗ phỏng N-Đody
Nội dung luận văn bau gầm cú 6 chương chính:
Chương 1: Tính toán hiệu năng cao với các bộ xử lý dỗ họa
Chương 2: Kiến trúc Tesla va Méi traéng lap trinh song song CUDA
Chương 3: Bải toán mô phống N-Body
Chương 4: Mô phống N-Body với đơn GPU
Chương 5: Xây dựng giải thuật mô phỏng N-Pody với da GPU
Chương 6: Kết luận và hướng phát triển
Để hoàn thành đổ án tốt nghiệp “Vghiên cứu công nghệ Tính toán thông dụng trên các bộ xử lý đề họa và ứng dụng trong bài toứn mô phông N-Body",
tôi xin chân thành cảm ơn tới Tiến sỹ Nguyễn Hữu Đức — Thầy đã là người trực
tiếp hướng dẫn và giúp đỡ tôi Tôi cũng xin gửi lời cảm ơn tới các thầy cô, các
anh chị quản lý tại Trung tâm Tính toán hiệu năng cao, trưởng Đại học Bách
Trang 11Khoa IIà Nội, đã giúp đỡ và tạo điều kiện cho tôi rất nhiều trong thời gian tôi
làm đỗ án
Trang 12CHƯƠSG I TÍNH TOÁN HIỆU NĂNG CAO VỚI GPU
Chương này nhằm mục đích giới thiệu về vai trò, mô hình iếp cận, và các
công nghệ trong tính toán hiệu năng cao, giải pháp và ứng dụng của chúng vào
trong thực tiễn
1.1 Tinh toán hiệu năng cao và vai trò ứng dụng trong thực tiễn
Trong các ngành khoa học như hóa học, vật lý hạt nhân, vũ trụ học, động,
học chất lỗng, sinh học, y học những bài toán phức tạp đôi hói sự tính toán lớn
luân luôn được đặt ra Miệt số bài toán có độ phức tạp khá lớn tới mức khó có thể
giải được trong một khoảng thời gian chấp nhận với các loại máy tỉnh thông
dụng ngày nay Vẫn để cảng phức tạp khi các bài toán nảy đỏi hỏi việc mô
phéng va hiển thị mô hình đồ họa Mặt khác yêu cầu vẻ thời gian xử lý của bài
loan cổng quan trọng không kém Vi dụ môi bài toán đự báo thời tiết dược giải
trong hai ngày để có thế cho kết quả dự báo thời tiết trong một ngày là không có
ý nghĩa Chính yêu cầu vé tinh loan phức Lạp nảy đã thúc dẩy các siêu máy tính
có khả năng tính toán mạnh ra đời và đi kèm với đó là các phương pháp giải quyết các bài toán này trên các hệ thông siêu máy tính
Tính toán hiệu năng cao (Iligh Performance Computing) 14 phuong cach
giải quyết các bài toán lớn đùng ode may tinh higu ning cao (siéu may tinh) Day
là một hướng nghiên cứu cho cả các tổ chức nghiên cứu, các trường đại học và
SAG ông ty vì nó đòi hỏi không chỉ ở giải phán nhần cứng mả cả ở phần mềm
để vận hành và khai thác hệ thống máy tính một cách hiệu quá cao, với chỉ phí
thấp
Trang 1310
1.1.1 Thách thức tính toán hiệu năng cao trong khoa học và công nghệ
Sự đòi hỏi về sức mạnh tính toán của máy tính không ngừng tăng lên nhằm
để giải quyết các bài toán trong lĩnh vực khoa học và công nghệ Các vẫn đề
trong nhiều lĩnh vực đa số đều đưa về mô hình số và mô phỏng Tùy theo đô lớn
của bài toán cần giải quyết hay độ chính xác của kết quả bài toán mà khối lượng
tính toán sẽ lớn đến mức nào Ví dụ như trong bài toán dự báo thời tiết bằng phương pháp số, để có kết quả dự báo chính xác thỉ ta phải giải bài toán trên một
không gian rộng hơn và như thế số lượng phép tính cũng nhiều hơn
Trong thực tế còn nhiều bài toán có độ phức tạp rất lớn mà sức mạnh siêu
máy tính hiện tại cũng chưa giải quyết được vì vậy người ta gọi đây là các bài
toán thách đồ Hiện nay có rất nhiều lĩnh vực khoa học cần khoa học tính toán như hóa học, vật lý hạt nhân, khoa học vũ trụ, sinh học, y học Khoa học tính
toán giúp giải quyết nhiều vấn đề trên mô hình toán để tiên đoán trước kết quả
thử nghiệm và như vậy giúp rút ngắn quá trình thử nghiệm
Information Processing Service Sofnyars
Hình 1.1 Các ứng dụng tinh toán hiệu năng cao
Trang 1411
Tinh 1.1 đưa ra kết thống kê những ứng dụng phổ biến của tình toán hiệu
năng cao được thực hiện bởi top500 Số lượng bài toán cẦn giải quyết bằng môi
trường tính toán hiệu năng cao cảng cho thấy sự cần thiết của sức mạnh tính toán
trong các lĩnh vực khoa học và công nghệ
1.1
Giải pháp:
Whim dap ứng yêu cẫu tính toán trong khoa học và công nghệ, ba giải pháp
đã được để nghị: (1) Tăng tốc độ tính toán của bộ xử lý, (2) Tìm một giải thuật tốt hơn để giải quyết, và (3) Sử dụng kỹ thuật xử lý song song Giải pháp (1) và
(2) đôi hỏi nhiều thời gian để có kết quả cũng như có nhiều hạn chế Để giải
quyết các bài toán có khối lượng tính toán lớn đôi hỏi một giải pháp mới, đó
chính là giải pháp (3) Chính động lực nảy đã thúc đẩy việc ra đời các hệ thông
máy tính có khả năng tính toán song song mạnh
My tính song song có nhiều bộ xử lý và các bộ xử lý này sẽ tham gia giải
quyết sáo phần khác nhau của bài Loán củng lúc Như vậy thời gian giải quyết
cho vẫn để sẽ được giảm đi Theo lý thuyết, nêu có 2 bd xử lý thì thời gian giải
quyết vấn đề sẽ giảm đi m lần so với dùng một bộ xử lý Tuy nhiên, thời gian dài
giải quyết trong thực tế sẽ lớn hơn thời gian tính toán trong lý thuyết do nhiều
nguyên do Thứ nhất là ngoài thời gian xử lý trong bải toán thi còn thời gian
đồng bộ va giao liếp giữa cdc Lac vu song song Thứ hai là không phải bài toán nảo cũng có thể chia thành » phan nhỏ bằng nhau để giao cho các bộ xử lý
Nguyên do thứ hai phải giải quyết bằng cách xây đựng các giải thuật hợp lý và
có thể thực thi song song được ĐỂ giải quyết nguyên do thử nhất thỉ ngoài việc
phải chú ý đến giải thuật giải quyết vẫn đẻ, ta nên chủ ý đến khả năng truyền dit liệu trong hệ thống máy tỉnh Vậy hiệu quá của việc xây dựng một ứng dụng
Trang 1512
song song không chỉ phụ thuộc vào giải thuật giải quyết mà còn phụ thuộc nhiều
vào hệ thẳng máy tỉnh
1.2 Một số tiếp cận trong tính toản hiệu năng cao
1.2.1 Các hệ thống máy tính da vi xứ lý với mô hình lập trình sang song
chia sẻ bộ nhớ chung
SMP (symmetric multiprocessor) 1a kiến trúc truyền thống trong việc xây
đựng các hệ thống máy tính mạnh Kiến trúc nảy cho phép một hệ thống mảy
tính có thể chứa 2 hay nhiêu bộ vi xử lý đồng nhật chia sẻ cùng một vùng bộ nhớ chung Các hệ thống SMP sử dụng một hệ điều hành duy nhất và lập trinh viên
thường sử dụng phương pháp lập trình da luồng dé tận dụng dược tối da sức
mạnh tỉnh toán của hệ thống Ứng dụng được phân chia thành nhiều luồng công
việc, mỗi luỗng cổng viée nay có thể được thực hiển trên một hộ xứ lý và chúng,
có thê trao đôi thông tim cho nhau thông qua một vùng bộ nhớ chia sẻ
Hai yếu tổ cơ bản ảnh hướng đến hiệu năng hoạt động của một hệ thông
SMP: hiệu năng Linh toán của các bộ xử lý, băng thông của bộ nhứ chia sẻ Hiệu
năng tinh toán của một hệ thông SMP được tính theo số lượng và hiểu năng tính
toán của tùng bộ xứ lý đơn lẻ Thông số nảy đám bảo năng lực tính toán tôi đa
của hệ thông, Tuy nhiên một ứng dụng hiếm khi tận dụng được tối da năng lực
tinh toán của hệ thống Ngoài nguyễn nhân liên quan tới thiết kế giải thuật song
song (nguyên nhân khó có thể cái thiện bằng sự hỗ trợ kỹ thuật) thị độ trễ tỉnh
toán do bãng thông truy nhập vào bộ nhớ chia sẽ thấp cũng là một lý do quan
trọng ảnh hưởng tới hiệu năng ứng dụng trên các hệ thông SMP
Một ví dụ điển hinh cho các bệ thống SMP chính là các máy tính cá nhân
với bộ vi xử lý đa lõi (Intel I2ualCore, Intel QuadCore, ) dược sử dụng phd
Trang 16biến hiện nay Tuy nhiên năng lực tính toán của các hệ thống máy tính cá nhân
như vây chưa thật sự cao để thỏa mãn các nhu cầu tính toán trong công nghệ do
số lượng (cũng như hiệu năng) của các bộ xử lý dành cho máy tính cá nhân còn
năng tối đa lên tới 1.6Tflops Bộ nhớ dành cho mỗi nút có thể lên tới ITB với
băng thông lên tới 4TB/s
Mặc dù có năng lực tính toán lớn, phù hợp nhiều ứng dụng thực tiễn,
nhưng các hệ thông SMP như SX9 không thực sự phổ biển do chỉ phí sản xuất
và vận hành của những hệ thống này quá lớn và quan trọng nhất là tính khả mở
của những hê thống SMP thường thấp Hiện tại các kiến trúc máy tính khác như
kiến trúc phân cụm được ưa chuộng hơn so với SMP (điều này thể hiện ở tỷ lệ
83.4%/16.2% về các số lượng hệ thống cluster/SMP được thống kê vào tháng
11/2009)
Trang 1714
1.2.2 Cụm máy tính với mô hình lập trình song song truyền thông điệp
Hệ thống tính toán song song phân cụm (Cluster) là các hệ thông máy tính song song được xây dựng từ các nút tính toán và thiết bị mạng thông dụng, mỗi
nút tỉnh toán hay các nút đóng vai trò điều khiển vào/ra là một hệ thống hoàn
chỉnh, có khả năng lảm việc độc lập Hệ thống tính toán song song phân cụm là
một máy tỉnh song song trong đó
«_ Các tài nguyên tính toán là bộ vi xử lý và bộ nhớ trong tại mỗi máy tính
+ Các tài nguyên tính toán này có khả năng truyền thông và kết hợp với
nhau thông qua cáp mạng Thường thì quy mô của hệ thống chỉ giới han
trong một mạng cục bô (LAN), trong đó có một máy tính đóng vai trò máy
chủ (server), các máy tính còn lại đón vai trò nút tỉnh toán (computing
Hinh 1.3 M6 hinh mét Cluster
Một hệ thống tính toán song song phân cụm rẻ hơn nhiều so với một siêu máy tính SMP cùng sức mạnh, điều này làm cho các hệ thống tính toán song
Trang 1815
song phân cụm ngày càng phổ biến và đặc biệt phù hợp cho các nước đang phát
triển cũng như các trường đại học Tuy nhiên, các hê thống tính toán song song,
phân cụm cũng có những hạn chế như: quá trình triển khai, cấu hình hệ thống
tương đối phức tạp, hệ thống hoạt động không Ổn định bằng áo siêu máy tỉnh,
và nhược điểm lớn nhất là vân để truyền thông giữa các nút tính toán Việc
nghiên cứu nhằm nâng cao khả năng truyền thông là một trong những vẫn đề
quan trong hàng đầu trong quá trình phát triển các cầu trúc, mô hình hệ thống
phân cụm
Đôi với các hệ thông tính toán phân cụm, phần mềm càng có vai trỏ quan
trọng hơn Chính các phần mềm dám bão cho hệ thống gồm nhiều máy tính riêng
lê có thể hoạt động én định và cộng tác hiệu quả
1.2.3 Các bộ xử lý đề họa với mô hình lập trình song song dữ liệu
'trong khi những nhà chế tạo CPU (bộ xử lý trung tâm) rất khó khăn trong
việc tìm ra giải pháp dé nang cao hiệu năng của CPU thi những nhả chế tạo GPU
(bộ xử lý đồ họa) lại tiếp tục hưởng lợi từ định luật Mioore Irong hình 1.4, sẽ
thé hiện sự gia tăng về số lượng phép tinh dấu chấm động/giây và dải thông dat được giữa các dòng card để họa của Nvidia và CPU Intel
Trang 19Hình 1.4 Biểu đồ số phép tinh dấu chấm động trên giây và đải thông bộ nhớ
giữa CPU và GPU
© GPGPU (General-Purpose computation on GPUs — Tinh toan thong dung
trên các bô xử lý đồ họa)
Một câu hỏi được đặt ra, vậy tại sao không thiết kế CPU giống như GPU để
đạt được cải thiên hiệu năng cao như vậy? Câu trả lời rất đơn giản: CPU được
thiết kế để đạt được hiệu năng tối đa từ việc xử lý một dòng nhiều lệnh mà
những lệnh đó vận hành trên những lọai dữ liêu khác nhau (chẳng hạn như
những phép tính số nguyên và phép tính dấu chấm động) và thực hiện truy cập
bô nhớ, tính toán rẽ nhánh Để thực hiện tất cả công việc đó, CPU phải làm
việc bằng cách trích xuất ra nhiều lệnh song song Nhưng vấn đề phát sinh ở đây
là giới hạn của việc xử lý những lệnh song song đó và việc tăng các đơn vị xử lý
những lệnh song song là không hữu ích l.
Trang 2017
Ngược lại, cách vận hành của GPU lại rất đơn giản Trước tiên là tập hợp
các đa giác và điểm ảnh thành môt nhóm, và sau đó các dữ liêu nay sẽ được xử
lý hoàn toàn độc lập với nhau Điều này có nghĩa rằng GPU có thể dành hầu hết
tài nguyên của nó để xử lý các dữ liêu nảy
Hình 1.5 GPU đành nhiều transistor hơn để xử lý đữ liệu Ngoài ra, GPU cũng khác CPU ở việc truy cập bộ nhớ Khi một điểm ảnh được đọc, ở những chu kỳ sau đó điểm ảnh láng giềng cũng sẽ được đọc, và khi một điểm ảnh được ghi thì ở những chu ky sau đó điểm ảnh láng giéng cũng được ghi Việc tổ chức bộ nhớ thông minh như vậy làm cho hiệu năng của bộ
nhớ cũng đạt gần như mức lý thuyết Điều này có nghĩa rằng đối với GPU không
giống như CPU không cần phải có bộ nhớ đêm (cache) lớn, vì phần lớn bô nhớ được sử dụng để tăng tốc xử lý texture (bề mặt) và một phần còn lại của bộ nhớ
dùng để chứa những điểm ảnh sử dụng cho việc lọc
Trang 2118
iP (|
I he
Cache Seq Rand Cache Seq Rand
GeForce 7800 GTX Pentium 4
Trong một khoảng thời gian dài CPU và GPU được thiết kế để làm những
công việc phủ hợp với khả năng của nó, chẳng han như CPU dùng để gõ văn bản
và duyệt web thì GPU dùng để tăng tốc xử lý đồ họa cũng như các trỏ chơi
Nhưng đến thời điểm xuất hién GPU NV30 cia NVIDIA (GeForce FX
5800), GPU bắt đầu tham dự vào những công việc khác ngoài đồ họa như :
—_ Hỗ trợ tính toán dấu chấm động đơn
—_ Hỗ trợ tính toán lên đến cả ngàn lệnh
Vì thể đã nảy ra ý tưởng dùng GPU để xử lý những chương trình không
thuộc đồ họa Vào năm 2003 bắt đầu xuất hiện khái niêm GPGPU (viết tắt của từ
General-Purpose computation on GPUs - Tính toán thông dung trên các bộ xử lý
đỗ họa)
SC0§ đánh dấu sự ra đời của siêu máp tính đâu tiên trên thể giới sử đụng GPU lam céng cụ tính toán phức tạp và các bài toán kinh tế Siêu máy tính này
đến từ Tokodai (TiTech, Tokyo Institute of Teehnology), với tên gọi Tsubame,
hệ thống gồm 170 khối Tesla dạng 1U, với mỗi khối gồm 4 card Tesla, tổng
công hệ thống có thêm 170 x 4 = 680 Tesla GPU, với cấu hình này Tsubame
Trang 2219
được xếp vào vị trí 29 trong bảng tổng sắp LINPACK Benmark, véi khả năng
tính toán có dễ chính xác kép trên số thực là 7748 TEIOP Với một kinh phí
khiêm tốn, ít hơn rất rất nhiều lần so với hệ thông ban đầu, và với thời gian lắp
đặt kỹ lục, Tsubame với Tesla chứng tỏ khả năng sử dụng GPU trong các hộ
théng HPC là hoàn toản hiền thực
Chính vì vậy ma chi sau khi NVLDIA cho ra doi CUDA vao thang 2 nim
2007 đến nay, lập trình viên trên khắp thế giới đã nhanh chóng phát triển gác ứng dung song song trong rất nhiều lĩnh vực khác nhau, từ điện toán hóa học đến sắp
xếp, tìm kiểm, rồi mô phỏng các mô hình vật lý, hay chan đoán y khoa, thăm đò
đầu khi, v.v Những ứng dựng này có một đặc thủ gọi là “có thể mở rộng quy
mmô thực thi một cách trong suốt” điếng Anh gọi lả “scalable transparendy “#1,
nghĩa là sẽ phát huy hiểu năng một cách phù hợp trên các GPU từ 8 lõi (hấp
nhất) dén hang trim lõi, mà không cần phải viết lại chương trình (hay nói cách
khác là trong suốt với số lượng lõi có trong GPU trên môi trường thực thi cụ thể)
Điều này thực hiện được nhờ sự phối hợp nhịp nhàng của 2 yếu tố phần cửng và
phần mềm trong công nghệ CUI2A đỏ là:
« Méhinh lap trinh song song CUDA
+ Kiến trúc phan cimg Tesla
Trong chương II, chủng ta sẽ cùng tìm hiểu rõ hơn về kiến trúc phần cứng
Tesla, GPU Tesla va mô hinh lập trình song song CUDA, một dông nghệ mới
với khả năng ứng dựng rất lớn vào thực tiễn trong vòng vải năm sắp tới
Trang 2320
CHƯƠNG II GIỚI THIỆU KIÊN TRÚC TESLA VÀ MÔ HÌNH
LAP TRINH SONG SONG CUDA
2.1 Giới thiệu kiến trúc phần cứng Tesla của Nvidia (Tesla Architecture)
Hiệu năng tính toán của những bộ vi xử lý
dé hoa (GPU) ngày càng tăng thâm chí vượt xa —
so với các bộ xử lý CPU thông thường Để tận
dụng được khả năng tính toán này cho những
bài toán phi đồ họa, các nhà sản xuất cũng như NVIDIA
(General-Purpose Computation on GPUs —
Hình 2.1 Điều tượng
Tesla
Tinh toán thông dung trên các bộ xử lý đồ họa)
do là việc sử dụng GPU để làm những công
việc trước kia là của CPU để tăng cường hiệu suất làm việc Lam thé nao dé lam
được việc đó? Làm thé nao dé chương trình lập trình cho GPU có thể tương thích
với nhiều bộ xử lý đồ họa khác nhau Để giải quyết vấn đề này, hãng NVIDIA
phát triển một ngôn ngữ mới dựa trên C cho phép lập trình viên dễ dàng xây
dựng ứng dụng tính toán thông dụng cho các GPU (mà ban đầu là các GPU dòng
G801)
Để tiền thêm một bước xa hơn nữa, NVIDIA tung ra dòng sản phẩm có tên
gọi Tesla (AMD/ATI cũng có dòng sản phẩm với khái niệm tương tự có tên gọi
Stream) Tesla ban đầu dựa trên sức mạnh của GPU GeForce 8800 nhưng không
tạo ra tín hiệu Video: chúng được dùng như các bộ xử lý chuyên dụng cho mục
đích tính toán Các chương trình viết cho Tesla phải được dịch bằng CUDA, do
đó những người dùng thông thường không được hưởng những lợi ích từ công
Trang 24nghệ này (khi cải đặt Tesla vio may tính, hiệu suất hệ thống sẽ không tự động
tng ln) ‘Tesla chi pha hop với những ứng dụng nặng về tính toán và những tính
toán này có thể song song hóa được Ví dụ những chương trình trong lĩnh vực:
Vật lý, Tài chính, Y tế, Sinh học và Hoá học
T.ập trình viên cũng không nhất thiết phải có Tesla mới cỏ thể sử dụng
duge CUDA Ho cé thé sit dung bất kỳ Card màn hình nào thuộc dỏng GeForce
§800 trở lên (và ŒTX200 hiện nay) Nếu nó làm việc tốt thì những nhà lập trình
có thể nghĩ về việc mua những hệ thông mạnh hơn đó chính lả giải pháp Tesla 2.2 Kiến trúc tính toán trên ŒPU Tesla và mô hình lập trình song song
CUDA
Trong kỹ thuật xử lý đồ họa 3D, quá trình chuyển đổi một hình ảnh dang ba
chiều sang dạng diễm ảnh dòi hỏi các thao tác xử lý dễ họa diễm và dé hoa véc-
tơ Xử lý đỗ họa véc-tơ là các thao tác trên véc-tơ căn bản như các điểm, đường
thẳng, vả các hình Lm giáo Các thao tác này sử dụng cáo mô hình hình học va
việc tô trát trên các mô hình đó để hiến thi dé hoa hay nói cách khác đỏ là các
thao tác truyền tải các hệ thống tọa độ, thiết lập các tham số kết cầu và ánh sáng
để hiển thị hình ảnh Xử lý đỗ họa diểm ảnh là thao tác chuyển đổi hình ảnh từ
mô hình hình học sang các điểm ảnh vả thể hiện chủng trên các lưới điểm ảnh đầu ra, thao tác thường thấy là phủ đầy các điểm ảnh bên trong hình ảnh nguyên
thủy
"trong quả trình phát triển, xử lý điểm ảnh và véc-tơ đã phát triển ở hai dạng,
khác nhau Xử lý véc-tơ có độ trễ thấp, thao tác toán học có độ chính xác cao và
xử lý phức hợp nhiễu hơn, chính diều này đã trở thành khả năng có thể lập trình
được Xử lý điểm ảnh có độ trễ cao (vi phải qua quá trình chuyển đối từ mô hình
Trang 2522
hình học sang các điểm ảnh, sau đó mới được hiển thị ở đầu ra), bộ lọc kết cầu
có độ chỉnh xác thấp hơn Và bình thường GPU phải xử lý nhiều điểm ảnh hơn
các véc-tơ (với tỷ lệ 3:1) Rồi khả năng tăng cường tính phổ biến của GPU như
tăng cường các thiết kế phức hợp, vùng miễn, giá thành của hai cách xử lý riêng, biệt Thêm đó là khả năng tính toán phức hợp (lập trình được), và GPU loại này
đang được lựa chọn với tỷ lệ nhiều hơn so với lựa chọn các GPU có các bộ xử lý
không lập trình được, chính những điều nảy là động cơ thúc đầy của kiến trúc xử
lý Tesla
2.2.1 Kiến trúc tính toán trên GPU Tesla
Được NVIDIA giới thiêu vào tháng 11 năm 2006, kiến trúc tính toán và đồ họa
hợp nhất Tesla đã phát triển, gia tăng đáng kể về số lượng so với các GPU đồ
họa không lập trình được Khả năng xử lý đa luồng với số lương luồng thực thi
cực lớn khiến kiến trúc này trở nên một nền tảng hiệu quả cho cả những ứng dụng tính toán đồ họa và ứng dụng tính toán song song thông thường trên GPU
Hình 2.2 Kiến trúc của 1 card NVIDIA Tesla GPU với 112 lỗi xứ lý
Trang 26Kiến trúc Tesla được xây dựng xung quanh một mảng có thể mở rộng của
các SM (streaming multiprocessors — da xứ lý dòng lệnh) Mỗi SMI chứa lõi xử
lý vô hướng 5P Những CPU theo kiến trúc nảy có thể thực hiện từ 768 cho tới
12288 luỗng thực thi đồng thời Với sự hỗ trợ của môi trường phát triển ứng
dụng CUDA, các GPU nay cho phép lập trỉnh viên mở rộng quy mô thực thi
song song một cách trong suốt (số luỗng không phụ thuộc vào năng lực thực sự
của GPU)BI,
Hình 22 trình bảy một GŒPU với 14 SMs - tương đương với 112 lõi SP
(streaming processor), kết nói liên thông với 4 mô đun bộ nhớ DR.AMI bên ngoài
Một chương trinh CUDA chia ra hai phần riêng biệt, phần thực thị trên CPU, và
phan thực thi trên GPUƯ Khi một chương trình CUDA trên CPU gọi một kernel
(đơn vị chương trình được viết để thực thí trên GPU) kernel nay sẽ được thực hiện N lần song song với nhau bởi N luồng CUDA khác nhau N luồng này được
tổ chức thành mệt lưới bao gền nhiều khối (block), mỗi khối gồm nhiều luồng
Khi kernel duce gọi, đơn vị phân phát công việc tỉnh toán, gợi tắt lá WD
(Compute Work Distribution) sẽ liệt kê các khối của lưới và bắt đầu phân phối
các khối này tới các SM sẵn sàng thực thi (sẵn sàng chạy) Các luồng trong một
khối được thưc hiện đồng thời trên một SM Khi các khối kết thúc, đơn vị ŒWID
sẽ thực thi các khối mới trên các bộ xử lý ránh rỗi cho tới khi toàn bộ khối trong lưới được thực thị thánh công
Một SM có chữa § lỗi xử lý vô hướng SP — scalar proccssor (SP), 2 dơn vị chức năng đặc biệt special function units (SEUS), dành cho tính toán siêu việt,
1 đơn vị điều hướng da luéng — multithreaded instruction unit (MTTU), và 1 bộ
nhớ chia sẻ trên nó (on-chip shared memory) SM dâm nhiệm việc †ao, quần lý,
và thực hiện tới 768 luông đồng thời trên phần cửng mà không tốn kém chỉ phí
Trang 27lập lịch Nó có thể thực thi 8 block CUDA nhiều lần trong củng một thời điểm
SM cén cung cấp rao chắn CUDA _ syncthreads(), rào chắn này có tác dung
đồng bộ hóa các luéng bên trong SMI với một lệnh đơn Chính xác hơn, khi một
điểm đồng bộ hoá đặc biét trong kernel gọi _ syncthreadsQ, _ syncthreads() hành đông như môt rào chắn nó yêu cầu tất cả các luỗng trong khối phải đợi trước khi nó được phép xử lý
Để quản lý hàng trăm luồng chạy trong nhiều
ứng dung khác nhau, Tesla SM sử dụng một kiến trúc
mới gọi là “đơn dòng lệnh đa luồng” — SIMT (Single- Instruction, Multiple-thread) SM ánh xạ mỗi luồng đục,
tới một lõi vô hướng SP, và các luồng vô hướng sẽ ies
chạy độc lập với nhau với địa chỉ tập lệnh và trạng Tuấn hô Hhn
thái thanh ghi riêng của nó Đơn vị SM SIMT tao, W2 i
in sac : ng i
quản lý, sắp xếp và thi hành các luông trong một (ieee 3
nhóm gôm 32 luông song song được gọi là warps II HH
Các luồng riêng lẻ sắp xếp theo trật tự thành một tập
hợp warp khởi đông cùng nhau tại cùng mét dia chỉ chương trình nhưng tự do rế nhánh và thực thì một cách độc lập Mỗi SM quan lý một nhỏm gồm 24 warp với
32 luồng trên mỗi warp, và tổng công có 768 luỗng
Các lệnh được đưa ra củng một thời điểm đơn vị SIMT sẽ lựa chọn một warp đã sẵn sàng thực hiện và đưa ra lệnh tiếp theo tới các luồng đã được chuẩn
bi trong warp Mét warp thực thi một lênh chung tai mét thoi điểm, do vậy hiệu
quả cao nhất thu được khi cả 32 luồng trong một warp phù hợp với nhau về đường dẫn thực thi của chủng Nếu các luồng của một warp phân rẽ qua một dữ
liệu phụ thuộc điều kiện rẽ nhánh, thi warp sẽ thi hành từng nhánh đường dan lay
Trang 28được, vô hiệu hóa các luồng mà không ô trên đường dẫn đó, và khi tất cả các
dường dẫn được hoàn thành, các luồng hội tụ trở lại dễ thực hiện trong cùng một
đường đẫn Sự rẽ nhánh xây ra chi trong một warp, các warp khác nhau thực thi
độc lập với nhau và không chủ ý tới chúng đang thực thì một đường đẫn chung
hoặc đường dẫn đoan mã rời rac Và như là một kết quả kiến trúc GPU Tesla dot
nhiên trở nên mêm dẻo và hiệu quả hơn trên các nhánh mã so với các GPU trước
đây, như các warp 32 luỗng của chúng bị han chế nhiều hơn so với đô rộng SIMD (5ingle-Imstruetion Multiple-Data) của các GPU trước kia
kiến trúc SIMT gần giống như với câu trúc véc-tơ SIMD mả trong đó một
lệnh điều khiển nhiễu quá trinh xử lý các phần tử Một diều thơn chốt khác lá cấu
trúc véc-to SIMD chi ra sy song song hoa ở mức dữ liệu trong chương trỉnh,
trong khi các lệnh SIMT định rõ việc thực thị và trạng thái phân nhánh của một
Tung, don Trái ngược với các véc-tơ SIMI3, SIM cho phép lập trình viên viết
đoạn mã lệnh song song phân cấp các luỗng một cách độc lập, các luồng vô
hướng, cũng như lả doạn mã song song dữ liệu dảnh cho phối hợp các luồng,
Lập trình viên có thể về căn bản bỏ qua đông thái SIMII, tuy nhiên, chắc chắn
hiệu năng có thé được nhận thấy bởi việc quan sát đoạn đoạn mã ít khi yêu cầu
các luỗng trong warp phân rẽ Irong thực tế, nó tương tự như vai trỏ của các đồng đệm trong các đoạn mã truyền thông: kích thước đỏng đệm có thế bó qua
một cách an toàn khi thiết kế với tính dúng đắn nhưng phái dược xem xét trong
cấu trúc đoạn mã khi thiết kế cho hiệu năng tối đa Các kiến trúc véc-tơ, theo
một hướng khác, yêu cầu phần mềm kết hợp một khối để load trong các véc-tơ
và diều khiển sự phân rẽ một cách thủ công
Một biến luỗng thường lưu trú trong các thanh phi dang sống Bộ nhớ chia
sẽ 16Kb SM có độ trễ truy cập thấp và đải thông cao tương tự như bộ nhớ đệm
Trang 29L1, nỗ giữ các biến CUDA shared trên khối để dành cho việc kích hoạt các
khối luồng 8M cung cấp việc nạp/lưu trữ các lệnh dể truy cập biến CUDA
device trên GPU có bộ nhớ DRAM gắn ngoài Nó kết hợp thành một khối truy gập riêng rẽ của các luỗng song sung trong cimg mét warp và ở trong vải truy cập khối bộ nhớ khi các địa chỉ rơi vào trong cùng một bkhối và gặp các tiêu chuẩn liễn kết Bởi vì độ trễ của bộ nhớ chưng có thể tới hàng trăm xung nhịp xử
Jy, để tôi ưu, các chương trình CUI2A thường copy dữ liêu tới bô nhớ chia sẻ khi
đữ liệu này được truy cập nhiêu lần bởi một khối luồng Tesla nạp/lưu trữ các
lệnh bộ nhớ sử dụng địa chỉ là các bytc số nguyên dễ thuận tiện cho trình biên
địch chuyển đổi tồi ưu các đoạn mã Luông đêm trong mỗi SM, cũng như việc
hd trợ cho nhiều yêu cầu nap con tỒn tại, giúp đỡ che phủ độ trễ trong việc nạp
và sử dụng tới các bộ nhớ IRAMI gẵn ngoài Kiến trac GPL 'Tesla mới nhất
cũng cung cấp các lệnh bộ nhớ đọc-sửa-ghi nguyên tố, thuận tiện cho sự giảm
bới song sơng và quản lý cấu trúc song song đữ liệu
Các ứng dụng CUDA thực hiện tốt trên các GP kiến trúc Tesla bởi vì mỗ
hình song song CUDA, sự đồng bộ, các bộ nhớ chia sẻ, và phân cấp của các
nhóm luỗng ánh xạ hiệu quả tới các chúc năng của kiến trúc GPU
2.2.2 Mô hình lập trình song sung CUDA
CUDA mổ rộng từ ngôn ngữ lập trình C, cho phép các nhà lập trình định nghĩa các hàm trên Ở, được gọi là các kernel, chúng được thực thi song song tại
cũng thời điểm bởi N tham chiếu tới các luỗng CUDA, giống như các hàm C
thông thường,
Trang 30kẻ Sa}
Một kernel được định nghĩa sử dụng một tham số mô tả global và số các
luỗng CUI2A cho mỗi lời gợi chúng được chỉ rõ bằng việc sử dụng một cú pháp
Mỗi luồng thực thi được gán với một chỉ số luồng duy nhất thông qua biến
threadTdx Ví dụ, đoạn mã sau gộng 2 veclor A va Ð có kích thước N vả lưu kết
quả vào trong vector C:
global void vecAdd(float* A, float* B, float* C)
Trang 31Mỗi luỗng thực thi ham vecAdd() sé tinh một phép cộng hai phần tử tại vị
trí I tương ứng với chỉ số luồng threadldx
* Su phan cap luéng
Dể thuận lợi, CUDA thiết kế threadIdx nhw 14 mét vector 3 thành phần
Cx y,z), do đó người lập trình có thể quyết định xây dung các luồng trong một
khôi như là các mắng l chiều, hai chiều hay ba chiễu Trong ví dụ sau, đoạn mã
thực hiện phép cộng 2 ma trận A vả B có kích thước NxN và kết quả được lưu
Chỉ số của một luồng và thrcad1d của nó có mối quan hệ tương ứng với
nhau: với block một chiéu, chúng giống nhau, với biock 2 chiều kích thước
(DxDy), threadID của một luồng có chỉ sé (x,y) 1a œ yDx), với một block 3
„2 là
chiều kích thước (J)x,I2y,l2z), threadll) của một luồng có chi sé (xy
(x yDx' zDxDy)
Trang 32Các luỗng thuộc về một khối có thể củng hợp tác tỉnh toán bằng xử lý trên
vùng dữ liệu chia sẽ tương ứng với chỉ số luỗng, và khi cần truy đồng bộ hóa đữ
liệu chúng có thể sử đụng hàm syncthreadsQ để đảm bảo các tác vụ trước rảo chin phải được hoàn tắt trước khi Hiếp tục xử lý
Số luồng mỗi khối bị hạn chế bởi giới hạn nguồn tài nguyễn bộ nhớ của
lõi bộ vi xử lý Với kiến trúc Tesla của NDIVIA, một khối có thể chứa tới 512
luéng Tuy nhiên, một kernel có thể được thực thi nhiều hơn số lượng luồng trong 1 khối bằng cách tổ chức các luông thảnh nhiều khổi Oác khối có thể được
tổ chức vào trong lưới mệt chiều hoặc 2 chiều của một lưới, được minh hoa như
hình 2.3 đưới dây
Trang 3330
Hinh 2.3 Lưới các Luông Blocks
Chiều của lưới được chỉ rõ bởi tham số đầu tiên của ký pháp <<< >>>
Vị trí mỗi khối trong một lưới được quy định bởi chỉ số một chiều hoặc hai chiều
blockldx Chiều của block có thể truy cập thông qua biến blockDim Đoạn mã ví
dụ trước đây trở thành
global void matAdd(float A[N][N], float B[N][N], float C[N][N])
{
Trang 3431
int i = blockIdx.x * blockDim.x | threadIdx.x;
int j = blockIdx.y * blockDim.y + threadldx.y,
Kích thước một block lả 16x16 — 256 luồng tương ứng với một mã trận
phân tử Lưới được tạo ra với kích thước vừa đủ với số ma trận phan ti
Các khối được yêu câu thực thi một cách độc lập với nhau: các khối có thể
dược thực thì song song hoặc tuân tự Tỉnh độc lập này cho phép các khối có thể
dễ dàng lập lịch trên bất ky GPU nao, khéng phụ thuộc số lượng SM Điều này
cũng cho phép lập trình viên dễ dàng viết các mã khả chuyển giữa các họ GPU
khác nhau Số các khối trong một lưới thường phụ thuộc kích thước của dữ liệu
được xử lý hơn là số các bộ vị xử lý trong hệ thông
Trang 35nhập được từ tất cả các luồng trong khối Cuối củng, tất cả các luồng có thể cùng
truy cập tới củng bô nhớ tổng thể
Ngoài các không gian nhớ kể trên, các GPU Tesla cũng có thêm hai dạng
không gian nhớ chỉ đọc, có thể truy nhập được từ mọi luồng bộ nhớ texture, và
Trang 36Global memory
Hinh 2.4 Kiến trúc bộ nhớ
¢ Host va Device
Như được minh hoạ trong hình 2.5, CUDA giả thiết rằng các luồng CUDA
được thực thi trên một thiết bị vật lý riêng biệt (device) song hành với chương,
trình chạy trên bộ xử lý trung tâm (CPU) Trong ví dụ, khi các kernel thực thi
trên một GPU thì phần còn lại của chương trình C chạy trên CPU
CUDA cũng giả thiết rằng cả host và device có bộ nhớ DRAM riêng, được tham chiếu tới như bộ nhớ host và bộ nhớ device Các kernel chỉ được phép truy
nhập trong vùng bộ nhớ device trong khi các đoạn mã thực thi trên CPU chỉ truy
nhập được vùng bô nhớ host CUDA cung cấp các phương tiên để chuyển dữ
liêu qua lại giữa hai vùng bộ nhớ này
Trang 37Hinh 2.5 Chương trình không đông nhất: mã thực thi trên host tuần tự trong khi
mã thực thì trên device song song.
Trang 3835
© Xép chéng phan mém (Software Stack)
Các lớp phần mềm của CUDA được cấu thành từ một số thành phần như được minh hoạ bởi hình 2.6: một đevice driver, một giao diện lập trình ứng dung
(API) va thu thi, va cdc thu viện toán học mức cao dùng chung như CUEFT và
CUBLAS
Hình 2.6 Kién tric phan mém eta CUDA 2.2.3 Những mặt hạn ché cia CUDA
Một vấn đề quan trọng đối với các lập trình viên CƯDA là phải nắm vững
được những hạn chế của kiến trúc nảy để có thể tối ưu hóa được ứng dụng.
Trang 3936
Trước tiên, các luồng và các khối được tạo bởi lời gọi tới một kernel duy
nhất, do đó song song hóa đữ liệu là mô hình thiết kế hiệu quả các ứng dụng trên
GPU Các công việc được nhóm thánh lưới của các khối luồng, và các khối
luồng này độc lập với nhau Sự độc lập này cho phép CUDA xây dựng một bộ
lâp lịch đơn giản mà không tạo ra các chị phí hiệu năng dự thừa Tuy nhiên cũng
chính sự độc lập giữa các khối lại gây khó khăn đối với người lập trình vì các
kernel khéng thé tao ra được những rào chắn vượt qua biên giới của khối (ví dụ không đồng bộ được các luỗng nằm trong các khối khác nhau) Trong trường
hợp lập trình viên muốn tổng hợp các kết quả được tạo ra bởi nhiều khối, các
khối này nói chung phải được thực thi bằng cách chạy kernel trên các lưới khác
nhau Nhiều khối có thể phối hợp công việc của chúng với nhau sử đụng các thao
tác nguyên tử trên bộ nhớ dùng chung
Các kernel của UI2A không hỗ trợ lời gọi hãm đệ qui Đệ qui khó thực
hiện trong nhân song song bởi vi mỗi luông có thể tạo ra một stack riêng và bộ
nhớ đảnh cho staok của hàng chục nghìn luỗng trở nên qua lớn L.ập trinh viên do
vậy phải thay thế các giải thuật đê quy bằng các mô hình song song lỗng nhau
Dễ hỗ trợ một kiến trúc không đồng nhất bao gồm một CPU và một GPU,
với mỗi hệ thống bộ nhớ riêng của chúng, các chương trình CUDA phải được
cupy đữ liệu và các kết quả giữa bô nhớ host (CPU) và bô nhớ thiết bị (GPU),
2.3 Thiết lập môi trường tính toán CUĐA
Để có thể chạy được các chương trình CUI2A, chúng ta cần có một môi
trường phủ hợp, hd tro cho CUDA cả về phần cứng và môi trường phần mềm
Trang 402.3.1 Môi trường phần cứng
Vì các ứng dụng CUDA được viết để chạy trên các GDU cúa Nvidia, nén diễu kiện dầu tiên là phải có một GPU mả tính năng CUDA trên đỏ dược thiết
lập sẵn IIiện náy các đỏng GPU thiết lập sẵn CUDA bao gồm các đòng!êL
© GeForce 8, 9, 100, 200 Bộ nhớ nhỏ nhất trên các GPU nay 1a 256Mb
* Cac GPU Tesla nhu 5870, D870, C870, C1060, C1070
© Cac GPU Quadro FX
Các thành phần phần cứng còn lại cấu hình tốt thiểu dễ chạy cdc img dung
CUDA có thể là như sau:
— 1.6GH: Tmới or AMD dual core CPU
— NVIDIA GaHorce ä series or later CUDA enabled GPU
— Windows XP/Vista 32-bit or 64-bit
~ Linux 32 or 64-bit
2.3.2 Bộ công cụ phát triển phần mềm
Bộ công cụ phát triển CUDA của NVII3A gồm có 3 thành phần bao gồm!?!;
1 Driver CUI3A mới nhất
2 Một bộ Toolkit CUI2A bao gầm
— nvee C compiler
— CUDA FFT and BLAS libraries for the GPU
Profiler