0
我想使用cuda 6進行布爾乘法運算,但我無法以正確的方式進行。 B是一個布爾對稱矩陣,我必須做B^n布爾乘法。布爾乘法
我的C++代碼:
for (m=0; m<dimension; m++) {
for (n=0; n<dimension; n++) {
for (k=0; k<dimension; k++) {
temp=mat[m*dimension+k] && mat[k*dimension+n];
B[m*dimension+n]= B[m*dimension+n] || temp;
}
}
}
我發現了一段代碼,但我不能使其適用於我的情況。
__global__ void gpuMM(float *A, float *B, float *C, int N)
{
int row = blockIdx.y*blockDim.y + threadIdx.y;
int col = blockIdx.x*blockDim.x + threadIdx.x;
float sum = 0.f;
for (int n = 0; n < N; ++n)
sum += A[row*N+n]*B[n*N+col];
C[row*N+col] = sum;
}
雖然它不會是一個有效的matrixMul,但它是直截了當的。將代碼的最內層循環代替內核中的循環。用'temp','m','n'和'dimension'替換'sum','row','col'和'N'。 – ahmad
你在做什麼是常規乘法'B = A *轉置(A)'。 '&'等同於'*',而'||'等同於'+'。只需使用Cublas來乘以這兩個矩陣。如果A是布爾型,則首先轉換爲浮點型。 –