Esta es una pregunta abierta. ¿Qué enfoques debería considerar?¿Cuáles son las mejores opciones actuales para paralelizar una aplicación .NET intensiva en CPU?
Respuesta
Existen algunas extensiones paralelas a .NET que se encuentran actualmente en pruebas y están disponibles en el Parallel Computing Developer Center 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 está en Channel 9.
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.
@Larsenal
Si quieres sucursal fuera de .NET ha habido mucha discusión acerca de Intel de Threading Building Blocks que es una biblioteca paralelo para C++.
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 funcional, comience a leer los artículos en el tema "Simultaneidad" en los archivos de MSDN Magazine (link), particularmente cualquier cosa escrita por Jeff Richter. Esos le darán las tuercas y tornillos en las construcciones de subprocesos específicas de Windows y .NET. (La sección multi-threading en "CLR vía C# (Amazon) de Richter es corta, pero muy perspicaz, muy recomendable.)
Hay muchas opciones y la mejor solución dependerá de la naturaleza del problema que está tratando de resolver. Si usted está tratando de resolver un problema embarassingly parallel luego dividiendo y parallelising las tareas será trivial en ese caso, el reto vendrá en distribución y gestión de los datos utilizados
Algunas sugerencias serían:..
- ICE Grid que tiene enlaces para .Net y otros lenguajes comunes
- Velocity que es la versión de Microsoft de Oracle (Tangersol) Coherencia
- La próxima oferta HPC de Microsoft Compute Cluster Server
- Data Synapse Grid Server
- 1. ¿Cuáles son las opciones actuales para Delphi Web & Web Service Development
- 2. ¿Cuáles son las mejores opciones disponibles para una interfaz de usuario rica en una aplicación ASP.NET MVC?
- 3. Las mejores opciones para animación en THREE.JS
- 4. ¿Cuáles son las mejores prácticas para crear una aplicación de chat en android
- 5. ¿Cuáles son las opciones de validación para ASP.NET MVC
- 6. ¿Cuáles son las mejores opciones para el reenvío de puertos NAT?
- 7. ¿Cuáles son las mejores opciones para editar texto enriquecido en Rails?
- 8. ¿Cuáles son algunas de las mejores formas de realizar actualizaciones silenciosas para una aplicación de escritorio?
- 9. Archivo grande (30Mb +) Cargas a través de Internet, ¿cuáles son las mejores opciones?
- 10. ¿Cuáles son las opciones para guardar datos en iOS?
- 11. ¿Cuáles son los mejores recursos para aprender WPF y .NET?
- 12. Índices MySQL: ¿cuáles son las mejores prácticas?
- 13. ¿Cuáles son las diversas opciones/argumentos para "./configure" en Linux
- 14. ¿Cuáles son las opciones para na.action en boxplot?
- 15. ¿Cuáles son las mejores soluciones livianas para arrastrar y soltar?
- 16. localStorage Size Limits ... ¿Cuáles son las opciones?
- 17. ¿Cuáles son las mejores prácticas para iniciar sesión en una aplicación empresarial?
- 18. ¿Cuáles son las mejores prácticas para implementar una aplicación Catalyst en un servidor de producción?
- 19. ¿Cuáles son las mejores alternativas a Lucene?
- 20. ¿Cuáles son las mejores características de Scala?
- 21. ¿Cuáles son las mejores prácticas para administrar conexiones de bases de datos en .NET?
- 22. ¿Cuáles son las mejores prácticas para usar el almacenamiento local de subprocesos en .NET?
- 23. ¿Cuáles son las relaciones actuales entre Eclipse, Aptana y PyDev?
- 24. ¿Cuáles son las diferencias actuales entre jQuery y Prototype?
- 25. ¿Cuáles son las opciones para los efectos animados de jQuery?
- 26. ¿Cuáles son las opciones disponibles para el método Doctrine_Core :: generateModelsFromDb?
- 27. ¿Cuáles son las mejores prácticas para internacionalizar una aplicación de escritorio Java Swing?
- 28. ¿Cuáles son las mejores prácticas para usar los Métodos de extensión en .Net?
- 29. ¿Cuáles son las mejores prácticas para usar Z2 Availability Zones?
- 30. ¿Cuáles son las mejores prácticas para diseñar esquemas XML?
¿Qué hardware? Si consume mucha CPU y solo tiene 1 CPU de un solo núcleo, múltiples subprocesos disminuirán el rendimiento. Además, si necesita paralelizar a un clúster de PC, ese es un animal muy diferente a múltiples hilos en 1 PC. – mbeckish