采用CUDA Thrust实现的标准二体模型

本文探讨了如何使用CUDA和CUDAThrust加速空间目标轨道计算,特别是标准二体模型的实现。通过直接和优化Thrust版本对比,展示了效率提升和矩阵计算的优化策略,为高性能计算提供实践案例。

采用CUDA Thrust实现的标准二体模型

基于CUDA的空间目标轨道并行计算技术,共四节,其中第一、二、三节目录如下

1 基于CUDA的空间目标轨道计算需求与任务分析

2 基于CUDA的空间坐标系变换矩阵计算
2.1 基于SOFA的空间坐标系变换
2.2 采用CUDA Thrust实现的空间坐标系变换
2.3 采用CUDA Runtime实现的空间坐标系变换**

3 基于CUDA的标准二体模型轨道预推算法
3.1 空间目标二体运动模型及其CPU实现
3.2 采用CUDA Thrust实现的标准二体模型
3.3 采用CUDA Runtime实现的标准二体模型


一、直接实现及其效率分析

采用Thrust实现二体模型,首先采用的是直接实现。Thrust仿函数定义如下

struct twoBodyModelTransFunctor_Thrust_1{
   
   
	double		_jdOfBt2Epo;	//开始时间与星历时间的差距
	OrbitElement _orbitElement;
	int		_stepMilliSecond;
	__device__ pvOfOrbit operator()(int& i, mat3x3& c2tmat)const {
   
   
		double timeOfCycle=PI*2/(sqrt(MIU_EARTH/_semimajorAxis)/_semimajorAxis);
		double rmat[3][3];
		iauIr(rmat);
		iauRz(-_orbitElement._RAAN*PI / 180.0, rmat);
		iauRx(-_orbitElement._inclination*PI / 180.0, rmat);
		iauRz(-_orbitElement._argumentOfPerigee*PI / 180.0, rmat);
		double	t = (double)_stepMilliSecond*i / 86400.0 / 1000.0 + _jdOfBt2Epo;
		t = fmod(t, timeOfCycle);
		t *= 86400;
		double M=t*sqrt(MIU_EARTH/_semimajorAxis)/_semimajorAxis;
		M = fmod(M, PI * 2);
		double	radM = _meanAnomaly*PI / 180 + M;	//加上初始值
		double E0 = radM;
		d
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值