SSE/SSE2版ceilf

本文介绍了一种在x86架构下通过SSE/SSE2指令集优化原本为PowerPC架构设计的内在函数的方法。特别是针对AltiVec功能的替代实现,通过具体的C/C++代码示例展示了如何实现向上取整函数_mm_ceil_ps的优化。

最近实现一套纯软件的Power PC speicified intrinsics,包括AltiVec的一些东东,后来发现在x86下执行很慢。于是开始使用SSE/SSE2加速,不过介于PPC和x86指令集巨大的差异,有很多东西需要自己实现,于是有了如下的代码:

#ifdef _SSE_OPTIMIZE_
inline __m128 _mm_ceil_ps( __m128 v )
{
static const __m128 twoTo23 = _mm_set_ps1(1 << 23);
__m128 d = _mm_sub_ps( _mm_add_ps( _mm_add_ps( _mm_sub_ps( v, twoTo23 ), twoTo23 ), twoTo23 ), twoTo23 ); //the meat of ceil
__m128 largeMaskE = _mm_cmpgt_ps( v, twoTo23 ); //-1 if v >= 2**23
__m128 g = _mm_cmpgt_ps( v, d ); //check for possible off by one error
__m128 h = _mm_cvtepi32_ps( *(__m128i*) &g ); //convert positive check result to -1.0, negative to 0.0
__m128 t = _mm_sub_ps( d, h ); //add in the error if there is one

 

//Select between output result and input value based on v >= 2**23
v = _mm_and_ps( v, largeMaskE );
t = _mm_andnot_ps( largeMaskE, t );

return _mm_or_ps( t, v );

#endif
 

内容概要:本文系统研究了基于粒子群算法(PSO)的微网优化调度方法,并重点引入需求响应机制以提升微电网运行的经济性与可靠性。研究构建了一个综合考虑风能、光伏、储能、柴油发电机、燃气轮机等多种分布式能源的微电网模型,建立了以最小化系统综合运行成本为目标,涵盖燃料成本、环境污染惩罚、购售电费用及需求响应激励成本的多目标优化模型。文中详细阐述了粒子群算法的数学原理及其在求解此类非线性、多维度、带约束的复杂优化问题中的独特优势,通过Matlab编程实现了完整的算法流程与仿真分析,验证了所提方法在有效降低系统运行成本、平抑负荷波动、提高可再生能源消纳率以及增强微网应对需求侧变化灵活性方面的显著效果。; 适合人群:具备一定电力系统、优化理论基础和Matlab编程能力的高校研究生、从事新能源、智能电网及相关领域研究的科研人员,以及致力于微电网规划与运行优化的工程技术人员。; 使用场景及目标:①用于教学与科研,深入理解微网优化调度的核心挑战、数学建模方法及智能优化算法的应用;②为实际微电网项目的规划设计、运行策略制定提供可靠的算法工具和技术参考;③作为智能优化算法(如PSO)在综合能源系统中成功应用的典型案例,推动先进算法在能源互联网领域的研究与实践。; 阅读建议:建议读者在学习过程中,务必结合文中的Matlab代码进行上机实践,重点关注目标函数的设计逻辑、各类物理约束(如功率平衡、设备出力、储能容量等)的数学表达,以及PSO算法中关键参数(如种群规模、惯性权重、学习因子)的设置与调优技巧,可通过改变参数或扩展模型(如加入更多能源形式或转化为多目标优化)来加深理解和掌握。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值