diff --git a/.obsidian/community-plugins.json b/.obsidian/community-plugins.json
index a7f5270..27e8c90 100644
--- a/.obsidian/community-plugins.json
+++ b/.obsidian/community-plugins.json
@@ -5,6 +5,5 @@
"iconic",
"obsidian-banners",
"obsidian-enhancing-export",
- "obsidian-latex-suite",
"obsidian-git"
]
\ No newline at end of file
diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json
index b8bdfd0..d90b26f 100644
--- a/.obsidian/workspace.json
+++ b/.obsidian/workspace.json
@@ -11,14 +11,12 @@
"id": "d8a559569207f8b1",
"type": "leaf",
"state": {
- "type": "markdown",
+ "type": "image",
"state": {
- "file": "TERCERO/SS/SS 24-25.md",
- "mode": "source",
- "source": false
+ "file": "TERCERO/SPD/images/Pasted image 20241022150214.png"
},
- "icon": "lucide-file",
- "title": "SS 24-25"
+ "icon": "lucide-image",
+ "title": "Pasted image 20241022150214"
}
}
]
@@ -77,8 +75,7 @@
}
],
"direction": "horizontal",
- "width": 300,
- "collapsed": true
+ "width": 300
},
"right": {
"id": "44cf06183e1c1c7d",
@@ -175,23 +172,23 @@
"obsidian-git:Open Git source control": false
}
},
- "active": "d8a559569207f8b1",
+ "active": "a4eac8e6613b153b",
"lastOpenFiles": [
- "Pasted image 20241017113556.png",
- "Pasted image 20241017113522.png",
- "TERCERO/SS/SS 24-25.md",
- "Pasted image 20241017113508.png",
- "Pasted image 20241017113506.png",
- "Pasted image 20241017113505.png",
- "TERCERO/SS/images/Pasted image 20241017113303.png",
- "TERCERO/SS/images/Pasted image 20241017112904.png",
+ "TERCERO/SPD/P4_SPD.md",
+ "TERCERO/SPD/images/Pasted image 20241022150214.png",
+ "TERCERO/SPD/images/Pasted image 20241022144832.png",
+ "TERCERO/SPD/images/Pasted image 20241022144429.png",
"TERCERO/SPD/Teoría_2425.md",
- "TERCERO/ATR1/images/Pasted image 20241014101113.png",
- "TERCERO/ATR1/images/Pasted image 20241014100406.png",
- "TERCERO/ATR1/images/Pasted image 20241014100308.png",
- "TERCERO/ATR1/images/Pasted image 20241014092122.png",
- "TERCERO/ATR1/Teoría_2425.md",
+ "TERCERO/SPD/images/Pasted image 20241022134454.png",
+ "Imagen de WhatsApp 2024-10-22 a las 11.43.21_270060da.jpg",
+ "TERCERO/IA/images/tic-tac-toe.gif",
"TERCERO/IA/Teoría_2425.md",
+ "TERCERO/IA/images/mcts.gif",
+ "TERCERO/IA/images/mcts.png",
+ "TERCERO/IA/images/minimax-algorithm-animation.gif",
+ "TERCERO/SS/images/Pasted image 20241017113556.png",
+ "TERCERO/SS/SS 24-25.md",
+ "TERCERO/ATR1/Teoría_2425.md",
"TERCERO/SS/SS Lab.md",
"SEGUNDO/ADDA/Teoría_2324.md",
"TERCERO/IA/Apuntes Julia.md",
@@ -222,7 +219,6 @@
"SEGUNDO/SO/Untitled.md",
"SEGUNDO/SO/Sin título.md",
"SEGUNDO/SO/Sin título.canvas",
- "SEGUNDO/SO/Untitled 2.md",
- "SEGUNDO/SO/Untitled 1.md"
+ "SEGUNDO/SO/Untitled 2.md"
]
}
\ No newline at end of file
diff --git a/TERCERO/IA/Teoría_2425.md b/TERCERO/IA/Teoría_2425.md
index f4fe9ca..5d8bef4 100644
--- a/TERCERO/IA/Teoría_2425.md
+++ b/TERCERO/IA/Teoría_2425.md
@@ -324,4 +324,48 @@ y una velocidad $v_{i}$.
2. Cada partícula es atraída hacia la mejor localización que ha sido encontrada **globalmente**: $x^{gb}$
![[Pasted image 20241011121847.png|400]]
-La fuerza con que las partículas son empujadas a cada dirección se basa en la atracción a $x_{i}^{pb}$ y $x^{gb}$.
\ No newline at end of file
+La fuerza con que las partículas son empujadas a cada dirección se basa en la atracción a $x_{i}^{pb}$ y $x^{gb}$.
+# TEMA 5: Búsquedas con incertidumbre
+### Juego formal
+Un juego formal es una variante de un espacio de estados $(S,P,A,T,g,U)$ donde:
+- $S:$ es el conjunto de estados comenzando por el estado inicial $s_{o}\in S$
+- $P:$ es el conjunto de jugadores $P=\{1,\dots ,n\}$
+- $A:$ son las acciones
+- $T:$ es la función de transferencia $T:S\times A\rightarrow S$, que indica cómo cambian los estados.
+- $g:$ indica si un estado del juego es terminal (goal) $g:S\rightarrow\{true,false\}$
+- $U:$ es una función de utilidad $U:S\times P\rightarrow \rm I\! R$ de estados terminales que indica lo bueno que es un estado terminal para cada jugador.
+## 1. Algoritmo Minimax
+Los pasos son:
+1. Generar el árbol de juego a partir del estado actual hasta llegar a un estado terminal.
+2. Se calculan los valores de la función de evaluación para cada nodo terminal.
+3. Se evalúan los nodos superiores a partir del valor de los inferiores. Según si estos pertenecen a un nivel MAX o MIN, se elegirán los valores mínimos y máximos representando los valores del jugador y del oponente.
+4. Se repite el paso 3 hasta llegar al nodo superior (estado actual).
+5. Se selecciona la jugada-nodo directamente accesible desde el actual que maximiza el valor de la evaluación.
+![[minimax-algorithm-animation.gif]]
+El problema de esta búsqueda es que el número de estados puede ser exponencial. Si $r$ es cuántos hijos tiene cada nodo y $m$ el nivel de profundidad, la complejidad en tiempo es del orden $O(r^m)$ y en espacio del orden $O(rm)$.
+### Poda alfa-beta
+La idea es que cada nodo se analiza teniendo en cuenta el valor que por el momento tiene el nodo y el valor que por el momento tiene su padre, lo que determina en cada momento un intervalo $(\alpha,\beta)$ de posibles valores que podría tomar el nodo. El intervalo tiene un significado depende del nodo:
+- En nodos $MAX$: $\alpha$ es el valor del nodo actual (que tendrá ese valor o superior) y $\beta$ es el valor del padre (que tendrá ese valor o inferior).
+- En nodos $MIN$: $\beta$ es el valor del nodo actual (que tendrá ese valor o inferior) y $\alpha$ es el valor del padre (que tendrá ese valor o superior).
+La poda se produce si en algún momento $\alpha\geq\beta$ y en ese momento ya no se analizan los sucesores restantes.
+## 2. Monte Carlo Tree Search
+### Problema de las tragaperras múltiples
+Hay $K$ máquinas y cada una suelta una "riqueza" cada vez que se juega. Las riquezas son variables aleatorias $\{X_{i,n}:1\leq i\leq K,n~\geq 1\}$, donde $i$ es el índice de cada máquina y la $n$ la tirada.
+
+En estas condiciones una **estrategia (policy)** es un algoritmo $A$ que elige la siguiente máquina basándose en la secuencia de jugadas anteriores y los premios recibidos. Si $T_i(n)$ es el número de veces que el algoritmo $A$ ha seleccionado la máquina $i$ durante las primeras $n$ jugadas, la pérdida por no haber elegido siempre la mejor máquina posible viene dada por:
+$$
+\begin{equation}
+\mu^*n-\sum\limits_{i=1}^K{\mu_{i}E[T_{i}(n)]}
+\end{equation}
+$$
+donde $\mu^*=max_{1\leq i\leq K}\mu_{i}$
+
+Se puede usar una estrategia, llamada **UCB (Upper Confidence Bound)** que construye intervalos estadísticos para cada máquina, que es esencialmente la confianza basada en la media de ganancias dentro de un radio dado por $\sqrt{\frac{2\ln{n}}{T_i(n)}}$.
+### Aplicación a búsquedas
+
+![[mcts.png|600]]
+1. **Selección:** se realiza mientras tengamos las estadísticas necesarias para tratar cada estado alcanzado como un problema de tragaperras múltiples. Comenzando por el raíz se selecciona recursivamente el estado más urgente (de acuerdo a UCB) hasta alcanzar un estado terminal o que no está completamente extendido.
+2. **Expansión:** para cuando ya no se puede aplicar Selección. Se elige aleatoriamente una posición sucesora no visitada y se añade un nuevo estado al árbol de estadísticas.
+3. **Simulación:** partiendo del estado recién añadido se simula una partida completa, ya sea al azar o con una heurística. Se obtiene un valor (premio, recompensa, etc) que determina la utilidad de esa rama para el jugador.
+4. **Actualización:** con el estado final alcanzado de la fase anterior se actualizan las estadísticas de todas las posiciones previas visitadas durante la simulación que se ejecutó a partir del nuevo estado (incluyendo la cuenta de ganancias).
+![[mcts.gif]]
diff --git a/TERCERO/IA/images/mcts.gif b/TERCERO/IA/images/mcts.gif
new file mode 100644
index 0000000..0f3610d
Binary files /dev/null and b/TERCERO/IA/images/mcts.gif differ
diff --git a/TERCERO/IA/images/mcts.png b/TERCERO/IA/images/mcts.png
new file mode 100644
index 0000000..86c2a9f
Binary files /dev/null and b/TERCERO/IA/images/mcts.png differ
diff --git a/TERCERO/IA/images/minimax-algorithm-animation.gif b/TERCERO/IA/images/minimax-algorithm-animation.gif
new file mode 100644
index 0000000..762c165
Binary files /dev/null and b/TERCERO/IA/images/minimax-algorithm-animation.gif differ
diff --git a/TERCERO/IA/images/tic-tac-toe.gif b/TERCERO/IA/images/tic-tac-toe.gif
new file mode 100644
index 0000000..afa2881
Binary files /dev/null and b/TERCERO/IA/images/tic-tac-toe.gif differ
diff --git a/TERCERO/SPD/P4_SPD.md b/TERCERO/SPD/P4_SPD.md
new file mode 100644
index 0000000..cd0fe8c
--- /dev/null
+++ b/TERCERO/SPD/P4_SPD.md
@@ -0,0 +1,86 @@
+# ASM / C
+### a) ¿Qué hace el código?
+Recorre el array `arrayx` (empezando por la posición 1) de tamaño `N_ITER` almacenando en la posición `i - 1` la suma del elemento `i` más el `i + 1` entre la constante `f11`.
+### b) ¿Cómo se puede escribir en alto nivel?
+```C
+#define N_ITER 25
+
+float arrayx[N_ITER];
+const float f11 = 21.0;
+
+for(int i = 1; i < N_ITER; i++)
+{
+ arrayx[i - 1] = ( arrayx[i] + arrayx[i + 1] ) / f11;
+}
+```
+### c) ¿Son paralelizables directamente?
+Sí porque no hay dependencias reales.
+```C
+#define N_ITER 25
+
+float arrayx[N_ITER];
+const float f11 = 21.0;
+
+for(int i = 5; i < N_ITER; i+=5)
+{
+ arrayx[i - 1] = ( arrayx[i] + arrayx[i + 1] ) / f11;
+ arrayx[i - 2] = ( arrayx[i + 1] + arrayx[i + 2] ) / f11;
+ arrayx[i - 3] = ( arrayx[i + 2] + arrayx[i + 3] ) / f11;
+ arrayx[i - 4] = ( arrayx[i + 3] + arrayx[i + 4] ) / f11;
+ arrayx[i - 5] = ( arrayx[i + 4] + arrayx[i + 5] ) / f11;
+}
+```
+### d) Como la BTB predice siempre tomado ¿cuándo acierta?
+La BTB acertará en todas las iteraciones del bucle excepto en la última porque predice salto tomado y no debería tomarlo porque el bucle ha acabado.
+![[Pasted image 20241022134454.png]]
+### e) Si la BTB de un GPP es muy sofisticada ¿acertará en los saltos?
+...
+# Visual Studio
+La función más paralelizable es **`pp4()`** ya que sólo tiene una operación de cada tipo (**`LD, SF, ADDF, SLTI, ADDI`**) y no hay saltos condicionales en el bucle.
+```C
+double pp4()
+{
+ int i;
+ for (i = 0; iMáquina en la que se ejecuta el código real:
+
+![[Pasted image 20241022144429.png|400]]
+
+### Comparativa
+
+| `pp2()` | `nuestro` |
+| -------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| double pp2()
{
int i;
for (i = 0; i a[i] = 3.14 / sqrt(b[i]+c[i]);
}
return a[N_ITER - 1];
} | # define N_ITER 25
float arrayx[N_ITER];
const float f11 = 21.0;
for(int i = 1; i < N_ITER; i++)
{
arrayx[i - 1] = ( arrayx[i] + arrayx[i + 1] ) / f11;
} |
+| Este código tiene:
- 2x LDF
- 1x STF
- 1x ADDF
- 1x DIVF
- 1x constante | Nuestro código tiene:
- 2x LDF
- 1x STF
- 1x ADDF
- 1x DIVF
- 1x constante |
+| | |
+### Duración de CPI en los bucles
+
+| Release | Debug |
+| ------------------------------------ | ------------------------------------ |
+| ![[Pasted image 20241022144832.png]] | ![[Pasted image 20241022150214.png]] |
+
+(Todo para config1 y config2)
+1. CPI (supertomasim)
+2. CPI (reordenado). Cambiar escalaridad (m=1, m=grande).
+3. Identificar CPI_bloq
+5. GFLOPS (o MIPS)
+6. CPI (pp2 pp4) y Ac
+7. Cronograma
\ No newline at end of file
diff --git a/TERCERO/SPD/images/Pasted image 20241022134454.png b/TERCERO/SPD/images/Pasted image 20241022134454.png
new file mode 100644
index 0000000..d9c9892
Binary files /dev/null and b/TERCERO/SPD/images/Pasted image 20241022134454.png differ
diff --git a/TERCERO/SPD/images/Pasted image 20241022144429.png b/TERCERO/SPD/images/Pasted image 20241022144429.png
new file mode 100644
index 0000000..3342f23
Binary files /dev/null and b/TERCERO/SPD/images/Pasted image 20241022144429.png differ
diff --git a/TERCERO/SPD/images/Pasted image 20241022144832.png b/TERCERO/SPD/images/Pasted image 20241022144832.png
new file mode 100644
index 0000000..289b6b2
Binary files /dev/null and b/TERCERO/SPD/images/Pasted image 20241022144832.png differ
diff --git a/TERCERO/SPD/images/Pasted image 20241022150214.png b/TERCERO/SPD/images/Pasted image 20241022150214.png
new file mode 100644
index 0000000..332a77c
Binary files /dev/null and b/TERCERO/SPD/images/Pasted image 20241022150214.png differ
diff --git a/Pasted image 20241017113556.png b/TERCERO/SS/images/Pasted image 20241017113556.png
similarity index 100%
rename from Pasted image 20241017113556.png
rename to TERCERO/SS/images/Pasted image 20241017113556.png