diff --git a/build/cuda.cu.o b/build/cuda.cu.o index 8bbf51d..004bd90 100644 Binary files a/build/cuda.cu.o and b/build/cuda.cu.o differ diff --git a/build/libtensor.so b/build/libtensor.so index 8dc7cf6..9c8edfd 100755 Binary files a/build/libtensor.so and b/build/libtensor.so differ diff --git a/build/tensor.o b/build/tensor.o index 13c474d..9a67429 100644 Binary files a/build/tensor.o and b/build/tensor.o differ diff --git a/norch/csrc/cuda.cu b/norch/csrc/cuda.cu index c24e48a..c757724 100644 --- a/norch/csrc/cuda.cu +++ b/norch/csrc/cuda.cu @@ -90,6 +90,8 @@ __global__ void sum_tensor_cuda_kernel(float* data, float* result_data) { __host__ void sum_tensor_cuda(Tensor* tensor, float* result_data) { + cudaMemcpy(result_data, tensor->data, tensor->size * sizeof(float), cudaMemcpyHostToDevice); + int number_of_blocks = (int)ceil(tensor->size / THREADS_PER_BLOCK); sum_tensor_cuda_kernel<<>>(tensor->data, result_data); sum_tensor_cuda_kernel<<<1, THREADS_PER_BLOCK>>>(result_data, result_data); diff --git a/norch/csrc/tensor.cpp b/norch/csrc/tensor.cpp index 22391ee..c361161 100644 --- a/norch/csrc/tensor.cpp +++ b/norch/csrc/tensor.cpp @@ -10,7 +10,7 @@ extern "C" { Tensor* create_tensor(float* data, int* shape, int ndim, char* device) { - + printf("Creating tensor\n"); Tensor* tensor = (Tensor*)malloc(sizeof(Tensor)); if (tensor == NULL) { @@ -172,7 +172,6 @@ extern "C" { float* result_data; cudaMalloc((void**)&result_data, tensor->size * sizeof(float)); - result_data[0] = 0; sum_tensor_cuda(tensor, result_data); return create_tensor(result_data, shape, ndim, device); } diff --git a/test.py b/test.py index 8cff585..7efccf6 100644 --- a/test.py +++ b/test.py @@ -27,33 +27,35 @@ if __name__ == "__main__": #d = b-c - a = norch.Tensor([[1, 2], [1, 2], [1, 2]], requires_grad=True)#.to("cuda") + """a = norch.Tensor([[1, 2], [1, 2], [1, 2]], requires_grad=True)#.to("cuda") b = norch.Tensor([[1, 400, 3], [1, 2, 3]], requires_grad=True) c = (a@b).reshape([9]) d = c.sum() d.backward() - print(a.grad) + print(a.grad)""" """#print(a) - N = 1000 - a = Tensor([[random.uniform(0, 1) for _ in range(N)] for _ in range(N)]) - b = Tensor([[random.uniform(0, 1) for _ in range(N)] for _ in range(N)]) + """ + N = 10 + a = norch.Tensor([[1 for _ in range(N)] for _ in range(N)]) + #b = norch.Tensor([[random.uniform(0, 1) for _ in range(N)] for _ in range(N)]) #b = Tensor([[1, 2, 3], [1, 2, 3], [1, 2, 3]]) #a = Tensor([[[[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]], [[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]], [[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]], [[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]]]) #b = Tensor([[[[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]], [[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]], [[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]], [[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]]]) ini = time.time() - c = a + b + c = a.sum() print("\n#####2######") fim = time.time() print(fim-ini) - + print(c) print("\n\n") + """ a = [[random.uniform(0, 1) for _ in range(N)] for _ in range(N)] b = [[random.uniform(0, 1) for _ in range(N)] for _ in range(N)]