Bài toán thử nghiệm N-body trên GPU được tham khảo từ [~8]. Tác giả luận văn
đã tìm hiểu, nghiên cứu mà nguồn ví dụ, điều chỉnh các tham số chương trình và cài
đặt trên môi trường thử nghiệm. Các bước thực hiện:
1. Cài đặt bộ tool kit của NIVIDIA phiên bản 1.0 trở lên. Có thể
download tại http://developer.nvidia.com/cuda
2. Cấu hình GPU cần thiết: NVIDIA 8-Series hoặc mới hơn. 3. Biên dịch chương trình trên Linux:
Make file biên dịch chương trình:
########################################################################## ######
#
# Build script for project #
########################################################################## ######
# Add source files here EXECUTABLE := nbody
# Cuda source files (compiled with cudacc) CUFILES := bodysystemcuda.cu
# C/C++ source files (compiled with gcc / c++) CCFILES := \
nbody_gold.cpp bodysystemcpu.cpp bodysystemcuda.cpp nbody.cpp \ render_particles.cpp \ USEGLLIB := 1 USEPARAMGL := 1 USEGLUT := 1 ########################################################################## ######
include ../../common/common.mk
Ở thư mục gốc, gõ lệnh: Make; Make dbg=1
"Make -f Makefile_paramgl; Make -f Makefile_paramgl dbg=1 Vào thư mục: projects/nbody, gõ lệnh:
Make; Make dbg=1; Make emu=1; Make emu=1 dbg=1 Chương trình được chạy trong thư mục: bin/linux/release/nbody
Chương trình có 3 chếđộ chạy: interactive (đồ họa) , benchmark và test.
Chế độ interactive: chạy đồ họa, cho phép người dùng có thể nhìn thấy mô phỏng n-body, các hạt chuyện động.
Chế độ test: mô phỏng được chạy trên cả CPU và GPU. Nếu mô phỏng trên GPU nằm trong sự cho phép của mô phỏng trên CPU thì kết quả hiển thị "Test PASSED", ngược lại hiển thị "Test FAILED"
Chế độ benchmark: chỉ chạy tính toán các tương tác, không có chuyển đổi sang
đồ họa 3D và không có thời gian chờ. Báo cáo mô phỏng gồm: tổng thời gian, thời gian trung bình, trung bình tương tác giữa các phần tử trong 1 giây, tỷ số GFLOP/s. Tác giả luận văn lựa chọn chế độ này để chạy thử nghiệm hiệu năng GPU so sánh với CPU. Lệnh chạy như sau:
nohup echo "8388608 start" >> linh_result.txt && date >> linh_result.txt && nbody - benchmark -n=8388608 >> linh_result.txt && date >> linh_result.txt && echo "8388608 end" >> linh_result.txt &
Trong đó:
linh_result.txt là file chứa kết quả chạy chương trình
nohup: lệnh chạy mô phỏng trên server, không cần tương tác với client
date: lệnh ghi thời gian hệ thống khi bắt đầu và kết thúc chương trình
nbody -benchmark -n=8388608: chạy mô phỏng ở chếđộ benchmark, với số phần tử
n= 8388608 (8192K)