在項目代碼中為了避免條件分支,需要把bool變成int的形式,然後通過向量運算的形式和單個單個的形式,其結果卻是不同,向量的方式為 ,而單個的轉換則為 有如下kernel代碼: 列印結果顯示:TMP2列印出來的都是 1或0,而tmp3列印出來的則都是1或者0。 謹記: 若要萬無一失,確保準確,則應該 ...
在項目代碼中為了避免條件分支,需要把bool變成int的形式,然後通過向量運算的形式和單個單個的形式,其結果卻是不同,向量的方式為(-1, 0)
,而單個的轉換則為(1, 0)
有如下kernel代碼:
int2 interxy_i; //輸入
int2 TMP2 =(interxy_i & 0x01) == 1;
printf("1: interxy_i x%d y%d, tmp2:%d %d \n", interxy_i.x, interxy_i.y, TMP2.x, TMP2.y);
int2 tmp3;
tmp3.x = (interxy_i.x & 0x01) == 1;
tmp3.y = (interxy_i.y & 0x01) == 1;
printf("2: interxy_i x%d y%d, tmp3:%d %d \n", interxy_i.x, interxy_i.y, tmp3.x, tmp3.y);
列印結果顯示:TMP2列印出來的都是-1或0,而tmp3列印出來的則都是1或者0。
謹記:若要萬無一失,確保準確,則應該加上abs函數。