diff --git a/python/__pycache__/tensor.cpython-38.pyc b/python/__pycache__/tensor.cpython-38.pyc deleted file mode 100644 index eedd4bd..0000000 Binary files a/python/__pycache__/tensor.cpython-38.pyc and /dev/null differ diff --git a/python/__pycache__/tensor.cpython-39.pyc b/python/__pycache__/tensor.cpython-39.pyc deleted file mode 100644 index 16c0798..0000000 Binary files a/python/__pycache__/tensor.cpython-39.pyc and /dev/null differ diff --git a/python/tensor.py b/python/tensor.py deleted file mode 100644 index 7e88fcd..0000000 --- a/python/tensor.py +++ /dev/null @@ -1,61 +0,0 @@ -import ctypes - -class CTensor(ctypes.Structure): - _fields_ = [ - ('data', ctypes.POINTER(ctypes.c_float)), - ('strides', ctypes.POINTER(ctypes.c_int)), - ('shape', ctypes.POINTER(ctypes.c_int)), - ('ndim', ctypes.c_int) - ] - -class Tensor: - def __init__(self, data): - data, shape = self.flatten(data) - print(data, shape) - self.lib = ctypes.CDLL("../build/libtensor.so") # Adjust the path to the shared library - self.data = (ctypes.c_float * len(data))(*data) - self.shape = shape - self.ndim = len(shape) - - self.lib.create_tensor.argtypes = [ctypes.POINTER(ctypes.c_float), ctypes.POINTER(ctypes.c_int), ctypes.c_int] - self.lib.create_tensor.restype = ctypes.POINTER(CTensor) - - self.tensor = self.lib.create_tensor( - self.data, - (ctypes.c_int * len(shape))(*shape), - ctypes.c_int(len(shape)) - ) - - def flatten(self, nested_list): - flat_data = [] - shape = [len(nested_list), len(nested_list[0])] - for sublist in nested_list: - for item in sublist: - flat_data.append(item) - return flat_data, shape - - def __getitem__(self, indices): - if len(indices) != self.ndim: - raise ValueError("Number of indices must match the number of dimensions") - - self.lib.get_item.argtypes = [ctypes.POINTER(CTensor), ctypes.POINTER(ctypes.c_int)] - self.lib.get_item.restype = ctypes.c_float - - indices = (ctypes.c_int * len(indices))(*indices) - value = self.lib.get_item(self.tensor, indices) - - return value - - def shape(self): - return f"Tensor(shape={self.shape})" - - def __str__(self): - result = "" - for i in range(self.shape[0]): - for j in range(self.shape[1]): - result += str(self[i, j]) + " " - result += "\n" - return result.strip() - - def __repr__(self): - return self.__str__() diff --git a/python/tests.ipynb b/python/tests.ipynb deleted file mode 100644 index ca51d7d..0000000 --- a/python/tests.ipynb +++ /dev/null @@ -1,98 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[0, 1, 2, 0, 2, 2] [2, 3, 3]\n", - "Tensor shape: [2, 3, 3]\n", - "Tensor created successfully\n", - "Tensor information:\n", - "Number of dimensions: 3\n", - "Shape: [2, 3, 3]\n", - "Data:\n", - "[0.00, 1.00, 2.00, 0.00, 2.00, 2.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00]\n" - ] - } - ], - "source": [ - "from tensor import Tensor\n", - "\n", - "data = [[0, 1, 2], [0, 2, 2], [0, 1, 2]]\n", - "tensor = Tensor(data)\n", - "print(\"Tensor shape:\", tensor.shape)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Tensor created successfully\n", - "Tensor information:\n", - "Number of dimensions: 2\n", - "Shape: [3, 3]\n", - "Data:\n", - "[0.10, 0.20, 0.30, 0.40, 0.50, 0.60, 0.70, 0.80, 0.90]\n" - ] - }, - { - "data": { - "text/plain": [ - "0.10000000149011612 0.20000000298023224 0.30000001192092896 \n", - "0.4000000059604645 0.5 0.6000000238418579 \n", - "0.699999988079071 0.800000011920929 0.8999999761581421" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "\n", - "data = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]\n", - "shape = [3, 3]\n", - "tensor = Tensor(data, shape)\n", - "tensor\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.5" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/src/tensor.cpp b/src/tensor.cpp deleted file mode 100644 index bcdbcb9..0000000 --- a/src/tensor.cpp +++ /dev/null @@ -1,67 +0,0 @@ -#include -#include -#include "tensor.h" - -extern "C" { - - Tensor *create_tensor(float *data, int *shape, int ndim) { - Tensor *tensor = (Tensor *)malloc(sizeof(Tensor)); - if (tensor == NULL) { - fprintf(stderr, "Memory allocation failed\n"); - exit(1); - } - tensor->data = data; - tensor->shape = shape; - tensor->ndim = ndim; - - tensor->strides = (int *)malloc(ndim * sizeof(int)); - if (tensor->strides == NULL) { - fprintf(stderr, "Memory allocation failed\n"); - exit(1); - } - int stride = 1; - for (int i = ndim - 1; i >= 0; i--) { - tensor->strides[i] = stride; - stride *= shape[i]; - } - - printf("Tensor created successfully\n"); - printf("Tensor information:\n"); - printf("Number of dimensions: %d\n", tensor->ndim); - printf("Shape: ["); - for (int i = 0; i < ndim; i++) { - printf("%d", tensor->shape[i]); - if (i < ndim - 1) { - printf(", "); - } - } - printf("]\n"); - - printf("Data:\n["); - for (int i = 0; i < stride; i++) { - printf("%.2f", tensor->data[i]); - if (i < stride - 1) { - printf(", "); - } - } - printf("]\n"); - - - return tensor; - } - - float get_item(Tensor *tensor, int *indices) { - int index = 0; - for (int i = 0; i < tensor->ndim; i++) { - index += indices[i] * tensor->strides[i]; - } - return tensor->data[index]; - } - - void free_tensor(Tensor *tensor) { - free(tensor->data); - free(tensor->shape); - free(tensor->strides); - free(tensor); - } -} diff --git a/src/tensor.h b/src/tensor.h deleted file mode 100644 index f93b22a..0000000 --- a/src/tensor.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef TENSOR_H -#define TENSOR_H - -typedef struct { - float *data; - int *strides; - int *shape; - int ndim; -} Tensor; - -extern "C" { - Tensor *create_tensor(float *data, int *shape, int ndim); - float get_item(Tensor *tensor, int *indices); - void delete_tensor(Tensor* tensor); -} - -#endif /* TENSOR_H */ diff --git a/src/tensor.o b/src/tensor.o deleted file mode 100644 index 237b41a..0000000 Binary files a/src/tensor.o and /dev/null differ