Skip to content

enflurane/parameter_sweep

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 

Repository files navigation

基于C++ CUDA和Matlab的非线性动力学参数扫描工具箱

CUDA加速的动力学系统参数扫描分析工具,用于绘制混沌系统的双参数扫描图和Lyapunov指数谱等图像。

目前已经实现的功能包括双参数扫描、首次返回图、Bykov_T点、Lyapunov指数谱、分岔图、吸引域等图像的绘制,会逐步更新至该仓库。

当前已更新:

  • ✅ 双参数扫描 bisweep
  • ✅ 分岔图 bifdiag

项目简介

本项目实现了基于CUDA GPU加速的参数扫描算法,用于分析三维动力学系统的双参数分岔行为。通过并行计算大幅提升大规模参数扫描的效率。

参考文献

系统要求

硬件要求

  • NVIDIA GPU (计算能力sm_86或更高)
  • 至少6GB显存

软件要求

  • MATLAB R2022a或更高版本
  • CUDA Toolkit 12.8
  • Visual Studio 2019 (MSVC v142)
  • Windows 10/11

安装步骤

1. 安装依赖

确保已安装以下软件:

  • [MATLAB R2022a+]
  • [CUDA Toolkit 12.8]
  • [Visual Studio 2019 Community]

2. 配置编译器

在MATLAB中配置Visual Studio 2019编译器:

% 设置环境变量
setenv('VSINSTALLDIR', 'C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools');
setenv('VS160COMNTOOLS', 'C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\Common7\Tools');
setenv('MW_ALLOW_ANY_CUDA', '1');

% 配置编译器
mex -setup C++

3. 编译CUDA代码

运行编译脚本:

cd src/matlab/bisweep
build_sweep_mex

或者手动编译:

mexcuda -v '../../cuda/bisweep/sweep_mex.cu' ...
    NVCCFLAGS='-arch=sm_86 --generate-code=arch=compute_86,code=sm_86 -Wno-deprecated-gpu-targets' ...
    -L"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\lib\x64" ...
    -lcudart ...
    -output sweep_mex

使用方法

基本用法

运行主程序:

main

参数设置

main.m 中修改以下参数:

% 参数范围
parameter1Start = 34;       % 参数a起始值
parameter1End = 35;         % 参数a结束值
parameter1Count = 101;      % 参数a采样点数

parameter2Start = 99;       % 参数c起始值
parameter2End = 101;        % 参数c结束值
parameter2Count = 101;      % 参数c采样点数

parameter3 = 1;             % 固定参数b

% 积分设置
dt = 0.01;                  % 时间步长
N = 1e6;                    % 迭代次数
stride = 1;                 % 采样间隔

% Kneading区间
kneadingsStart = 1000;
kneadingsEnd = 2023;

结果展示

双参数扫描结果

双参数扫描

分岔图

分岔图

Lyapunov指数

Lyapunov指数

Bykov_T点

Bykov_T点

许可证

本项目采用MIT许可证 - 详见 LICENSE 文件

致谢

联系方式

如有问题或建议,请通过GitHub Issues联系。


注意:本项目需要NVIDIA GPU支持,请确保你的硬件满足要求。

About

一个基于C++ CUDA和Matlab的非线性动力学参数扫描工具箱

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors