Re: [GLO] gcc & DualCore, HT [HyperThreading], etc...

2009-07-31 Por tema Felipe Sanchez



Ojo que no se trata nada mas de "partir tu programa en pedazos" y ya. La 
ciencia de la programacion multiproceso esta precisamente en saber como 
analizar tu algoritmo e identificar los puntos "paralelizables", como 
separar los juegos de datos, como coordinar los procesos e hilos entre si 
y como integrar un resultado coherente de todo eso.


Un viaje a tu biblioteca favorita para leer varios libros sobre algoritmos 
paralelos puede ahorrarte dias, semanas o meses de procesamiento que 
podria haberse hecho de forma mas eficiente y rapida ;-)




Re: [GLO] gcc & DualCore, HT [HyperThreading], etc...

2009-07-31 Por tema Felipe Sanchez


Utilizar eficientemente un sistema SMP puede llegar a ser un tema *muy* 
complejo. Pero a grandes rasgos efectivamente lo que tienes que hacer es 
dividir tu programa en varios procesos o hilos (Que no son lo mismo y en 
esta diferencia es en donde comienza la complejidad del asunto) y el 
kernel se encarga de asignar cada uno a un procesador diferente. Hay que 
tomar en cuenta desde luego que los procesos o hilos de tu programa no van 
a ser los unicos ejecutandose en el sistema asi que es posible que 
terminen (Al menos en un momento dado) ejecutandose de cualquier forma en 
el mismo procesador.


Es aqui en donde entran las bibliotecas especializadas de SMP tanto para 
SMP local como en red. Ahi puedes especificar prioridades, afinidades de 
procesador, etc



Un buen punto para comenzar, si bien algo viejo ya:

http://www.faqs.org/docs/Linux-HOWTO/SMP-HOWTO.html

Otro buen doc:

http://www.ibm.com/developerworks/library/l-linux-smp/

Finalmente, busca en Google "linux smp programming" para encontrar muchas 
referencias utiles.