Nghiên cứu công nghệ xử lý GPU và ứng dụng (LV thạc sĩ)

98 1.3K 4
Nghiên cứu công nghệ xử lý GPU và ứng dụng (LV thạc sĩ)

Đ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

Nghiên cứu công nghệ xử lý GPU và ứng dụng (LV thạc sĩ)Nghiên cứu công nghệ xử lý GPU và ứng dụng (LV thạc sĩ)Nghiên cứu công nghệ xử lý GPU và ứng dụng (LV thạc sĩ)Nghiên cứu công nghệ xử lý GPU và ứng dụng (LV thạc sĩ)Nghiên cứu công nghệ xử lý GPU và ứng dụng (LV thạc sĩ)Nghiên cứu công nghệ xử lý GPU và ứng dụng (LV thạc sĩ)Nghiên cứu công nghệ xử lý GPU và ứng dụng (LV thạc sĩ)Nghiên cứu công nghệ xử lý GPU và ứng dụng (LV thạc sĩ)Nghiên cứu công nghệ xử lý GPU và ứng dụng (LV thạc sĩ)Nghiên cứu công nghệ xử lý GPU và ứng dụng (LV thạc sĩ)Nghiên cứu công nghệ xử lý GPU và ứng dụng (LV thạc sĩ)Nghiên cứu công nghệ xử lý GPU và ứng dụng (LV thạc sĩ)Nghiên cứu công nghệ xử lý GPU và ứng dụng (LV thạc sĩ)Nghiên cứu công nghệ xử lý GPU và ứng dụng (LV thạc sĩ)Nghiên cứu công nghệ xử lý GPU và ứng dụng (LV thạc sĩ)

ĐẠI HỌC THÁI NGUYÊN ĐẠI HỌC CÔNG NGHỆ THÔNG TIN TRUYỀN THÔNG ĐINH TIẾN NGỌC NGHIÊN CỨU CÔNG NGHỆ XỬ GPU ỨNG DỤNG THÁI NGUYÊN 2017 LỜI CAM ĐOAN Tôi xin cam đoan : Những nghiên cứu luận văn hoàn toàn trung thực không vi phạm quyền sở hữu trí tuệ Nếu sai xin chịu hoàn toàn trách nhiệm TÁC GIẢ LUẬN VĂN Đinh Tiến Ngọc 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 hoà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 có kiến thức bổ trợ giúp hoà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 DANH MỤC THUẬT NGỮ TiếngAnh TiếngViệt GPU Bộ xử đồ họa gpgpu Tính toá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ử 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ử dòng MIMD Multiple Instruction Multiple Data: đa lệnh đa liệu primarysurface Bề mặt proccessor Bộ xử Rasterization Sự quét mành hình 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Ử ĐỒ HỌA GPU XỬ SONG SONG 1.1 Khái quát xử song song .1 1.1.1 Khái quát xử 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ử 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ử đồ 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ử tính toán GPU 22 1.2.6 Các kỹ thuật tính toán GPU 26 1.2.7 Các giải thuật ứng dụng GPU 29 CHƯƠNG II: XỬ 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 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 TOÁN CHO BÀI TOÁN MÃ HÓA AES 48 3.1 Giới thiệu AES 48 3.2 Thuật toá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 toá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 toán 93 KẾT LUẬN 88 TÀI LIỆU THAM KHẢO 89 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 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 thiếu sống Không 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 toán lớn Tuy nhiên với nhu cầu tính toá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ử CPU có hạn Các nhà phát triển phần cứng thực gia tăng mức độ xử 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ử đa nhân với chế xử song song Một bước phát triển hướng xử đồ họa – GPU (Graphics Processing Unit - xử đồ 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ử đồ 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 toán dấu chấm động đơn, hỗ trợ tính toán lên ngàn lệnh đặ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ử 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Ử GPU ỨNG DỤNG Luận văn gồm chương chính: Chương 1: Khái quát xử đồ họa GPU xử song song, Chương giới thiệu tổng quan xử song song xử đồ họa GPU Chương 2: Xử 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ử song song CUDA GPU Chương 3: Sử dụng GPU để làm tăng tốc độ tính toán cho toán mã hóa AES Chương tiến hành cài đặt thử chương trình song song, xử song song mã hóa AES GPU ngôn ngữ CUDA đưa kết kết luận hiệu suất GPU 10 CHƯƠNG I : KHÁI QUÁT VỀ BỘ XỬ ĐỒ HỌA GPU XỬ SONG SONG 1.1 Khái quát xử song song 1.1.1 Khái quát xử song song Nguồn gốc đời xử 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ử Hình1: Kiến trúc Von Neumann Khi cần tính toá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ử kết nối nhiều máy tính thông qua mạng để tăng tốc độ xử Khi tăng tốc xử phép tính máy tính song song, việc sử dụng thuật toán không 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 phải xử song song Như nói máy tính song song với xử nhiều nhân thay dần máy tính đơn nhân, xử với thuật toán, câu lệnh, phép xử không phù hợp với máy tính song song Do xử song song đời thay cho xử nhằm đem lại hiệu tính toán cao Bằng chứng thấy thực tế với nhiều toán xử với lượng liệu lớn 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]); 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; Tmp; } } static uint8_t Multiply(uint8_t x, uint8_t y) { return (((y & 1) * x) ^ ((y >> & 1) * xtime(x)) ^ Tm = xtime(Tm); (*state)[i][3] ^= Tm ^ ((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; 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 }; 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); 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); } // stop timer QueryPerformanceCounter(&end); + j*BLOCKSIZE, ciphertext_block, 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); / #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"); } 3.3.1 Giao diện chương trình demo: Chạy CPU: Chạy GPU: 3.3.2 Kết chương trình đánh giá hiệu suất tính toán: Ta dễ thấy GPU có hiệu suất tính toá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 1189270 bytes 4337261 bytes 8132164 bytes 25724901 bytes 0.941079536 seconds 1.064967493 seconds 2.624178762 seconds 5.940836913 seconds 14.598369270 seconds 0.265264969 seconds 0.188594010 seconds 0.317496639 seconds 0.444080242 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 toá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 toá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 toán, phương pháp mã hóa khác tảng GPU /… KẾT LUẬN Luận văn nghiên cứu tổng quan xử song song Đồng thời luận văn nghiên cứu xử đồ họa GPU, công cụ lập trình GPU phổ biến CUDA Đó tiền đề để nghiên cứu cách xử song song xử đồ họa GPU cho hiệu Trong chương luận văn trình bày cách thuật toán mã hóa tương đối thuật toá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ử mã hóa AES với GPU thông qua công cụ lập trình CUDA so sánh với chương trình mã hóa AES chương trình xử 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 nhà phát triển phần cứng phần mềm để cải thiện tốc độ tính toán cho đạt kết tốt 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ử đồ 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 toá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 toán hiệu cao với xử đồ 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 Tài liệu tiếng anh [5] Jason Sanders, Edward Kandrot, “CUDA by example”, an introduction to GeneralPurpose GPU programming [6] Maciej Matyka, “GPGPU programming on example of CUDA”, Institute of Theoretical Physics University of Wroclaw ... 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... nhiều xử lý  Làm rõ xử lý song song xử lý Xử lý thời điểm xử lý phép toán xử lý song song thời điểm thực nhiều phép toán lúc nhiều xử lý, làm cho khả xử lý tăng lên đáng kể so với xử lý Bảng... gen… Xử lý song song chứng minh khả xử lý khả phát triển sau Các khái niệm xử lý songsong  Đị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ử

Ngày đăng: 23/10/2017, 22:59

Từ khóa liên quan

Mục lục

  • ĐẠI HỌC THÁI NGUYÊN

  • LỜI CAM ĐOAN

    • Tôi xin cam đoan :

    • TÁC GIẢ LUẬN VĂN

    • LỜI CẢM ƠN

      • TÁC GIẢ LUẬN VĂN

      • DANH MỤC THUẬT NGỮ

      • MỤC LỤC

      • DANH MỤC HÌNHVẼ

      • LỜI MỞ ĐẦU

        • Chương 3: Sử dụng GPU để làm tăng tốc độ tính toán cho bài toán mã hóa

        • 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 về xử lý song song

            • 1.1.1 Khái quát về xử lý song song

            • Lý do phải xử lý song song

            • Các khái niệm trong xử lý songsong

            • Làm rõ giữa xử lý song song và xử lý tuần tự

            • Bảng 1.1: So sánh sự khác nhau giữa lập trình tuần tự và song song

              • 1.1.2 Khái quát về Hệ thống máy tính song song

              • Bảng 1.2: Mô tả phân loại kiến trúc của Flynn

              • Mô hình cấu trúc đơn dòng lệnh đơn luồng dữ liệu (SISD)

              • Mô hình cấu trúc đơn dòng lệnh đa luồng dữ liệu (SIMD)

              • Mô hình cấu trúc đa dòng lệnh đơn luồng dữ liệu (MISD)

              • Mô hình cấu trúc đa dòng lệnh đa luồng dữ liệu (MIMD)

                • 1.1.3 Khái quát về lập trình song song

                • Truyền thông điệp trong xử lý song song

                • Song song dữ liệu trong xử lý song song

                  • 1.1.4 Các nguyên tắc khi thiết kế giải thuật xử lý song song

Tài liệu cùng người dùng

Tài liệu liên quan