Ajedrez, Hardware, Informática, Motores

Primeras pruebas Intel Core i7-920

He realizado algunas pruebas de la potencia de análisis de los motores de ajedrez con mi nuevo y flamante ordenador (que por cierto va como la seda, rápido y silencioso). Incorpora un microprocesador Intel Core i7-920 4 x 2,66GHz (es decir, con 4 núcleos a 2,66GHz cada uno) y tiene instalados 6GB de RAM, siendo éstos los dos únicos aspectos que interesan en lo que a velocidad de análisis de los motores de ajedrez se refiere.

Una de las principales características de los nuevos procesadores Intel Core i7 es que son capaces de desdoblar sus 4 núcleos físicos en 8 hilos de ejecución. Es decir, en el caso de los motores de juego, éstos se comportan como si estuviesen ejecutándose en una máquina con 8 procesadores. En cualquier caso, utilizando los 4 núcleos al 100% debería ser los mismo que con 8 hilos de ejecución al 100%. De hecho es más recomendable configurar el motor con 4 núcleos, ya que indicándole 8 núcleos el PC se queda “casi frito” y no se puede hacer prácticamente nada mientras el motor está analizando…

La primera prueba que realicé fue ejecutar el test incluido en Fritz 10 (o cualquier otra interface gráfica de Chessbase), el llamado “Ajedrez Benchmark” de Mathias Feist, versión 4.2. Éstos fueron los resultados:

Intel Pentium III 1GHz AMD Athlon 1,4GHz Intel Core i7-920 4×2,66GHz
Procesadores lógicos 1 1 8
Velocidad respecto PIII 1GHz 1 1,31 21,21
Miles de nodos por segundo 480 630 10.179

Como se puede apreciar, la potencia del Intel Core i7 es espectacular: ¡más de 10 millones de posiciones analizadas por segundo! Ahora sólo queda comprobar que realmente tal capacidad de análisis sirve para algo. Veamos…

Actualmente Rybka es el mejor motor de juego casi en cualquier ordenador, pero en versión multiprocesador es todavía más potente. Se me ocurrió realizar algunas pruebas de análisis con varios motores tomando como referencia una posición determinada, anotando los nodos por segundo que analizaban, el tiempo que tardaban en encontrar la solución y la profundidad de análisis.

La posición que elegí fue la siguiente, tomada de la partida Kotov-Botvinnik, Moscú 1955:


Negras juegan y ganan

Podéis intentar encontrar la solución… o bien probar a ver si vuestros módulos de análisis en vuestro ordenador son capaces de encontrar la idea correcta, o al menos acercarse a ella. Si no, seguid leyendo…

Esta posición es especialmente difícil para los motores. Se trata de un final de alfiles de distinto color que, a pesar de no haber demasiado material, por una parte implica el sacrificio de peones (los programas por lo general son bastante conservadores en este sentido), y por otra parte es un buen ejemplo del conocido “efecto horizonte” (aunque no existen muchas variantes posibles, quedan todavía unas cuantas casillas para que los peones lleguen a la octava fila, lo que obliga a profundizar en los análisis hasta la mismísima coronación).

En esta tabla pueden verse los resultados obtenidos por los últimos y mejores motores de juego existentes, en primer lugar los que utilizan un solo procesador, y a continuación los que son capaces de aprovechar los ocho procesadores virtuales del Intel Core i7, y ambos grupos ordenados alfabéticamente.

Por si necesita aclaración, las columnas muestran los “KN/s” (es decir, kilonodos o posiciones analizadas por segundo, la jugada elegida por cada motor), la valoración que le dan (donde “-/+” indica ventaja negra), el tiempo aproximado que tardaron en decidirse por ella, la profundidad analizada en “plies” (1 ply equivale a “media jugada”, es decir, un movimiento de las blancas o de las negras), y algunos comentarios personales:

KN/s Jugada Valorac. Tiempo Prof. Comentarios
Motores monoprocesador (1 CPU)
Fritz 11 CB 3100 1…g5 -/+1.44 8:58 29/45 A los 2:50 se paró en 1…g5, pero hasta los 8:58 no se decidió. Luego se paró en 1…d4+ y se fue hasta los 14:22 para ver que era equivalente.
Fruit 2.3.1 UCI 1800 1…d4+ -/+1.00 7:06 28 En 1:34 profundidad 27 se paró en 1…d4+, pero no se decidió hasta profundidad 28.
1…g5 -/+1.05 8:39 28
Gambit Fruit 1.0beta 4bx UCI 1800 1…Rg4 -/+0.84 6:14 28/54
Hiarcs 12.1 SP UCI 900 1…d4+ -/+0.86 2:09 20/40 En 0:50 ya se había parado a mirar 1…d4+.
1…g5 -/+0.87 2:39 20/40
-/+1.12 5:52 22/52
Naum 4 UCI 1-CPU 1200 1…Rg4 -/+0.56 6:18 28/50
Rybka 3 1-CPU UCI 100 1…Rg4 -+0.61 4:00 23 Tras 4′ se paró en 1…Rg5, pero tras 15′ todavía no se había decidido por ella.
Shredder 11 UCI 1300 1…Rg4 -/+1.15 6:20 24/56
Spike 1.2 Turin UCI 1700 1…Rg4 -/+1.57 7:10 22
Strelka 2.0B UCI 2900 1…Rg4 -/+0.81 10:50 28
Strelka R-3-E UCI 1900 1…Rg4 -/+0.63 8:29 28 “R-3-E” significa “Rybka-3 Evaluation”, aunque parecen distar mucho.
Motores multiprocesador (8 CPUs)
Cyclone 3.4 UCI 8400 1…Rg3 -/+0.87 6:11 28
Deep Fritz 11 CB 6200 1…Rg4 -/+0.13 10:19 31/47 Mi gran decepción. A los 4:50 se paró en 1…g5, pero a los 12′ todavía no se había decidido. ¡Peor que Fritz 11!
Deep Hiarcs 12 CB 4100 1…d4+ -/+0.87 ¡0:33! 20/44
1…g5 -/+0.90 1:27 21/52
-/+1.15 3:24 22/55
-+3.09 6:09 23/62
Deep Junior 10.1 UCI ¡17700! 1…g5 -/+0.45 3:07 32 Aunque se decidió por 1…g5, a los 6′ a profundidad 33 seguía con tan sólo -/+0.45
Deep Shredder 11 UCI 4400 1…Rg3 -/+1.22 12:00 25/54
Deep Sjeng WC2008 UCI 7200 1…g5 -/+1.12 ¡0:35! 19/48
-/+1.13 1:15 20/57
-/+1.60 4:42 22/59
Glaurung 2.2 JA UCI 6300 1…Rg4 -/+0.86 9:14 28
Grapefruit 1.0 UCI 8000 1…Rg4 -/+0.88 7:00 17/60
Grape-Cyclone 1.0 UCI 7100 1…Rg4 -/+0.86 10:30 27/49
Hiarcs 12.1 MP UCI 3900 1…d4+
1…g5
-/+0.87 ¡0:28! 19/37
-/+1.10 0:53 20/42
-/+1.11 1:08 21/46
-/+1.35 2:27 22/48
Naum 4 UCI 5400 1…Rg5 -/+0.55 10:00 31/60 Para utilizar multiproceso es necesario indicar Threads=8 en los parámetros del módulo o bien MAX_THREADS=8 en el fichero “naum.cfg”.
Rybka 3 UCI ¡217! 1…d4+ -/+0.63 1:04 21 Tras seleccionar 1…g5, a los 15′ todavía no había variado la valoración. En otras pruebas pasó a -+4.03 en 10′, pero también a veces ni siquiera se decidía por 1…d4+ ni por 1…g5. Muy extraño…
1…g5 -/+0.63 1:05 21
Rybka 3 960 UCI ¡220! 1…g5
1…d4+
-/+0.70 ¡0:29! 19 “960” se refiere a que es capaz de jugar “Ajedrez960” o “Fischer Random Chess”.
-+2.21 1:19 20
Rybka 3 Dynamic UCI ¡284! 1…d4+
1…g5
-+3.86 2:58 20 A los 40″ ya se había parado a mirar 1…d4+, y a los 2:58 encontró la ventaja ganadora.
Rybka 3 Human UCI ¡204! 1…g5
1…d4+
-/+0.70 ¡0:35! 19 Independientemente de su estilo de juego, ¿por qué tantas diferencias entre las 4 versiones de Rybka 3 para encontrar la solución?
-+4.24 ¡10:05! 24
Stockfish 1.4 JA UCI 7700 1…Rg4 -/+1.71 8:05 28
Toga CMLX 1.4.5e UCI 2500 1…Rg3 -/+0.85 10:22 26/48 “CMLX” son números romanos, es decir, admite Ajedrez960 o “Fischer Random Chess”. Para utilizar multiproceso es necesario indicar Threads=8 en los parámetros del módulo. En 1:05 se paró en 1…g5, pero tras 10:22 no se había decidido.
Toga II 1.4.1SE6 UCI 6900 1…Rg4 -/+0.84 10:05 28/57
Zappa Mexico II UCI 2600 1…g5 -/+0.60 ¡¡0:12!! 18/39 Aunque la encontró como el rayo, luego la valoración no evolucionó como se podía esperar.
-/+1.17 0:28 19/41
-/+1.22 1:35 20/59
-/+1.33 5:10 22/61

Algunas conclusiones sobre las pruebas realizadas y los resultados obtenidos:

  • Las pruebas se realizaron en Windows XP 32 bits, y por tanto los motores son versiones de 32 bits. Supuestamente aún mejoraría más el rendimiento con las versiones de 64 bits corriendo en un sistema operativo de 64 bits. Todos los motores se configuraron con 512MB para las Tablas Hash, utilizando la opción de limpiar las tablas hash antes de cada prueba.
  • La mayoría de los motores actuales son de tipo UCI (“Universal Chess Interface”, archivos ejecutables “.exe” compatibles con muchas interfaces gráficas de usuario), y sólo quedan unos pocos de tipo ChessBase (archivos “.eng” o “.engine” que sólo se pueden utilizar desde las interfaces gráficas de Chessbase).
  • El tiempo aproximado de espera que me planteé fueron 5 minutos, aunque a veces resultó bastante más porque algunos motores parecía que iban a decidirse por la solución pero finalmente no lo hacían.
  • El número de nodos o posiciones analizadas por segundo es muy variable tanto en los motores monoprocesador como multiprocesador. Entre los primeros, el “más lento” es Rybka 3 con unos 100 KN/s y el “más rápido” Fritz 11 con unos 3000 KN/s (valores aproximados tomados casi siempre al final del análisis, ya que al principio suelen ser mucho más elevados). Entre los motores multiprocesador, el “más lento” es Rybka 3 con unos 200 KN/s y el “más rápido” Deep Junior 10.1 con unos 17.700 KN/s (es decir, ¡casi 18 millones de posiciones por segundo!). La conclusión es que no tiene nada que ver este valor con la calidad de los algoritmos de búsqueda y evaluación creados por los programadores.
  • Normalmente casi todos los motores que no encontraron la solución daban la misma valoración a varias jugadas. Aunque en la tabla sólo se indique por ejemplo 1…Rg4, también valoraron igual 1…Rg3, 1…Re2, 1…Af7, 1…Ag8, etc.
  • Casi ningún motor monoprocesador encontró la solución, salvo Fritz 11, Fruit 2.3.1 y Hiarcs 12.1 1-CPU. A pesar de analizar muchos menos nodos, éste último tardó un tiempo prudencial, pero Fritz y Fruit se fueron a más de 8 y 7 minutos respectivamente. Es curioso que Rybka se paró en la solución a los 4′, pero tras 15′ todavía no había sido capaz de decidirse por ella.
  • De los motores multiprocesador muchos tampoco encontraron la solución (entre ellos Deep Fritz 11, una decepción por mi parte, ya que tengo debilidad por “los Fritz”…), mientras que Rybka y Deep Junior la encontraron al cabo de un tiempo prudencial, y en cambio Deep Hiarcs, Deep Sjeng, Hiarcs y Zappa la encontraron tras unos pocos segundos (éste último ¡en tan sólo 12 segundos!).

Sólo resta señalar que el que algunos módulos sean mejores que otros solucionando problemas no quiere decir que lo sean jugando partidas completas. Así que la siguiente prueba deberá consistir irremediablemente en un torneo entre ellos, aunque realmente el nivel de cada uno se puede ver, entre otras, en la web CCRL (Computer Chess Rating Lists), donde están constantemente enfrentándolos en cientos o incluso miles de partidas.

Saludos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

http://guapaweb.skn1.com/wp-content/plugins/wp-monalisa/icons/wpml_bye.gif 
http://guapaweb.skn1.com/wp-content/plugins/wp-monalisa/icons/wpml_good.gif 
http://guapaweb.skn1.com/wp-content/plugins/wp-monalisa/icons/wpml_negative.gif 
http://guapaweb.skn1.com/wp-content/plugins/wp-monalisa/icons/wpml_scratch.gif 
http://guapaweb.skn1.com/wp-content/plugins/wp-monalisa/icons/wpml_wacko.gif 
http://guapaweb.skn1.com/wp-content/plugins/wp-monalisa/icons/wpml_yahoo.gif 
http://guapaweb.skn1.com/wp-content/plugins/wp-monalisa/icons/wpml_cool.gif 
http://guapaweb.skn1.com/wp-content/plugins/wp-monalisa/icons/wpml_heart.gif 
http://guapaweb.skn1.com/wp-content/plugins/wp-monalisa/icons/wpml_rose.gif 
http://guapaweb.skn1.com/wp-content/plugins/wp-monalisa/icons/wpml_smile.gif 
http://guapaweb.skn1.com/wp-content/plugins/wp-monalisa/icons/wpml_whistle3.gif 
http://guapaweb.skn1.com/wp-content/plugins/wp-monalisa/icons/wpml_yes.gif 
http://guapaweb.skn1.com/wp-content/plugins/wp-monalisa/icons/wpml_cry.gif 
http://guapaweb.skn1.com/wp-content/plugins/wp-monalisa/icons/wpml_mail.gif 
http://guapaweb.skn1.com/wp-content/plugins/wp-monalisa/icons/wpml_sad.gif 
http://guapaweb.skn1.com/wp-content/plugins/wp-monalisa/icons/wpml_unsure.gif 
http://guapaweb.skn1.com/wp-content/plugins/wp-monalisa/icons/wpml_wink.gif