展开因子 4 跑几轮

👁️ 2 人浏览 💬 0 人评论 ❤️ 添加收藏

按模型,循环跑 10 次、展开因子 4,unroll_count(10, 4) 交回几轮?

循环优化模型:is_invariant(用到的变量, 循环变量)=式子不含循环变量就是循环不变、可外提;hoistable 数能外提的条数;循环跑 n 次、展开因子 factor,unroll_count=n//factor、remainder=n%factor。

def is_invariant(expr_vars, loop_var):
    """一条式子用到的变量里不含循环变量 -> 它是「循环不变」的,可提到循环外。"""
    return loop_var not in expr_vars


def hoistable(exprs, loop_var):
    """一组式子里,有几条能提到循环外(不含循环变量)。exprs: 每条是它用到的变量列表。"""
    return sum(1 for e in exprs if loop_var not in e)


def unroll_count(n, factor):
    """循环跑 n 次、展开因子 factor:展开后的循环体跑几轮(整除部分)。"""
    return n // factor


def remainder(n, factor):
    """展开后还剩几次收尾(余数)。"""
    return n % factor

print(unroll_count(10, 4))
提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论