Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Materia: Redes B
Grupo: 2821-1
Ventajas
- Son fáciles de crear (depende del lenguaje).
Desventajas
- El tiempo para crear un hilo en general es tardado, ya que al ser un proceso
ligero, se le debe asignar recursos en un programa, lo cual puede llegar a tardar
bastante.
- Una vez que se usa un hilo, no se puede volver a utilizar, lo cual hace que
tengamos que volver a instanciar y asignar recursos a un hilo nuevo.
En software que lleve a cabo tareas de forma asíncrona, sin depender del hilo principal
de ese programa. Yo de forma personal utilicé hilos para mi editor de grafos al obtener
diferente información de dicho grafo. Por ejemplo: Un hilo obtenía si un grafo era
dirigido, otro si era bipartita y otro si tenía orejas. Eso me permitió no tener que realizar
todo desde el hilo principal del programa, ya que cada una de esas acciones aunque
dependen del grafo, eran tareas independientes, por lo que cada una se pudo llevar a
cabo de forma concurrente.
Clúster (MPI)
Ventajas
- El número de procesos se indica al inicio del programa, lo cual permite no
sobrecargar el código con instrucciones de creación / bifurcación de procesos
hijos.
- Existe intercomunicación entre los procesos, lo cual permite que los procesos
envíen / reciban información de otros procesos.
- Permite distribuir / organizar de diferentes modos las tareas que cada proceso
debe llevar a cabo, de forma que la distribución y carga de trabajo en el
programa sea más equitativa. Esto se lleva a cabo mediante el uso de diferentes
funciones incluidas en MPI.
Desventajas
- Al igual que un hilo, el generar los procesos puede llegar a ser tardado.
- Se deben liberar los recursos que ocupa cada proceso al finalizar su ejecución.
- Casi siempre al último proceso le toca una carga de trabajo mayor a los otros.
- Para enviar una estructura de datos a otro proceso, esta debe de ser traducida
por determinadas funciones en MPI, lo cual implica que nuestro código en
determinado punto pueda llegar a ser muy extenso.
Otro uso por ejemplo sería el crear una red interna de tres computadoras en la cual,
mediante esa red se le asigna a cada una cierta cantidad de trabajo, lo cual permite no
solo emplear los recursos de un solo computador, sino crear un GRID.
Cuda / OpenGL
Ventajas
- El código de nuestro programa puede distribuirse de modo que haya trabajo por
parte del cpu, cpu y gpu o solo la gpu. Esto mediante el uso de kernels.
Desventajas
- Se debe de asignar memoria a nuestras variables al momento de emplear
CUDA.
- Al igual que cualquier otro recurso computacional, el número de hilos por bloque
es finito.
Conclusiones personales
A lo largo de este curso no solo aprendí a emplear tecnologías de cómputo paralelo,
también aprendí cómo resolver un problema aplicando esta metodología, lo cual nos
permite como programadores proponer soluciones que pueden proveernos mejores
resultados (cuando aplique).
Bibliografía
https://developer.nvidia.com/cuda-zone
https://www.open-mpi.org/doc/
http://www.rocksclusters.org/
https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html
https://docs.oracle.com/javase/7/docs/api/javax/swing/SwingWorker.html
https://docs.microsoft.com/en-us/dotnet/api/system.threading.thread?view=net-5.0
https://docs.microsoft.com/en-us/dotnet/api/system.componentmodel.backgroundworker
?view=net-5.0
Presentaciones del profesor