1. Trang chủ
  2. » Giáo Dục - Đào Tạo

(LUẬN văn THẠC sĩ) nghiên cứu công nghệ xử lý GPU và ứng dụng

98 5 0

Đ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

i ĐẠI HỌC THÁI NGUYÊN ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG ĐINH TIẾN NGỌC NGHIÊN CỨU CÔNG NGHỆ XỬ LÝ GPU VÀ ỨNG DỤNG THÁI NGUYÊN 2017 download by : skknchat@gmail.com ii LỜI CAM ĐOAN Tôi xin cam đoan : Những nghiên cứu luận văn tơi hồn tồn trung thực khơng vi phạm quyền sở hữu trí tuệ Nếu sai tơi xin chịu hồn tồn trách nhiệm TÁC GIẢ LUẬN VĂN Đinh Tiến Ngọc download by : skknchat@gmail.com iii LỜI CẢM ƠN Lời xin chân thành cảm ơn đếnTS Lê Quang Minh người thầy tận tình giúp đỡ, hướng dẫn tơi hồn thành luận văn Tôi xin chân thành cảm ơn thầy, cô giảng viên cao học người giúp đỡ nâng cao kiến thức giúp tơi có kiến thức bổ trợ giúp hồn thiện cho luận văn Tơi xin chân thành cảm ơn người thân, bạn bè giúp đỡ động viên suốt thời gian học tập thời gian thực đề tài Xin chân thành cảm ơn! Thái Nguyên, ngày tháng năm 2017 TÁC GIẢ LUẬN VĂN Đinh Tiến Ngọc download by : skknchat@gmail.com iv DANH MỤC THUẬT NGỮ TiếngAnh TiếngViệt GPU Bộ xử lý đồ họa gpgpu Tính tốn thông dụng GPU API Application Program Interface : Định nghĩa giao diện chuẩn để triệu gọi tập chức coproccessor đồng xử lý kernel hạt nhân texture Kết cấu: cấu trúc đối tượng, xem mơ hình thu nhỏ đối tượng texturefetches Hàm đọc kết cấu texturereference Tham chiếu kết cấu warp Mỗi khối tách thành nhóm SIMD luồng SIMD Single Instruction Multiple Data: đơn lệnh đa liệu stream Dòng streamingprocessor Bộ xử lý dòng MIMD Multiple Instruction Multiple Data: đa lệnh đa liệu primarysurface Bề mặt proccessor Bộ xử lý Rasterization Sự quét mành hình download by : skknchat@gmail.com v MỤC LỤC LỜI CAM ĐOAN i LỜI CẢM ƠN iii DANH MỤC THUẬT NGỮ iv MỤC LỤC v DANH MỤC HÌNHVẼ vii LỜI MỞ ĐẦU viii CHƯƠNG I : KHÁI QUÁT VỀ BỘ XỬ LÝ ĐỒ HỌA GPU VÀ XỬ LÝ SONG SONG 1.1 Khái quát xử lý song song 1.1.1 Khái quát xử lý song song 1.1.2 Khái quát Hệ thống máy tính song song 1.1.3 Khái quát lập trình song song 1.1.4 Các nguyên tắc thiết kế giải thuật xử lý song song 1.2 Khái quát công nghệ GPU ứng dụng 10 1.2.1 Tổng quan GPU 11 1.2.2 Nguồn gốc trình phát triển GPU 11 1.2.3 Cấu trúc xử lý đồ họa GPU 15 1.2.4 Lập trình GPU 19 1.2.5 Các hỗ trợ phần mềm cho xử lý tính toán GPU 22 1.2.6 Các kỹ thuật tính tốn GPU 26 1.2.7.Các giải thuật ứng dụng GPU 29 CHƯƠNG II: XỬ LÝ SONG SONG TRÊN THIẾT BỊ ĐỒ HỌA GPU VỚI CUDA 31 2.1 Khái quát CUDA 31 2.2.Cơ chế lập trình cách thức hoạt động CUDA 33 2.2.1.Cơ chế lập trình 33 2.2.2.Cách thức hoạt động CUDA 33 2.3 Tổng quan lập trình với CUDA 38 2.3.1 Là ngơn ngữ lập trình mở rộng ngơn ngữ lập trình C 38 download by : skknchat@gmail.com vi 2.3.2 Các phần mở rộng CUDA 38 2.3.3.Biến Built-in CUDA 41 2.3.4 Biên dịch CUDA thông qua NVCC 42 2.3.5.Một số trường hợp cụ thể tính toán song song CUDA 42 2.4 Các ứng dụng CUDA lĩnh vực 45 2.4.1 Ứng dụng CUDA game 45 2.4.2 Ứng dụng CUDA với video số 45 CHƯƠNG III: SỬ DỤNG GPU ĐỂ LÀM TĂNG TỐC ĐỘ TÍNH TỐN CHO BÀI TỐN MÃ HĨA AES 48 3.1 Giới thiệu AES 48 3.2 Thuật tốn mã hóa 48 3.2.1 Công đoạn mã hóa 50 3.2.2 Công đoạn giải mã 54 3.3 Chương trình thuật tốn song song mã hóa AES sử dụng GPU 62 3.3.1 Giao diện chương trình demo 92 3.3.2 Kết chương trình đánh giá hiệu suất tính tốn 93 KẾT LUẬN 88 TÀI LIỆU THAM KHẢO 89 download by : skknchat@gmail.com vii DANH MỤC HÌNHVẼ Hình : Kiến trúc Von Neumann Hình : Máy tính song song có nhớ chia sẻ Hình : Máy tính song song có nhớ phân tán Hình : Kiến trúc máy SISD Hình : Kiến trúc máy SIMD Hình : Kiến trúc máy MISD Hình : Kiến trúc máy MIMD Hình : Mơ hình lập trình truyền thơng hai tác vụ hai máy tính Hình : Mơ hình lập trình song song liệu Hình10: Kiến trúc GPU NVIDIA AMD 19 Hình 11: Kiến trúc phần mềm CUDA 31 Hình 12: Thao tác cấp phát thu hồi nhớ 32 Hình 13: Vùng nhớ dùng chung mang liệu gần ALU 33 Hình 14: Sơ đồ hoạt động truyền liệu Host Device 34 Hình 15: Khối luồng 36 Hình 16: Mơ hình nhớ GPU 37 Hình 17: Chiều lưới khối với số khối luồng 42 Hình 18: Phương pháp đánh số luồng 45 Hình 19 : Mã hóa giải mã 49 Hình 20: Biến đổi SubBytes() mảng trạng thái 51 Hình 21: Mơ tả Hàm ShiftRows() 51 Hình 22: Mơ tả hàm MixColumns() 52 Hình 23: Mô tả hàm AddRoundKey() 53 Hình 24: Mơ tả hàm InvShiftRow() 55 download by : skknchat@gmail.com viii LỜI MỞ ĐẦU Với phát triển vũ bão công nghệ, ngày công nghệ thông tin trở thành phần khơng thể thiếu sống Khơng cịn cơng cụ hữu hiệu ngành khoa học, công nghệ cao,… đặc biệt ngành có nhu cầu tính tốn lớn Tuy nhiên với nhu cầu tính tốn ngày cành tăng cao đó, ngành công nghệ thông tin lại vấp phải vấn đề tối quan trọng lực xử lý CPU có hạn Các nhà phát triển phần cứng thực gia tăng mức độ xử lý cho CPU cách gia tăng xung cho CPU Tuy nhiên việc chạm ngưỡng gặp phải vấn đề tản nhiệt cho CPU nhiệt độ CPU cao Một hướng nhà nghiên cứu đưa phát triển xử lý đa nhân với chế xử lý song song Một bước phát triển hướng xử lý đồ họa – GPU (Graphics Processing Unit - xử lý đồ họa) Khi đời, GPU sử dụng với mục đích cơng việc phù hợp với khả tăng tốc độ xử lý đồ họa, ngành trò chơi chủ yếu Nhưng với phát triển dần trò chơi phần mềm đồ họa, khiến GPU phát triển thêm đến hệ GPUNV30 NVIDIA đời người ta bắt đầu phát triển công việc khác cho GPU hỗ trợ tính tốn dấu chấm động đơn, hỗ trợ tính tốn lên ngàn lệnh Và đặc biệt với tiềm nghĩ tới việc sử dụng GPU đồ họa Cùng với ý tưởng liên tưởng đến việc áp dụng việc xử lý song song GPU thơng qua ngơn ngữ lập trình CUDA Xuất phát từ ý tưởng chọn đề tài: NGHIÊN CỨU CÔNG NGHỆ XỬ LÝ GPU VÀ ỨNG DỤNG Luận văn gồm chương chính: Chương 1: Khái quát xử lý đồ họa GPU xử lý song song, Chương giới thiệu tổng quan xử lý song song xử lý đồ họa GPU Chương 2: Xử lý song song thiết bị đồ họa GPU với CUDA Chương nghiên cứu ngôn ngữ lập trình CUDA cách xử lý song song CUDA GPU Chương 3: Sử dụng GPU để làm tăng tốc độ tính tốn cho tốn mã hóa download by : skknchat@gmail.com ix AES Chương tiến hành cài đặt thử chương trình song song, xử lý song song mã hóa AES GPU ngơn ngữ CUDA đưa kết kết luận hiệu suất GPU download by : skknchat@gmail.com CHƯƠNG I : KHÁI QUÁT VỀ BỘ XỬ LÝ ĐỒ HỌA GPU VÀ XỬ LÝ SONG SONG 1.1 Khái quát xử lý song song 1.1.1 Khái quát xử lý song song Nguồn gốc đời xử lý songsong Một tảng máy tính thiết kế máy tính John Von Neumann Đó thiết kế mà lệnh thực xử lý Hình1: Kiến trúc Von Neumann Khi cần tính tốn với lượng câu lệnh phép tính lớn thiết kế trở nên lỗi thời Người ta đưa phương pháp nhằm giải vấn đề Trong có việc tăng số lượng nhân xử lý kết nối nhiều máy tính thông qua mạng để tăng tốc độ xử lý Khi tăng tốc xử lý phép tính máy tính song song, việc sử dụng thuật toán khơng cịn thích hợp khơng tận dụng hết khả tiềm tàng máy tính song song Dẫn đến việc đời giải thuật song song Lý phải xử lý song song Như nói máy tính song song với xử lý nhiều nhân thay dần máy tính đơn nhân, xử lý Và với thuật toán, câu lệnh, phép xử lý khơng cịn phù hợp với máy tính song song Do xử lý song song đời thay cho xử lý nhằm đem lại hiệu tính tốn cao Bằng chứng thấy thực tế với nhiều toán xử lý với lượng liệu lớn download by : skknchat@gmail.com 75 for (i = 0; i < KEYWORDS; ++i) { roundKey[(i * 4) + 0] = key[(i * 4) + 0]; roundKey[(i * 4) + 1] = key[(i * 4) + 1]; roundKey[(i * 4) + 2] = key[(i * 4) + 2]; roundKey[(i * 4) + 3] = key[(i * 4) + 3]; } // All other round keys are found from the previous round keys for (; (i < (LANESIZE * (ROUNDS + 1))); ++i) { for (j = 0; j < 4; ++j) { tempa[j] = roundKey[(i - 1) * + j]; } if (i % KEYWORDS == 0) { // This function rotates the bytes in a word to the left once // [a0,a1,a2,a3] becomes [a1,a2,a3,a0] // Function RotWord() { k = tempa[0]; tempa[0] = tempa[1]; tempa[1] = tempa[2]; tempa[2] = tempa[3]; tempa[3] = k; } // SubWord() is a function that takes a four-byte input word and // applies the S-box to each of the four bytes to produce an output word // Function Subword() { tempa[0] = getSBoxValue(tempa[0]); download by : skknchat@gmail.com 76 tempa[1] = getSBoxValue(tempa[1]); tempa[2] = getSBoxValue(tempa[2]); tempa[3] = getSBoxValue(tempa[3]); } tempa[0] = tempa[0] ^ Rcon[i / KEYWORDS]; } else if (KEYWORDS > && i % KEYWORDS == 4) { // Function Subword() { tempa[0] = getSBoxValue(tempa[0]); tempa[1] = getSBoxValue(tempa[1]); tempa[2] = getSBoxValue(tempa[2]); tempa[3] = getSBoxValue(tempa[3]); } } roundKey[i * + 0] = roundKey[(i - KEYWORDS) * + 0] ^ tempa[0]; roundKey[i * + 1] = roundKey[(i - KEYWORDS) * + 1] ^ tempa[1]; roundKey[i * + 2] = roundKey[(i - KEYWORDS) * + 2] ^ tempa[2]; roundKey[i * + 3] = roundKey[(i - KEYWORDS) * + 3] ^ tempa[3]; } } // XOR the round key on state static void AddRoundKey(uint8_t round) { uint8_t i, j; for (i = 0; i 7) & 1) * 0x1b)); } // MixColumns function mixes the columns of the state matrix static void MixColumns(void) { uint8_t i; uint8_t Tmp, Tm, t; for (i = 0; i < 4; ++i) { t = (*state)[i][0]; Tmp = (*state)[i][0] ^ (*state)[i][1] ^ (*state)[i][2] ^ (*state)[i][3]; Tm = (*state)[i][0] ^ (*state)[i][1]; Tm = xtime(Tm); Tm ^ Tmp; (*state)[i][0] ^= Tm = (*state)[i][1] ^ (*state)[i][2]; Tm = xtime(Tm); Tm ^ Tmp; (*state)[i][1] ^= Tm = (*state)[i][2] ^ (*state)[i][3]; Tm = xtime(Tm); Tm ^ Tmp; (*state)[i][2] ^= Tm = (*state)[i][3] ^ t; Tm = xtime(Tm); (*state)[i][3] ^= Tm ^ Tmp; } } static uint8_t Multiply(uint8_t x, uint8_t y) { return (((y & 1) * x) ^ ((y >> & 1) * xtime(x)) ^ download by : skknchat@gmail.com 79 ((y >> & 1) * xtime(xtime(x))) ^ ((y >> & 1) * xtime(xtime(xtime(x)))) ^ ((y >> & 1) * xtime(xtime(xtime(xtime(x)))))); } // Cipher is the main function that encrypts the PlainText static void Cipher(void) { uint8_t round = 0; // Add the First round key to the state before starting the rounds AddRoundKey(0); //print_state(); // There will be ROUNDS rounds // The first ROUNDS-1 rounds are identical // These ROUNDS-1 rounds are executed in the loop below for (round = 1; round < ROUNDS; ++round) { SubBytes(); ShiftRows(); MixColumns(); AddRoundKey(round); } // The last round is given below // The MixColumns function is not here in the last round SubBytes(); ShiftRows(); AddRoundKey(ROUNDS); } static void BlockCopy(uint8_t* output, uint8_t* input) { uint8_t i; download by : skknchat@gmail.com 80 for (i = 0; i 4) { printf("Usage: aes_serial.exe [ silent]\n", argv[0]); return 1; } if (argc == 4) if (!strcmp(argv[3], " silent")) silent = 1; double cpu_time_used; cpu_time_used = encrypt_file(argv[1], argv[2]); printf("Execution time: %6.9f seconds\n", cpu_time_used); return 0; } (uint8_t)0x09, (uint8_t)0xcf, (uint8_t)0x4f, (uint8_t)0x3c }; download by : skknchat@gmail.com 82 double encrypt_file(char* infile, char* outfile) { FILE *fp_in; FILE *fp_out; fp_in = fopen(infile, "rb"); if (fp_in == NULL && !silent) { fprintf(stderr, "Can't open input file %s!\n", infile); exit(1); } fp_out = fopen(outfile, "wb+"); if (fp_out == NULL && !silent) { fprintf(stderr, "Can't open output file %s!\n", outfile); exit(1); } KeyExpansion(roundKey, key); #if defined(DEBUG) && DEBUG printf("Round Keys:\n"); uint8_t i; for (i = 0; i < ROUNDS + 1; i++) { phex(roundKey + (i * ROUNDS)); } #endif // determine size of file, read file into plaintext and determine number of plaintext blocks fseek(fp_in, 0, SEEK_END); uintmax_t plaintext_size = ftell(fp_in); rewind(fp_in); uint8_t* plaintext = (uint8_t*)malloc(plaintext_size); uintmax_t bytes_read = fread(plaintext, sizeof(uint8_t), plaintext_size, fp_in); assert(bytes_read == plaintext_size); uintmax_t plaintext_blocks = (bytes_read + BLOCKSIZE - 1) / BLOCKSIZE; uint8_t* ciphertext = (uint8_t*)malloc(plaintext_blocks*BLOCKSIZE); download by : skknchat@gmail.com 83 if (!silent) { printf("File size: %llu bytes\n", plaintext_size); printf("Number of plaintext plaintext_blocks, BLOCKSIZE); blocks: %llu (blocksize: %d bytes)\n", } #if defined(DEBUG) && DEBUG printf("Plaintext:\n"); for (i = 0; i < plaintext_blocks; i++) { phex(plaintext + (i * BLOCKSIZE)); } #endif // measure time double cpu_time_used; LARGE_INTEGER frequency; LARGE_INTEGER start, end; QueryPerformanceFrequency(&frequency); // start timer QueryPerformanceCounter(&start); uintmax_t j; for (j = 0; j < plaintext_blocks; j++) { // encrypt plaintext block AES128_ECB_encrypt(plaintext + j*BLOCKSIZE, roundKey, ciphertext_block); // write ciphertext block to output file memcpy(ciphertext sizeof(uint8_t)*BLOCKSIZE); + j*BLOCKSIZE, } // stop timer QueryPerformanceCounter(&end); download by : skknchat@gmail.com ciphertext_block, 84 cpu_time_used = ((double)(end.QuadPart ((double)frequency.QuadPart); - start.QuadPart)) / // write ciphertext to output file fwrite(ciphertext, sizeof(uint8_t), BLOCKSIZE * plaintext_blocks, fp_out); #if defined(DEBUG) && DEBUG printf("Ciphertext:\n"); for (i = 0; i < plaintext_blocks; i++) { phex(ciphertext + (i * BLOCKSIZE)); } #endif fclose(fp_in); fclose(fp_out); if (!silent) printf("Encryption plaintext_blocks); of %llu plaintext blocks successful!\n", return cpu_time_used; } // Reads one block of plaintext of size BLOCKSIZE bytes from the file pointed to by the pointer fp // If the last block does not match BLOCKSIZE bytes, the block is padded with zero bytes static size_t read_plaintext_block(FILE *fp) { size_t current_blocksize = fread(plaintext_block, sizeof(uint8_t), BLOCKSIZE, fp); #if defined(DEBUG) && DEBUG if (feof(fp)) printf("End-of-File reached.\n"); if (ferror(fp)) printf("An error occurred while accessing the file.\n"); if (current_blocksize == 0) return 0; //printf("current_blocksize: %d\n", current_blocksize); download by : skknchat@gmail.com 85 #endif if (current_blocksize == 0) return 0; // pad last block with zeroes if it does not match BLOCKSIZE if (current_blocksize < BLOCKSIZE) { uint8_t i; for (i = 0; current_blocksize + i < BLOCKSIZE; ++i) { plaintext_block[current_blocksize + i] = '0'; } } return current_blocksize; } // prints string as hex static void phex(uint8_t* str) { unsigned char i; for(i = 0; i < 16; ++i) printf("%.2x", str[i]); printf("\n"); } download by : skknchat@gmail.com 86 3.3.1 Giao diện chương trình demo: Chạy CPU: Chạy GPU: download by : skknchat@gmail.com 87 3.3.2 Kết chương trình đánh giá hiệu suất tính tốn: Ta dễ thấy GPU có hiệu suất tính tốn cao hẳn so với CPU Kích cỡ file đầu vào Thời gian chạy CPU Thời gian chạy GPU 664911 bytes 0.941079536 seconds 0.265264969 seconds 1189270 bytes 1.064967493 seconds 0.188594010 seconds 4337261 bytes 2.624178762 seconds 0.317496639 seconds 8132164 bytes 5.940836913 seconds 0.444080242 seconds 25724901 bytes 14.598369270 seconds 0.981748010 seconds Hướng phát triển Với toán thử nghiệm luận văn cho thấy liệu đầu vào dung lượng lớn việc chạy GPU cho tốc độ tính tốn nhanh nhiều lần so với tiến hành CPU Ngày với phát triển ngành khoa học, dịch vụ internet thương mại nhu cầu tính tốn lớn Việc phát triển, cài đặt thuật toán nhiều GPU nhu cầu có thực cấp thiết Trong tương lai tác giả tiếp tục nghiên cứu phát triển cài đặt thuật tốn, phương pháp mã hóa khác tảng GPU download by : skknchat@gmail.com 88 KẾT LUẬN Luận văn nghiên cứu tổng quan xử lý song song Đồng thời luận văn nghiên cứu xử lý đồ họa GPU, cơng cụ lập trình GPU phổ biến CUDA Đó tiền đề để nghiên cứu cách xử lý song song xử lý đồ họa GPU cho hiệu Trong chương luận văn trình bày cách thuật tốn mã hóa tương đối thuật tốn mã hóa AES Với kiến thức nghiên cứu tổng hợp luận văn Tác giả đưa chương trình thực nghiệm song song xử lý mã hóa AES với GPU thơng qua cơng cụ lập trình CUDA Và so sánh với chương trình mã hóa AES chương trình xử lý GPU Trên kết nghiên cưu thông qua liệu đầu vào từ nhỏ lớn dần cho thấy khác biệt hiệu rõ rệt sử dụng GPU Với kết dựa nghiên cứu tổng quan công nghệ GPU CUDA kết chương trình thực nghiệm Hy vọng giúp đưa giải pháp cho nhà quản lý nhà phát triển phần cứng phần mềm để cải thiện tốc độ tính tốn cho đạt kết tốt download by : skknchat@gmail.com 89 TÀI LIỆU THAM KHẢO Tài liệu tiếng việt [1] Trương Văn Hiệu (2011), “Nghiên cứu giải thuật song song hệ thống xử lý đồ họa GPU đa lõi”, luận văn thạc sĩ, trường Đại học Đà Nẵng [2] Nguyễn Việt Đức – Nguyễn Nam Giang (2012), ”Xây dựng thuật tốn song song tìm đường ngắn với CUDA”, luận văn thạc sỹ, trường Đại học Công nghệ Hồ Chí Minh [3] Nguyễn Thị Thùy Linh (2009), “Tính tốn hiệu cao với xử lý đồ họa GPU ứng dụng”, luận văn thạc sĩ, trường Đại học Công nghệ Hà Nội [4] Nguyễn Thị Dung (2013), “Hệ mã hóa AES”, tiểu luận, trường đại học công nghệ , Đại học Quốc gia Hà Nội [5] Lưu Thị Thúy Linh (2013), “Nghiên cứu vài khía cạnh độ an toàn AES”, luận văn thạc sĩ, Học viện Cơng nghệ bưu viễn thơng Tài liệu tiếng anh [6] Jason Sanders, Edward Kandrot, “CUDA by example”, an introduction to General- Purpose GPU programming [7] Maciej Matyka, “GPGPU programming on example of CUDA”, Institute of Theoretical Physics University of Wroclaw [8] NVIDIA, “High performance computing with CUDA”, Users Group Conference San Diego, CA June 15, 2009 download by : skknchat@gmail.com ... tài: NGHIÊN CỨU CƠNG NGHỆ XỬ LÝ GPU VÀ ỨNG DỤNG Luận văn gồm chương chính: Chương 1: Khái quát xử lý đồ họa GPU xử lý song song, Chương giới thiệu tổng quan xử lý song song xử lý đồ họa GPU Chương...  Định nghĩa xử lý songsong Xử lý song song trình xử lý thực nhiều tiến trình lúc để xử lý toán, nhiều xử lý  Làm rõ xử lý song song xử lý Xử lý thời điểm xử lý phép tốn cịn xử lý song song... Một hướng nhà nghiên cứu đưa phát triển xử lý đa nhân với chế xử lý song song Một bước phát triển hướng xử lý đồ họa – GPU (Graphics Processing Unit - xử lý đồ họa) Khi đời, GPU sử dụng với mục

Ngày đăng: 09/04/2022, 21:15

Xem thêm:

HÌNH ẢNH LIÊN QUAN

Rasterization Sự quét mành trên màn hình - (LUẬN văn THẠC sĩ) nghiên cứu công nghệ xử lý GPU và ứng dụng
asterization Sự quét mành trên màn hình (Trang 4)
texture Kết cấu: cấu trúc của đối tượng, nó được xem như mô hình thu nhỏ của đối tượng - (LUẬN văn THẠC sĩ) nghiên cứu công nghệ xử lý GPU và ứng dụng
texture Kết cấu: cấu trúc của đối tượng, nó được xem như mô hình thu nhỏ của đối tượng (Trang 4)
Hình1: Kiến trúc Von Neumann - (LUẬN văn THẠC sĩ) nghiên cứu công nghệ xử lý GPU và ứng dụng
Hình 1 Kiến trúc Von Neumann (Trang 10)
Bảng 1.1: So sánh sự khác nhau giữa lập trình tuầntự và songsong Lập trình tính toán tuần tự  Lập trình tính toán song song  - (LUẬN văn THẠC sĩ) nghiên cứu công nghệ xử lý GPU và ứng dụng
Bảng 1.1 So sánh sự khác nhau giữa lập trình tuầntự và songsong Lập trình tính toán tuần tự Lập trình tính toán song song (Trang 11)
Hình 2: Máy tính songsong có bộ nhớ chia sẻ - (LUẬN văn THẠC sĩ) nghiên cứu công nghệ xử lý GPU và ứng dụng
Hình 2 Máy tính songsong có bộ nhớ chia sẻ (Trang 13)
Mô hình cấu trúc đơn dòng lệnh đơn luồng dữ liệu (SISD) - (LUẬN văn THẠC sĩ) nghiên cứu công nghệ xử lý GPU và ứng dụng
h ình cấu trúc đơn dòng lệnh đơn luồng dữ liệu (SISD) (Trang 14)
Hình 3: Máy tính songsong có bộ nhớ phân tán - (LUẬN văn THẠC sĩ) nghiên cứu công nghệ xử lý GPU và ứng dụng
Hình 3 Máy tính songsong có bộ nhớ phân tán (Trang 14)
Hình 5: Kiến trúc máy SIMD - (LUẬN văn THẠC sĩ) nghiên cứu công nghệ xử lý GPU và ứng dụng
Hình 5 Kiến trúc máy SIMD (Trang 15)
Mô hình cấu trúc đa dòng lệnh đơn luồng dữ liệu (MISD) - (LUẬN văn THẠC sĩ) nghiên cứu công nghệ xử lý GPU và ứng dụng
h ình cấu trúc đa dòng lệnh đơn luồng dữ liệu (MISD) (Trang 15)
Hình 7: Kiến trúc máy MIMD - (LUẬN văn THẠC sĩ) nghiên cứu công nghệ xử lý GPU và ứng dụng
Hình 7 Kiến trúc máy MIMD (Trang 16)
Mô hình lập trình songsong bao gồm các hệ thống truyền thông và vào/ra song song, các ứng dụng, ngôn ngữ, bộ biên dịch, thư viện - (LUẬN văn THẠC sĩ) nghiên cứu công nghệ xử lý GPU và ứng dụng
h ình lập trình songsong bao gồm các hệ thống truyền thông và vào/ra song song, các ứng dụng, ngôn ngữ, bộ biên dịch, thư viện (Trang 17)
Hình 9: Mô hình lập trình songsong dữ liệu - (LUẬN văn THẠC sĩ) nghiên cứu công nghệ xử lý GPU và ứng dụng
Hình 9 Mô hình lập trình songsong dữ liệu (Trang 18)
Hình10: Kiến trúc GPU của NVIDIA và AMD - (LUẬN văn THẠC sĩ) nghiên cứu công nghệ xử lý GPU và ứng dụng
Hình 10 Kiến trúc GPU của NVIDIA và AMD (Trang 28)
Bộ phần mềm CUDA có các lớp mô tả trong Hình 11, gồm: API lập trình, bộ điều khiển (dirver)  cho  phần cứng,  hai thư  viện toán học  mức  cao hơn  của  các  hàm thường dùng: CUFFT  và  CUBLAS và môi trường thực thi - (LUẬN văn THẠC sĩ) nghiên cứu công nghệ xử lý GPU và ứng dụng
ph ần mềm CUDA có các lớp mô tả trong Hình 11, gồm: API lập trình, bộ điều khiển (dirver) cho phần cứng, hai thư viện toán học mức cao hơn của các hàm thường dùng: CUFFT và CUBLAS và môi trường thực thi (Trang 40)
Thư viện lập trình của CUDA bao gồm các hàm mở rộng của ngôn ngữ C. Hình 12  mô  tả CUDA cung  cấp  cách  đánh  địa  chỉ DRAM  thường  dùng  cho  việc  lập  trình  linh hoạt hơn, bao gồm cả thao tác thu hồi bộ nhớ và cấp phát bộ nhớ - (LUẬN văn THẠC sĩ) nghiên cứu công nghệ xử lý GPU và ứng dụng
h ư viện lập trình của CUDA bao gồm các hàm mở rộng của ngôn ngữ C. Hình 12 mô tả CUDA cung cấp cách đánh địa chỉ DRAM thường dùng cho việc lập trình linh hoạt hơn, bao gồm cả thao tác thu hồi bộ nhớ và cấp phát bộ nhớ (Trang 41)
Hình 13: Vùng nhớ dùng chung mang dữ liệu gần ALU hơn - (LUẬN văn THẠC sĩ) nghiên cứu công nghệ xử lý GPU và ứng dụng
Hình 13 Vùng nhớ dùng chung mang dữ liệu gần ALU hơn (Trang 42)
Hình 14: Sơ đồ hoạt động truyền dữ liệu giữa Host và Device - (LUẬN văn THẠC sĩ) nghiên cứu công nghệ xử lý GPU và ứng dụng
Hình 14 Sơ đồ hoạt động truyền dữ liệu giữa Host và Device (Trang 43)
Hình 15: Khối luồng - (LUẬN văn THẠC sĩ) nghiên cứu công nghệ xử lý GPU và ứng dụng
Hình 15 Khối luồng (Trang 45)
Hình 16: Mô hình bộ nhớ trênGPU - (LUẬN văn THẠC sĩ) nghiên cứu công nghệ xử lý GPU và ứng dụng
Hình 16 Mô hình bộ nhớ trênGPU (Trang 46)
lời gọi. Để sử dụng thực hiện chức năng trên thiết bị cần cấuhình xử lý xác định kích thước lưới và khối - (LUẬN văn THẠC sĩ) nghiên cứu công nghệ xử lý GPU và ứng dụng
l ời gọi. Để sử dụng thực hiện chức năng trên thiết bị cần cấuhình xử lý xác định kích thước lưới và khối (Trang 50)
Hình 18: Phương pháp đánh chỉ số luồng. - (LUẬN văn THẠC sĩ) nghiên cứu công nghệ xử lý GPU và ứng dụng
Hình 18 Phương pháp đánh chỉ số luồng (Trang 54)
Hình 19 : Mã hóa và giải mã - (LUẬN văn THẠC sĩ) nghiên cứu công nghệ xử lý GPU và ứng dụng
Hình 19 Mã hóa và giải mã (Trang 58)
Hình 20: Biến đổi SubBytes() đối với mảng trạng thái - (LUẬN văn THẠC sĩ) nghiên cứu công nghệ xử lý GPU và ứng dụng
Hình 20 Biến đổi SubBytes() đối với mảng trạng thái (Trang 60)
Dưới đây là hình minh họa kết quả áp dụng hàm biến đổi SubBytes() đối với mảng trạng thái  - (LUẬN văn THẠC sĩ) nghiên cứu công nghệ xử lý GPU và ứng dụng
i đây là hình minh họa kết quả áp dụng hàm biến đổi SubBytes() đối với mảng trạng thái (Trang 60)
Hình 22: Mô tả hàm MixColumns() - (LUẬN văn THẠC sĩ) nghiên cứu công nghệ xử lý GPU và ứng dụng
Hình 22 Mô tả hàm MixColumns() (Trang 61)
Hình 23: Mô tả hàm AddRoundKey() - (LUẬN văn THẠC sĩ) nghiên cứu công nghệ xử lý GPU và ứng dụng
Hình 23 Mô tả hàm AddRoundKey() (Trang 62)
Hình 24: Mô tả hàm InvShiftRow() - (LUẬN văn THẠC sĩ) nghiên cứu công nghệ xử lý GPU và ứng dụng
Hình 24 Mô tả hàm InvShiftRow() (Trang 64)

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w