我的一個內核比較了每個值大於標量的double 1D數組。該內核填充比較結果的布爾數組。什麼是TRUE(240)布爾值
生成的布爾向量應該提供TRUE或FALSE項中的每個元素比較結果。
但我發現設備存儲了其他類型的TRUE值,這些值使我的代碼崩潰。我可以找到TRUE(63),TRUE(66),TRUE(240)等。這是什麼?
當標量等於零時,請在兩個不同的時間下載相同陣列的圖像。
1D陣列包含100個元素,並且只有第一元素等於1,其餘爲等於零。預期的結果當然是: {TRUE,FALSE,FALSE,FALSE,... FALSE}
我發現了另一個問題,提示使用32位整數(「理想情況下,你應該瞄準使用32位型「),但我不知道如何做到這一點:
這是我的內核:
__global__ void _vecCmpGreat(bool *output, double *input1, double input2) {
unsigned int i = blockDim.x * blockIdx.x + threadIdx.x;
if (i < samples)
output[i] = input1[i] > input2;
}
我的代碼,計算比較結果的部分是以下。當發現從「FALSE」到「TRUE」的布爾數組時,它應該推回到std :: vector結果中。
unsigned int j;
for (unsigned int i = 0; i < samples - 1; i++) {
j = samples - i - 1;
if (r[samples - 1]) {
result.push_back(samples - i - 1);
break;
}
else {
if (r[j] == false && r[j - 1] == true) {
result.push_back(j);
break;
}
}
任何意見將不勝感激。
非常感謝#(Martin Bonner)。解決方案非常簡單。 – Vitrion