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

Luận văn lập trình song song trên nền Đơn vị xử lý Đồ họa và Ứng dụng

57 2 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 đề Lập Trình Song Song Trên Nền Đơn Vị Xử Lý Đồ Họa Và Ứng Dụng
Tác giả Hoàng Đình Thắng
Người hướng dẫn TS. Nguyễn Trớ Thành
Trường học Đại Học Quốc Gia 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 2010
Thành phố Hà Nội
Định dạng
Số trang 57
Dung lượng 1,94 MB

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

Nội dung

Trái ngược với xử lý nối tiếp, dỏi hỏi phải xử lý các công việc theo thứ tự tuần tự Có hai kiểu song song đó là ¥ Song song vé dét liéu data parallelism: 14 co ché sử dụng nhiều don

Trang 1

ĐẠI HỌC QUÔC GIÁ HÀ NỘI

'TRƯỜNG ĐẠI HỌC CÔNG NGHỆ

HOANG DINH THANG

LAP TRINH SONG SONG

TREN NEN DON VI XU LY ĐỎ HỌA

VA UNG DUNG

LUẬN VĂN THẠC SĨ

Ila NGi — 2010

Trang 2

ĐẠI HỌC QUÔC GIA HÀ NỘI

TRƯỜNG DẠI HỌC CÔNG NGHỆ

HOANG DINH THANG

LAP TRINH SONG SONG

TREN NEN DON VI XU LY BO HOA

VA UNG DUNG

Ngành: Công nghệ Thông tin

Chuyên ngành: IIệ thống Thông tin

Mã số: 60 48 05

LUẬN VĂN THẠC SĨ NGƯỜI HƯỚNG DẪN KIIOA HỌC: TS Nguyễn Trí Thành

Ila Ndi — 2010

Trang 3

MUC LUC LỜI CAM ĐOANG uc neneeie wl MỤC LỤC “2

DANH MỤC HÌNH VỀ 4

KY TU VIET TAT 5 LOICAMON 6

MO DAU _- aT CHUONG 1: GIGT THIRU, 9 1.1 Mục đích của lập trình song song 9 1.2 Mục tiêu của luận văn 12

1.3 Lễ chức của luân văn bees we DZ CHUONG 2: TONG QUAN VE DON VIXUT.Y BO HOA (GRAPHIC PROCESSING UNIT-GPU) 14

2.1 Tóm tắt lịch sử phát triển của đơn vị xử lý dé hoa (GPU) - 14 2.2 Sự khác nhau giữa ŒPU và CPU - 15 2.3 Mũö hình xứ lý song song dữ liệu - 17

2.4 Lợi ích sự thực thi tính toán song song 21

2.5 Phân cấp bộ nhớ S520 5 BE 2.5.1 Bộ nhớ toàn cục (plebal memory) và bộ nhớ cục bộ (local memory) 23 2.5.2 Bộ nhớ chia sẽ (sharcd memery) 24 2.5.3 Bộ nhớ texture và constant " 24 2.6 Các chiến lược tôi ưu hóa trên GPU "—

2.6.1 Tối da hóa thực thì song song, - 25 2.6.2 Tối ưu hỏa sử đụng bộ nhứ - 25

2.6.3 Tối ưu hỏa thực thi các thread 26

2.6.4 Tôi ưu hóa sử dụng chỉ lệnh - - 27

2.7 nVidia CUDA - 27

2.8 Thrust 28

Trang 4

CHƯƠNG 3: MÔ HÌNH TRƯỜNG NGẪU NHIÊN CỎ ĐIÊU KIỆN

(CONDITIONAL RANDOM FIELDS -CRFS)

3.1, M6 hinh ly thuyét CRFs "

3.2 Ước lượng tham số mô hình CRES

3.3 Ứng dụng CRFs trong trich chon thong tin

CHƯƠNG 4: ỨNG DUNG GFU SONG SONG TUNG FILAN CONG CU

Trang 5

Hinh 4: Vi dy vé luéi 5 chiều của thread 19

Hình 5: Luật Amdahls — tăng tốc phụ thuộc vào phần mã song song và số

Hình 6: Thu thập và phân tản các hoạt dộng bộ nhớ | 3/ - 22

Hình &: Phân cấp bộ nhớ theo khía cạnh phần mềm (trải) và phần cứng (phải)

Hinh 11: 5o sánh mô hình TĨMĂMS, XIEMEMS và CRES 29

Hình 12: VI dụ tộp tin huân huyện 38 Hình 13: Tệp tin mau (template) - - 39

Hình 16: So sảnh thời gian thực hiện tinh todn trén GPU-CPU - 49

Hình 17: Biểu đồ thời gian thực hiện tình toán trên (PU-OCPL - 50

Hình 1A: Biểu dỗ hình cật so sánh thời gian thực hiền tính toán trên GPU-CPL

inh 19: Tap dit liéu CoNLL 2000-shared task 51

Hình 20: So sánh thời gian thực hiện phan training 32

Trang 6

3D Three Dimensional

ALU Arithmetic Logic Unit

API Application Programming Interface

CPƯ Central Processing Unit

CRIs Conditional Random Fields

CUBLAS CUDA Basic Linear Algebra Subprograms

CUDA Compute Unified Device Architecture

CUDPP CUDA Data Parallel Primitives

CUFFT CUDA Fast Fourier Transform

DRAM Dynamic Random Access memory

GPGPU General-Purpose computing on Graphics Processing Units

GPU Graphics Frocessing Unit

LBFGS Limited memory BI'GS

MIRA Margin Infused Relaxed Algorithm

MPI Message Passing Interface

OpenCL Open Computation Language

OpenMP Open Multi-Provessing

PVM Parallel Virtual Machine

SIMD Single Instruction Multiple Data

SIMT Single Instruction Multiple Thread

VLSI Very Large Scale Integration

Trang 7

LỚI CẢM ƠN

Để hoàn thành luận văn này tác giả đã nhận được sự giúp đã từ rất nhiều cơ

quan, doàn the và cả nhân

đã trực tiếp hưởng đẫn tôi trong suốt quá trình xây dựng và hoàn thành luận văn

'Lôi xm bảy tỏ lòng biết ơn sâu sắc đến 'LB Nguyễn ˆ

nay

Đồng thời, xin chân thánh cảm ơn lãnh đạo Viện Công nghệ Thông tin

thuộc Viện Khoa học và Công nghệ Quân sự đã tạo điều kiện để tôi thực hiện

thành công luận văn tốt nghiệp này

Hà Nội, tháng 1Ô năm 2010

Toe vién

Hoàng Đình Thắng

Trang 8

Tỉnh toán song song hay xử lý song song là quả trinh xử lý thông tin trong,

đó nhắn mạnh việc nhiều dơn vị dữ liệu dược xử lý đồng thời bởi một hay nhiều

bộ xử lý dễ giái quyết một bải toán Trái ngược với xử lý nối tiếp, dỏi hỏi phải

xử lý các công việc theo thứ tự tuần tự

Có hai kiểu song song đó là

¥ Song song vé dét liéu (data parallelism): 14 co ché sử dụng nhiều don

vị xử lý thực hiện củng một thao tác trên nhiêu đơn vị dữ liệu

¥ Song song I&nh (control parallelism): 14 co ché trong dé nhiều tháo tác khác nhau tác dộng lên nhiều dơn vị đữ liệu khác nhau một cách ding thời

Chip đồ họa, với hàng chục lõi được sử dựng để tạo ra hình ánh thực trên màn hình máy tính, rất phủ hợp cho các nhiệm vụ xử lý song song Trong khi đó thi bộ xử lý, với nhữ

lai phù hợp hơn cho các ứng dụng xử lý nói tiếp

Xử lý song song là hưởng nghiên cứu quan trọng, nó giúp cho việc thực

hiện áo bài toán được nhanh hơn rất nhiễu so với xử lý tuần tự Luận văn sẽ

hướng tới tìm hiểu bải toán xứ lý song song trên nên đơn vị xứ lý đổ họa (Graphic Processing Llnit-GPU), một trong những hướng xử ly song song đang,

được phát triển mạnh trong thởi gian gần đây

Đồng thời luận văn nảy cũng tìm hiểu về mô hình trường ngẫu nhiên có diều kiện (Conditional Random Fields-CRFs), một mô hình được ứng dụng thành công trong rất nhiễu lĩnh vực như tin-sinh học, xứ lý ngôn ngữ tự nhiên và khai phá text/web

CRI+† là một công cụ được xây dựng cho mô hình CRE, áp dụng chơ các tác vụ xử lý ngôn ngữ tự nhiên như nhận dạng thực thể tên (Named Entity Recognition), trich chon théng tin (Information Extraction) va ‘Text Chunking

CRE++ là một phần mêm nguồn mở, được xây dựng bằng ngôn ngit C++.

Trang 9

§

Luận văn này sẽ nghiên cứu cách mà tác giả của CRE++ thực hiện mô hình

CRE ly thuyết 'Từ đó đề xuất cách song song một số phần của CRE++ sử dụng

mô hình song song trên đơn vị xử lý đồ họa

Trang 10

1.1 Mục đích của lập trình song song

Yêu cầu thực tế cần thực hiện khối lượng tính toán lớn: bài toán xử lý ngôn

ngữ tự nhiên, bài toán xử lý ảnh 3I3, thăm dò dầu khí, dự báo thời tiết, (máy

tính xử lý tuần tự kiếu von Neumann là không đáp ứng yêu cầu)

Thân biết xử lý song song với tuần tự

¥ Trong xử lý tuần tự với một bộ xử lý thì tại mỗi thời điểm chỉ thực

hiện được một phép toán

ˆ Trong xử lý song song thì nhiều bộ xử lý cùng kết hợp với nhau để

lên tính toán nhanh én co sé sit

dựng nhiều bộ xử lý đồng thời Củng với tốc độ xử lý nhanh hơn, việc xử lý

Mục đích của xử lý song song: là thực

song song cũng sẽ piải dược những bài toán phức tạp yêu cầu khối lượng tỉnh

toán lớn

Ba yêu tả chính dẫn đến việc xây dựng các hệ thông xử lý song song

*⁄ Tốc độ xử lý của các bộ xử lý theo kiểu von Neumamn đã dần tiễn tới

giới hạn, không thế cải tiến thêm được do vậy dẫn tới đòi hỏi phải

thực hiện xử lý song song

/ THiện nay giá thành của phần cứng (CPU) giảm mạnh, tạo diéu kiện

đễ xây dựng những hệ thống có nhiều bộ xử lý với tá (hành hợp lý

vˆ Sự phát triển của công nghệ mạch tích hợp (VI.SI) cho phép tạo ra những hệ thống có hảng triệu bỏng bán dẫn (transistor) trên một chíp

Vấn dề xử lý song song liên quan trực tiếp đến: kiến trúc máy tính, phần

mềm hệ thẳng (hệ điều hành), thuật Loán và ngôn ngữ lập trình,v.v

HỆ thống tính song song; là một tập các bộ xử lý (thường là cùng một loại)

kết nỗi với nhau theo một kiến trúc nào đó để có thể hợp tác với nhau trong hoạt

động và trao dải đữ liệu được với nhau

Trang 11

10

Chúng ta dễ nhận thấy là độ phức tạp của xử lý song song sẽ lớn hơn xử lý

tuần tự rất nhiều, và tập trung chủ yếu ở phương diện trao đối đữ liêu và đồng bộ

các tiến trình

Tổ cải dặt các thuật toán sơng song trên các máy tính song song chúng ta

phải sử dụng những ngôn ngữ lập trính song song Nhiều ngôn ngữ lập trình

song song đang được sử dụng nhw: Fortran 90, Pthread [24] voi Fortran/C++,

MPI [21] voi C/C++, PVM [22] voi C/CH, OpenMP [23] voi CICH, wr

Mật số khó khăn của lập trình song song truyền thông:

® Khó khăn thứ nhất — Suy nghĩ tuần tự

Chimg ta có thể thấy rằng tư duy tuần tự lá do môi trường lập trình quyết định Từ thập niên 80 đến khoảng pần dây, chúng ta chủ yếu làm việc với may

tính cá nhân, và mô hỉnh thực thi trên đó lả từng bước một Cũng có máy tính

song song, nhưng hiếm người được dùng nó trong công việc hằng ngày, vì

chuyện xây dụng một hệ máy tỉnh như vậy ở mức quốc gia đã cực kỷ tốn kém chứ đừng nói là công ty hay cá nhân

Cũng chính vì thói quen suy nghĩ tuần tự đã ăn sâu như vậy nên giờ chuyển

sang suy nghĩ kiểu song song rất lả mệt mỏi, vỉ sẽ phải chú ý tới các lỗi đặc thù

của nó, như bế tắc (deadlock), khóa sống (livelock), điều kiện cạnh tranh,v.v

© _ Khó khăn thử ha1- Mở rộng hiệu năng

Qui tic Amdahl [3] trong lấp trình song song cho chúng ta biết là lượng

lăng tốc tổi đa có thể đạt được bằng việc song sang hóa thuậi toán thì tỳ lệ

nghịch với phần mã chương trình không thế chuyên sang dợng song song Tức là cho đủ chỉ còn 10% mã chương trình không thể song song hóa, thì sự tăng tốc chương trỉnh đó cũng không vượt quá l0 lần Tuy nhiên để ước lượng mức độ

cái tiến thoo kiểu này rẤt khó, vì không thể xác định chính xác bao nhiêu phần

trầm mã chương trình thật sự chạy song song, do trong lúc thực thi song song,

mọi thứ lại rất có thể bị chuyển ngược lại thành tuần tự, như khi có tranh chấp

tài nguyễn dùng chung, hay có truy cập dến nhiều vị trí khá cách xa nhau trong,

bô nhớ Đây chính là một trong những hạn chế chính của mô hình lập trình song

truyền thống (vến thưởng cải đặt cách điều khiển tiểu trính qua cơ chế khóa, hay qua giao điên truyền thông điệp, hay nhiễu cách khác nữa đòi hỏi sự đẳngbộ hóa

tức là là tiên trình này đọi tiễn trình kia hadn tat công việc rồi mới làm tiếp

phân việc tiếp theo của mình) khi áp dụng cho nhiều nhâni Nói một cách dé

hiểu, nếu chúng ta chỉ phải đợi từng người một hoàn tải công việc của họ một cách đặc lập, thì thời gian chờ đợi có thé coi lé tang tuyén tinh với số người cần

Trang 12

đợi/động bộ Nhưng nếu chúng ta phải doi cùng lúc nhiều người, và kết quả

công việc của họ lại phụ thuộc lẫn nhau, thì thời gian chờ đợi sẽ tăng tễ hợp và

rất khó xác định, chứ không đơn giản chỉ là tăng tuyến tinh,

Còn có một khó khăn cơ bắn hơn nữa trong mở rộng hiệu năng với số

nhân/lỗi Mô hinh lập trình song song truyền thống tiếp cận bài toán cần giải

quyết theo kiểu top-down, bằng cách chia một bài toán lớn thảnh nhiễu tác vụ

con, và mỗi tác vụ nảy sẽ được giao cho một bồ xử lý/nhân/lõi Van đề rắc rồi ở đây là khi số lượng bộ xử }ý/nhân/õi tăng lên đến hang chục, hay hang trăm như

hiện nay, thì số tác vụ con đã được thiết kế để giao nhằm tận dụng sức mạnh

tính toản của chúng lại không có đủ Cách tiếp cận phố biến nhất cho tỉnh huỗng

này là lại cố chia nhỏ các tác vụ con đó thành nhiều đơn vị thực thi nhỏ hơn

Nhu vậy, cách làm này bị phụ thuộc vào từng thể hệ phần cứng bộ xử lý, dẫn

đến chuyển không thể mỡ rộng việc thực thi chương trình một cách dé ding thea

kiếu không cẩn phải thay đổi, sửa chữa gì về mặt thuật toán hay mã nguồn cài

đất Vã suy cho cùng thỉ nếu một bài toán mà được chia thành vài chục tác vụ

con chay song song sẽ vô cùng khó quản lý và gỡ rối

s Khókhănthửba Tuần tự sang song song

Việc cố gắng chuyến mã từ tuần tự sang song song dựa trên tác vụ là quá

trình này cần rất nhiều thời gian, có khi cä vải năm trời l2o tốc độ gia tăng số

nhân/lõi hiện tại quá nhanh, nên nhiều khi thuật toán song song ma ching ta đã

bổ ra vài năm kể từ năm nay để thiết kế lại không mở rộng tốt với số nhân/lõi của vải năm nữa, ở thời điểm chúng ta hoàn tất việc cải đặt nó một cách song

song,

Ý tưởng gán một công việc nhỏ cho từng bộ xử lý/nhân/lõi trong máy tỉnh nhằm tăng hiệu năng phần mềm chạy trên đó là hoàn toàn tự nhiên và được đúc kết từ kinh nghiệm trong đời sống hàng ngày Tuy nhiên để tận dụng được hết

sức mạnh của hàng trăm, rồi hàng ngàn nhân/lõi trong tương lai, chứng ta có lễ

cần phái “đi trước đón đầu” bằng cách tạo ra hàng chục ngàn, hàng trăm ngàn

công việc nhỏ lï tỉ ung cấp cho đội quân nhân/lõi đông đảo và ngày một gia

Trang 13

1.2 Mục tiêu của luận văn

Vì giới hạn của phần cửng, xu hướng tăng số lõi (cores) thay vì tăng xung nhip (clock rate) đang trở nên phổ biến CPU thì có mulficores, còn GPU thi có many-cores Ngày nay, GPU có thé hoạt động nhanh hơn cá CPU trong việc xử

lý tính toán Cụ thể nhờ số lượng cores lớn (vải trăm so với 2,4, hoặc B của

CPU), tốc độ truy xuất bộ nhớ nhanh (85GB/s véi G80, 1S0GB/s voi GTX200) Thờ thể, vai trò của GPU đã vượt ra ngoài phạm vị truyền thông, đó là chạy các ứng dụng tỉnh toán Tuy nhiên, GPU vẫn chưa thay thế hoàn toàn được CPU, do

cỏ nhiều tác vụ thực hiện hiểu quả hơn trên CPU Do do, GPU chi dong vai trò

Mô hình trường ngẫu nhiên có diễu kiên (Conditional Random Ficlds- CRFs), mộL mõ hình được ứng dụng thánh gông trong rất nhiều lĩnh vực như tin- sinh học, xử lý ngôn ngữ tự nhiên và khai phả tcxt

CRFI ! là một công cụ xây dựng cho mô hình CRT, được viết bằng ngôn

ngit C++ Luận văn này sẽ ứng dụng GPU để song song hóa lừng phần của

CRE++, nhằm mục đích cải thiển tốc độ tỉnh toan cia CRF++, nhất là trong, trưởng hợp xử lý số liệu lớn (hàng chục nghìn câu, hảng triệu thuộc tínb)

1.3 Tổ chúc của luận văn

Luận văn này gồm 4 chương, với nội dung sơ hộ như sau

Chương 1 - Giới thiệu nêu lên mục đích của lập trình song song, những khó

khăn của lập trình song song truyền thống, dẫn đến yêu cầu một mô hình lập

trình song song kiểu mới linh hoạt hơn Chương này cũng trình bảy mục liêu của luận văn, tổ chức của luận văn

Chương 2 - Tổng quan về đơn vị xử lý dd hoa (GPU), cung cấp cái nhin

tổng quan về tính toán song song đa dụng trên đơn vị xừ lý đỗ họa Mô tá sự

khác nhau cơ bán giữa dơn vị xứ lý trung tâm (CPU) vả dơn vị xử lý đồ họa

(GPU) Phần lớn của chương nảy đành cho việc giai thích các nguyên tắc cơ bân của tính toán song song da đụng trên đơn vị xử lý dỗ họa và giao diễn lập trình ứng dụng (API) trén GPU

Trang 14

Chương 3 - A4ô hình trường ngẫu nhiên có điều kiện (CRH), trình bày mô hình lý thuyết CRE, phương pháp ước lượng tham số của mô hình CRE và một

số ng đụng của CRF

Chương 4 - Ứng dụng GPU song song hỏa từng phẩn công cụ CRE++, giới thiệu công cụ RE+t, cách thức mà tác giả của CRELt thực hiện, từ đó đề xuất chiến lược song song CRF++ bing GPU thông qua các thư viện lập trình

cho GPU nhu CUDA, Thrust Phần cuối của chương sẽ đưa ra kết quả thực

nghiệm cũng như một số đánh giá, nhận xét.

Trang 15

14

CHUONG 2: TONG QUAN VE

DON VI XU LY DO HOA (GRAPHIC PROCESSING UNIT-GPU)

2.1 Tóm tắt lịch sử phát triển của đơn vị xứ lý dé hoa (GPU)

"Irong suốt 20 năm qua GPUs di trãi qua những phát triển lớn Bắt đầu phát

triển từ đơn vị xứ lý đồ họa 2D đơn giản, đến đa mục đích, có thể lập trinh được,

song song mire dé cao, có nhiều lỗi đơn vị xử lý với khả năng tính toán phi thường và băng thông bộ nhở rất cao

Lịch sử của ŒPUs những năm 1970 với các máy tính có Atari 8-bit Những

chip đồ họa này được sử dụng dé hỏa trộn đồ họa và đữ liệu văn bản rồi hiến thị

chúng lên mản hình Những năm 1980, kiến trúc của chíp này trở thành nền tầng

của sản xuất chip hàng loạt tiếp theo, được tích hợp trong Commodore Amiga

Chip nay là chấp đầu tiên có đầy đủ các đặc tính tăng tốc đồ họa nó chứa các

đặc tính như: vẽ hình ảnh gốc, tô màu hình ảnh, chuyển khối hình ảnh,

ất cã vidoo được đẩy vào phần cứng, Năm 1984,

v.v Đặc tính cách mạng lả l

gần 10 năm sau khi phần cứng tăng tốc dỗ họa trở thành chuẩn, IBM giới thiệu tăng tốc 2D/3D dau tién dudi cai ttn IBM Professional Graphics Controller, nhưng thành công thì không dược như mong đợi Việc thiếu tính tương thích, xử

lý chậm vả giá cao (54.500) lâm cho dự án này thất bại [7]

Trong suốt những năm 1990, nhu cầu tăng tốc đồ họa trở nên cấp thiết, bởi

vì số lượng máy trạm ngày càng tăng với nền tảng công nghệ của Microsoft

Windows Năm 1993, $3 Graphics giới thiệu chíp đơn 2l tăng tốc đầu tiên - 53

860911, đưới tên mã là Porsche 911 Chíp này thiết lập chuẩn tăng tốc 212 trong

vòng vải năm Năm 1995 gần như tất cả các nhả sản xuất chíp đã bổ sung hỗ trợ tăng tốc 2D vào sin phẩm của họ

Giữa những năm 1990 đỗ họa 31) thời gian thực trở nên phố biến hơn trong, máy tính và trỏ chơi điều khiển Nhu cầu đỗ họa 312 thời gian thực dẫn đến phát

triển tăng, tắc 3D thời gian thực đầu tiên Các chíp giá rẻ như 53 ViRGE, Matrox Mystique hay Ati Rage duge dya trên 2D tắng tốc và thêm các đặc tính 3D Bước đột phá đầu tiên đến năm 1996, khi 3Dfx Iateractive giới thiệu tăng tốc 3D

đầu tiên đầu đủ tính năng có tên là Voodoo [8] Gia tăng tốc độ này xác định

tiêu chuẩn mới ch chip đồ họa 3D cho ba năm tiếp theo Bước đột phá lớn thứ hai đến năm 1999 khi tổng công ty nVidia giới thiệu GPU đầu tiên — NV10,

Trang 16

dưới tên mã GeForce 256 Tắt cả các con chíp hiện nay về cơ bản đều xuất phát

từ kiến trúc này

Vào cuối năm 2006 nVidia giới thiệu kiến trúc thiết bị hợp nhất cho tính

toán đầu tién - Compute Unified Device Architecture (CUDA) Các công ty đối

thủ AMD/ATI giới thiệu kiến trúc của họ (ATI FireStream) vài tháng sau đó

Thời điểm này GPU trở nên dễ tiếp cận để phát triển phần mềm bằng các ngôn ngữ lập trình chuẩn công nghiệp và thiết lập cách thức mới cho tính toán hiệu

năng cao [2]

2.2 Sự khác nhau giữa GPU và CPU

Ý tưởng chính của tính toán song song đa dụng trên GPU (GPGPU) là sử

dụng nhiều bóng bán dẫn (transistor) để xử lý dữ liêu và xử lý dữ liêu song song

Đây là sự khác biệt chính giữa CPU và GPU GPU chủ yếu định hướng các thao tác song song dữ liệu hơn là trữ dữ liệu (caching data) và điều khiển luồng [2] Nhu cầu này chủ yếu xuất phát từ dựng hình đồ họa, bởi vì thiết bị đồ họa bắt

buộc phải xử lý một lượng lớn các phần tử dữ liệu đồ họa (như các điểm ảnh,

đỉnh và mảnh) và thao tác trên các phân tử nay (lightning, blending, clipping,

texturing, .), Song song là cách để giảm lượng thời gian cần thiết để xử lý dữ liệu và giảm chi phí tổng thể bằng cách phân phối nó trong xử lý các phần tử Nguyên tắc cơ bản là quá trình dựng hình đồ họa là cố định Dữ liệu được xử lý

bởi phần cứng đồ họa đi qua nhiều giai đoạn trước khi chúng được hiển thị và

chuỗi sự kiện nảy là không thay đổi

_ _ Ms

Hình 1: Sự khác nhan giữa CPU và GPU ~ GPU có nhiều bộ xử lý: để định

hướng xử l' song song dữ liệu [2]

Trang 17

GeForce Gre 480

PS NVIDIA GPU Single Precision

1250 NVIDIA GPU Double Precision

—eIntel CPU Single Precision

“Intel CPU Double Precision

tiến trình đang chay Tất cả các tác vụ được cung cấp một thời gian xử lý xác

định trước để thực thi mã của chúng Khi đến thời gian này, hệ điều hành chuyển CPU sang tiến trình tiếp theo Chuyển đổi ngữ cảnh giữa các tiến trình đang chạy có thể được tính toán với cường độ lớn

Trang 18

Ngược lại, GPU xử lý nhiều nhất một nhiệm vụ tại một thời điểm nhưng

thực hiện nhiều lần song song GPU sử dụng mô hình song song dữ liêu để có thể giải quyết các vân đề số học cường độ cao hơn CPU Khi cùng một đoạn mã GPU được thực hiên song song nhiễu lần thì không cần kiểm soát luồng và quản

lý bộ nhớ đệm (cache) Thục thi tác vụ sơng song không được hỗ trợ trong GPU

€ó nghĩa là, không thể thực thi hai hoặc nhiều chương trình khác nhau trên cùng

GPU vào cùng một thời điểm

Mô hình xứ lý dữ liệu song song ánh xạ các phần tử đữ liệu vào các đơn vị

làm việc cơ sở được gọi là các luồng (thread) Tính song song thread cùng với

phân cấp bộ nhứ chỉa sẽ vả hàng rào đồng bộ hóa giữa các luỗng làm nên khái

niệm trừu tượng về mô hinh lap trinh song song da dung cia GPU [2]

2.3 Mö hình xử lý song song dữ liệu

Mục này sẽ trình bày các khái niệm cơ bản trong đơn vị xử lý đỗ họa

Kernel 14 mét doan mã chương trình, được thể hiện bởi một hàm hay thủ

tục việt bằng một ngồn ngữ lập trình cụ thể 7read là một thực thể chạy mã nhị

phân, được thực thi song song nhiều lần [2] Cé thé nói kernel là một “mẫu

ham” cho một nhóm thread, TTái thuật ngữ quan trọng tiếp theo là hosi và device

Tlost 14 bao gồm bộ xử lý trung tâm và DILAM của CPU, còn đevice gom các bộ

xứ lý và DRAM cia GPU Host va device duve phan tach béi khéng gian dia chí

của hai DRAM #os thực thi chương trình chính (mã tuần tự) còn đewice thực thi kernel (mã song song) Device trong mô hình này làm việc giống như môt bộ

đồng xử lý (eo-processor) dối với host Hình 3 thể hiện cách thức thực thi mã

tuân ty va song song

GPU thrcad dùng xử lý dữ liệu song song và mô hình lập trình Trong mô hình nảy, các phần tử dữ liệu cơ sở dược lưu trong bộ nhớ GPU được ảnh xa vào thread đang chạy Bộ nhớ CPU (không gian địa chỉ) là một máng tuyến tính của

các phan tử cơ bản (bytes) Dễ ánh xạ thread vào bộ nhở đối tượng chúng ta cần

biết cách tổ chức thread Cơ cấu tổ chức này phải có khả năng xác định rõ đối

tượng bộ nhớ từ các giá trị định dánh thread được sinh ra một cách tự động Dé

làm được điều nay, cach dé dang nhất là tổ chức thread thành lưới (griđ) ảo đa

các đươad Với công nghệ CUDA, lưới này có 5 chiều và để định

hướng tốt hơn, lại dược chia thành 2 loại: khối 3 chiều của thrcad và lưới 2 chiều

của khối cua thread

chiều củi

Trang 19

€ Program Sequential Execution

Serial code

Parallel kernel Kernel0<<<>>>()

Serial code

Parallel kernel Kernell<<<>>>()

Hình 3: Nguyên lý lập trình trên GPU [2]

Số định danh duy nhất của thread có thể ước lượng từ một số biến liên quan, được khởi tạo khi lưới của khối thread được liệt kê Các biến này có thể

truy cập từ bên trong mỗi kernel Mỗi thread có biến riêng của nó, chứa tọa độ

Trang 20

ba chiều †„, fy„ f„trong khối Khối thread chứa các biến chiều D,, 2y, D; ứng với các trục +, y, Z và tọa đô 2 chiều b„, by trong lưới khối thread Các chiều của lưới khối thread cũng có thể truy cập từ trong các biến G„, Œy Các chiều của

khôi thread và của lưới phải được thiết lập trước khi chạy các tính toán Số định

danh duy nhất của thread trong khối thread và số định danh duy nhất của block

trong grid được tính như sau [2]

Grid of thread blocks

“| rac rn

Grid dimension x

Hinh 4: Vi dụ về lưới 5 chiều của thread

Cơ cấu phân cấp cung cấp phương tiên để tính toán trên các cầu trúc dữ liêu như véctơ, ma trận hay mảng ba chiều Tuy nhiên do hạn chế của phần

cứng, kích thước của khối thread hay số thread trong mỗi block là giới hạn!

* Đối với nVidia CUDA tương thích với 1.x, kích thước lớn nhắt của khối thread là 512x512x64, nhưng

có nhiều nhất 512 thread trong mỗi block.

Trang 21

20

Nghĩa là chúng ta không thể gọi khối thread với kích thước bất kỳ Đây là một

hạn chế, nhưng chúng ta có thể “lợi dụng” tính toán theo một số khối của các

thread Néu lam điểu này, chúng ta luôn phải xác định kích thước của grid dé

thực hiện các tính toán Tối đa kích thước của khối thread luôn luôn có nghĩa là

giảm thiểu kích thước của grid và ngược lại Vậy làm thé nao dé chúng ta chọn kích thước của khối thread, mà vẫn tuân theo giới hạn của phần cứng Ví dụ, nếu

chúng ta muốn ánh xạ véctơ kích thước Ñ với khối kích thước Dx, chúng ta cần xác định kích thước Œx của grid của khối thread Có thể tính toán như sau:

Dxe N and | < Dx < maxBlockDimensionX

Dy€N and 1 < Dy <maxBlockDimensionY

1 < Dx*Dy*Dz < maxThreadsPerBlock

Trang 22

2.4 Lợi ích sự thực thi tính toán song song

Để đạt được lợi ích tối đa từ tính toán song song chúng ta cần tìm giải pháp

làm thé nao dé song song ma tuần tự Trong GPGPU điều này được thực hiện

bởi song song thread và mô hình thực thi song song dữ liệu Lợi ích tối đa (tăng

tốc lý thuyết) có thể được diễn tả bởi luật Amdahl's [3]

1

(—P)+T

Trong đỗ P là một phần của chương trình có thể được thực hiện song song,

1— P tượng trưng cho phần mã được thực hiện tuần tự vả # là số bô xử lý hoặc

thread thực hiên phần song song Hình 5 minh hoa ting tốc lý thuyết cho các phần khác nhau của mã song song phụ thuộc vào số lượng thread thực hiện song

và số lượng thread [3]

Trang 23

2

2.5 Phân cấp bộ nhớ

Ngày này, GPUs hỗ trợ đánh địa chỉ bộ nhớ byte-wise và hỗ trợ thu thập

(gather) và phân tán (scatter) các hoạt động bộ nhớ Truy cập bộ nhớ song song

là giải pháp chính cho thông lương bộ nhớ lớn và xử lý dữ liệu song song, Điều quan trọng cần đề cập đến là tất cả các hoạt đông bộ nhớ phải được hợp nhất

Hợp nhất truy cập bộ nhớ nghĩa là đọc từ một tập địa chỉ liên tục phải tương ứng

với tổ chức thread (số định danh thread) Cách tốt nhất để hợp nhất bộ nhớ truy

cập là ánh xa thread và block vào bộ nhớ đối tượng Không hợp nhất hoặc truy

cập bộ nhớ ngẫu nhiên dẫn đến đọc và ghi tuần tự dữ liệu và làm mắt hiệu suất

[21

CS CĐ

Scatter

Hình 6: Thu thập và phân tán các hoạt động bộ nhớ [3]

Có thể xem xét bộ nhớ GPU từ hai khía cạnh: phần cứng và phần mềm Với khía cạnh phần mềm, cần phân biệt giữa các bộ nhớ global, local, shared,

texture và constant Mỗi loại bộ nhớ có chức năng đặc thủ và mục đích sử dụng riêng Với cái nhìn phần cứng, chỉ cần phân biệt giữa bộ nhớ thiết bị (DRAM),

bộ nhớ chia sẻ (shared memory) với constant và texture cache

Trang 24

2.5.1 Bộ nhớ toàn cục (global memory) và bộ nhớ cục bộ (local memory)

Bô nhớ toàn cục là phần bộ nhớ lớn nhất trong thiết bị GPU Bộ nhớ này

nằm trong DRAM của thiết bị và có thể truy cập từ tất cả các thread trong grid

và từ host-device thông qua thư viên runtime đặc thù Các đối tượng bộ nhớ khai

báo trong không gian bộ nhớ toản cục có thời gian tổn tại là thời gian của ứng

dụng Bộ nhớ toàn cục có thông lượng bộ nhớ rất lớn (hàng trăm gigabyte/giây))

Hạn chế chính của loại bô nhớ này là độ trễ rất lớn khi đọc và ghi dữ liệu (hàng

Trang 25

24

trăm chu kỳ đồng hé-bundreds of clock cycles) Nguyên nhãn là do bộ nhớ toàn

cục không có bộ nhớ đệm (cache) Vì thế, nên hạn chế làm viếc trực tiếp với bộ

nhớ toàn cục, thay vào đó sử đựng bộ nhớ chia sẻ Ứu điểm của loại bộ nhớ toàn

cục là tải đữ liệu, lưu trữ chỉ lệnh vả sử dụng con trổ thông thường và con trỏ số

học

Bộ nhớ cục bộ cũng tương tự như bộ nhớ toản cục Nó thuộc về DRAM

của thiết bị nhưng chỉ truy câp bên trong mỗi thread và có kích thước giới han (hàng chục kilobytes), Dối tượng khai báo trong bộ nhớ này có thời gian tổn tại

là thời gian của khối thread Điểm mạnh và điểm yếu của bệ nhớ này giống với

bộ nhớ toàn cục

2.5.2 Hộ nhớ chia sẻ (shared memory)

Bộ nhớ chia sẻ là bộ nhớ nhỏ (chục kilobytes) có thể truy cập từ tất cả các

thread trong một khối thresd, vì thế đối tượng khai báo trong bộ nhớ nảy có thời

gian tồn tại cùng với khối thread Bộ nhớ chia sẻ làm việc giếng như Lì cache trên CPU chuẩn Nó cung cấp độ trễ truy cập rất thấp và thông lượng bộ nhớ rất

cao (gần như tương đương với thông lượng của thanh ghỉ nếu không có truy cập xung đột giữa các thread) Cách sử dụng shared mermory khó hơn so với global

memory Dé đạt được hiệu suất lỗi đa người lập trình phải giải quyết vấn đề

xung đột truy cập shared memory và lễ chức cấu trúc đữ liệu

2.5.3 Bé nhé texture va constant

Dây là hai bộ nhớ chuyên biết, Cả hai thuộc vé DRAM va cé thé truy cập

từ tất cã các thread trong grid và từ host thông qua thư viện thời gian chạy đặc thù Không giống như global va local memory, c4 hai bộ nhớ này déu la cached,

vì thế truy cập đến hai bộ nhớ này nhanh hơn nhiều so với truy cap global memory Ilơn nữa, một số phần cứng đồ họa có thể truy cập đữ liệu trong bộ

nhớ Iexture và thực hiện các thao tác chuyên biệL Đối tượng khai báo trong

texture va oonstan memory có vòng đời của ứng dụng,

2.6 Các chiến lược tối ưu hóa trên GPU

Không cân nhắc trước khi sử dựng GPU có thể dẫn đến kết qủa không như

ý muốn Trong trường hợp xấu nhất có thể cho kết quả sai hoặc tiêu tốn quá nhiều thời gian Ví dụ, sẽ không hiệu quả nếu chạy thuật toán sử dụng một

thread Irong trường hợp này phải thực biện sao chép dữ liệu vào device, thực thi thuật toán trên device vả sao chép đữ liệu trở lại host l3ữ liệu di chuyển giữa host va device la tốn nhất trong quá trình nảy, mặc dù với công nghệ ngày nay

có thể cung cấp băng thông đữ liệu rất cao Chúng ta can nhận thấy ring băng

Trang 26

thông trên device cũng như trên host lớn hơn nhiều so với bing trong kết nối

giữa host va device

Trước khi viết một chương trình GPU, cần phái xem xét các khía cạnh kết quả từ kiến trúc GPU Kiểu lập trình GPU yêu cầu cách tiến cần khác với lập

trình CPU Đó là do kiến trúc phần cứng và mô hình thực thi chương trinh GPU

hoạt động như một bộ xử lý song song với CPU CPU Tất mạnh trong thực thí

mã tuần tự, trữ dữ liệu và xử ly luồng '1rong chương trình GPU, CPU đóng vai trò như là đối tượng giám sát mã GPU Nghĩa là CPU chỉ đảm nhận các hoạt động bộ nhớ cơ bản (cấp phát, giải phóng bộ nhớ GPU, chuyển đữ liệu giữa host

va device) và gọi komol Cáo tính toán khác được thực hiện trong bộ nhớ GPU

Có 4 chiến lược thực thi chính để đạt được lợi ích thời gian lớn nhất từ GPGPU [3]:

~_ Tối đa hóa thực thi song song,

- _ Tôi ưu hóa sử dụng bộ nhớ,

-_ ôi wu hóa thực thị thread,

- _ Tổi ưu hóa st dung chỉ lệnh

2.6.1 Tôi đa hóa thực thi song song

Tổi đa hóa thực thì song song là chiến lược cơ bản nhất, và chiến lược trừu

h dễ song song hiệu quả bài toán Đầu tiên bao gầm phân rã vấn dề thánh các vấn dễ

tượng nhất trong nhiều trường hợp trong tính toán song song Có hai c

con và ảnh xa chúng vảo các thực thì nguyên thúy (các khối thread, thread) Tiép

theo ánh xạ các thực thi nguyên thủy vào cấu trúc dữ liệu trong bộ nhớ Chiến

lược thứ hai là ngược lại của chiến lược thứ nhất Cần phải tim cach anh xa dit

liệu vào các thực thi nguyên thủy để giải quyết bài toàn Tùy thuộc vào bài toán

đưa ra để chọn chiến lược cụ thé

Nói chung, thuật toán bằng cách nảo đó phản ánh được thực hiện phần

cứng của thiết bị để đạt được hiệu quả lớn nhất, hơn nữa phải chắc chắn rằng

thuật toán được ánh xạ vào hiệu quả phần cứng

2.6.2 Tối ưu hóa sử dụng bộ nhớ

tối ưu hóa sử dụng bộ nhớ lả giăm thiểu việc

hơn rất nhiễu so với chuyển đữ liệu trong đevicc và hoat Tiếp đến là vi

truy cập bê nhớ toàn cục hiên đàng bộ nhớ chia sẽ, kết hợp với bộ nhớ toàn cục

Trang 27

26

Bộ nhớ chia sẻ làm việc giống LIcache trong một bộ đa xử lý và hầu như

có chỉ phí truy cập bằng không, vì thế rất nhanh Mỗi khối thread truy cập bộ

nhớ chia sẻ của nó Tối ưu gồm chuyền di liệu từ bộ nhớ toàn cục sang bộ nhớ

chia sẽ, thực hiện các tỉnh toán trên dữ liệu của bộ nhớ chia sẽ, sau đó chuyển kết quả ngược lại bộ nhớ toàn cục Một điều quan trọng là, truy cập đến bộ nhớ

chia sẻ phải được tổ chức hợp lý đề tránh xung đột, vì bộ nhớ chia sẻ có thể truy

cập song song bởi nhiều thread Xung đột truy cập giữa các thread có thé dẫn

đến thực thi tuần tự các yêu cầu bộ nhớ và làm mất hiệu suất tính toán

Truy cập đến bộ nhớ toàn cục độ trễ rất lớn (hàng trăm chu kỳ đồng hỏ), vì

thể phải cần thận khi làm việc với dữ liêu trên bộ nhớ nay Hop nhất truy cập bộ

nhớ nghĩa là đọc từ một tập địa chỉ liên tục phải tương ứng với tổ chức thread (số định danh thread) Hợp nhất truy cập bộ nhớ là vẫn đề phụ thuộc thiết bị và không có chiến lược chung

Kỹ thuật tối ưu bộ nhớ tiếp theo là sử dụng bộ nhớ constant và texture Bộ

nhớ constant và texture là bộ nhớ chỉ đọc (từ thiết bị-device), có thể bộ nhớ đệm,

nên truy cập loại bộ nhớ này tương đối nhanh Ví dụ, để tiết kiêm bộ nhớ chia

sẽ, chúng ta lưu trữ một số đối số của kernel vào trong bộ nhớ constant Bộ nhớ

texture dùng cho các thao tác đồ họa

2.6.3 Tối ưu hóa thực thi các thread

Thread được tổ chức trong khối (block), được thực thi trên bộ đa xử lý Mỗi khối của các thread được phân chia thành từng phần gồm 32 thread bởi đơn

vị chỉ dẫn trong bộ đa xử lý và được thực thi trên bộ xử lý vô hướng Việc đầu

tiên để cải thiên hiệu suất là tạo khối thread (chứa số lượng thread là bội của 32)

Điều này sẽ cung cấp hiệu quả tính toán tối ưu và sẽ tạo điều kiên hợp nhất truy

cập bộ nhớ

Chiến lược tối ưu quan trọng nhất là tránh các đường thực thi khác nhau trong cùng một warp (warp là một nhóm gồm 32 thread) Nếu một đường thực

thi của thread phân rã ở nhánh phụ thuộc dữ liệt At cd cac thread không ở trên

đường này được dừng lại cho đến khi tất cả các đường hội tụ lại cùng đường

Trang 28

Hình 9: Phân rã tại nhành phụ thuộc đữ liệu

Tắt cả các lệnh diễu khiển (nhánh, lặp) có thể lâm cho warp dang hoạt động

phân rã

2.6.4 Tối ưu hóa sử dụng chỉ lệnh

Ti ưu hóa các chỉ lệnh sử dụng trong hầu hết các trường hợp là kỹ thuật tối ưu có độ ưu tiên thấp nhất và được thực hiện sau khi xong các tối ưu trên GPU được tối ưu hóa cao cho các phép toán dấu phẩy động Vì thế cần cân nhắc

việc ưu tiên cho tốc độ hay cho độ chính xác IIiện nay GPU hỗ trợ số đấu phẩy

động độ chính xáo kép, nên gó thể cung cấp chính tính toán chính xáo hơn với chỉ phi thực hiện

Tên cần thận khi chuyển đổi số chính xác đôi sang số chính xác đơn Tránh dùng phép chia, phép chua lấy dư, thay vì thế nên dùng phép địch chuyển

2.7 nVidia CUDA

CUDA là từ viết tất trong tiếng Anh của thuật ngữ Compute Unifed

Device Architecture, tam dich la kién trúc thiết bị hop nhất cho tính toán

CUDA bit đầu xuất hiện Lừ tháng 11 năm 2006 với vai trò ban đầu là một bộ

công cu phát triển phần mềm dựa trên ngôn ngữ lập trình , và piờ dây cuối năm

2010, sau bốn năm phát triển, CUDA dang Hiến hóa thành kiến trúc diện toán

GPU, hay còn gợi là GPGPU, của NVTDIA CUIDA có mặt trên hầu hết các

GPU ddi méi cia NVIDIA, tir dong GeForce giảnh cho giải trí, đến Quadro

giảnh cho điện toán hình ảnh chuyên nghiệp, vỉ dụ như trong thiết kế và sáng

tạo và mới nhất là dỏng Iesla cho tính toán hiệu năng cao

Hình dưới đây cho chúng ta thấy bức tranh toàn cảnh về điện toán CPU xét trên khía cạnh phần mềm từ quan điểm và công nghệ của NVII2IA 'Irong hình

nảy, ở lớp thấp nhật của kiên trúc phân mềm giành cho điện toán CPU, chúng ta

có các GPU của NVIDIA được trang bị kiến trúc tính toán song song CUDA, bao gồm cả trình điều khiển thiết bị CLDA vốn được nhúng bên trong trình điều

khiển thiết bị đề họa đo NVIDIA cung cấp.

Ngày đăng: 21/05/2025, 18:59

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1, Hà Quang Thụy, Phan Xuân Hiếu, Đoàn Sơn, Nguyễn Tri Thành, Nguyễn Thu Trang, Nguyễn Câm Tú (2009), Giáo trình khai phá dữ liệu web, Nhàxuất bản Giáo dục Việt Nam tr. 260-267.Tiếng Anh 2.10 11 Sách, tạp chí
Tiêu đề: Giáo trình khai phá dữ liệu web
Tác giả: Hà Quang Thụy, Phan Xuân Hiếu, Đoàn Sơn, Nguyễn Tri Thành, Nguyễn Thu Trang, Nguyễn Câm Tú
Nhà XB: Nhà xuất bản Giáo dục Việt Nam
Năm: 2009
12. Neil Matthew, Richard Stones (2004), Beginning LinuxProgramming Third Edition, Wiley Publishing, Inc Sách, tạp chí
Tiêu đề: Beginning LinuxProgramming Third Edition
Tác giả: Neil Matthew, Richard Stones
Nhà XB: Wiley Publishing, Inc
Năm: 2004
13. Mark Mitchell, Jeffrey Oldham, Alex Samuel (2001), Advanced Linux Programming, New Riders Publishing Sách, tạp chí
Tiêu đề: Advanced Linux Programming
Tác giả: Mark Mitchell, Jeffrey Oldham, Alex Samuel
Nhà XB: New Riders Publishing
Năm: 2001
14. David B. Kirk and Wen-mei W. Hwu (2010), Programming Massively Parallel Processors: A Hands-on Approach, Elsevier Inc Sách, tạp chí
Tiêu đề: Programming Massively Parallel Processors: A Hands-on Approach
Tác giả: David B. Kirk, Wen-mei W. Hwu
Nhà XB: Elsevier Inc
Năm: 2010
17. Pinto, D., McCallum, A. Wei, X., and Croft, W. B. (2003), Table extraction using conditional random fields, Proceedings of the 26” Annual International ACM SIGIR Conference on Research and Development inInformation Retrieval (ACM SIGIR 2003) Sách, tạp chí
Tiêu đề: Proceedings of the 26th Annual International ACM SIGIR Conference on Research and Development in Information Retrieval
Tác giả: Pinto, D., McCallum, A., Wei, X., Croft, W. B
Nhà XB: ACM SIGIR 2003
Năm: 2003
20. Wayne Wood, (2010). A Brief Test on the Code Efficiency of CUDA and Thrust: http:/Awww.codeproject.com/KB/Parallel_Programming/test-on-thrust-efficiency aspx Sách, tạp chí
Tiêu đề: A Brief Test on the Code Efficiency of CUDA and Thrust
Tác giả: Wayne Wood
Năm: 2010
24. POSIX Threads Programming: https://computing. IIn].gov/tutorials/pthreads/ Sách, tạp chí
Tiêu đề: POSIX Threads Programming
25. McCallum, A. and Li, W. (2003). Early results for named entity recognition with conditional random fields: feature induction and Web-enhancedlexicons, Proceedings of the 7”Learning (CoNLL 2003) Sách, tạp chí
Tiêu đề: Early results for named entity recognition with conditional random fields: feature induction and Web-enhanced lexicons
Tác giả: McCallum, A., Li, W
Năm: 2003
21. Message Passing Interface: http://vi.wikipedia.org/wiki/MP1 22. Parallel Virtual Machine:http://en. wikipedia org/wiki/Parallel_Virtual_Machine Link
18. Kristjansson, T., Culotta, A., Viola, P., and McCallum (2004). A. Interactive Khác
26. Fuchun Peng, Andrew McCallum (1998), Accurate information extraction from research papers using conditional random fields, Proceedings of Human Language Technology Conference and North American Chapter ofthe Association for Computational Linguistics (HLT-NAACL), 2004 Khác
27. Yejin Choi, Claire Cardie, Ellen Riloff and Siddharth Patwardhan Khác

HÌNH ẢNH LIÊN QUAN

Hình  1:  Sự  khác  nhan  giữa  CPU  và  GPU  ~  GPU  có  nhiều  bộ  xử  lý:  để  định - Luận văn lập trình song song trên nền Đơn vị xử lý Đồ họa và Ứng dụng
nh 1: Sự khác nhan giữa CPU và GPU ~ GPU có nhiều bộ xử lý: để định (Trang 16)
Hình  2:  So  sánh  tốc  độ  tính  toán  giữa  CPU  và  GPU  [2] - Luận văn lập trình song song trên nền Đơn vị xử lý Đồ họa và Ứng dụng
nh 2: So sánh tốc độ tính toán giữa CPU và GPU [2] (Trang 17)
Hình  3:  Nguyên  lý  lập  trình  trên  GPU  [2] - Luận văn lập trình song song trên nền Đơn vị xử lý Đồ họa và Ứng dụng
nh 3: Nguyên lý lập trình trên GPU [2] (Trang 19)
Hình  6:  Thu  thập  và  phân  tán  các  hoạt  động  bộ  nhớ  [3] - Luận văn lập trình song song trên nền Đơn vị xử lý Đồ họa và Ứng dụng
nh 6: Thu thập và phân tán các hoạt động bộ nhớ [3] (Trang 23)
Hình  7:  Các  loại  bộ  nhớ  trong  GPU  [2] - Luận văn lập trình song song trên nền Đơn vị xử lý Đồ họa và Ứng dụng
nh 7: Các loại bộ nhớ trong GPU [2] (Trang 24)
Hình  8:  Phân  cấp  bộ  nhớ  theo  khia  cạnh  phần  mêm  (trái) - Luận văn lập trình song song trên nền Đơn vị xử lý Đồ họa và Ứng dụng
nh 8: Phân cấp bộ nhớ theo khia cạnh phần mêm (trái) (Trang 24)
Hình  10:  Điện  toán  GPU  được  tang  cường  bởi  kién  trite  CUDA - Luận văn lập trình song song trên nền Đơn vị xử lý Đồ họa và Ứng dụng
nh 10: Điện toán GPU được tang cường bởi kién trite CUDA (Trang 29)
Hình  14:  Kết  quả  thc  hién crf learn - Luận văn lập trình song song trên nền Đơn vị xử lý Đồ họa và Ứng dụng
nh 14: Kết quả thc hién crf learn (Trang 41)
Hình  15:  Kết  quả  thwe  hién crf test - Luận văn lập trình song song trên nền Đơn vị xử lý Đồ họa và Ứng dụng
nh 15: Kết quả thwe hién crf test (Trang 44)
Hình  16:  So  sánh  thời  gian  thực  hiên  tính  toán  trên  GPU-CPU  Trong  đó: - Luận văn lập trình song song trên nền Đơn vị xử lý Đồ họa và Ứng dụng
nh 16: So sánh thời gian thực hiên tính toán trên GPU-CPU Trong đó: (Trang 50)
Hình  17:  Biểu  đồ  thời  gian  thực  hiên  tính  toán  trên  GPU-CPU - Luận văn lập trình song song trên nền Đơn vị xử lý Đồ họa và Ứng dụng
nh 17: Biểu đồ thời gian thực hiên tính toán trên GPU-CPU (Trang 51)
Hình  18:  Biểu  đồ  hình  cột  so  sảnh  thời  gian  thực  hiên  tính  toán  trên  GPU-CPU - Luận văn lập trình song song trên nền Đơn vị xử lý Đồ họa và Ứng dụng
nh 18: Biểu đồ hình cột so sảnh thời gian thực hiên tính toán trên GPU-CPU (Trang 51)
Hình  20:  So  sánh  thời  gian  thực  hiện  phần  training - Luận văn lập trình song song trên nền Đơn vị xử lý Đồ họa và Ứng dụng
nh 20: So sánh thời gian thực hiện phần training (Trang 53)

TỪ KHÓA LIÊN QUAN

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

w