Biên dịch với hỗ trợ GPU¶
FrontISTR có thể chạy trên GPU bằng chức năng OpenACC của NVIDIA HPC SDK. Trang này mô tả quy trình biên dịch có bật GPU và cách thực thi.
Đối với các thư viện tiên quyết, hãy xem Các thư viện phụ thuộc bắt buộc và tùy chọn.
Quy trình biên dịch¶
Sử dụng các trình biên dịch của NVIDIA HPC SDK (nvc, nvc++, nvfortran). Trong môi trường cụm HPC, cần tải NVIDIA HPC SDK trước khi biên dịch theo hướng dẫn của môi trường (ví dụ: module load nvhpc).
Các thư viện tùy chọn như METIS, MUMPS và MKL không hỗ trợ GPU, vì vậy chúng được tắt trong các ví dụ lệnh dưới đây (chẳng hạn WITH_METIS=OFF).
Như đã nêu trong Quy trình biên dịch bằng CMake, khi NVIDIA HPC SDK (nvc, nvc++, nvfortran) được chỉ định làm trình biên dịch, -gpu=ccnative,mem:managed sẽ được đặt trong CMakeLists.txt. ccnative là tùy chọn tự động phát hiện GPU trong môi trường biên dịch và chọn đích tối ưu, vì vậy không cần thay đổi thủ công theo từng môi trường. mem: là tùy chọn chỉ định cách xử lý bộ nhớ GPU; tùy chọn này là bắt buộc vì triển khai GPU của FrontISTR giả định sử dụng Unified Memory. mem:managed là thiết lập mặc định cho các môi trường thông thường trong đó CPU và GPU có bộ nhớ riêng biệt.
Lưu ý: Trên các kiến trúc như Miyabi (GH200), nơi CPU và GPU được tích hợp qua NVLink, thay cho
mem:managedsẽ sử dụngmem:unified; hãy thay đổi tùy theo môi trường sử dụng (-gpu=ccnative,mem:unified).
OpenACC + OpenMP (không dùng MPI)¶
mkdir build
cd build
CC=nvc CXX=nvc++ FC=nvfortran cmake \
-DWITH_MPI=OFF -DWITH_OPENMP=ON \
-DWITH_METIS=OFF -DWITH_MUMPS=OFF \
-DWITH_MKL=OFF -DWITH_LAPACK=OFF \
-DWITH_ML=OFF -DWITH_REFINER=OFF -DWITH_REVOCAP=OFF \
..
make -j
OpenACC + OpenMP + MPI¶
Khi sử dụng MPI, các trình biên dịch bọc MPI (như mpicc) phải được cấu hình để gọi nội bộ các trình biên dịch NVIDIA HPC SDK (như nvc). Trong nhiều môi trường cụm HPC, khi tải NVIDIA HPC SDK và thư viện MPI bằng các lệnh như module load, cấu hình này được thiết lập tự động; tuy nhiên phiên bản khuyến nghị và quy trình tải khác nhau tùy môi trường, vì vậy hãy tham khảo sổ tay người dùng hoặc tài liệu tương ứng của từng môi trường để biết chi tiết.
mkdir build
cd build
CC=mpicc CXX=mpic++ FC=mpif90 cmake \
-DWITH_MPI=ON -DWITH_OPENMP=ON \
-DWITH_METIS=OFF -DWITH_MUMPS=OFF \
-DWITH_MKL=OFF -DWITH_LAPACK=OFF \
-DWITH_ML=OFF -DWITH_REFINER=OFF -DWITH_REVOCAP=OFF \
..
make -j
Cách thực thi¶
Quy trình thực thi bản biên dịch GPU về cơ bản giống với trường hợp CPU. Đối với quy trình thực thi chung, hãy xem Hướng dẫn thực thi.
Lập hồ sơ hiệu năng¶
Có thể thu thập dữ liệu lập hồ sơ bằng NVIDIA Nsight Systems (nsys).