Hola :) lmartinez wrote:
Aunque parezca mentira existen mas equipos que los PC y mas configuraciones que lo que estos usan.
Efectivamente, 100% de acuerdo contigo :)
Las maneras de compartir memorias entre CPUs son variadas, y en una configuracion determinada, cada CPU puede tener su propia memoria mas la compartida.
También 100% de acuerdo contigo.
Por tanto, tened en cuenta, que parte de las afirmaciones que se vierten sobre anchos de banda bus, son validas en entorno PC, no en un sentido general.
No del todo de acuerdo. Hay máquinas de tipo: UMA: Uniform Memory Access NUMA: Non Uniform Memory Access ccNUMA: Cache-Coherent Non Uniform Memory Access En el caso de las máquinas SGI, son ccNUMA y no son PCs. De forma breve, lo que significa es ... Imaginémonos una máquina (no estoy hablando de cluster sino de una máquina) con 4 placas base (interconectadas entre sí) y cada una con 2 procesadores: placa A: procesador A1 y A2 y banco de memoria MA placa B: procesador B1 y B2 y banco de memoria MB placa C: procesador C1 y C2 y banco de memoria MC placa D: procesador D1 y D2 y banco de memoria MD En nuestro caso (ccNUMA), cada procesador ve toda la memoria, no solo la que tiene en su placa base, sino que ve una memoria global. Cuando se lanza un proceso en el procesador A1, éste comprueba que la memoria MA tiene espacio libre y la intenta utilizar. Si esa memoria se llena, pero necesita más memoria, irá a buscar memoria a la placa B, pero nunca a la C o a la D ya que están más lejos (mayor latencia). Cuando la placa B se quede sin memoria, irá a la placa C y luego a la D. ¿Qué ocurre si la MA, MB y la MD están llenas? Todos los procesadores del sistema irán a buscar memoria a MC, luego habrá mucho tráfico de datos en todos los sentidos posibles, desde todos los procesadores. Luego si el ancho de banda entre memoria-procesador es grande, no habrá cuellos de botella. Vemos que tener un ancho de banda grande SÍ afecta al rendimiento. No pensemos en un sistema que está compilando el kernel. Esto es un proceso muy pequeño comparado a procesos de clientes que duran semanas e incluso meses en máquinas de más de 100 CPUs, donde hay miles de procesos simultáneos y las CPUs pueden estar al 100% durante meses. Otra cosa que no he comentado es la latencia. Puede ocurrir que dos sistemas que se diferencia principalmente en las latencias ... el de menor latencia dará mejores resultados. Cuando respondí a la pregunta: "Tienes la info de que micros se prestan mejor para el funcionamiento en configuraciones multiprocesador?" Diciendo que no era una cosa de CPUs sino de ancho de banda, a lo que me refiero es que no hay mejor CPU para SMP y que hay otras cosas que hay que tener en cuenta: - ancho de banda de bus: un cuellos de botella muy típico en sistemas SMP, de ahí el ejemplo de la panadería Además, ya he comentado en muchos correos anteriores que decir este procesador es mejor siempre ... es muy relativo y depende de muchos factores: - anchos de banda - opciones de compilador - compilador utilizado - tipo de proceso que estamos corriendo: intensivo de CPU, intensivo I/O, ... - llamadas a sistema (generalmente en HPC, esto es irrelevante ya que no se hacen muchas llamadas a sistema) - chipsets - opciones BIOS - configuraciones HW - versiones de drivers - si la aplicación es paralelizable - si la aplicación usa muchos loops - el lenguaje que se ha utilizado - ... Como ejemplo, en Inet se pueden ver comparativas entre procesadores y en una ves que AMD sale vencedor y en otra que Intel sale vencedor, siendo el mismo procesador el que se está estudiando en ambos casos ... ¿cómo puede ser? Bueno, puede deberse a que: - unos usan una placa base y otros otra - unos usan un Linux y otros otro Linux - unos usan MS-Windows y otros Linux - unos usan gcc y otros icc - ... Y los procesadores son los mismos. Muchas veces he escrito que si queremos realmente comparar procesadores (que es a lo que se está orientando este hilo), tenemos que compararlos en las mismas condiciones: placa base, OS, compilador, BIOS, ... y aún así, a la conclusión que podemos llegar es que el procesador A es mejor para tal aplicación o proceso, pero no significa que sea el mejor globalmente hablando. Al igual que en los párrafos anteriores, me repito una vez más, digo que no estoy a favor de uno u otro fabricante. Sólo digo que no es fácil decir que este procesador es mejor que este otro, hay que decir para qué, cuándo y cómo se ha comparado.
Si a alguien le interesa el tema, no hace muchos años habia unas CPUs llamadas "Transputers", para hacer matrices de procesadores, lo que creo que fue el problema que las hizo desaparecer, era que no estaba nada claro como se programaba eso.
Si alguien tiene curiosidad por una arquitectura con dos procesadores con acceso transparente, que busquenotas de aplicacion de Motorola del 6800, es un cacharro arcaico, pero era encantador para hacer equipos con dos procesadores.
HTH Rafa
El mié, 11-01-2006 a las 09:58 +0100, Rafa Grimán escribió:
Hola :)
Juan Erbes wrote:
El día 10/01/06, *Rafa Grimán*
mailto:rgriman@sgi.com> escribió: [...]
La potencia de una computadora no depende principalmente del número de procesadores. Pongo un ejemplo. Supongamos una computadora de 1 CPU con una ancho de banda entre memoria-CPU de 10.4 Gb/s.
-- Rafa Grimán Systems Engineer Silicon Graphics Spain Santa Engracia , 120 - Planta Baja 28003 Madrid, Spain Tel: +34 91 3984200 Fax: +34 91 3984201 Móvil: +34 628 117 940 http://www.sgi.com