0
我需要一個cuda函數來接收一個字符數組,如果它們匹配,函數會返回一個值,但是當我測試這段代碼時,總是返回0,就像這些條件都不匹配一樣。到目前爲止,我試過這個:如何比較CUDA C++中char的數組?
__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的GPU方面的代碼,如果是這樣,爲什麼?第一個例子應該可以工作,如果你已經記得把你的char數組上傳到cuda-mem。 –
我解析這種方式,因爲我有一個數學函數保存在一個結構(我沒有問題評估簡單的操作,像一個簡單的總和或乘法),但我需要評估許多不同的值ecuation比cpu更快做。 –
哦,沒關係,是的第一個代碼工作,我忘了我有另一個函數,檢查是否是一個操作符或函數。謝謝! 但實際上它應該是另一種更容易比較的方式,如果我有一個非常大的陣列呢? K&R中的 –