2008-12-11 33 views
5

Quiero entrar en la programación multi core (no específica del idioma) y me pregunto qué hardware podría recomendarse para explorar este campo. Mi objetivo es actualizar mi escritorio existente.Programación multi core

Respuesta

1

Recomendaría al menos un procesador de cuatro núcleos.

1

Puede intentar retocar con CUDA. Es gratis, no que es difícil de usar y se ejecutará en cualquier tarjeta NVIDIA reciente.

Como alternativa, puede obtener una PlayStation 3 y Linux SDK y averiguar cómo programar un procesador de celda. Tenga en cuenta que la próxima opción más barata para el desarrollo de Cell BE es una orden de magnitud más costosa que una PS3.

Por último, cualquier placa base moderna que tome Core Quad u Opteron de cuatro núcleos (obtenga una buena de Asus u otro fabricante confiable) le permitirá experimentar con un sistema de PC multinúcleo por una cantidad razonable de dinero .

0

Estoy de acuerdo con los otros en que actualizaría a un procesador de cuatro núcleos. También soy un GRAN VENTILADOR de placas madre ASUS (¡el P5Q Pro es excelente para los procesadores Core2Quad y Core2Duo)!

El atractivo de la programación multi-core es que tiene más recursos para hacer las cosas más rápido. Si te tomas en serio la programación multi-core, entonces definitivamente obtendría un procesador de cuatro núcleos. No creo que deba obtener la nueva arquitectura i7 de Intel para aprovechar el procesamiento de núcleos múltiples, ya que todo lo escrito para aprovechar Core2Duo o Core2Quad funcionará mejor en la arquitectura más nueva.

Si vas a incursionar en la programación multi-core, entonces obtendré un buen procesador Core2Duo. Recuerde, no solo cuántos núcleos tiene, sino también cuán RÁPIDAMENTE son los núcleos para procesar los trabajos. Mi Core2Duo corriendo a 4GHz rutinariamente completa trabajos más rápido que mi Core2Quad funcionando a 2.4GHz incluso con un programa multi-core.

¡Avíseme si esto es útil! JFV

4

Quad-core, porque le permitirá hacer problemas donde el número de procesos concurrentes es> 2, lo que a menudo no trivializa los problemas.

Yo también, para sheer geek squee, tomo una buena tarjeta de NVidia y uso la API de CUDA. Si tiene dinero, hay una estación de trabajo CUDA independiente que se conecta a la computadora principal a través de un cable y una ranura de expansión.

1

Lo difícil con la programación multiproceso/núcleo es que abre una nueva lata de gusanos. Los errores a los que te enfrentarás generalmente no son a los que estás acostumbrado. Las condiciones de carrera pueden permanecer inactivas durante años hasta que muerden y el compilador de tu lengua principal no te ayudará de ninguna manera. Obtendrá datos aleatorios y/o bloqueos que solo ocurren una vez al día/semana/mes/año, generalmente en las condiciones más misteriosas ...

Afortunadamente, sigue habiendo una cosa: cuanto mayor es la concurrencia exhibida por una computadora , más condiciones de carrera revelarás.

Por lo tanto, si usted es serio acerca de la programación multiproceso/núcleo, entonces elija tantos núcleos de la CPU como sea posible. Tenga en cuenta que ni hyperthreading ni SMT permiten el nivel de concurrencia que ofrecen los núcleos múltiples.

6

Si es posible, sugeriría obtener una máquina de doble zócalo, preferiblemente con chips de cuatro núcleos. Ciertamente puede obtener una máquina de un solo zócalo, pero el zócalo dual le permitirá comenzar a ver algunos de los efectos de la memoria NUMA que se verán exacerbados a medida que los recuentos de núcleos se vuelvan cada vez más altos.

¿Por qué te importa? Hay dos grandes problemas que enfrentan los desarrolladores de núcleos múltiples en este momento:

  1. el modelo de programación Programación paralela es difícil, y hay (actualmente) hay manera de evitar esto. Un sistema de cuatro núcleos le permitirá comenzar a jugar con la concurrencia real y todos los paradigmas populares (hilos, UPC, MPI, OpenMP, etc.).

  2. Memoria Cuando comience a tener múltiples hilos, habrá contención de recursos, y el muro de memoria se hace cada vez más grande. A recent article at arstechnica esboza algunas investigaciones (muy preliminares) en Sandia que muestran cuán malo podría ser si las tendencias actuales continúan. Las máquinas multinúcleo van a tener que mantener todo alimentado, y esto requerirá que las personas estén íntimamente familiarizadas con su sistema de memoria. Dual-socket agrega NUMA a la mezcla (al menos en las máquinas AMD), lo que debería ayudarlo a comenzar en esta difícil ruta.

Si usted está interesado en obtener más información sobre las inconsistencias de rendimiento con máquinas multi-socket, es posible que también echa un vistazo a this technical report sobre el tema.

Además, otros han sugerido obtener un sistema con una GPU compatible con CUDA, que creo que también es una excelente forma de acceder a la programación multiproceso. Es un nivel más bajo que las cosas que mencioné anteriormente, pero arroja uno de esos en tu máquina si puedes. Los nuevos compiladores de Portland Group tienen provisional support for optimizing loops with CUDA, por lo que podría jugar con su GPU incluso si no quiere aprender CUDA usted mismo.

2

Depende de lo que quieras hacer.

Si desea aprender los conceptos básicos de la programación multiproceso, puede hacerlo en su PC de un solo núcleo existente. (Si tienes 2 hilos, entonces el sistema operativo cambiará entre ellos en una PC de un solo núcleo. Luego, cuando te muevas a una PC de doble núcleo, se ejecutarán automáticamente en paralelo en núcleos separados, para una aceleración de 2x). ¡Esto tiene la ventaja de ser gratis! Las desventajas son que no verá una aceleración (de hecho, una implementación paralela es probablemente un poco más lenta debido a los gastos generales), y ese código con errores tiene una probabilidad ligeramente mayor de funcionar.

Sin embargo, aunque puede aprender la programación multiproceso en una caja de un solo núcleo, una CPU de doble núcleo (o incluso HyperThreading) sería de gran ayuda.

Si realmente quiere poner a prueba el código que está escribiendo, entonces, como dice "esmoquin azul", debe buscar tantos núcleos como le sea posible y, si es posible, obtener también un hyperthreading.

Si quiere aprender sobre los algoritmos para ejecutar en tarjetas gráficas, que es un área muy diferente de la multinúcleo x86, obtenga CUDA y compre una tarjeta gráfica nVidia normal que la admita.

1

Estoy de acuerdo en que, dependiendo de lo que en última instancia quiera hacer, probablemente pueda salir adelante con solo su sistema actual de un solo núcleo. La programación de múltiples núcleos es básicamente una programación con múltiples subprocesos, y ciertamente puede hacerlo en un chip de un solo núcleo.

Cuando yo era estudiante, uno de nuestros proyectos fue construir una aplicación segura para los subprocesos malloc la biblioteca de C. Incluso en un procesador de núcleo único, que era más que suficiente para curarme de mi deseo de entrar en múltiples programación con hilos. Intentaría algo así antes de que empieces a pensar en gastar mucho dinero.

Cuestiones relacionadas