El mejor micro
-
¿Como podría un juego aprovechar varios núcleos, o varios procesadores?No tengo ni idea de como se programan los juegos ni de que hacen pero ¿No sería viable ejecutar varios threads, uno en cada procesador, que vayan haciendo diferentes cálculos y se combinen hasta conseguir el resultado final?
Si no se hace, yo creo que es porque la grán parte de carga de proceso de un juego se la llevan los gráficos, y eso lo hace casi todo una tarjeta gráfica, no el procesador. Entonces ven sin sentido molestarse en programar el juego de tal manera que aproveche varios núcleos para los cálculos que le corresponde simplemente porque con un solo núcleo actual ya consigues la potencia que te hace falta de sobra.
Es solo una suposición.
Saludos.
PD: Tampoco veo factible la comparación "Si hago un juego para una PS3 que tiene varios cores Cell, tiene que ser muy facil portarlo a un PC multicore" sencillamente porque hablamos de arquitecturas diferentes y probablemente esos procesadores Cell harán grán parte del trabajo gráfico de una GPU, cosa que no hace un microprocesador x86.
Es muy muy dificil. A mi se me ocurren 2 maneras:
1. Ejecutar cada "motor" en un procesador (IA, fisica, y casi deja de contar (de los graficos se encarga la grafica, aunque tal vez de la ordenacion de poligonos y diversas optimizaciones…) ).
2. Partir los "motores" segun "procesos", de tal manera que puedas ejecutar un trozo del motor en cada procesador (a grosso modo: cpu1 calcula la velocidad del jugador, cpu2 la de un misil, etc.).La primera tiene mas desventajas que ventajas, porque las dependencias son brutales. Si por lo que sea el procesador dedicado a la fisica, por ejemplo, tuviera mucho trabajo, el otro procesador estaria esperando a que finalizara y se desaprovecharia. Ademas, se intentaria que los procesos estuvieran equilibrados y "costasen" una cantidad de tiempo de procesador similar, cosa muy dificil. Y para rematar es dificil repartir los procesos, y si tienes muchos procesadores no podrias utilizarlos...
La segunda la veo mas "factible". "Simplemente" se tienen que repartir los calculos entre n procesadores y sincronizarlos (esperar a que vayan acabando), aunque esto no siempre es posible. Por que? Sencillo, si tenemos dos objetos que se mueven y los calculan 2 procesadores distintos que pasara si van a chocar?? Pues que habra incoherencias, porque cada procesador movera su objeto, vera que hay colision, y lo "arreglara". Ahi se podria solucionar de diversas maneras supongo, pero no es inmediato (tal vez una cola de objetos en colision que se compruebe que sean unicos para que no aparezca la misma 2 veces y se resuelvan al final del proceso...).
Pero vamos, es dificil porque suele haber muchas dependencias.
Ahora eso si, hay que tener en cuenta que no es lo mismo pensar en programar para un solo nucleo que para varios.
No tiene nada que ver la arquitectura, pero a nivel de programacion eso "lo notas poco". Quiero decir que aunque lo que puedas calcular con cada procesador de la ps3 no este orientado a lo mismo (y la verdad no se a que os referis con calculos de gpu, no tengo ni idea de que puede ser que calcule una cpu mejor que una gpu en cuanto a graficos, otra cosa seria "preparar los graficos" con optimizaciones, recortes, ordenacion de poligonos etc etc) que cada procesador de un pc, hay conceptos muy parecidos (partir los procesos en cachos y que cada procesador se encargue de una parte, para finalmente sincronizarlos, la teoria es la misma).
Yo tambien dudo que sea facil, pero estoy convencido que es mas facil migrar un juego a pc y aprovechar varios cores desde ps3 (un juego que utilice sus diversos cores, se entiende), que no desde otra consola monocore... -
La verdad, no se si alguien lo habra mencionado realmente esto, pero en mi caso, tengo un quadcore q6600, y la verdad, esque por lo que yo creo si que le saco rendimiento, porque por ejemplo mas de una vez e estado codificando un video y a la vez jugando, entonces desde el administrador de tareas le asigno al juego un core, y al codificador otro core, y si ademas estoy escuchando musica y al messenger, pues a estos les asigno otro core…porque si no tengo mal entendido, windows xp por defecto mete toda la carga en el 1r core o algo parecido.
Nose si lo que hago es una tonteria, pero me parece que windows no te lo hace por defecto, el problema esta en que las preferencias de core no se quedan guardadas, y por eso, es un poco "palo". Un software que ayudase a administrar los cores a cada tarea, por ejemplo un core para cada tarea pesada, y otro core para las tareas mas sencillas, como el reproductor, el firefox, etc...me parece increible que aun no se haya inventado algo asi, o por lo menos, yo no me he dado cuenta.Saludos!!
P.D: Perdon por si lo que digo es una enorme estupidez, pero bajo mis experiencias, lo noto en unos 10-15 fps de diferencia en la mayoria de casos si hablamos de jugar y codificar.
-
tu lo mismo lo has dicho rules, core 1 video core 2 juego = 2 cores los otros 2 no hacen nada por que para musica y el mesenger no hace falta un 3000 mhz eso se hace hasta con el movil
saludos
-
Resumiendo:
-2 cores mejor para viciar y en general
-4 cores mejor si se utilizan muchos programas "pesados" o bastantes programas que hagan uso de mas de un coreDe esta manera para el uso "tipico" (viciar, internet, messenger, musica, ver pelis) de un ordenador sobra un dual core. Bastaria un monocore, pero hay programas de uso general que se aprovecha de varios cores y no le viene mal el empujoncito; ademas, si eres un poco garrulo y usas muchos programas a la vez (navegador de internet con muchas pestañas, musica, programa de documentos tipo word, y algun otro) ya puedes notar mejoria.
El quadcore en cambio es mucho mas especifico. Si quieres un ordenador para viciar es una tonteria comprarlo. Solo es util cuando usas una mayoria de programas que se aprovechen de varios nucleos, o si usas muchos programas pesados (leer mas abajo).tu lo mismo lo has dicho rules, core 1 video core 2 juego = 2 cores los otros 2 no hacen nada por que para musica y el mesenger no hace falta un 3000 mhz eso se hace hasta con el movil
saludos
En el curro yo tengo abiertos 3 visual studio 2005 que es bastante engendrico (pesado). Ademas, tengo 2 navegadores (IE 7 y firefox) y una maquina virtual de windows xp (para el IE6, os amo mocochof!) junto con una conversacion del skype. Esto como minimo. Tambien es normal tener el sql manager o como se llame, otra ventana para las querys del sql, consultar de vez en cuando el outlook (aunque no muy a menudo), el word, un notepad, y me han de instalar el altova xml spy que es pesadillo. Ademas a veces tambien uso el mspaint de vez en cuando (para hacer capturas y tal), o incluso el Paint.net que es mas pesado para hacer alguna cosilla que el paint es incapaz. Ah se me olvidaba, en segundo plano esta el servidor de asp, que tambien consume algo…
Asi que depende para que uses el ordenata... a mi si me pusieran un quadcore en el curro daria saltos de alegria xDDD
Por eso me pille el mio, porque cuando me pongo a currar en casa soy igual de animal y abro mucha cosa... y el sql que tengo aqui es un programa mucho mas completo (y por tanto leeento y graande... :vayatela: ), encima tengo que tener el sql server porque no tengo servidor, y un buen atajo mas de procesos en segundo plano... -
Pero de todos esos procesos que dices, son "pesados" en memoria, no en micro. Quiero decir que la mayoría de ellos se pasan la vida esperando la petición del usuario, no haciendo ingentes cantidades de cálculos que provoquen que el resto se ejecuten más lentos al tener que compartir procesador
-
Pero de todos esos procesos que dices, son "pesados" en memoria, no en micro. Quiero decir que la mayoría de ellos se pasan la vida esperando la petición del usuario, no haciendo ingentes cantidades de cálculos que provoquen que el resto se ejecuten más lentos al tener que compartir procesador
Si si, se a que te refieres, pero creo que ya estamos de acuerdo en que mejorara el rendimiento con un dual core vs un monocore porque hay muuchos procesos, y siempre que te evites cambios de contexto ganas rendimiento. Por supuesto que no vale la pena meter 2 cores mas para cambiar menos de contexto pero como minimo ganas eso en rendimiento.
Ademas que cuando empiezas a trastear con una maquina virtual abriendo programas mientras con un visual descargas las ultimas versiones de los ficheros, y se esta ejecutando el servidor de asp para los diversos exploradores, tambien empieza a consumir cpu. Ahi ya notas muchisimo tener mas de un core.Pero entramos en otra "liga" si nos ponemos a compilar el otro dia compilaba la "libreria" tocha de la empresa (tarda un par mallorquin (3 ó 4) de minutos) mientras hacia pruebas en un navegador y debuggeaba esas pruebas, y le dolia mucho asi que lo normal es ir a beber agua o estirar las piernas mientras compila :risitas: (o hacer cambios en las css xD).
-
Claro, es que ahi estamos con las premisas: 1º- Tener 4 cores SIEMPRE va a ser mejor que tener 2, es decir, que todo lo que puedes es ganar, nunca perder rendimiento. El tema es ver si compensa en relación al dinero invertido, porque seguramente por el mismo dinero te puedes comprar un dual core bastante más rapido(cada core).
2º-Vemos que donde realmente se gana rendimiento es en entornos profesionales, donde como toda la vida se han usado entornos multiprocesador(Que parece que esto de los cores es algo flipante y novedoso). Como tu dices, si tienes que compilarte una libreria, si vas a trabajar con renders, o en servidores si tienes que atender muchas peticiones, un quad o incluso más cores no es que salga mejor, es que es casi vital.
Pero para jugar, tener el messenger y el firefox y un documento de word te sobra procesador por todos lados, y realmente pierdes más tiempo en los cambios de contexto por la paginación a causa de tener poca memoria, que por el número de procesadores disponibles.
-
Hola gente,
Veo que a este post no se contesta desde hace tiempo, pero es que se puede sacar mucho más de él. Yo digo que se están dejando muchas cosas en el tintero y desde mi ignorancia pregunto, ¿Depende de las aplicaciones el máximo aprovechamiento de los nucleos de un procesador quad-core?
Bajo mi punto de vista, yo creo que no, que estáis bastante confundidos. Yo creo que el reparto del proceso lo debería de hacer el sistema operativo, que es al fin y al cabo el que gestiona los recursos del sistema. Repito, no soy ningún experto pero si sé como funciona todo esto.
¿Porque culpais a las aplicaciones del mal aprovechamiento del procesador? Una aplicación es ejecutada y gestionada por el S.O.
Bueno dejando todo esto aparte, entiendo que lo que estais diciendo, esté basado en algún bechmarck, en el que veais la utilización de cada uno de los cores, no? Sin contar con el de Windows, todos conocemos el al menos, el mal aprovechamiento de la RAM que hace windows. Pero no sabía que también gestionara mal los cores.
Bueno espero que podais sacarme de dudas.
Un saludo y a ver si podemos estrujar más este post.EC
-
Claro, es que ahi estamos con las premisas: 1º- Tener 4 cores SIEMPRE va a ser mejor que tener 2, es decir, que todo lo que puedes es ganar, nunca perder rendimiento. El tema es ver si compensa en relación al dinero invertido, porque seguramente por el mismo dinero te puedes comprar un dual core bastante más rapido(cada core).
2º-Vemos que donde realmente se gana rendimiento es en entornos profesionales, donde como toda la vida se han usado entornos multiprocesador(Que parece que esto de los cores es algo flipante y novedoso). Como tu dices, si tienes que compilarte una libreria, si vas a trabajar con renders, o en servidores si tienes que atender muchas peticiones, un quad o incluso más cores no es que salga mejor, es que es casi vital.
Pero para jugar, tener el messenger y el firefox y un documento de word te sobra procesador por todos lados, y realmente pierdes más tiempo en los cambios de contexto por la paginación a causa de tener poca memoria, que por el número de procesadores disponibles.
Entonces… porque en todas las benchmarks un dual core como el E8400 por ejemplo da mas rendimiento que un QuadCore Q6600??
-
Entonces… porque en todas las benchmarks un dual core como el E8400 por ejemplo da mas rendimiento que un QuadCore Q6600??
Coño, porque cada core del E8400 va mucho más rápido que los del Q6600. Creo que no se me ha entendido, pensaba que era evidente que me refería que a igual velocidad de cores, siempre vas a ganar teniendo 4 que no 2, pero una ganancia tan ínfima según para que, que no merece la pena.
Veo que a este post no se contesta desde hace tiempo, pero es que se puede sacar mucho más de él. Yo digo que se están dejando muchas cosas en el tintero y desde mi ignorancia pregunto, ¿Depende de las aplicaciones el máximo aprovechamiento de los nucleos de un procesador quad-core?
Bajo mi punto de vista, yo creo que no, que estáis bastante confundidos. Yo creo que el reparto del proceso lo debería de hacer el sistema operativo, que es al fin y al cabo el que gestiona los recursos del sistema. Repito, no soy ningún experto pero si sé como funciona todo esto.
¿Porque culpais a las aplicaciones del mal aprovechamiento del procesador? Una aplicación es ejecutada y gestionada por el S.O.
Bueno dejando todo esto aparte, entiendo que lo que estais diciendo, esté basado en algún bechmarck, en el que veais la utilización de cada uno de los cores, no? Sin contar con el de Windows, todos conocemos el al menos, el mal aprovechamiento de la RAM que hace windows. Pero no sabía que también gestionara mal los cores.
Bueno espero que podais sacarme de dudas.
Un saludo y a ver si podemos estrujar más este post.Es evidente que el que maneja los recursos es el sistema operativo a través del planificador y que por tanto será este el que decida qué ejecuta cada procesador disponible en el sistema. Pero, por mucho que planifique, si tu programa corre con un solo proceso o un solo thread de ejecución, por millones de cores que tengas siempre se va a ejecutar en uno solo, y nada puede hacer el planificador. Si la aplicación en cambio se ejecuta con varios threads, el planificador puede decidir meterselos todos al mismo microprocesador, o distribuir el trabajo entre varios cores, que dependiendo de la política que siga y del resto de procesos del sistema, será lo más lógico.
Si de entrada la aplicación no está preparada, el sistema operativo no puede hacer nada.
-
Y cuando pensábamos que esto ya había llegado al límite del surrealismo, alguién supera el listón con creces.
Noldor lo ha explicado perfectamente, el SO gestiona los recursos disponibles, pero la aplicación debe aprovecharlos.
Por cierto, esta conversación estaba parada porque hacía demasiado tiempo que esto no tenía sentido.
-
@Rules:
La verdad, no se si alguien lo habra mencionado realmente esto, pero en mi caso, tengo un quadcore q6600, y la verdad, esque por lo que yo creo si que le saco rendimiento, porque por ejemplo mas de una vez e estado codificando un video y a la vez jugando, entonces desde el administrador de tareas le asigno al juego un core, y al codificador otro core, y si ademas estoy escuchando musica y al messenger, pues a estos les asigno otro core…porque si no tengo mal entendido, windows xp por defecto mete toda la carga en el 1r core o algo parecido.
Nose si lo que hago es una tonteria, pero me parece que windows no te lo hace por defecto, el problema esta en que las preferencias de core no se quedan guardadas, y por eso, es un poco "palo". Un software que ayudase a administrar los cores a cada tarea, por ejemplo un core para cada tarea pesada, y otro core para las tareas mas sencillas, como el reproductor, el firefox, etc...me parece increible que aun no se haya inventado algo asi, o por lo menos, yo no me he dado cuenta.Saludos!!
P.D: Perdon por si lo que digo es una enorme estupidez, pero bajo mis experiencias, lo noto en unos 10-15 fps de diferencia en la mayoria de casos si hablamos de jugar y codificar.
Hay una aplicación que crea perfiles para usar cada core con una aplicación concreta en XP. Si veo como se llama y donde bajarlo te lo digo
Saludos!!
P.D: en el Win Vista esto no pasa (al menos eso leí), debe ser de las pocas cosas que merece de ese sistema operativo.
-
una preguna que tengo…
no habria alguna manera de asignarle a un mismo proceso varios cores...
si desarrollaran una aplicacion que hiciera eso los quad se venderian como churrosS! -
Claro, es que ahi estamos con las premisas: 1º- Tener 4 cores SIEMPRE va a ser mejor que tener 2, es decir, que todo lo que puedes es ganar, nunca perder rendimiento. El tema es ver si compensa en relación al dinero invertido, porque seguramente por el mismo dinero te puedes comprar un dual core bastante más rapido(cada core).
2º-Vemos que donde realmente se gana rendimiento es en entornos profesionales, donde como toda la vida se han usado entornos multiprocesador(Que parece que esto de los cores es algo flipante y novedoso). Como tu dices, si tienes que compilarte una libreria, si vas a trabajar con renders, o en servidores si tienes que atender muchas peticiones, un quad o incluso más cores no es que salga mejor, es que es casi vital.
Pero para jugar, tener el messenger y el firefox y un documento de word te sobra procesador por todos lados, y realmente pierdes más tiempo en los cambios de contexto por la paginación a causa de tener poca memoria, que por el número de procesadores disponibles.
Si es que estamos de acuerdo :D. Un quad core tiende a exprimirse en entornos profesionales; fuera de ellos es un desperdicio. Pero en mi caso en casa tambien "tengo un entorno profesional", pues tambien programo y tengo bastantes servicios en segundo plano, por eso cuando hablo a veces parece que exagero pero es mi caso particular por el que veo con buenos ojos los quad core… De hecho en general hay pocos casos en que se puedan exprimir "en casa", y vale mas la pena tener 2 cores rapidos que 4 mas lentos...
A eder poseso, ya te lo ha explicado bien Noldor. El SO es incapaz de partir un proceso para ejecutarlo en varios cores, como sabe "por donde ha de partir"?? Eso depende del desarrollador, y si no tiene en mente varios cores pasara de todo y no se aprovecharan. Esto es lo que se rumoreaba que queria hacer amd con sus procesadores con el "anti-hiperthreading", partir procesos y repartirlos por los cores a sus anchas. Eso es perfecto para el programador porque no tiene que liarse haciendo trabajo de mas para orientarlo a varios procesadores, pero es muy dificil de hacer...
-
Istarion tío, es que tu caso no es normal, cuando me has dicho que tenías abierto 3 visual studio, compilabas no se que librería y de más cosas xDD me estaba meando de risa.
es obvio q 4 cores y más, es para entornos profesionales. como ha dicho noldor, los multi-cores no se han inventado hace 3 años, ya habían servidores con dos cores pentium mmx o más adelante con 8 pentium III. eso lo podéis ver en las comparaciones del everest. seguramente esto existe desde mucho antes. hay micros profesionales para súper-ordenadores con más de 750 procesadores! istarion, con este igual ibas corto también xDD
simplemente antes se preocupaban de innovar los micros y potenciarlos para el uso doméstico. llegó un punto en el q los cambios eran bastante más lentos y donde pasar de 3 a 4 ghz no suponía un gran adelanto ni mejora.
por eso a alguien se le ocurrió migrar micros profesionales a uso doméstico, y bien q se encargaron de repetirnos hasta la saciedad cuanto los necesitábamos. q ya hay quad cores para portátiles, venga coño. encima orientados a gamers!!!como ha dicho istarion en el post anterior, adelantándose a mi jeje, amd anunció eso hace unos meses, si algún día consiguen q varios cores compartan el mismo hilo de ejecución por fin podremos estar hablando de duplicar el rendimiento. q hay gente q aún sigue pensando q un dual core es el doble de rápido q un core solo. aunque el core solo vaya a 3 ghz y el otro tenga un e4400.
saludos a todos
-
Buenos días chic@s,
Yo pensaba, repito hace tiempo que deje este mundillo, que los quad y los dual core, podían partir procesos y se repartian el trabajo. Pero por lo que contais veo que no es así. Entonces logicamente, un quad-core para tener abierto un IE no sirve para nada, incluso pierdes rendimiento, pero en el momento que tengas varias aplicaciones corriendo, te sale rentable.
Lo que quiero decir es que en mi caso, prefiero un quad-core que un dual core aunque el quad-core corra a frecuencias más bajas.
Yo creo que todos los que nos movemos en este sub-mundo de la informática, sacamos más probecho a un quad que a un dual. Y sobre todo si eres gamer.
Yo no suelo jugar mucho, no juego todos los días, pero si me gusta jugar de vez en cuando.
¿Los juegos necesitan lanzar muchos threads? Imagino que si, no es lo mismo arrancar el "openOffice" que el Crisys, ya me entendeis. Lo pregunto porque he echo mis pinitos con OpenGL y C++ pero nada serio. En cuanto a DirectX ni idea y sobre todo para juegos actuales. -
Esto está explicadísimo ya en este hilo eder. El 90% de los juegos actuales sólo tienen un hilo activo a la vez, por tanto es absolutamente inutil tener un Dual Core y qué decir de un Quad. Si quieres jugar, gástate la pasta en una buena gráfica.
En cuanto a tener varias aplicaciones abiertas… Que estén abiertas no significa que estén consumiendo CPU. Así que si tenemos un navegador (que consume poquísima CPU y además sólo cuando carga las páginas), un editor de textos (que una vez abierto consume poquísima CPU) y el buscaminas (consumo casi 0). Un sólo core puede con todos ellos sin ningún esfuerzo. Un modo más lógico de aprovechar el multiproceso como tú dices sería (por ejemplo): Mientras descomprimimos 1 archivo con el winrar estamos retocando una foto con el photoshop (aplicándole filtros decentes, nada de pasar a blanco y negro). Si estas dos aplicaciones no aprovecharan el multithreading y obviando otros cuellos de botella como el disco duro o la RAM, ahí si tienes ganancia neta. Pero lo habitual es estar trabajando con una sola aplicacióin cada vez ¿no? Es decir, que si estás a Photoshop, estás a Photoshop, aunque tengas abierto otro programa con el que también trabajes.
No se si es cosa mía o la gente no tiene ni idea de como narices funciona el multiproceso.
-
No se si es cosa mía o la gente no tiene ni idea de como narices funciona el multiproceso.
Pues lo mismo tendriamos que haber empezado por ahi.
La gente deberia confiar mas en el planificador que en el numero de cores. Al 95% de la poblacion le basta con un core, para entornos como el de Istarion, dos cores son suficientes.
Salu2
-
¡Esta publicación está eliminada! -
¿Partir procesos? Tal y como yo conozco y concibo la tecnología actual, me parece imposible ¿Como sabe un procesador por donde partir, con que instruccion empezar?Eso por no hablar de las sincronizaciones: Si dos trozos del código se están ejecutando en paralelismo real en dos procesadores, es imposible que sepan sicronizar e intercalar correctamente las instrucciones sin código de sincronización. Y todo eso lo tiene que implementar el programador, no se puede hacer en tiempo real, con lo que me extraña que salga una tecnología que permita a un proceso monolitico fraccionarse alegremente.
Un saludo.