Hola :) El Monday 23 March 2009, Camaleón escribió: [...]
El programador debería saber lo que está haciendo y no dejar todo en manos del compilador. Está bien que el compilador haga ciertas cosas para facilitarle la vida al programador, pero otras las debería hacer el programador.
No sé cómo irá hoy en día la programación con leguajes actuales de alto nivel, pero yo me fiaría más de las sugerencias del compilador que de las de un humanoide
:-). El compilador puede tener en cuenta más variables ¿no?.
Se me ha olvidado en el correo anterior poner un ejemplo. En HPC (en tu caso, Camaleón, es interesante porque afecta a las ingenierías), una de las cosas (trucos) empleados a la hora de optimizar código es hacer que una matriz entera quepa o se cargue por completo en la caché L3. Se intenta trabajar con matrices que quepan en la L3 ya que de esta manera, el acceso a los datos es más rápido (recordemos que el tiempo de acceso a la L3 es menor que en el caso de acceder a la RAM y que se necesitan menos ciclos de CPU). Esta es una de las razones por las que las CPUs con L3 grande suele interesar en el mundo HPC, aunque no siempre es así. Esto, por ejemplo, no lo puede hacer el compilador, aunque sí puede hacer otras cosas sin intervención "divina" como es el caso del -funroll-loops. En el caso de la programación paralela, ocurre algo por el estilo. El Humano tiene que decidir si ciertas ecuaciones se pueden dividir o no para poder paralelizar. Otra cosa a tener en cuenta es que tienes que tener en cuenta las comunicaciones entre los nodos (bien sean cores o computadoras completas), que puede ser IB, (10)Gigabit, dual-rail, ... no te digo que en un futuro este tipo de cosas se automaticen y que el compilador avance lo suficiente como para ser capaz de tomar ciertas decisiones, pero otras veces es un poco más difícil. También es cierto que a la hora de programar o paralelizar código, lo difícil es saber el estado y valor de una variable porque se pueden producir race conditions, por ejemplo o bien un hilo de una CPU de pronto cambia el valor y no avisa al resto de las CPUs, ... Si no eres buen programador y no tienes en cuenta estas complejidades ... la has liado. Especialmente en C ;) Esto ya es cosa del programador. Creo que ahora sabéis por qué no me gusta programar ;) 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