threading - ¿Cuáles son las mejores opciones actuales para paralelizar una aplicación.NET intensiva en CPU?
tpl c# (7)
@Larsenal
Si desea sucursal fuera de .NET, ha habido mucha discusión sobre los Threading Building Blocks de Intel, que es una biblioteca paralela para C ++.
Esta es una pregunta abierta. ¿Qué enfoques debería considerar?
Creo que también podríamos incluir enfoques no específicos de .NET para el procesamiento paralelo si se encuentran entre las mejores opciones a considerar.
Hay algunas extensiones paralelas a .NET que están actualmente en pruebas y disponibles en el Centro de Desarrolladores de Computación en Paralelo de Microsoft. Tienen algunos elementos interesantes que esperarías como Foreach paralelo y una versión paralela de LINQ llamada PLINQ. Parte de la mejor información sobre las extensiones se encuentra en el Canal 9 .
Hay muchas opciones y la mejor solución dependerá de la naturaleza del problema que está tratando de resolver. Si está tratando de resolver un problema embarazosamente paralelo , dividir y paralelizar las tareas será trivial. En ese caso, el desafío vendrá en la distribución y administración de los datos utilizados.
Algunas sugerencias serían:
- ICE Grid que tiene enlaces para .Net y otros lenguajes comunes
- Velocidad que es la versión de Microsoft de Oracle (Tangersol) Coherence
- La próxima oferta de HPC de Microsoft Compute Cluster Server
- Servidor de cuadrícula de Synapse de datos
Sé que es un viejo tema. Pero, publicar aquí de todos modos. Mira esta sesión de pdc:
Su primer paso es encontrar y comprender el paralelismo en su problema. Es realmente fácil escribir código de subprocesos múltiples que no funciona mejor que el código de subproceso único que reemplaza. "Patrones para programación en paralelo" (Amazon) es una excelente introducción a los conceptos clave.
Una vez que tenga un diseño viable, comience a leer los artículos en el tema "Concurrencia" en los archivos de la Revista MSDN (enlace) , particularmente cualquier cosa escrita por Jeff Richter. Esos le darán las tuercas y tornillos en las construcciones de subprocesamiento específicas de Windows y .NET. (La sección multi-threading en "CLR via C # (Amazon) de Richter es corta, pero muy perspicaz, muy recomendable).
También revise el proyecto en codeplex, que es un tutorial de tipo sobre la paralelización usando .net, entre otras cosas: