¿Qué procesadores / controladores de varios / múltiples núcleos (micro) debo usar para cálculos "vergonzosamente paralelos"? [cerrado]

3

Esta es mi primera pregunta en este sitio, así que espero no estropear esto. : D

Intentaré ser lo más específico posible.

Lo que necesito:

  • Algo que puedo programar en C (o en un lenguaje similar a C).

  • Necesito una unidad de procesamiento que se pueda conectar en una matriz para cálculos masivamente paralelos.

  • La unidad debe tener una arquitectura múltiple / multi-core (RISC de 32 bits es lo suficientemente buena) y los núcleos y las unidades deben poder comunicarse entre sí.

  • Todas las unidades deben ser programables simultáneamente. No quiero programar cada uno de ellos a mano.

  • Cada núcleo ejecutará el mismo algoritmo simple, pero con un nonce diferente.

  • La velocidad de los núcleos dividida por el precio debe ser lo más alta posible.

  • La matriz resultante debería poder superar a una computadora de escritorio estándar en varios órdenes de magnitud con respecto a los cálculos altamente paralelos.

  • La solución no debería ser demasiado complicada.

  • Realmente no me importa la eficiencia energética. Mientras no requiera cantidades ridículas de energía (como una planta de energía nuclear privada por CPU), no debería ser un problema.

Lo necesito para:

  • Redes neuronales & varias otras implementaciones de Machine Learning

  • Encontrar números primos, así como otros problemas relacionados con las matemáticas (como la conjetura de Collatz, etc.)

  • Hashing & otras aplicaciones de fuerza bruta

  • Entre otros programas paralelos.

Lo que he encontrado hasta ahora:

  • Computación acelerada por GPU:
    Esta solución parece ser la mejor que he encontrado hasta ahora. Utilizando CUDA & OpenCL I puede usar los sombreadores de hardware de una GPU como núcleos individuales. Así es como se realizó la minería de Bitcoin en el pasado.
    La ventaja de este enfoque es que puedo tener cientos de subprocesos ejecutándose simultáneamente. También hay un montón de soporte en línea utilizando este método.
    La desventaja de este enfoque es que los sombreadores de GPU son terribles en las ramas condicionales, lo que me impide escribir cualquier programa de este tipo con muchas condiciones anidadas.

  • chips XMOS
    Uno de los primeros circuitos integrados de familia con los que me encontré que parecía apropiado era la gama de productos xCORE. Son microprocesadores que son relativamente baratos (~ 20 USD cada uno) y pueden tener hasta 32 núcleos.
    Lo que es un poco desagradable es el hecho de que la única indicación de la velocidad está en MIPS. Mirando una guía de conexión, utilizan un cristal externo de 25MHz. Además, no hay demasiada asistencia en línea.

  • La Junta de Parallella
    Esta es una pequeña tabla muy interesante que se comercializa como una "supercomputadora del tamaño de una tarjeta de crédito". Ejecuta un derivado de Ubuntu y tiene un coprocesador Epiphany-III con 16 núcleos (creo). Dicen que puede ejecutar 90 GFLOPS.
    El inconveniente es que necesito más núcleos.

  • Epiphany-IV (E64G401)
    Este microprocesador parece perfecto. Está fabricado por la misma compañía que la placa Parallella y cuenta con 64 núcleos RISC con una friolera de 800Mhz.
    El único inconveniente es que este IC se interrumpe. : '(

  • Procesadores Kalray y tarjetas PCIe
    De nuevo, una solución muy interesante para el cómputo paralelo, donde los procesadores tienen hasta 256 cores. Kalray también ofrece capacitación en el uso de sus productos.
    La desventaja es que uno tiene que solicitar un precio y parece que uno solo puede comprar estos componentes directamente de ellos. También me parece que están más enfocados en las redes.

  • FPGAs
    Los FPGA también se han considerado, ya que pueden realizar algoritmos completos en ciclos de reloj único.
    Sin embargo, lo que estoy buscando es algo que también puede realizar algoritmos muy grandes, mientras que los FPGA no tienen tantos elementos lógicos.

Budgetwise soy muy flexible. Así que digamos 10'000USD.
Preferiría diseñar mi propia PCB de matriz informática con un ic que ustedes recomiendan, sin embargo, estoy abierto a otras soluciones. Tal vez ya haya encontrado la mejor solución pero todavía no la conozco. ¿Qué piensan ustedes, señoras y señores?

¡Muchas gracias de antemano!

- Linus

Registro de cambios:

  • Agregó que me gustaría programar en C

  • FPGAs añadidos

  • Agregó que no me importa el consumo de energía

  • Agregué que preferiría hacer mi propia pcb

  • Presupuesto agregado de 10 000 usd

pregunta Linus Brendel

1 respuesta

3

Construye una nueva máquina

Por ahora, la solución más asequible para esto es probablemente una PC con una buena GPU. Pruebe esta configuración que es razonablemente poderosa, no tiene cuellos de botella y es razonablemente asequible (máquina de factor de forma pequeño):

  • procesador Intel Xeon E3-1231v3 (3,4 GHz de cuatro núcleos con hyperthreading)
  • Placa base Gigabyte GA-B85N-Phoenix mini-ITX
  • Kingston KVR DDR3-1600 RAM 8GBx2
  • GPU AMD Radeon R9 290X (o si puedes pagarlo, R9 295X2)
  • SSD de Kingston SSDNow V300 120GB SATA-6Gbps

O si tienes una buena plataforma de juegos, úsala. La máquina mencionada anteriormente es en realidad una plataforma de juego sugerida por SFF.

Otra plataforma, mucho más cara, mucho más grande, más de tres veces más rápida que la plataforma anterior, y aún sin ningún cuello de botella:

  • Dos procesadores Intel Xeon E5-2643v3 (hexa-core de 3.4GHz con hyperthreading)
  • Placa base de doble socket Asus Z10PE-D16 WS
  • Kingston KVR DDR4-2133 ECC RAM 16GBx8 (o si puede pagarlo, 16GBx16)
  • Dos tarjetas AMD Radeon R9 295X2 en la configuración de CrossFire (4 GPU en total, y si puede administrarlo, obtenga tres)
  • Intel SSD 730 Series (tarjeta PCIe NVMe)

Reutilizar sistemas antiguos, muchos de ellos

Además, si puede encontrar un montón de PC antiguas por poco dinero (por ejemplo, mi escuela está vendiendo sus 100+ Core 2 Duo PC a $ 15 cada una después de que sean reemplazadas por nuevas máquinas i5), puede aumentar algunas decenas de ellos y tíralos en un grupo de Beowulf, si sabes cómo poner esos grupos en funcionamiento.

Por ejemplo, si sacó 30 de esos sistemas Core 2 Duo con 512 MB de RAM cada uno, terminará con un clúster con 60 núcleos y 30 GB de RAM.

La supercomputadora de una sola máquina

Si puedes obtener una PlayStation 3 de Sony que aún puede ejecutar Linux, esa bestia podrá ayudarte mucho. Por cierto, de acuerdo con la USAF, coloque 1790 de ellos juntos en un clúster de Beowulf y obtendrá una supercomputadora TOP500.

    
respondido por el Maxthon Chan