Một lựa chọn khác để giải quyết các bài toán trên với chi phí thấp hơn là thay vì sử dụng năng lực xử lý của CPU, sẽ sử dụng năng lực xử lý của GPU.. Máy tính song song là một hệ thống g
Trang 1MỤC LỤC
Trang
MỤC LỤC 1
Lời cam đoan 3
Lời cảm ơn 4
Danh mục các ký hiệu, các chữ viết tắt 5
Danh mục các bảng 6
Danh mục các hình vẽ, đồ thị 7
MỞ ĐẦU 9
Lý do chọn đề tài 9
Chương 1 - GIỚI THIỆU TỔNG QUAN VỀ TÍNH TOÁN HIỆU NĂNG CAO 11
1.1 Tính toán hiệu năng cao và vai trò ứng dụng trong thực tiễn 11
1.2 Một số tiếp cận trong tính toán hiệu năng cao 14
Chương 2 - GPU VÀ CÔNG NGHỆ TÍNH TOÁN ĐA DỤNG GPGPU 32
2.1 Kiến trúc các bộ xử lý đồ họa đa lõi của Nvidia 32
2.2 Môi trường phát triển ứng dụng GPU – CUDA 34
2.3 Hệ thống GPU-Cluster 46
2.4 Giao diện lập trình 55
2.5 Tổng kết 57
Chương 3 - ỨNG DỤNG GPU THỬ NGHIỆM BÀI TOÁN N-BODY 58
3.1 Giới thiệu bài toán n-body 58
3.2 GPGPU – Giải pháp cho bài toán n-body 61
Trang 23.3 Môi trường thử nghiệm bài toán n-body 64
Phương pháp thử nghiệm bài toán n-body trên hệ thống 66
Chương 4 - KẾT QUẢ VÀ ĐÁNH GIÁ 74
4.1 Những vấn đề đã đạt được 74
4.2 Những vấn đề sẽ tiếp tục nghiên cứu 74
KẾT LUẬN 75
TÀI LIỆU THAM KHẢO 76
Trang 3Lời cam đoan
Tôi - Lê Thanh Hải - xin cam đoan:
- Luận văn tốt nghiệp Thạc sĩ này là công trình nghiên cứu của bản thân tôi dưới sự hướng dẫn của Giáo sư, Tiến sĩ Nguyễn Thanh Thủy
- Các kết quả trong Luận văn tốt nghiệp là trung thực, không phải sao chép toàn văn của bất kỳ công trình nào khác Các trích dẫn từ các nguồn có thật, chính xác, không bịa đặt
Hà Nội, ngày 10 tháng 09 năm 2012
Học viên
Lê Thanh Hải
Trang 4Lời cảm ơn
Tôi xin gửi lời cảm ơn sâu sắc tới Giáo sư Tiến sĩ Nguyễn Thanh Thủy, Thầy
đã trực tiếp hướng dẫn tôi trong suốt quá trình thực hiện luận văn này Thầy đã đưa ra
ý tưởng và hỗ trợ tôi rất nhiều trong việc định hướng tìm hiểu, so sánh, triển khai thực nghiệm các giải thuật của bài toán N-Body trên CPU và GPU cũng như công nghệ tính toán hiệu năng cao trên GPU
Tôi xin gửi lời cảm ơn chân thành tới Tiến sĩ Nguyễn Hữu Đức, Thầy đã hỗ trợ tôi về mặt ý tưởng trong việc lựa chọn đề tài thông qua các buổi hội thảo của thầy
Tôi xin gửi lời cảm ơn đến Trung tâm Tính toán Hiệu năng cao Trường Đại học Bách Khoa Hà Nội, các anh Lê Đức Tùng, Dương Nhật Tân và Lê Đức Hùng đã
hỗ trợ tôi rất nhiều về mặt chuyên môn cũng như cơ sở vật chất để thực hiện luận văn này
Cuối cùng, xin được chia sẻ niềm vui với người thân, đồng nghiệp, bạn bè và các bạn đồng môn lớp Cao học khóa 10B CNTT
Hà Nội, ngày 10 tháng 09 năm 2012
Học viên
Lê Thanh Hải
Trang 5Danh mục các ký hiệu, các chữ viết tắt
GPU Graphic Processing Unit Bộ xử lý đồ họa
GPGPU General-purpose computing on
graphics processing units
Tính toán đa dụng trên các bộ xử
lý đồ họa
Architecture
Ngôn ngữ lập trình cho các bộ
xử lý đồ họa của hãng NVIDIA
CPU Central Processing Unit Đơn vị xử lý trung tâm
RAM Ramdom Access Memory Bộ nhớ truy cập ngẫu nhiên PMTA Parallel Multipole Tree Algorithm Giải thuật cây đa cực song song FMM The Fast Multipole Method Giải thuật cây đa cực nhanh
BEM Boundary element method Phương pháp khoanh vùng thành
phần AMD Advanced Micro Devices, Inc Hãng sản xuất thiết bị phần cứng
máy tính
Trang 6Danh mục các bảng
Bảng 2 1 Bảng so sánh giữa hai cụm GPU của AC và Lincoln 50
Bảng 2 2 Ví dụ Makefile trộn mã CUDA + MPI 54
Bảng 3 1 Kiểm thử hiệu năng trên CPU 68
Bảng 3 2 Kiểm thử hiệu năng trên 1 GPU 69
Bảng 3 3 Bảng kiểm thử hiệu năng trên 2 GPU 70
Bảng 3 4 Bảng kiểm thử hiệu năng trên 3GPU 71
Bảng 3 5 Bảng kiểm thử hiệu năng trên 4 GPU 72
Bảng 3 6 Bảng tổng hợp hiệu năng giữa CPU và các GPU 73
Trang 7Danh mục các hình vẽ, đồ thị
Hình 1 1 Một Mainframe năm 1960 và IBM 704 Mainframe 14
Hình 1 2 UNIVAC Mainframe System 15
Hình 1 3 Siêu máy tính CRAY-1 và IBM Mainframe System zSeries 15
Hình 1 4 IBM System 16
Hình 1 5 Thành phần bên trong một Mainframe 17
Hình 1 6 Siêu máy tính Sequoia của Nhật 18
Hình 1 7 Mô hình một Cluster 19
Hình 1 8 Kiến trúc tổng quan về phần cứng và phần mềm của một cluster 20
Hình 1 9 CPU hai nhân của Intel 21
Hình 1 10 CPU Phenom của AMD 22
Hình 1 11 GPU Nvidia 27
Hình 1 12 Biểu đồ số phép tính dâu chấm động trên giây và băng thông bộ nhớ giữa CPU và GPU 28
Hình 1 13 GPU dành nhiều transitor hơn để xử lý dữ liệu 29
Hình 1 14 Geforce FX 5800 30
Hình 2 1 Số phép tính dấu phẩy động trên giây và băng thông bộ nhớ của CPU và GPU 33
Hình 2 2 CUDA được thiết kế để hỗ trợ nhiều ngôn ngữ hoặc các API khác nhau 35
Hình 2 3 Khả năng tự mở rộng 37
Hình 2 4 Lưới của các block 40
Hình 2 5 Phân cấp bộ nhớ 44
Trang 8Hình 2 6 Lập trình không đồng nhất 45
Hình 2 7 Cụm của node AC 48
Hình 2 8 Hai node của cụm Lincoln chia sẻ đơn với Tesla S1070 49
Hình 2 9 Đo băng thông giữa hệ thống Lincoln và AC 51
Hình 2 10 Các nút trong mô hình GPU Cluster 53
Hình 3 1 Ảnh mô phỏng n-body, biểu diễn một dải ngân hà 61
Hình 3 2 Mô tả quá trình đo bechmark trên CPU 67
Hình 3 3 Mô tả quá trình đo bechmark trên 4 GPU 68
Hình 3 4 Biểu đồ hiệu năng của CPU về thời gian 69
Hình 3 5 Biểu đồ hiệu năng của CPU 69
Hình 3 6 Biểu đồ hiệu năng của 1 GPU và 1 CPU 70
Hình 3 7 Biểu đồ hiệu năng của 2 GPU và 1 CPU 70
Hình 3 8 Biểu đồ hiệu năng của 3 GPU và 1 CPU 71
Hình 3 9 Biểu đồ hiệu năng của 4 GPU và 1 CPU 72
Hình 3 10 So sánh hiệu năng giữa CPU và các GPU 73
Trang 9MỞ ĐẦU
Lý do chọn đề tài
Tính toán hiệu năng cao ngày càng được quan tâm và ứng dụng nhiều trong thực tế như trong khoa học đời sống, trong xử lý ảnh y tế, trong mô hình hóa thời tiết, khí hậu, biển, không khí, Để giải quyết được những bài toán này, đòi hỏi phải có hệ thống máy tính mạnh và chi phí rất lớn
Một lựa chọn khác để giải quyết các bài toán trên với chi phí thấp hơn là thay
vì sử dụng năng lực xử lý của CPU, sẽ sử dụng năng lực xử lý của GPU Với cách tiếp cận này, thống kê thực tế của NVIDIA đưa ra những số liệu về :
- Giảm chi phí (giá thành thấp hơn rất nhiều),
- Tiết kiệm năng lượng,
- Hiệu năng cao, năng lực xử lý nhanh hơn
Từ những thông tin này, tôi đã mạnh dạn đi tìm hiểu công nghệ tính toán hiệu năng cao của NVIDIA và thử nghiệm bài toán n-body để so sánh năng lực tính toán giữa hệ thống sử dụng CPU và hệ thống sử dụng GPU thông qua đề tài "Nghiên cứu kiến trúc hệ thống tính toán hiệu năng cao đa dụng dựa trên card đồ họa"
Trang 10Mục đích nghiên cứu của luận văn, đối tượng, phạm vi nghiên cứu
- Tìm hiểu về công nghệ tính toán hiệu năng cao dựa trên card đồ họa của NVIDIA
- Tìm hiểu công nghệ lập trình song song trên CUDA để phục vụ mô phỏng bài toán n-Body
- Thử nghiệm kết quả của bài toán n-Body trên CPU, trên một GPU và nhiều GPU (max 4 GPU)
Tóm tắt
Luận văn được chia ra làm 4 chương
Chương 1: Giới thiệu chung về tính toán hiệu năng cao và các vấn đề liên quan đến luận văn
Chương 2: GPU và công nghệ tính toán đa dụng GPGPU Chương này tập trung giới thiệu các bộ xử lý đồ họa đa lõi của Nvidia Dựa trên đó, trình bày về môi trường phát triển CUDA cho các ứng dụng GPU Chương này cũng trình bày những nét cơ bản về GPU-Cluster, mở rộng cho công nghệ GPU
Chương 3: Ứng dụng GPU thử nghiệm bài toán n-Body Trong chương này sẽ đi thử nghiệm và đánh giá kết quả, thời gian tính toán của bài toán n-Body trên CPU, trên GPU đơn và trên nhiều GPU (4 GPU)
Chương 4: Kết luận và hướng phát triển của luận văn
Trang 11Chương 1 - GIỚI THIỆU TỔNG QUAN VỀ TÍNH TOÁN
HIỆU NĂNG CAO1.1 Tính toán hiệu năng cao và vai trò ứng dụng trong thực tiễn
Nhu cầu tính toán trong lĩnh vực khoa học công nghệ ngày càng cao và đang dần trở thành một thách thức lớn vì phương pháp xử lý tuần tự với một bộ xử lý không thể đáp ứng được Xử lý song song dựa trên nguyên tắc nhiều bộ xử lý cùng giải quyết một vấn đề là chìa khóa để giải bài toán khó này Vì vậy, những nghiên cứu trong lĩnh vực tính toán hiệu năng cao (High Performance Computing) hình thành trở nên rất cần thiết Kết quả là các hệ máy tính mạnh ra đời Điển hình là các hệ máy tính mạnh giá thành hạ, phát triển dựa trên việc liên kết các máy tính cá nhân/máy trạm thông qua đường truyền mạng tốc độ cao đã phát triển mạnh trong thập kỷ qua Hiện nay, công nghệ tính toán lưới cho phép tận dụng các tài nguyên sẵn có để xây dựng một mạng lưới tính toán rất mạnh
Trong các ngành khoa học như hóa học, vật lý hạt nhân, vũ trụ học, cơ lưu chất, sinh học, y học… các 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 Một số bài toán có độ phức tạp khá lớn, được gọi là “các bài toán thách đố” Các bài toán này không thể giải được trong một khoảng thời gian chấp nhận nếu sử dụng các loại máy tính hiện có ngày nay Vấn đề càng phức tạp khi bài toán đòi hỏi việc mô phỏng và 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 toán cũng quan trọng không kém Ví dụ, một bài toán dự báo thời tiết đượ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ề tính toán phức tạp này đã thúc đẩy các máy tính song song có khả năng tính toán mạnh ra đời
Máy tính song song là một hệ thống gồm nhiều bộ xử lý và cho phép phối hợp các bộ xử lý này để giải quyết bài toán lớn cùng một lúc Những máy tính như vậy được gọi là những siêu máy tính Vì tầm quan trọng của việc phát triển các siêu máy tính để giải quyết các bài toán lớn, hàng năm các chuyên gia thông kê và xếp hạng lại
Trang 12500 siêu máy tính hàng đầu thế giới và gọi là TOP500 Danh sách TOP500 được công
bố hai lần trong một năm tại hội nghị siêu máy tính Mannheim và hội nghị Supercomputer vào tháng 11 (từ năm 1993)
Danh sách này có thể tham khảo tại website: http://www.top500.org
Ngày nay các siêu máy tính còn được gọi là các máy tính hiệu năng cao Tính toán hiệu năng cao (High Performance Computing) là phương cách giải quyết các bài toán lớn dùng các máy tính hiệu năng cao Đây 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à cả các công ty vì nó đòi hỏi không chỉ ở giải pháp phầ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ả
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
Yêu cầu về thời gian tính toán cũng là một yếu tố cần đến sức mạnh tính toán của máy tính Điều này rất thường thấy trong các qui trình sản xuất trong công nghiệp Trong một qui trình sản xuất, sự phối hợp hoạt động của các bộ phận rất quan trọng
Vì vậy, việc tính toán chậm lại tại một bộ phận sẽ làm ảnh hưởng tới các bộ phận khác Bài toán dự báo thời tiết trong khoa học cũng đòi hỏi về thời gian tính toán Để
có kết quả dự báo chính xác, ta không thể chạy chương trình trong hai ngày chỉ để dự báo thời tiết cho ngày hôm sau
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 thách đố Hiện
Trang 13nay, 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 Nhiều bài toán cần giải quyết bằng môi trường tính toán lưới 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.2 Giải pháp
Nhằm đáp ứng yêu cầu tính toán trong khoa học và công nghệ, ba giải pháp đã được đề nghị:
- Tăng tốc độ tính toán của bộ xử lý
- Tìm một giải thuật tốt hơn để giải quyết
- Sử dụng kỹ thuật xử lý song song
Giải pháp thứ nhất và thứ hai đòi hỏi nhiều thời gian để có kết quả cũng như có nhiều giới hạn Để 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 thứ ba 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
Máy 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 các phần khác nhau của bài toá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ó n bộ xử lý thì thời gian giải quyết vấn đề sẽ giảm đi n 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 thì còn thời gian đồng bộ và giao tiếp giữa các công việc
xử lý song song Thứ hai là không phải bài toán nào cũng có thể chia thành n phần 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 dự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 dữ 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
Trang 14ứng dụng 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
Hình 1 1 Một Mainframe năm 1960 và IBM 704 Mainframe
Trang 15
Hình 1 2 UNIVAC Mainframe System
Hình 1 3 Siêu máy tính CRAY-1 và IBM Mainframe System zSeries
Trang 16Hình 1 4 IBM System
Về mặt cấu tạo, các hệ thống Mainframe là sự kết hợp chặt chẽ của rất nhiều bộ
xử lý, chúng được liên kết với nhau thông qua các bảng mạch lớn, cùng với bộ nhớ trong khổng lồ và hệ thống ổ đĩa lưu trữ dữ liệu rất lớn Ngoài ra nhiều các thiết bị khác cũng được tích hợp trong mainframe như modem, switch, Tape Library (hệ thống lưu trữ dung lượng lớn), máy in, system console (màn hình hiển thị dữ liệu, công việc)
Ví dụ dưới đây là thông số của hệ thống IBM Mainframe in AHE[3]:
IBM server >System z9 BC
- Server có thể nâng cấp lên
hệ thống z9 EC - với 54 bộ
xử lý và 512 GB bộ nhớ RAM
Hệ thống đĩa cứng IBM
TotalStorage DS8100 với khả năng mở rộng dung lượng tới 192'000 GB (192 TB)
Trang 17 Thư viện băng từ IBM TS3500 - sau khi nâng cấp mở rộng có thể lưu trữ 4.300.000 GB (4.3 PB) dữ liệu trên băng từ (security copies, archives)
Hai bộ chuyển mạch cáp quang IBM TotalStorage SAN256B tạo nên một mạng xương sống của mạng SAN (Storage Area Network)
Hệ thống IBM BladeCenter với các phụ trợ
Hình 1 5 Thành phần bên trong một Mainframe
1.2.2 Siêu máy tính (SuperComputer)
Một siêu máy tính là một máy tính vượt trội trong khả năng tính toán và tốc độ
xử lý Siêu máy tính là sự kết hợp của những máy tính làm việc song song Siêu máy tính hiện nay có tốc độ xử lý hàng chục Pflops (1 Pflops = 1015 FLOPS)
IBM trong năm 2012 đã xây dựng thành công cỗ máy Sequoia, là một tập hợp của rất nhiều hệ thống BlueGene/Q cho tổng số nhân xử lý là 1.572.864, đạt năng lực tính toán tới 16,32 Pflops Hiện Sequoia (SC) đang đứng vị trí thứ nhất trong bảng xếp
Trang 18hạng Top500 (công bố tháng 6/2012), SC được sử dụng để ứng dụng các mô phỏng trong khoa học và các tính toán hạt nhân
Hình 1 6 Siêu máy tính Sequoia của Nhật
Dù có sức mạnh rất lớn như vậy, nhưng các siêu máy tính này có nhược điểm là: giá thành lắp đặt cấu hình rất cao, thời gian lắp đặt lâu, và tốn mặt bằng diện tích (cả một gian phòng thay vì một thùng máy) Ngoài ra, chi phí duy trì các siêu máy tính này cũng là một vấn đề cần được quan tâm đến (chi phí phần mềm, kỹ thuật, chi phí điện năng…
1.2.3 Các hệ thống phân cụm song song (Cluster)
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 hạn trong
Trang 19mộ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 đóng vai trò nút tính toán (computing node)
hệ thống đó là sự linh hoạt của cấu hình Số lượng nút, dung lượng bộ nhớ trên mỗi nút, số lượng bộ xử lý trên mỗi nút, và cấu hình mạng và hàng loạt các tham số khác đều mang tính tuỳ biến cao
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 cùng sức mạnh, điều này làm cho các hệ thống tính toán song 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 các 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à
Trang 20một trong những vấn đề quan trọng 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 Các hệ thống tính toán song song hiện đại đều dùng các kiến trúc mạng tiên tiến như: Myrinet, Gigabit Ethernet, nhằm nâng cao tốc độ truyền thông giữa các nút tính toán
Trên thực tế, cơ sở hạ tầng phần cứng mới chỉ là một phần trong toàn thể mô hình chung của tính toán phân cụm Cùng với sự phát triển của lĩnh vực Công nghệ thông tin trên thế giới, phần mềm đang ngày càng chứng minh được vai trò cốt yếu của mình trong các hệ thống máy tính Đố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 đả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ả Một hệ thống tính toán song song phân cụm (dựa trên mạng LAN) hoạt động như một hệ thống đơn dưới cái nhìn của nguời dùng và ứng dụng
Hình 1 8 Kiến trúc tổng quan về phần cứng và phần mềm của một cluster
David Heckerman, một nhà nghiên cứu lâu năm và Carl Kadie, kĩ sư nghiên cứu phát triển phần mềm, cả hai đều làm tại phòng nghiên cứu của Microsoft, đã áp dụng vốn kiến thức của họ trong học máy (machine learning ) để sử dụng tính toán hiệu năng cao, theo đuổi đến cùng việc tìm ra vắcxin AIDS[5] Các cluster HPC dựa trên 25 IBM eServer 326 boxes, với hai bộ xử lý AMD Opteron 2.6GHz đặt trên mỗi máy, được sử dụng để xây dựng các mô phỏng việc các vi rút biến đổi như thế nào để
Trang 21phản ứng lại sự tấn công bởi hệ thống miễn dịch Vì một bệnh nhân với các triệu chứng HIV phát triển nhanh cũng có thể tạo ra một số lượng dữ liệu khổng lồ để phân tích Các phân tích thống kê này đòi hỏi phải kiểm tra trên một quy mô lớn, cần tính toán chuyên sâu để rút ngắn thời gian và Tính toán hiệu năng cao (HPC) hiện đóng vai trò then chốt trong việc tìm ra một loại vắc xin phòng chống căn bệnh thế kỷ này
1.2.4 Các hệ thống Multi-core
CPU đa lõi (multi-core) là bộ vi xử lý trung tâm có từ 2 đến 8 lõi xử lý được đặt trên cùng một CPU vật lý duy nhất Một cách khác, chúng giống như sự ghép nối nhiều CPU thông thường trước đây trở thành một CPU duy nhất
Hình 1 9 CPU hai nhân của Intel
Chỉ trong khoảng thời gian từ năm 2001 đến năm 2003, tốc độ của Pentium 4
đã tăng gấp đôi từ 1.5 lên đến 3 GHz Tuy nhiên, hiệu năng của CPU không tăng tương xứng như mức gia tăng xung của CPU và việc tăng tốc độ xung của CPU nhanh chóng chạm phải ngưỡng tối đa mà cụ thể cũng trong khoảng thời gian 2 năm từ năm
2003 đến năm 2005 tốc độ của CPU chỉ tăng từ 3.0 lên đến 3.8 GHz
Theo định luận Moore trước đây, tốc độ của bộ vi xử lý sẽ tăng gấp đôi sau khoảng thời gian 18 tháng, nhưng tốc độ xung tăng gấp đôi không đồng nghĩa với hiệu năng tăng gấp đôi và việc gia tăng xung của bộ vi xử lý sẽ nhanh chóng chạm phải vấn
đề đó chính là nhiệt độ của CPU sẽ quá cao và các giải pháp tản nhiệt khí đã đến mức tới hạn không thể đáp ứng được khả năng làm mát khi CPU hoạt động ở xung quá cao
Trang 22như vậy Vì thế, việc gia tăng xung hoạt động của CPU dần đi vào bế tắc, và các hãng sản xuất CPU lớn không còn có thể tăng tốc độ chip đơn ngày một cao hơn như trước,
mà chuyển sang mô hình nhiều chip (lõi) với tốc độ vừa phải, dễ sản xuất, giá thành chấp nhận được
CPU đa nhân được giới thiệu lần đầu tiên vào năm 2001 bởi hãng IBM với loại CPU Power4 dành riêng cho các máy chủ Bắt đầu từ đó các hãng sản xuất CPU khác bắt đầu chú ý đến thể loại CPU đa nhân và định hướng phát triển các sản phẩm của mình theo hướng loại này Hai nhà sản xuất CPU cho PC lớn là AMD và Intel cũng có các phản ứng khác nhau: AMD đã bắt đầu có định hướng ngay cho CPU đa nhân Kể
từ đó có một sự cạnh tranh giữa hai hãng để chiếm lĩnh thị phần CPU máy tính trên phương diện đa nhân, hiệu năng xử lý và giá bán, sự cạnh tranh này vẫn còn tồn tại cho đến thời điểm hiện nay (năm 2012) và chưa có dấu hiệu kết thúc
Hình 1 10 CPU Phenom của AMD
Trang 23CPU hai nhân của Intel
Hãng Intel đã giới thiệu những CPU hai nhân Pentium Extreme Edition và Pentium D đầu tiên vào tháng 4 năm 2005 phát triển trên nền Pentium 4 Prescott Thực chất sự ra đời của những CPU hai nhân đầu tiên này của Intel đã mong muốn giới thiệu ra thị trường càng nhanh càng tốt nên các CPU hai nhân đầu tiên: Pentium
D, Pentium Extreme Edition (thường gọi tắt là Pentium EE) chứa trong lòng nó hai nhân của Pentium 4 mã Prescott [6] Mỗi một nhân được giao tiếp với một đường khác nhau với chipset cầu bắc trên bo mạch chủ Chính vì vậy mà các chipset của hãng Intel như i915, i925 hoặc các chipset của các hãng khác dành cho các CPU Pentium 4 thông thường không thể sử dụng cho CPU hai nhân Pentium D (hoặc Pentium Extreme Edition) Các chipset dòng i945, i955X, i975X cho dòng máy tính cá nhân để bàn và E7230 cho dòng máy trạm là những chipset đầu tiên hỗ trợ cho những CPU hai nhân này [7]
- CPU Pentium D có các đặc tính dưới đây:
- Tốc độ xử lý CPU từ 2,8 GHz đến 3,2 GHz
- FSB: 800MHz
- Mở rộng EM64T 64-bit
- Hỗ trợ Execute Disable Bit
- Sản xuất trên công nghệ 90 nm (nanomet)
- Có 2 MB L2 cache (1 MB mỗi nhân riêng biệt và độc lập)
- Sử dụng Socket T (LGA775)
Với những CPU có số hiệu 830 và 840 còn bao gồm công nghệ mới của Intel là: “EISS” (Enhanced Intel Speed Step), chúng có thể tự động thay đổi tốc độ làm việc của CPU theo nhu cầu xử lý của hệ thống để giảm công suất tiêu thụ Phiên bản Pentium Extreme Edition 840 có tính năng giống như Pentium D, nhưng có một số khác biệt thêm như sau:
Trang 24Hỗ trợ công nghệ Siêu phân luồng (HT Technology) Như vậy với mỗi nhân bên trong sẽ trở thành 2 nhân ảo (hệ điều hành sẽ nhận biết và sử dụng như có 4 nhân đồng thời)
Không hỗ trợ công nghệ EISS
Cho phép thay đổi hệ số nhân của CPU, điều này giúp các người sử dụng hiểu biết dễ dàng ép xung với CPU mà không phải thay đổi bus hệ thống Đây là cách lý giải tại sao Pentium EE lại không hỗ trợ công nghệ EISS bởi công nghệ này mâu thuẫn với các hành động ép xung khi chúng tự động giảm hệ số nhân để giảm tốc độ làm việc của hệ thống khi nhu cầu xử lý thấp
CPU hai nhân của AMD
Những CPU hai nhân của AMD được giới thiệu sau so với các CPU hai nhân của Intel Trước khi các CPU đa nhân của AMD xuất hiện thì dòng sản phẩm Athlon
64 của AMD đã khá thành công, phiên bản Athlon 64 FX đã được tạp chí PC World
Mỹ bình chọn giải thưởng “World Class 2004” dành cho sản phẩm xuất sắc nhất trong năm 2004 AMD đã bắt đầu phát triển các CPU 64 bit bắt đầu từ năm 2003 trên nền cấu trúc 32 bit-x86 và đã được sử dụng rộng rãi trên các máy chủ, máy trạm và máy tính cá nhân để bàn Vào tháng 5 năm 2005 những CPU Athlon 64 X2 hai nhân đầu tiên của AMD xuất hiện Althlon 64 X2 đã có hai loại theo từng mã riêng như sau:
- Cache L2 dung lượng 1 MB (ứng với 512 KB cho mỗi nhân) ở mã: Manchester
- Cache L2 dung lượng 2 MB (ứng với 1 MB cho mỗi nhân) ở mã: Toledo Cùng với các đặc tính khác bao gồm:
- Tốc độ xử lý thực tế CPU từ 2,2 GHz đến 2,4 GHz
- Sản xuất trên công nghệ 90 nm (nanomet)
- 1 GHz HyperTransport
- Sử dụng Socket 939
Trang 25Mặc dù AMD không phải là hãng đầu tiên giới thiệu CPU hai nhân, nhưng cấu trúc của CPU hai nhân của AMD đã có nhiều tiến bộ hơn so với các CPU hai nhân ban đầu của Intel (Pentium D) Cấu tạo bên trong của AMD cho phép các nhân có thể trực tiếp liên kết với nhau mà không phải thông qua chipset cầu bắc Để hạn chế nhược điểm này, Intel đã tăng FSB để gia tăng băng thông giữa CPU và chipset cầu bắc Tuy nhiên trong giai đoạn này thiết kế CPU đa nhân của AMD vẫn ưu thế hơn Intel ở các điểm sau [8]:
Khác với sự thay đổi cấu trúc của Intel trong CPU hai nhân khiến cho khi nâng cấp hệ thống cần phải thay thế bo mạch chủ do các chipset cũ không hỗ trợ CPU hai nhân mới Hệ thống của AMD có thể tương thích với hệ thống cũ, người sử dụng có thể cần nâng cấp BIOS để có thể tương thích với CPU hai nhân mới
Khi thiết kế các CPU dòng Athlon 64/Opteron AMD đã chuẩn bị sẵn việc thiết
kế đa nhân theo định hướng ban đầu của AMD, nên khi các dòng CPU đa nhân ra đời chúng hoàn toàn thích ứng với các tính toán về nhiệt độ của CPU Sự tác động về nhiệt
độ khi tăng thêm một nhân đã ảnh hưởng không nhiều Ví dụ, đa số các CPU hai nhân Athlon 64 X2 của AMD chạy với tần số 2,2 GHz tiêu thụ công suất 89W cũng bằng với với Athlon 64 đơn nhân hoạt động ở tần số 2,4 GHz So sánh giữa một CPU hai nhân nóng nhất của AMD khi hoạt động ở tốc độ 2,2 đến 2,4 GHz tiêu thụ công suất 110W với một CPU hai nhân của Intel như Pentium Extreme Edition tiêu thụ công suất 130W sẽ thấy một ưu điểm thứ hai của CPU hai nhân hãng AMD so với Intel
Mặc dù tốc độ xử lý thực của các CPU hai nhân AMD thường thấp hơn CPU Intel, tuy nhiên một số kết quả kiểm tra, đánh giá hiệu năng bằng các phần mềm chuyên dụng (phần mềm benchmark) cho thấy hiệu năng của các CPU hai nhân hãng AMD cao hơn hiệu năng các CPU hai nhân của Intel ở những phiên bản đầu tiên
Core Duo và Core 2 Duo của Intel Core Duo là công nghệ tiếp theo của các CPU hai nhân đầu tiên (Pentium D, Pentium EE) của Intel sử dụng vi cấu trúc core mang lại nhiều cải tiến hơn CPU Core Duo được sản xuất không được bao lâu thì Intel đã chuyển sang sản xuất dòng Core 2 Duo với thêm các cải tiến mới mà được
Trang 26đánh giá là một bước ngoặt trong ngành chế tạo bộ vi xử lý Vi cấu trúc core có các cải tiến sau [7]:
- Mở rộng thực thi động (Wide Dynamic Execution)
- Quản lý điện năng thông minh (Intelligent Power Capability) cho phép tắt các
hệ thống con trong CPU khi không sử dụng
- Mở rộng bộ nhớ đệm thông minh tiên tiến (Advanced Smart Cache) là một cải tiến đáng kể trong vi cấu trúc core, thay vì mỗi nhân sử dụng một cache riêng biệt trong cấu trúc của Pentium D thì nay Intel cải tiến để cả hai nhân đều có thể dụng chung cache L2 (xem hình) Các thế hệ CPU hai nhân đầu tiên của Intel sử dụng mỗi nhân một cache L2 riêng biệt, giữa các nhân và các cache không có một kết nối nào với nhau nên phải thông qua chipset cầu bắc, sự cải tiến mới giúp cho hiệu năng xử lý tăng lên do chúng có thể sử dụng chung chiếm nhiều hơn đối với các nhân phải thực thi xử lý nhiều hơn
- Truy xuất bộ nhớ thông minh (Smart Memory Access)
- Tăng tốc phương tiện số tiên tiến (Advanced Digital Media Boost) giúp tăng tốc thực thi tập lệnh SEE (Streaming SIMD Extension), cho phép hỗ trợ các phép toán 128 bit, tức là gấp đôi so với các CPU cũ cùng hãng
Trang 28Hình 1 12 Biểu đồ số phép tính dâu chấm động trên giây và băng thông bộ
nhớ giữa CPU và GPU
GPGPU (General-Purpose computation on GPUs)
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 là 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
Trang 29dấ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 [9]
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 này 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 13 GPU dành nhiều transitor hơn để xử lý dữ 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
kỳ 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 30Trong 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 hạn như CPU dùng để gõ văn bản và lướt web thì GPU dùng để tăng tốc xử lý đồ họa cũng như games
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ừ Purpose computation on GPUs - tính toán trên GPU)
General-Tuy nhiên, đa phần các phần mềm hiện có đều vẫn chỉ được thiết kế để chạy trên một CPU đơn lẻ, theo đúng mô hình máy Turing và một trong những cách cài đặt phổ biến của nó là kiến trúc xử lý tuần tự von Neumann Chính điều này đã buộc các nhà sản xuất phần cứng, các hãng lập trình, các lập trình viên nghiên cứu tới mô hình lập trình phát triển các ứng dụng mà tận dụng được hết khả năng của các CPU, GPU
Trang 31đa lõi này, đó chính là mô hình lập trình song song, và CUDA là một trong những mô hình lập trình song song đó
Chính vì vậy mà chỉ sau khi NVIDIA cho ra đời CUDA từ năm 2007 đến nay, lập trình viên trên khắp thế giới đã nhanh chóng phát triển các ứng dụng 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 chẩn đoán y khoa, thăm dò dầu khí,… Những ứng dụng này có một đặc thù gọi là “có thể mở rộng quy mô thực thi một cách trong suốt” (“scalabletransparently“)[6], theo nghĩa sẽ phát huy hiệu năng một cách phù hợp trên các GPU từ 8 lõi (thấp nhất) đến hàng trăm 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ệ CUDA, đó là:
- Mô hình lập trình song song CUDA
- Kiến trúc phần cứng Tesla
Trang 32Chương 2 - GPU VÀ CÔNG NGHỆ TÍNH TOÁN ĐA
DỤNG GPGPU
Công nghệ GPU là một hướng tiếp cận mới đối với các bài toán cần khối lượng tính toán lớn Trong lĩnh vực thám mã, công nghệ này đã có nhiều những nghiên cứu và ứng dụng Chương này sẽ trình bày về công nghệ tính toán dựa trên các bộ xử lý đồ họa, cụ thể là các
bộ xử lý đồ họa của NVIDIA đồng thời trình bày về môi trường phát triển ứng dụng của Nvidia là CUDA
2.1 Kiến trúc các bộ xử lý đồ họa đa lõi của Nvidia
Trong vài năm gần đây, năng lực tính toán của các bộ xử lý đồ hoạ (GPU) đã tăng lên với tốc độ đáng kể so với CPU Tính đến tháng 6/2008, GPU thế hệ GT200 của NVidia đã đạt tới ngưỡng 933GFlops gấp hơn 10 lần so với bộ xử lý hai lõi Intel Xeon 3.2 GHz tại cùng thời điểm Hình 2.1 thể hiện sự tăng tốc về năng lực tính toán của các bộ xử lý đồ hoạ NVIDIA so với bộ xử lý Intel
Tuy vậy, sự vượt trội về hiệu năng này không đồng nghĩa với sự vượt trội về công nghệ GPU và CPU được phát triển theo hai hướng khác biệt: trong khi công nghệ CPU cố gắng tăng tốc cho một nhiệm vụ đơn lẻ thì công nghệ GPU lại tìm cách tăng số lượng nhiệm vụ có thể thực hiện song hành Chính vì vậy, trong khi số lượng lõi tính toán trong CPU chưa đạt đến con số 8 lõi thì số lượng lõi xử lý GPU đã đạt đến 240 và còn tiếp tục tăng tới trên 500 lõi
Lý do phía sau sự khác biệt về khả năng tính toán dấu phẩy động giữa CPU và GPU chính là GPU được thiết kế cho mục đích tính toán mạnh, khả năng tính toán song song cao - và do đó được thiết kế sao cho có nhiều transistor được dùng để xử lý
dữ liệu hơn là dùng cho đệm dữ liệu và điều khiển luồng, như hình minh họa trong hình 2.1
Trang 33
Hình 2 1 Số phép tính dấu phẩy động trên giây và băng thông bộ nhớ của
CPU và GPU
Cụ thể hơn, GPU đặc biệt phù hợp để giải quyết các bài toán có thể tính toán song song về dữ liệu - tức là cùng chương trình được đem chạy trên nhiều bộ dữ liệu một cách song song - với cường độ số học cao - tỷ lệ số thao tác số học trên số thao tác với bộ nhớ Bởi vì cùng chương trình được thực hiện cho mỗi bộ dữ liệu, nên không cần đòi hỏi cao về hoạt động điều khiển luồng, và bởi vì chương trình được thực hiện trên nhiều bộ dữ liệu và có cường độ số học cao, nên độ trễ truy cập bộ nhớ có thể được ẩn đi cùng với các phép tính thay vì phải đệm một lượng dữ liệu lớn Tuy nhiên, hầu hết các bài toán yêu cầu năng lực tính toán lớn đều có thể quy về dạng song song
Trang 34Xử lý song song dữ liệu ánh xạ các bộ dữ liệu tới các luồng (thread) xử lý song song Nhiều ứng dụng xử lý các tập dữ liệu lớn có thể dùng một mô hình lập trình song song cho việc tăng tốc tính toán Trong kết xuất 3D, các tập lớn điểm ảnh và vectơ được ánh xạ tới các luồng song song Tương tự, các ứng dụng xử lý ảnh và đa phương tiện như là hậu xử lý các ảnh đã kết xuất, mã hóa và giải mã video, chỉnh kích
cỡ ảnh, và nhận dạng mẫu có thể ánh xạ các khối ảnh và các điểm ảnh tới các các luồng xử lý Thực tế, nhiều giải thuật nằm ngoài lĩnh vực kết xuất và xử lý ảnh cũng được tăng tốc với xử lý dữ liệu song song, từ xử lý tín hiệu nói chung hoặc mô phỏng vật lý tới tính toán kinh tế hoặc tính toán về sinh học
Bên cạnh việc phát triển các bộ xử lý đồ hoạ có năng lực tính toán lớn, các hãng sản xuất cũng quan tâm tới môi trường phát triển ứng dụng cho các bộ xử lý đồ hoạ này CUDA là môi trường phát triển ứng dụng cho các bộ xử lý đồ hoạ của NVIDIA, bao gồm một ngôn ngữ lập trình song song dữ liệu cùng với các công cụ biên dịch, gỡ rối, và giám sát thực thi cho các ứng dụng trên các bộ xử lý này
2.2 Môi trường phát triển ứng dụng GPU – CUDA
Vào tháng 11/2006, hãng NVIDIA phát hành CUDATM, một kiến trúc tính toán song song đa dụng - với một mô hình lập trình song song và kiến trúc tập lệnh mới -
có thể thúc đẩy tính toán song song trong các GPU của NVIDIA để giải quyết nhiều bài toán tính toán phức tạp theo một hướng hiệu năng hơn nhiều so với CPU
CUDA đi cùng với một môi trường phần mềm cho phép người phát triển sử dụng C như ngôn ngữ lập trình cấp cao Như minh họa ở hình 2.2, các ngôn ngữ hoặc các giao diện lập trình ứng dụng khác được hỗ trợ, như CUDA FORTRAN, OpenCL,
và DirectCompute
Trang 35Hình 2 2 CUDA được thiết kế để hỗ trợ nhiều ngôn ngữ hoặc các API khác
nhau
2.2.1 Khả năng mở rộng của CUDA
Sự xuất hiện của các CPU đa lõi và GPU nhiều lõi cho thấy rằng xu thế chủ đạo của các chip xử lý bây giờ là các hệ thống song song Hơn nữa, đặc tính song song của chúng tiếp tục gia tăng theo luật của Moore Sự thách thức là để phát triển phần mềm ứng dụng mở rộng (scale) trong suốt về tính song song để tận dụng được sự gia tăng về số lượng của các lõi xử lý, càng có nhiều các ứng dụng 3D mở rộng (scale) một cách trong suốt tính song song của nó tới các GPU nhiều lõi với các số lượng thay đổi lớn của các lõi xử lý
Mô hình lập trình CUDA được thiết kế để vượt qua thách thức này trong khi vẫn duy trì một độ khó về học tập thấp cho các người lập trình quen thuộc với ngôn ngữ lập trình chuẩn như ngôn ngữ C
Trong nhân của CUDA là ba khái niệm trừu tượng chính - một cơ chế phân cấp của các nhóm thread, các bộ nhớ chia sẻ, và rào chắn đồng bộ - đơn giản được bộc lộ tới người lập trình như là một tập nhỏ các mở rộng về ngôn ngữ
Trang 36Các khái niệm trừu tượng này cung cấp cơ chế song song dữ liệu và song song tiến trình nhỏ được lồng bên trong song song dữ liệu và song song tác vụ lớn Chúng hướng người lập trình phân chia bài toán thành các bài toán con thô có thể được giải quyết độc lập một cách song song bởi các block gồm các tiến trình và mỗi bài toán con thành các phần mịn hơn mà có thể được giải quyết cùng nhau theo song song bởi tất cả các tiến trình bên trong block đó Sự phân chia này biểu hiện khả năng của ngôn ngữ
đó là cho phép các tiến trình phối hợp với nhau để xử lý mỗi bài toán con, và tại cùng một thời điểm cho phép mở rộng một cách tự động Quả thực, mỗi block tiến trình có thể được lập lịch trên bất kỳ số lượng lõi xử lý nào đang có, theo bất cứ thứ tự nào, đồng thời hay là tuần tự, do đó một chương trình CUDA đã biên dịch có thể chạy trên mọi số lượng lõi xử lý như được minh họa ở hình 2.3, và chỉ vào lúc chạy hệ thống mới cần biết số lượng lõi xử lý vật lý
Mô hình lập trình có thể mở rộng này cho phép kiến trúc CUDA mở rộng một phạm vi thương mại rộng lớn bằng cách là đơn giản mở rộng số lượng lõi xử lý và các phân vùng bộ nhớ: từ các GPU dành cho tính toán hiệu năng cao GeForce và các sản phẩm cao cấp Quadro và tính toán Tesla tới một số đa dạng các loại rẻ hơn, dòng chính là các GPU GeForce
Một chương trình đa luồng được phân chia thành các block tiến trình và chúng được thực thi độc lập với nhau, do đó một GPU nhiều lõi sẽ tự động thực hiện chương trình đó nhanh hơn một GPU có ít lõi hơn
Trang 38song song bởi N thread CUDA, ngược với chỉ một lần như các hàm thông thường của