Я знаю, что нет никакого способа использовать классы std, такие как string, vector, map или set в ядре CUDA.Однако без них очень неудобно.Я должен написать много кода в ядре CUDA, поэтому я хотел бы использовать как минимум строки и векторы.Я не говорю о чем-то вроде тяги.Я хочу иметь возможность написать что-то вроде этого:
__global__ void kernel()
{
cuda_vector<int> a;
for(int i=0;i<10;i++)
a.push_back(i);
}
int main()
{
kernel<<<1,512>>>();
return 0;
}
Это должно создать 512 потоков, и в каждом потоке я хочу создать класс cuda_vector и использовать его как std :: vector.Я не нашел никакого решения в Интернете, и я начал писать свой собственный класс.Каждая функция этого класса определена как функция "__ host __" и "__ device __", так что я могу использовать ее как на CPU, так и на GPU.Теоретически, это может быть реализовано, но только на архитектуре Fermi.Потому что нам нужно динамически распределять память.У меня GTX 580 и я начал писать свой собственный вектор.Но это утомительно и требует много времени.Есть ли какая-либо реализация, которую я могу использовать?Я не могу поверить, что их нет.Многие ли разработчики программного обеспечения пишут на CUDA без него?И никто не пытался написать свою версию?