在 CPU/GPU 上优化运行时的成员函数选择

Optimize member function selection at runtime on CPU/GPU

我有以下代码需要优化(稍后通过 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 and/or GPU 上是否有比这个更高效的方法?

有一篇博客 post 介绍了如何使用 SYCL on this website 实现函数指针的替代方案。该解决方案改为使用模板功能和功能对象。我相信这个历史是大多数硬件不支持跳转到计算地址。