我需要强制Metal编译器在我的内核计算函数中展开循环。目前我尝试在for循环之前放置#pragma unroll(num_times)语句,但是编译器忽略了这个语句。
看来编译器不会自动展开循环 - 我比较了执行时间:1)带有for循环的代码,2)相同的代码但手动展开循环的版本。手动展开的版本速度快了3倍。
例如:我想从这个开始:
Metal C++语言中是否有类似于循环展开的东西?如果有,我该如何让编译器知道我想要展开一个循环?
看来编译器不会自动展开循环 - 我比较了执行时间:1)带有for循环的代码,2)相同的代码但手动展开循环的版本。手动展开的版本速度快了3倍。
例如:我想从这个开始:
for (int i=0; i<3; i++) {
do_stuff();
}
转换为:
do_stuff();
do_stuff();
do_stuff();
Metal C++语言中是否有类似于循环展开的东西?如果有,我该如何让编译器知道我想要展开一个循环?