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

ĐÁNH GIÁ HIỆU NĂNG THUẬT TOÁN FFT (FAST FOURIER TRANSFORM) SỬ DỤNG OPENMP

33 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

Thông tin cơ bản

Định dạng
Số trang 33
Dung lượng 0,97 MB

Nội dung

HPC là công nghệ sử dụng các cụm bộ xử lý mạnh mẽ, hoạt động song song để xử lý các bộ dữ liệu đa chiều khổng lồ (dữ liệu lớn) và giải quyết các vấn đề phức tạp ở tốc độ cực cao. Các hệ thống HPC thường hoạt động ở tốc độ nhanh hơn một triệu lần so với các hệ thống máy tính để bàn, máy tính xách tay hoặc máy chủ nhanh nhất. Trong nhiều thập kỷ, mô hình hệ thống HPC là siêu máy tính, một máy tính được thiết kế có mục đích chứa hàng triệu bộ xử lý hoặc lõi bộ xử lý. Siêu máy tính vẫn ở bên chúng ta; tại thời điểm viết bài này, siêu máy tính nhanh nhất là Frontier có trụ sở tại Hoa Kỳ (liên kết nằm bên ngoài ibm.com), với tốc độ xử lý là 1.102 exaflop , hay triệu tỷ phép tính dấu phẩy động mỗi giây (flops). Nhưng ngày nay, ngày càng có nhiều tổ chức chạy các giải pháp HPC trên các cụm máy chủ tốc độ cao, được lưu trữ tại cơ sở hoặc trên đám mây.

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO BÀI TẬP LỚN Học Phần: TÍNH TỐN HIỆU NĂNG CAO (HPC) ĐỀ TÀI: ĐÁNH GIÁ HIỆU NĂNG THUẬT TOÁN FFT (FAST FOURIER TRANSFORM) SỬ DỤNG OPENMP Giảng viên hướng dẫn Lớp Nhóm thực : TS Hà Mạnh Đào : : Nhóm Đỗ Xuân Hải - 2021602604 Đặng Quốc Diệu - 2020600571 Phan Anh Thắng - 2020601204 DANH MỤC DANH MỤC DANH MỤC HÌNH ẢNH .5 LỜI MỞ ĐẦU CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI 1.1 Tổng quan tính tốn hiệu cao 1.1.1 Khái niệm .7 1.1.2 HPC hoạt động 1.2 Tổng quan OpenMP .8 1.2.1 Khái niệm .8 1.2.2 Lịch sử OpenMP 1.2.3 Mục đích ứng dụng OpenMP 1.3 Tổng quan tính tốn song song 10 1.3.1 Khái niệm .10 1.3.2 Các nguồn tài ngun tính tốn bao gồm: 10 1.3.3 Các vấn đề tính tốn .11 1.3.4 Các mô hình lập trình song song 11 1.4 Tổng quan thuật toán Fast Fourier Transform .11 CHƯƠNG 2: GIẢI PHÁP GIẢI QUYẾT BÀI TOÁN 13 2.1 Phát biểu đầy đủ toán (DIỆU) .13 2.1.1 Biến đổi Fourier rời rạc 13 2.1.2 Ứng dụng DFT: nhân nhanh đa thức .14 2.1.3 Biến đổi Fourier nhanh 15 2.1.4 FFT nghịch đảo .16 2.2 Gỉai pháp toán (THẮNG) 18 2.2.1 Thiết kế thuật toán 18 2.2.2 Thiết kế thuật toán song song .22 2.4 Tính tốn theo lý thuyết hiệu năng, hiệu suất .25 2.4.1 Hiệu 25 2.4.2 Hiệu suất .25 CHƯƠNG 3: THỰC NGHIỆM 27 3.1 Tiến hành thực nghiệm(THẮNG) 27 3.2 So sánh Kết thực tế với tính tốn lý thuyết(THẮNG) 27 KẾT LUẬN 28 TÀI LIỆU THAM KHẢO 29 DANH MỤC HÌNH ẢNH LỜI MỞ ĐẦU CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI 1.1 Tổng quan tính tốn hiệu cao 1.1.1 Khái niệm HPC công nghệ sử dụng cụm xử lý mạnh mẽ, hoạt động song song để xử lý liệu đa chiều khổng lồ (dữ liệu lớn) giải vấn đề phức tạp tốc độ cực cao Các hệ thống HPC thường hoạt động tốc độ nhanh triệu lần so với hệ thống máy tính để bàn, máy tính xách tay máy chủ nhanh Trong nhiều thập kỷ, mô hình hệ thống HPC siêu máy tính, máy tính thiết kế có mục đích chứa hàng triệu xử lý lõi xử lý Siêu máy tính bên chúng ta; thời điểm viết này, siêu máy tính nhanh Frontier có trụ sở Hoa Kỳ (liên kết nằm bên ibm.com), với tốc độ xử lý 1.102 exaflop , hay triệu tỷ phép tính dấu phẩy động giây (flops) Nhưng ngày nay, ngày có nhiều tổ chức chạy giải pháp HPC cụm máy chủ tốc độ cao, lưu trữ sở đám mây 1.1.2 HPC hoạt động Một hệ thống máy tính tiêu chuẩn giải vấn đề chủ yếu cách sử dụng tính tốn nối tiếp—nó chia khối lượng công việc thành chuỗi tác vụ, sau thực tác vụ xử lý Ngược lại, HPC tận dụng  Tính tốn song song lớn: Tính tốn song song chạy nhiều tác vụ đồng thời nhiều máy chủ xử lý Tính tốn song song quy mơ lớn tính tốn song song sử dụng hàng chục nghìn đến hàng triệu xử lý lõi xử lý  Cụm máy tính (cịn gọi cụm HPC): Một cụm HPC bao gồm nhiều máy chủ tốc độ cao nối mạng với nhau, với lập lịch tập trung quản lý khối lượng cơng việc tính tốn song song Các máy tính, gọi nút, sử dụng CPU đa lõi hiệu suất cao ngày nhiều khả GPU (đơn vị xử lý đồ họa), phù hợp cho phép tính tốn học nghiêm ngặt, mơ hình học máy tác vụ chuyên sâu đồ họa Một cụm HPC bao gồm 100.000 nút trở lên  Các thành phần hiệu suất cao: Tất tài nguyên điện toán khác cụm HPC—hệ thống mạng, nhớ, lưu trữ tệp—là thành phần tốc độ cao, thơng lượng cao độ trễ thấp theo kịp nút tối ưu hóa sức mạnh tính tốn hiệu suất cụm 1.2 Tổng quan OpenMP 1.2.1 Khái niệm OpenMP giao diện lập trình ứng dụng (API) sử d ụng để điều khiển luồng cấu trúc chia sẻ b ộ nhớ chung Thành phần OpenMP bao gồm : Các thị biên dịch (Compiler Directives) Các thư viện runtime (Runtime Library Routines) Các biến môi trường (Emviroment Variables) Các thị biên dịch, thư viện runtime biến môi trường sử dụng để lập trình song song với hai ngôn ngữ Fortran C/C++ OpenMP chuẩn nhớ chia sẻ hỗ trợ nhiều phần cứng phần mềm DEC, Intel, IBM, SGI, Numerical Algorithms Group Hơn OpenMP khả chuyển thực thi mơi trường UNIX Windows NT 1.2.2 Lịch sử OpenMP Ngay từ trước thập kỷ 90 Các nhà cung cấp máy tính chia sẻ nhớ đưa sản phẩm hỗ trợ đồng thị Để lập trình chương trình song song kiến trúc dạng thì ngôn ngữ Fortran sử ụng với nhiều tiện dụng Người sử dụng làm giảm thời gian thực chương trình Fortran cách thực vòng lặp theo cách song song Trong trường hợp trình biên dịch phải chịu trách nhiệm song song hóa cách tự động vịng lặp thơng qua BXL SMP Tuy nhiên nhà cung cấp lại sử dụng phương thức thực thi khác phụ thuộc vào tảng phần cứng kiến trúc riêng họ Để đưa chuẩn hỗ trợ việc lập trình song song kiến trúc chia sẻ nhớ thì năm 1994 chuẩn ANSI X3H5 đời Nhưng khơng tồn lâu vì thời gian máy tính nhớ phân tán trở nên phổ biến Chuẩn OpenMP bắt đưa vào mùa xuân năm 1997 để thay chuẩn ANSI X3H5 Trong thời gian thì máy tính chia sẻ nhớ thịnh hành Bên cạnh Pthread đưa Pthread khơng có tính mở rộng, khơng có thị biên dịch Pthread khơng hỗ trợ song song tốt, người lập trình khó thực thiện việc song song hóa nhờ vào Pthread Với Pthread người lập trình phải quan tâm nhiều đến chi tiết ức thấp Và OpenMP thiết kế để giảm bớt nhược điểm Pthread 1.2.3 Mục đích ứng dụng OpenMP OpenMP đời với mục tiêu cung cấp chuẩn chung cho nhiều kiến trúc tảng phần cứng Nó thiết lập tập thị biên dịch hỗ trợ việc lập trình song song máy tính chia sẻ nhớ chung Một mức song song thường thực thi với ba đến bốn thị OpenMP đời giúp cho việc lập trình song song cách dễ dàng cung cấp khả song song hóa chương trình mà không dùng đến thư viện thông điệp v.v Có thể sử dụng OpenMP để giải quết vấn đề giới hạn thời gian tốn dự báo thời tiết, để mơ vấn đề thực tế tốn mơ tai nạn xe hơi, giải toán khoa học u cầu khối lượng tính tốn lớn tốn mô N-Body, dự báo thời tiết … 1.3 Tổng quan tính tốn song song 1.3.1 Khái niệm ➢ Thơng thường, phần mềm viết cho tính tốn (serial computation): ● Được chạy máy tính đơn với xử lý trung tâm (CPU) ● Một toán (problem) chia thành chuỗi câu lệnh rời rạc ● Các câu lệnh thực cách ● Tại thời điểm thực câu lệnh ➢ Ý nghĩa đơn giản tính tốn song song việc sử dụng đồng thời nhiều tài nguyên máy tính để giải tốn tính tốn ● Để chạy nhiều CPU ● Một toán chia thành phần riêng biệt mà giải đồng thời ● Mỗi phần chia nhỏ dãy câu lệnh ● Các câu lệnh phần thực thi đồng thời CPU khác ➔ Tính tốn song song hình thức tính tốn nhiều phép tính thực đồng thời, hoạt động nguyên tắc vấn đề lớn chia thành nhiều phần nhỏ hơn, sau giải tương tranh ("trong lĩnh vực tính tốn") 1.3.2 Các nguồn tài ngun tính tốn bao gồm: ● Một máy tính đơn với nhiều vi xử lý (CPU); ● Một máy tính đơn với nhiều CPU số tài nguyên chuyên dụng GPU, FPGA …; Thuật toán Cooley-Tukey FFT phương pháp chia để trị, phân rã đệ quy DFT (Discrete Fourier Transform) số nguyên dương N thành nhiều DFT nhỏ số nguyên N1 N2 Đầu vào: x=( x , x1 , … , x N−1 ), dãy số phức đầu vào có độ dài N, với N lũy thừa 2 Trường hợp bản: Nếu N=1, kết trả x Chia: Chia dãy x thành hai nửa, x even x odd, có độ dài N /2 Chinh phục: Áp dụng đệ quy FFT cho x even x odd để thu X even X odd N Kết hợp: Với k =0, 1, … , −1, tính hệ số twiddle W kN sử dụng để kếp hợp kết quả: - X k =X even [ k ] + W kN X odd [k ] k - X k+ N2 =X even [ k ] −W N X odd [ k ] Đầu ra: Trả X =( X , X , … , X N −1) kết Dưới ví dụ: #include #include #include using namespace std; typedef complex Complex; vector fft(const vector &x) { int N = x.size(); // Base case if (N == 1) { return x; } // Divide vector x_even, x_odd; for (int i = 0; i < N; i++) { if (i % == 0) { x_even.push_back(x[i]); }else { x_odd.push_back(x[i]); } } // Conquer vector X_even = fft(x_even); vector X_odd = fft(x_odd); // Combine vector X(N); for (int k = 0; k < N/2; k++) {

Ngày đăng: 12/01/2024, 11:24

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w