https://github.com/rickcontreras/matrix-multiplication-ipc
Efficient matrix multiplication using Inter-Process Communication (IPC). This project combines the power of C, Go, and Python to optimize computational performance. Ideal for developers and researchers working on parallel processing, distributed systems, and high-performance computing.
https://github.com/rickcontreras/matrix-multiplication-ipc
c c-language distributed-systems docker go go-language high-performance-computing inter-process-communication makefile matrix-multiplication parallel-computing python shell-scripting
Last synced: 12 months ago
JSON representation
Efficient matrix multiplication using Inter-Process Communication (IPC). This project combines the power of C, Go, and Python to optimize computational performance. Ideal for developers and researchers working on parallel processing, distributed systems, and high-performance computing.
- Host: GitHub
- URL: https://github.com/rickcontreras/matrix-multiplication-ipc
- Owner: RickContreras
- License: mit
- Created: 2025-05-10T14:35:50.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-05-12T05:06:37.000Z (about 1 year ago)
- Last Synced: 2025-06-01T16:19:12.681Z (about 1 year ago)
- Topics: c, c-language, distributed-systems, docker, go, go-language, high-performance-computing, inter-process-communication, makefile, matrix-multiplication, parallel-computing, python, shell-scripting
- Language: C
- Homepage:
- Size: 1.91 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 🚀 Multiplicación de Matrices Paralela usando Procesos
[](https://opensource.org/licenses/MIT)








Este proyecto implementa la **multiplicación de matrices** utilizando procesos para paralelizar el cálculo, comparando el rendimiento entre implementaciones secuenciales y paralelas mediante mecanismos de comunicación entre procesos (IPC).
---
## ⚡ Abrir en Codespaces
Si deseas trabajar en este proyecto directamente en un entorno preconfigurado, haz clic en el siguiente botón para abrirlo en **GitHub Codespaces**:
[](https://github.com/codespaces/new?template_repository=RickContreras/matrix-multiplication-ipc)
---
## 📖 Descripción
La multiplicación de matrices es una operación computacionalmente intensiva que puede beneficiarse significativamente de la paralelización. Este proyecto divide la operación entre múltiples procesos usando:
- **`fork()` en C** para paralelismo a nivel de procesos.
- **Técnicas de paralelismo en Go** para una comparación directa de rendimiento.
---
## 📂 Estructura del Repositorio
```plaintext
matrix-multiplication-ipc/
├── src/ # Código fuente principal
│ ├── c/ # Implementación en C
│ └── go/ # Implementación en Go
├── utils/ # Utilidades y scripts
├── docs/ # Documentación y reporte
│ └── imgs/ # Gráficos generados
├── data/ # Matrices de entrada/salida
│ ├── input/
│ └── output/
├── tests/ # Casos de prueba
│ └── test_matrices/
├── .devcontainer/ # Configuración para Codespaces y devcontainer
├── Makefile # Archivo para automatización de tareas
└── README.md # Este archivo
```
---
## 🛠️ Requisitos
- **GCC** 9.4.0
- **Python** 3.10.12
- **Go** 1.18.1
- Sistemas **Unix/Linux** o **WSL** para Windows
---
## ⚙️ Configuración Inicial
### 🔹 Crear y Configurar el Entorno de trabajo
1. **Crear y activar el entorno virtual**:
```bash
make venv
source venv/bin/activate
```
2. **Instalar las dependencias necesarias**:
```bash
make install_deps
```
3. **Compila todos los archivos importantes**:
```bash
make
```
---
## 🚀 Ejecución del Programa
### 🔹 Para la Implementación en C
1. **Compila el código**:
```bash
make c_implementation
```
2. **Ejecuta el programa**:
```bash
make run_c
```
> **🔔 Alternativa**:
> ```bash
> ./bin/matrix_mul data/input/A.txt data/input/B.txt 4 data/output/C.txt
> ```
---
### 🔹 Para la Implementación en Go
#### Opción 1: Ejecutar directamente
```bash
go run src/go/matrix_mul.go data/input/A.txt data/input/B.txt 4 data/output/C.txt
```
#### Opción 2: Compilar y ejecutar
1. **Compila el código**:
```bash
make go_implementation
```
2. **Ejecuta el programa**:
```bash
make run_go
```
> **🔔 Alternativa**:
> ```bash
> ./bin/matrix_mul_go data/input/A.txt data/input/B.txt 4 data/output/C.txt
> ```
---
## 🧪 Generación de Matrices de Prueba
1. **Compila el script de generación de matrices**:
```bash
gcc -o bin/gen_matrix utils/gen_matrix.c
```
2. **Genera una matriz de prueba**:
```bash
./bin/gen_matrix matrix.txt 10 8 100
```
- `matrix.txt`: Archivo de salida que se guardará en `data/generated`.
- `10`: Número de filas de la matriz.
- `8`: Número de columnas de la matriz.
- `100`: Valor máximo para los elementos de la matriz.
---
## 📊 Pruebas de Rendimiento
1. **Ejecuta las pruebas de rendimiento**:
```bash
make performance
```
#### Alternativa
```bash
./utils/performance_test.sh
```
2. **Genera gráficos a partir de los resultados**:
```bash
make graphs
```
> **⚠️ Importante**:
> * Debes tener instalado los requirements.txt en local o en tu venv.
---
## 🧹 Limpieza
- **Eliminar archivos binarios**:
```bash
make clean
```
- **Eliminar todos los datos generados**:
```bash
make clean_all
```
---
## 📋 Casos de Prueba
Los casos de prueba se encuentran en la carpeta `tests/test_matrices`. Puedes validar los resultados generados comparándolos con los resultados esperados:
```bash
make validate_results
```
---
## 📜 Licencia
Este proyecto está bajo la licencia **MIT**. Consulta el archivo `LICENSE` para más detalles.
---
## 👨💻 Autor
Desarrollado por RickContreras. Si tienes preguntas o sugerencias, no dudes en contactarme.
---
## 🌟 ¡Contribuye!
¿Tienes ideas para mejorar este proyecto? ¡Las contribuciones son bienvenidas! Por favor, abre un **issue** o envía un **pull request**.