[opensuse-es] [OT] Optimizaciones para gcc
Normalmente, la mayoria no tenemos en cuenta cuales son las optimizaciones que se pasan en la linea de comandos al compilador gcc, porque de eso se encarga normalmente el script del Makefile. Ahora, cuando uno debe compilar directamente un fuente en C, sin ningun script, que parametros conviene darle al gcc para compilar y obtener un ejecutable optimizado, por ejempo para un Athlon64-X2? (y si es posible que utilice los 2 cores en forma simetrica) Salu2 --------------------------------------------------------------------- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
Juan Erbes escribió:
que parametros conviene darle al gcc para compilar y obtener un ejecutable optimizado, por ejempo para un Athlon64-X2?
Usar los que estan definidos en RPM_OPT_FLAGS grep -r optflags /usr/lib/rpm/rpmrc la ganancia de las demas optimizaciones son minimas por lo cual se ha rechazado cambiar las que actualmente se usan para compilar la distribucion completa. -- “There is always some madness in love. But there is also always some reason in madness.” - Friedrich Nietzsche Cristian Rodríguez R. Platform/OpenSUSE - Core Services SUSE LINUX Products GmbH Research & Development http://www.opensuse.org/ --------------------------------------------------------------------- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 El 2008-02-07 a las 11:03 -0300, Juan Erbes escribió:
Normalmente, la mayoria no tenemos en cuenta cuales son las optimizaciones que se pasan en la linea de comandos al compilador gcc, porque de eso se encarga normalmente el script del Makefile. Ahora, cuando uno debe compilar directamente un fuente en C, sin ningun script, que parametros conviene darle al gcc para compilar y obtener un ejecutable optimizado, por ejempo para un Athlon64-X2? (y si es posible que utilice los 2 cores en forma simetrica)
- -O2 -march=pentium4 En tu caso será otro procesador, claro. Busca tu arquitectura en "info gcc", "Node: Submodel Options" (3.17). Supongo será "i386 and x86-64 Options", (3.17.14): _k8, opteron, athlon64, athlon-fx_ AMD K8 core based CPUs with x86-64 instruction set support. (This supersets MMX, SSE, SSE2, 3dNOW!, enhanced 3dNOW! and 64-bit instruction set extensions.) Sería, creo, "-O2 -march=athlon64". En el nodo "Node: IA-64 Options" tienes unos cuantos ajustes más peculiares de esa arquitectura. - -- Saludos Carlos E.R. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.4-svn0 (GNU/Linux) iD8DBQFHq19TtTMYHG2NR9URAmyZAJ9OvqcGMRJtGV5K8KXh/EeTr2OSSgCdHPsQ yO8rNPDL/NIwXM8EPMvp0ME= =8XS6 -----END PGP SIGNATURE-----
El 7/02/08, Carlos E. R. <robin.listas@telefonica.net> escribió:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
El 2008-02-07 a las 11:03 -0300, Juan Erbes escribió:
Normalmente, la mayoria no tenemos en cuenta cuales son las optimizaciones que se pasan en la linea de comandos al compilador gcc, porque de eso se encarga normalmente el script del Makefile. Ahora, cuando uno debe compilar directamente un fuente en C, sin ningun script, que parametros conviene darle al gcc para compilar y obtener un ejecutable optimizado, por ejempo para un Athlon64-X2? (y si es posible que utilice los 2 cores en forma simetrica)
- -O2 -march=pentium4
En tu caso será otro procesador, claro. Busca tu arquitectura en "info gcc", "Node: Submodel Options" (3.17). Supongo será "i386 and x86-64 Options", (3.17.14):
_k8, opteron, athlon64, athlon-fx_ AMD K8 core based CPUs with x86-64 instruction set support. (This supersets MMX, SSE, SSE2, 3dNOW!, enhanced 3dNOW! and 64-bit instruction set extensions.)
Sería, creo, "-O2 -march=athlon64". En el nodo "Node: IA-64 Options" tienes unos cuantos ajustes más peculiares de esa arquitectura.
Gracias a todos por responder! Salu2 --------------------------------------------------------------------- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
Hola :) El Thursday 07 February 2008, Juan Erbes escribió:
Normalmente, la mayoria no tenemos en cuenta cuales son las optimizaciones que se pasan en la linea de comandos al compilador gcc, porque de eso se encarga normalmente el script del Makefile. Ahora, cuando uno debe compilar directamente un fuente en C, sin ningun script, que parametros conviene darle al gcc para compilar y obtener un ejecutable optimizado, por ejempo para un Athlon64-X2? (y si es posible que utilice los 2 cores en forma simetrica)
A parte de lo que te han contestado ya, sólo añadir que si la aplicación no ha sido paralelizada (mediante threads o MPI o lo que sea), no vas poder ejecutarla en los dos procesadores al mismo tiempo. Esto no es del todo "malo" ya que el otro procesador se puede usar para otras cosas. Tienes algunos comandos como cpusets, ... que te permiten asociar un proceso a una CPU y una zona de memoria determinada. Si no recuerdo mal, creo que habían incluido en una versión del kernel que el kernel más o menos haga esto automáticamente y asocia procesos a un mismo procesador para que no salten de uno a otro. Si alguien tiene mejor (o más) memoria que yo ... que nos ilumine 0;) También es cierto que algunos proyectos (como KDE, por ejemplo) se están tomando muy en serio lo de SMP o multi-core (que no es lo mismo que many-core) y están "recomendando" a sus desarrolladores que usen threads o que paralelicen. Qt, por ejemplo ha introducido muchas mejoras en este sentido y, por tanto, KDE 4 :) HTH Rafa -- "We cannot treat computers as Humans. Computers need love." rgriman@skype.com --------------------------------------------------------------------- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
El 8/02/08, Rafa Grimán <rafagriman@gmail.com> escribió:
Hola :)
El Thursday 07 February 2008, Juan Erbes escribió:
Normalmente, la mayoria no tenemos en cuenta cuales son las optimizaciones que se pasan en la linea de comandos al compilador gcc, porque de eso se encarga normalmente el script del Makefile. Ahora, cuando uno debe compilar directamente un fuente en C, sin ningun script, que parametros conviene darle al gcc para compilar y obtener un ejecutable optimizado, por ejempo para un Athlon64-X2? (y si es posible que utilice los 2 cores en forma simetrica)
A parte de lo que te han contestado ya, sólo añadir que si la aplicación no ha sido paralelizada (mediante threads o MPI o lo que sea), no vas poder ejecutarla en los dos procesadores al mismo tiempo.
Esto no es del todo "malo" ya que el otro procesador se puede usar para otras cosas. Tienes algunos comandos como cpusets, ... que te permiten asociar un proceso a una CPU y una zona de memoria determinada.
Si no recuerdo mal, creo que habían incluido en una versión del kernel que el kernel más o menos haga esto automáticamente y asocia procesos a un mismo procesador para que no salten de uno a otro. Si alguien tiene mejor (o más) memoria que yo ... que nos ilumine 0;)
También es cierto que algunos proyectos (como KDE, por ejemplo) se están tomando muy en serio lo de SMP o multi-core (que no es lo mismo que many-core) y están "recomendando" a sus desarrolladores que usen threads o que paralelicen. Qt, por ejemplo ha introducido muchas mejoras en este sentido y, por tanto, KDE 4 :)
Estube trasteando un poco, y algo mejoré el rendimiento, jugando con los parametros de compilación, pero como tu dices, el archivo fuente no esta hecho para MP, y no es demasiado lo que pueda lograr. Buscando por la red encontré que el GCC 4.2 incluye soporte OpenMP, quer tambien iva por otro lado con el nombre GOMP: http://gcc.gnu.org/gcc-4.2/changes.html http://gcc.gnu.org/projects/gomp/ Salu2 --------------------------------------------------------------------- Para dar de baja la suscripción, mande un mensaje a: opensuse-es+unsubscribe@opensuse.org Para obtener el resto de direcciones-comando, mande un mensaje a: opensuse-es+help@opensuse.org
participants (4)
-
Carlos E. R.
-
Cristian Rodríguez
-
Juan Erbes
-
Rafa Grimán