| 25 | |
| 26 | template<typename T> |
| 27 | int checkNonZero(T* A, int size) |
| 28 | { |
| 29 | T* h_A = (T*)malloc(sizeof(T) * size); |
| 30 | cudaMemcpy(h_A, A, sizeof(T) * size, cudaMemcpyDeviceToHost); |
| 31 | int noneZeroNum = 0; |
| 32 | for (int ii = 0; ii < size; ii++) { |
| 33 | if (fabs(float(h_A[ii]) - 0.0f) > 0.0001f) { |
| 34 | noneZeroNum += 1; |
| 35 | } |
| 36 | } |
| 37 | free(h_A); |
| 38 | return noneZeroNum; |
| 39 | } |
| 40 | |
| 41 | template<typename TA, typename TB> |
| 42 | void checkMat(TA* A, TB* B, int size, const char* mark, float threshold) |