我有:
SHELL:=/bin/bash -O globstar
list:
@echo Flac: $(shell ls flac/**/*.flac)
@echo MP3: $(shell ls mp3/**/*.mp3)
现在,如果我这样做:
void foo() restrict(amp)
{
}
它会在加速器上运行吗?如果不是,如何在不使用void main()
{
foo();
}
循环的情况下在加速器中运行foo()
?
答案 0 :(得分:1)
这不是真正合法的代码。 foo()
标记为restrict(amp)
,这意味着它只能在C ++ AMP内核中运行。标记为restrict(amp)
的函数只能通过加速运行的代码调用,换言之,也可以从parallel_for_each
lambda restrict(amp)
void foo() restrict(amp)
{
}
void main()
{
parallel_for_each(e, [=](index<2> idx) restrict(amp)
{
foo()
});
}
如果您将foo()
标记为restrict(amp,cpu)
,那么您也可以从CPU调用它,前提是foo()
内的代码符合AMP和CPU代码的要求。