Fix sum cuda reduce
This commit is contained in:
parent
6b1ea4be88
commit
7fb2ee9072
6 changed files with 12 additions and 9 deletions
BIN
build/cuda.cu.o
BIN
build/cuda.cu.o
Binary file not shown.
Binary file not shown.
BIN
build/tensor.o
BIN
build/tensor.o
Binary file not shown.
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
16
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)]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue