1. Trang chủ
  2. » Luận Văn - Báo Cáo

Luận văn nghiên cứu công nghệ tính toán tổng quát trên các bộ xử lý Đồ họa và Ứng dụng trong bài toán mô phỏng n body

93 1 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nghiên cứu công nghệ tính toán tổng quát trên các bộ xử lý đồ họa và ứng dụng trong bài toán mô phỏng n body
Tác giả Trần Thanh Hùng
Người hướng dẫn TS. Nguyễn Hữu Đức
Trường học Trường Đại Học Bách Khoa Hà Nội
Chuyên ngành Công Nghệ Thông Tin
Thể loại Luận văn thạc sĩ
Năm xuất bản 2009
Thành phố Hà Nội
Định dạng
Số trang 93
Dung lượng 1,75 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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

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 3

LỜ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 4

Tó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 5

kỳ

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 6

CHUGNG 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 7

3.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 8

5.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 9

LỜ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 10

N-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 11

Khoa 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 12

CHƯƠ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 13

10

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 14

11

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 15

12

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 16

biế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 17

14

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 18

15

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 19

Hì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 20

17

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 21

18

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 22

19

đượ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 23

20

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 24

nghệ 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 25

22

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 26

Kiế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 27

lậ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 29

L1, 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 30

kẻ 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 31

Mỗ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 32

Cá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 33

30

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 34

31

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 35

nhậ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 36

Global 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 37

Hinh 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 38

35

© 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 39

36

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 40

2.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

Ngày đăng: 09/06/2025, 12:44

HÌNH ẢNH LIÊN QUAN

Hình  1.1.  Các  ứng  dụng  tinh  toán  hiệu  năng  cao - Luận văn nghiên cứu công nghệ tính toán tổng quát trên các bộ xử lý Đồ họa và Ứng dụng trong bài toán mô phỏng n body
nh 1.1. Các ứng dụng tinh toán hiệu năng cao (Trang 13)
Hình  1.2.  Siêu  máp  tính  NEC  SY9 - Luận văn nghiên cứu công nghệ tính toán tổng quát trên các bộ xử lý Đồ họa và Ứng dụng trong bài toán mô phỏng n body
nh 1.2. Siêu máp tính NEC SY9 (Trang 16)
Hình  1.4.  Biểu  đồ  số  phép  tinh  dấu  chấm  động  trên  giây  và  đải  thông  bộ  nhớ - Luận văn nghiên cứu công nghệ tính toán tổng quát trên các bộ xử lý Đồ họa và Ứng dụng trong bài toán mô phỏng n body
nh 1.4. Biểu đồ số phép tinh dấu chấm động trên giây và đải thông bộ nhớ (Trang 19)
Hình  1.5.  GPU  đành  nhiều  transistor  hơn  để  xử  lý  đữ  liệu - Luận văn nghiên cứu công nghệ tính toán tổng quát trên các bộ xử lý Đồ họa và Ứng dụng trong bài toán mô phỏng n body
nh 1.5. GPU đành nhiều transistor hơn để xử lý đữ liệu (Trang 20)
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 - Luận văn nghiên cứu công nghệ tính toán tổng quát trên các bộ xử lý Đồ họa và Ứng dụng trong bài toán mô phỏng n body
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 (Trang 25)
Hình  2.6.  Kién  tric phan  mém  eta  CUDA  2.2.3.  Những  mặt  hạn  ché  cia  CUDA - Luận văn nghiên cứu công nghệ tính toán tổng quát trên các bộ xử lý Đồ họa và Ứng dụng trong bài toán mô phỏng n body
nh 2.6. Kién tric phan mém eta CUDA 2.2.3. Những mặt hạn ché cia CUDA (Trang 38)
Hình  3.1.  Biểu  điễn  một  đãi  ngân  hà,  va  cdc  body  hit  tong  tác  lẫn  nhau  thông - Luận văn nghiên cứu công nghệ tính toán tổng quát trên các bộ xử lý Đồ họa và Ứng dụng trong bài toán mô phỏng n body
nh 3.1. Biểu điễn một đãi ngân hà, va cdc body hit tong tác lẫn nhau thông (Trang 43)
Hình  4.3.  Ludi  Thread Block  đề  tính  toán  tất  cá  N°  lực.  Ở  đây  có  4  thread  block - Luận văn nghiên cứu công nghệ tính toán tổng quát trên các bộ xử lý Đồ họa và Ứng dụng trong bài toán mô phỏng n body
nh 4.3. Ludi Thread Block đề tính toán tất cá N° lực. Ở đây có 4 thread block (Trang 59)
Hình  4.4,  Biéu  dé  higu  nding  cla  GPU,  CPU  voi  sd  twang  tde  trén  mdi  body - Luận văn nghiên cứu công nghệ tính toán tổng quát trên các bộ xử lý Đồ họa và Ứng dụng trong bài toán mô phỏng n body
nh 4.4, Biéu dé higu nding cla GPU, CPU voi sd twang tde trén mdi body (Trang 64)
Hình  4.5.  Biểu  đồ  hiện  năng  của  GPU,  CPU  với  số  tương  tác  trên  mỗi  body - Luận văn nghiên cứu công nghệ tính toán tổng quát trên các bộ xử lý Đồ họa và Ứng dụng trong bài toán mô phỏng n body
nh 4.5. Biểu đồ hiện năng của GPU, CPU với số tương tác trên mỗi body (Trang 65)
Hình  4.7.  Hiệu  năng  lăng  lên  với  việc  mở  lặp.  Đồ  thị  cho  thấy  sự  thay  déi  của - Luận văn nghiên cứu công nghệ tính toán tổng quát trên các bộ xử lý Đồ họa và Ứng dụng trong bài toán mô phỏng n body
nh 4.7. Hiệu năng lăng lên với việc mở lặp. Đồ thị cho thấy sự thay déi của (Trang 67)
Hình  4.8.  Hiệu  năng  tăng  khi  kích  thước  Block  thay  đối.  Đồ  thị  cho  thay  hiệu - Luận văn nghiên cứu công nghệ tính toán tổng quát trên các bộ xử lý Đồ họa và Ứng dụng trong bài toán mô phỏng n body
nh 4.8. Hiệu năng tăng khi kích thước Block thay đối. Đồ thị cho thay hiệu (Trang 69)
Hình  4.9.  Biểu  đồ  hiệu  năng  khi  số  lượng  thread  thay  đổi  với  số  lượng  body  mô - Luận văn nghiên cứu công nghệ tính toán tổng quát trên các bộ xử lý Đồ họa và Ứng dụng trong bài toán mô phỏng n body
nh 4.9. Biểu đồ hiệu năng khi số lượng thread thay đổi với số lượng body mô (Trang 71)
Hình  §.4.  Sự  fhực  thi  song  song  hóa  mô  phỏng  N-Body  đâu  tiên - Luận văn nghiên cứu công nghệ tính toán tổng quát trên các bộ xử lý Đồ họa và Ứng dụng trong bài toán mô phỏng n body
nh §.4. Sự fhực thi song song hóa mô phỏng N-Body đâu tiên (Trang 83)
Hình  3  tới  1  GPU  đơn  lẻ,  nó  có  thể  cho  phép  nhiều  cột  tới  cùng  1  GPU - Luận văn nghiên cứu công nghệ tính toán tổng quát trên các bộ xử lý Đồ họa và Ứng dụng trong bài toán mô phỏng n body
nh 3 tới 1 GPU đơn lẻ, nó có thể cho phép nhiều cột tới cùng 1 GPU (Trang 86)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm