Fix sum cuda reduce

This commit is contained in:
lucasdelimanogueira 2024-05-02 13:22:52 -03:00
parent 6b1ea4be88
commit 7fb2ee9072
6 changed files with 12 additions and 9 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -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<<<number_of_blocks, THREADS_PER_BLOCK>>>(tensor->data, result_data);
sum_tensor_cuda_kernel<<<1, THREADS_PER_BLOCK>>>(result_data, result_data);

View file

@ -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);
}

16
test.py
View file

@ -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)]