1. Trang chủ
  2. » Công Nghệ Thông Tin

CUDA-NhapMon.pdf

16 989 35
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 đề Hướng dẫn cỏch thiết lập dự án cuda
Tác giả Ngo Quoc Vinh
Trường học Kyoto University
Chuyên ngành Computer Science
Thể loại Hướng dẫn
Năm xuất bản 2008
Thành phố Kyoto
Định dạng
Số trang 16
Dung lượng 880,81 KB

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

Nội dung

Cuda

Trang 1

Hướng Dẫn Cách Thiết Lập Dự Án CUDA

Ngo Quoc Vinh Kyoto – Japan 2008

1 Cấu hình phần cứng và phần mềm cần thiết

ðịnh nghĩa:

CUDA nghĩa là Compute Unified Device Architecture là 1 kiến trúc phần mềm và phần cứng cho mục ñích phát triển tính toán trên GPU Trong hệ thống ña nhiệm việc sử dụng GPU trong việc tính toán (Lập trình CUDA) và ñồ họa có thể xảy ra ñồng thời

Phần mềm cần thiết:

Cuda SDK version2.0 có thể dùng cho windows XP 32-bit hoặc 64-bit

Trong windows bạn cần sử dụng chương trình Microsoft Visual C++ 2005 ñể viết 1 dự

án CUDA

Phần cứng cần thiết:

ðể viết 1 chương trình CUDA, ngoài các phần mểm hổ trợ ta cần có phần cứng ñể chương trình hoạt ñộng (không phải chế ñộ mô phỏng)

Các thiết bị phần cứng ñược NVIDIA hỗ trợ trong lập trình cuda, có thể tham khảo tai site: http://www.nvidia.com/object/cuda_learn_products.html (trong trường hợp trên chì sừ dụng 1 graphics card nếu ñược bạn có thể sử dụng nhiều hơn 1 graphics card)

Tham khảo:

Tại site này có thể tham khảo các tài liệu lien quan ñến cuda sử dụng tiếng anh http://forums.nvidia.com/index.php?showtopic=36286

Tại site này có thể tham khảo các tài liệu lien quan ñến cuda sử dụng tiếng nhật http://www.nvidia.co.jp/object/cuda_home_jp.html

Trang 2

2 Cách cài ñặt CUDA driver, CUDA tool kit và cuda SDK

ðể 1 chương trình cuda hoạt ñộng ñược trong môi trường windows xp Bạn cần phải có các thư viện hỗ trợ Các thư viện này ñược chứa trong bộ SDK do NVIDIA cung cấp

Cách download CUDA driver

Driver ñược download từ http://www.nvidia.com/object/cuda_get.html#windows tương ứng với số serial của card Nếu ñùng tiếng nhật bạn có thể download tại site:

http://www.nvidia.co.jp/object/cuda_get_jp.html#windows

Trong site này bạn chọn vào mục “NVIDIA driver for Microsoft Windows XP with CUDA support (174.55) nếu bạn dùng OS là Windows 32-bit thi chon vào x86 trong muc

“Architecture” ñể download (Figure 1)

Figure 1

1 Tiếp theo 1 site “NVIDIA Driver Download” sẽ xuất hiện và bạn click vào text “click here” ñể download.Figure 2

Figure 2

Hộp thoại “File Download” xuất hiện và bạn click “Save” Figure 3

Save

Figure 3

Trang 3

2 hộp thoại “ Save As” hiễn thị ra ñể hỏi bạn nơi muốn save file driver, lúc này bạn chọn ñường dẫn nơi muốn save file và click “Save” (Figure 4) Chờ 1 thời gian ñể chương trình tự dộng download file ñược hoàn tất

Figure 4

Cách cài ñặt CUDA driver

Sau khi download xong, bạn double click vào file *.exe ñã download ( ví dụ trong trường hợp này là file “169.21_forceware_winxp_32bit_english_whql” dung cho

“ Geforce8800GT”, Operation System “Window XP”, language “English(US)”)

Tiếp theo bạn chọn “I accept the terms in the license agreement” rồi click “Next” Chương trình sẽ nơi mà bạn muốn cài chương trình Theo tôi bạn nên ñể mặc ñịnh” c:\NVIDIA\Win2k\169.21\English” (Figure 5)

Figure 5

Click “Next” ñề chương trình load các file cần cài ñặt,

Click “Next” ñể chương trình cài ñặt tự ñông (Figure 6)

Figure 6

Chờ trong giây lát, sau khi chương trình cài ñặt xong bạn click “Finish” ñê khởi ñộng máy lại

Trang 4

Download file SDK và Toolkit

Sau khi ñã cài dat driver cho card ban cần phải cài bộ công cụ hỗ trợ lập trình cho

CUDA

Bạn cần download 2 file “NVIDIA_CUDA_Toolkit_1.0.exe” và

“NVIDIA_CUDA_SKD_1.0.exe” tại site

http://www.nvidia.com/object/cuda_get.html#windows tùy thuộc vào OS của máy bạn

là 32 hay 64-bit (nếu 32-bit bạn chọn Architecture là “x86” và nếu là 64-bit bạn chon

“x86-64”) (hinh 4.1).Cách download 2 file này hoàn toàn giống nhau

Sau khi click vào kiểu Architecture, một site mới sẽ xuất hiện tiếp theo bạn click vào

“click here” ñể download file ðể thực h iện download file bạn thực hiện các bước 1,2,3 của mục 4.1.1

Cài ñặt CUDA Toolkit

NVIDIA_CUDA_Toolkit_1.0.exe file này chứa công cụ các thư viện hỗ trợ trong lập trình cuda và các tài liệu hướng dẫn lập trình

Cách install file Toolkit

Sau khi download file “NVIDIA_CUDA_Toolkit_1.0.exe” (hoặc mới hơn) bạn double click vào file này ñể cài ñặt vào hệ thống sau khi double click vào file này thì chương trình cài ñặt tự ñộng “Install Shied Wizard” sẽ ñược kích hoạt

Click button “Next” ñể cài ñặt chương trình Tiếp theo bạn chọn “I accept the terms of license Agrement” và click “Next” (hình 4.10), lúc này chương trinh sẽ hỏi nơi bạn muốn cài ñặt (theo tôi bạn nên ñể chế ñộ default C:\CUDA)

Figure 7

Click “Next” ñể tiếp tục qua bước tiếp theo Bạn click “Install” ñể cài ñặt phần mềm sau khi qua các bước mà chương trình “Install Shied Wizard” ñẵ hướng dẫn chờ 1 vài phút sau khi chương trình cài ñặt xong bạn click “Finish” ñể kết thúc việc cài ñặt

Cài ñặt SDK

NVIDIA_CUDA_SKD_1.0.exe ñây là bộ SDK của NVIDIA Trong file này sau khi cài ñặt

sẽ chứa các dự án mẫu các dự án này rất quan trọng trong việc tự nghiên cứu của ban

1 Sau khi download file “NVIDIA_CUDA_SDK_1.0.exe” (hoặ mới hơn) bạn double click vào file này ñể cài ñặt vào hệ thống sau khi double click vào file này thì chương trình cài ñặt tự ñộng “Install Shied Wizard” sẽ ñược kích hoạt

Trang 5

2 Click button “Next” ñể cài ñặt chương trình Tiếp theo bạn chọn “I accept the terms of license Agrement” và click “Next”.bước này ñược thực hiện tương tự bước 2 của cách install file Toolkit

3 Chương trinh sẽ hỏi một số thông tin của bạn Bạn cần phải ñiền tên vào

textbox “Name” ñiền tên công ty hoặc tổ chức vào Textbox “Organization”, và ñiền ñịa chỉ Email của bạn vào “Email(Optional)”.(Figure 8)

Name Organization

Email

Next

Figure 8

4 Click “Next” ñể tiếp tục chương trình sẽ yêu cầu bạn chỉ rõ nơi bạn muốn cài ñặt (theo tôi bạn nên ñể chế ñộ default C:\Program Files\NVIDIA

Corporation\NVIDIA CUDA SDK) rồi click “Next” ñể tiếp tục qua bước tiếp theo

5 Click “Install” ñể cài ñặt phần mềm sau khi qua các bước mà chương trình

“Install Shied Wizard” ñẵ hướng dẫn chờ 1 vài phút sau khi chương trình cài ñặt xong bạn click “Finish” ñể kết thúc việc cài ñặt

Hầu hết các chương trình cuda mẫu ñược NVIDIA cung cấp chạy trên nền Visual C++

Vì thế bạn cần phải có phần mềm Microsoft Visual C++, có thể dùng bảng Microsoft Visual Studio C++ Express,ñược cung cấp miễn phí

Sau khi ñã hoàn tất việc cài ñặt, bạn có thể mở dự án mẫu “deviceQuery” của NVIDIA cung cấp trong C:\Program Files\NVIDIA Corporation\NVIDIA CUDA

SDK\bin\win32\Release và chạy thử, nếu thành công chương trình sẽ hiển thị cấu hình card GPU của bạn và hiển thị thong báo TEST

3 Cách cài ñặt chương trình Visual profiler

Visual profiler ñược cung cấp bởi NVIDIA dùng ñể phân tích và ñánh giá 1 chương trình cuda

Download visual profiler từ site: http://www.nvidia.com/object/cuda_get.html#windows Trong site này bạn sẽ tìm thấy dòng text “Cuda Visual Profiler” trong bảng “Cuda for Windows”(hình 4.9)

Việc download chương trình này tương tự như bước 7,8,9 của mục 4.1.1

Sau ñó bạn extract file “CudaVisualProfiler_0.2_beta_windows.zip”

Sau khi extract sẽ xuất hiện folder “CudaVisualProfiler” trong ñó chứa 2 folders “bin” và

“Projects”

Folder “project” sẽ chứa thộng tin của 1 dự án cuda sau khi ñược phân tích

Trang 6

Folder “bin” chứa các file *.dll và 1 file “cudaprof.exe” ñây là file chương trình Cuda Visual Profiler

Chạy chương trình Cuda Visual Profiler bằng cách double click vào file “cudaprof.exe” (Figure 9)

Figure 9

Chương trình này sẽ hoạt ñộng mà không cần phải cài ñặt

4 Tạo highlighting cho syntax của 1 file cuda (*.cu)

1 file nguồn cuda ñược mở rộng bằng “*.cu” nếu bạn dùng Microsoft Visual C++ ñể mở file này thì nó sẽ hiển thị dạng file text (sẽ không trực quan bởi vì các biến, tu khóa ñều

là màu ñen.) ñể tăng khả năng trực quan cho chương rình dễ quan sát NVIDIA cung cấp 1 file nhúng vào Microsoft Visual C++ ñể file “*.cu” hiển thị trực quan dưới Microsoft Visual C++ như 1 file “*.cpp”

1 Bạn vào ñường dẫn “C:\Program Files\NVIDIA CUDA

SDK\doc\syntax_highlighting\visual_studio_8” và copy file

“usertype.dat” vào “C:\Program Files\Microsoft Visual Studio 8\Common7\IDE”

2 Tiếp theo bạn vào menu “tool ->options…” trong hộp thoại “Options” bạn vào “Text Editor->File Extension” (hình 4.15)

Phía bên phải hộp thoại trong “Extension:” text bạn gõ vào “cu” (tên mở rộng của

chương trình cuda)

3 Tiếp theo trong listbox “Editor:” bạn chọn Microsoft Visual C++ (môi trường hoạt ñộng của cuda file)

Sau ñó bạn click button “Apply” and then click “OK”.khởi ñộng lại Microsoft Visual studio ñể hoàn tất (Figure 10)

Trang 7

(2) (3)

Figure 10

Bây giờ bạn ñã hoàn tất việc làm highlighting 1 file *.cu, làm chương trình sang sủa dễ

ñọc hơn

5 Cách thiết lập 1 dự án CUDA trên Microsoft Visual C++ 2005

Những phần trước ñã giới thiệu các cài ñặt lien quan ñến 1 dự án CUDA.trong mục 4.4 giới thiệu cách hoạt ñộng 1 chương trình mẫu ñược NVIDIA SDK cung cấp kèm theo Tuy nhiên bạn có thể chạy bất cứ chương trình mẫu nào của NVIDIA SDK cung cấp

Trong phần này sẽ chỉ ra phương pháp tạo tự mình tạo ra 1 dự án CUDA

ðề ñơn giản ta sẽ tạo 1 dự án console

 Mở Microsoft Visual C++, vào menu “File->New->Project…” hộp thoại “New Project” hiển thị bạn vào “Visual C++->Win32” sau ñó chọn “Win32 Console Application” Bạn có thể ñặt tên cho dự án là “CudaStep1” và solution “CudaProgram” Sau ñó bạn click “OK->Next->Finish” Cho ñến thời ñiểm này bạn ñã có 1 dự án console nhưng chưa phải là dự án cuda (Figure 11)

Figure 11

 Vào của sổ “Solution Explorer click phải vào “Header Files->Add->New Item…” hộp thoại “Add new Item- CudaStep1” hiển thị Tiếp theo bạn vào ” Visual

C++->Code” chọn “Header File(.h)” và ñặt tên “CudaHeader.h” rồi click Add (Figure 12) File này sẽ chứa thông tin vế cấu hình của chương trình cuda và prototype của các hàm kernel mà bạn sẽ viết

Trang 8

Figure 12

 Tiếp theo cần tạo 1 file chứa mã nguồn cho 1 chương trình cuda, file này sẽ ñược

mở rộng bằng “.cu” tương tự như bước 2 bạn

vào của sổ “Solution Explorer click phải vào “Header Files->Add->New Item…” hộp

thoại “Add new Item- CudaStep1” hiển thị Tiếp theo bạn vào ” Visual C++->Utility”

chọn “Text File (.txt)” và ñặt tên là “CudaFunction.cu” rồi click Add Cho ñến lúc này bạn ñã tạo ra 1 dự án cuda, nhưng chương trình vẩn chưa hoạt

ñộng ñược vì bạn chưa viết code cho chương trình ðể mô tả hoạt ñông chương

trình ta cần 1 chươn trình nhỏ xử lý 1 matrix gồm 32 phần tử hàm cuda sẽ có

nhiệm vụ tăng giá trị 1 phần tử lên 1 ñơn vị

 Mở file “CudaStep1.cpp” và khởi tạo 1 matrix dùng làm dữ liệu mẫu ñể tính toán

Có thể copy ñoạn chương trình sau:

// cudastep1.cpp : Defines the entry point for the console application

#include "stdafx.h"

#include <stdio.h>

#include "CudaHeader.h"

#include <iostream>

using std::cout;

using std::cin;

//prototype display function de hien thi len man hinh

void display(float *matrix, int col, int row);

//ham chính

int _tmain(int argc, _TCHAR* argv[])

{

//khởi tạo mảng và gán giá trị ban ñầu float matrix[32];

for (int I = 0; I < 32; i++) {

matrix[i] = 9;

} //hiển thị matran chưa xử lý

Trang 9

cout<<"before call cuda function \n";

display(matrix, 8, 4);

//gọi hàm tính toán của chương trình cuda CudaProcessing(matrix);

//hiển thị matran sau khi tính toán cout<<"after call cuda function \n";

display(matrix, 8, 4);

//dừng màn hình ñể xem xét dữ liệu int wait;

cin>>wait;

return 0;

}

//************************************************************************************// //display a matrix

void display(float *matrix, int col, int row)

{

printf("\n");

for(int I = 0; I < row; i++) {

printf("\nRow %2d:\n", i);

for(int j = 0; j < col; j++) {

printf(" ");

printf("%.1f", matrix[I * col + j]);

} }

printf("\n\n");

}

 Mở file “CudaHeader.h” và type ñoạn code sau vào file “CudaHeader.h”

1 Block sẽ chứa 16 threads

vậy ta cần 2 block ñể có 32 threads*/

#define XTHREADS 16

#define YTHREADS 1

#define ZTHREADS 1

#define XBLOCKS 2

#define YBLOCKS 1

#define MATRIXSIZE 32

//prototype CudaProcessing kernel function

extern "C" {void CudaProcessing( float *hostData);};

Trang 10

 Mở file “CudaFunction.cu” ñể viết hàm tính toán Trong file này ta sẽ viết 2 hàm, hàm “CudaProcessing” dùng trong việc truyền dữ liệu giữa Host, Device và gọi hàm kernel ñể tính toán Hàm còn lại là “CudaProcessingKernel” dùng ñể tính toán

#include "CudaHeader.h"

#include <cuda.h>

#include <cuda_runtime.h>

#include <cuda_runtime_api.h>

#include <cutil.h>

extern "C"

//prorotype hàm kernel

global void CudaProcessingKernel(float *data);

/*hàm này dùng ñể chuyển data từ Host qua Device, gọi hàm kernel sau ñó truyền dữ liệu

ñã tính toán về lại cho Host*/

void CudaProcessing( float *hostData)

{

// chuẩn bị bộ nhớ trên Driver ñể chứa data nhận từ Host

float *deviceData;

int size = sizeof(float)*MATRIXSIZE;

cudaMalloc((void**)&deviceData, size);

//copy data từ bộ nhớ Host vào bộ nhớ Device ñể tính toán

cudaMemcpy(deviceData, hostData, size, cudaMemcpyHostToDevice);

//khai báo số thread trên 1 block cần ñể xử lý

dim3 dimBlock(XTHREADS, YTHREADS);

//khai báo số block trên 1 grid cần ñể xử lý

dim3 dimGrid(XBLOCKS, YBLOCKS);

//gọi chương trình tính toán kernel

CudaProcessingKernel<<<dimGrid, dimBlock>>>(deviceData);

//sau khi tính toán xong dữ liệu ñược trả về lại cho bộ nhớ Host

cudaMemcpy(hostData, deviceData, size, cudaMemcpyDeviceToHost);

//xóa bộ nhớ tạm thời trên Device

cudaFree(deviceData);

}

Trang 11

global void CudaProcessingKernel(float *data) //kernel function

{

//số thứ tự block trên 1 grid int bx = blockIdx.x;

//số thứ tự thread trên 1 block int tx = threadIdx.x;

//số thứ tự thread trên 1 grid int tid = bx * XTHREADS + tx;

//tính toán data data[tid] = data[tid]+1;

//ñồng bộ các thread syncthreads();

}

 Biên dịch chương trình: bạn có thể biên dịch chương trình này với Win32 hoặc Win64, release, debug, emurelease, hoặc emudebug Tùy thuộc vào cấu hình máy của bạn và chế bạn muốn build Tuy nhiên chương trình sẽ báo lỗi vì không compiler dược file “CudaFunction.cu”

Bạn cần download builrule từ site

http://forums.nvidia.com/index.php?showtopic=30273 file “cuda_build_rule.zip” việc download file này tương tự như bước 8,9 của mục 4.1.1.Vào “Solution

Explorer” click phải lên dự án “CudaStep1” chọn “Custom Build Rules…” hộp thoại “Visual C++ Build Rule Files” hiển thị click vào “Find Existing…” bạn chọn file “cuda” (file cuda build rules sau khi ñã extract file “cuda_build_rule.zip”) và click Open (Figure 13)

Figure 13

Trở lại hộp thoại “Visual C++ Build Rule Files” bạn check vào “CUDA” ñể báo cho compiler biết sẽ dùng build rule này ñể biên dịch file cuda (*.cu)

 Do trong chương trình cần kết nối các thư viện nên bạn vào Vào “Solution

Explorer” click phải lên dự án “CudaStep1” chọn “Properties” hộp thoại

“CudaStep1 property pages” xuất hiện vào “Configuration

Properties->C/C++->General” trên cửa sổ phía phải bạn vào “Additional Include Directories” và nhập ñường dẫn “$(CUDA_INC_PATH);./; / /common/inc;"C:/Program Files/NVIDIA

Ngày đăng: 17/12/2012, 17:31

Xem thêm

HÌNH ẢNH LIÊN QUAN

Editor-&gt;File ExtensionỢ (hình 4.15). - CUDA-NhapMon.pdf
ditor &gt;File ExtensionỢ (hình 4.15) (Trang 6)
Sau khi tắnh toán xong thì hàm main() sẽ cho hiển thị kết quả lên màn hình. Trong file ỘCudaFunction.cuỢ sẽ tồn tại 2 hàm - CUDA-NhapMon.pdf
au khi tắnh toán xong thì hàm main() sẽ cho hiển thị kết quả lên màn hình. Trong file ỘCudaFunction.cuỢ sẽ tồn tại 2 hàm (Trang 12)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w