【发布时间】:2016-12-20 19:22:29
【问题描述】:
我需要强制 Metal 编译器在我的内核计算函数中展开循环。到目前为止,我尝试将 #pragma unroll(num_times) 放在 for 循环之前,但编译器会忽略该语句。
编译器似乎不会自动展开循环 - 我比较了 1) 代码与 for 循环 2) 相同代码但手动展开循环的执行时间。手动展开的版本快 3 倍。
例如:我想从这里开始:
for (int i=0; i<3; i++) {
do_stuff();
}
到这里:
do_stuff();
do_stuff();
do_stuff();
Metal C++ 语言中是否有类似循环展开的功能?如果是,我怎么可能让编译器知道我想展开循环?
【问题讨论】:
标签: ios kernel metal loop-unrolling