0
Мне нужна функция в cuda, которая получает массив символов и если они совпадают, функция возвращает значение, но когда я проверяю этот код, всегда возвращайте 0, как ни одно из этих условий не соответствует. до сих пор я пробовал это:Как сравнить массивы char в CUDA C++?
__device__ float operate_1(float num, char func[]) {
if(func[0] == 's' && func[1] == 'i' && func[2] == 'n' )
return sinf(num * PI/180.0);
else if(func[0] == 'c' && func[1] == 'o' && func[2] == 's' )
return cosf(num * PI/180.0);
else if(func[0] == 'l' && func[1] == 'o' && func[2] == 'g' )
return logf(num);
else if(func[0] == 'e')
return expf (num);
return 0; }
//evaluates an operator.
и этот код тоже, но не работает как предыдущий.
__device__ float operate_1(float num, char func[]) {
if(func == "sin")
return sinf(num * PI/180.0);
else if(func == "cos")
return cosf(num * PI/180.0);
else if(func == "log")
return logf(num);
else if(func == "e")
return expf (num);
return -0; }
//evaluates an operator.
что я могу сделать?
Это выглядит так - вы разборе кода на стороне графического процессора CUDA, если это так, почему? Первый пример должен работать, если вы запомнили, что вы загружаете массив char в cuda-mem. –
Я разбираю этот путь, потому что у меня есть математическая функция, сохраненная в структуре (у меня нет простой задачи оценки проблемы, как простая сумма или умножение), но мне нужно оценить много разных значений для ускорения, чем процессор может делать. –
О, неважно, да, первый код работает, я забыл, что у меня была другая функция, которая проверяет, является ли оператор или функция. Спасибо! Но на самом деле это должен быть другой способ, который легче сравнивать, если у меня действительно большой массив? –