我有以下需要优化的代码(稍后通过 SYCL 或 ArrayFire 移植到 GPU):
struct Item {
float value;
int f;
float Func(float);
float Func1(float);
float Func2(float);
float Func3(float);
};
float Item::Func(float v) {
value = v;
switch(f) {
case 1: return Func1(v);
case 2: return Func2(v);
case 3: return Func3(v);
}
return Func1(v);
}
std::vector<Item> items;
AFAIK,在 GPU 上,函数指针方法不适合。
在 CPU 和/或 GPU 上是否有比这个更高效的方法?