parallel processing - Álgebra lineal paralela para sistema multinúcleo
parallel-processing algebra (2)
Como lo mencionó @larsmans (con, por ejemplo, MKL), aún usa interfaces LAPACK + BLAS, pero solo encuentra una versión afinada y multihilo para su plataforma. MKL es genial, pero caro. Otras opciones de código abierto incluyen:
- OpenBLAS / GotoBLAS , el soporte de Nehalem debería funcionar bien, pero todavía no hay soporte para Westmere. Hace multihilo muy bien.
- Atlas : sintoniza automáticamente su arquitectura en el momento de la instalación. probablemente sea más lento para las matrículas "típicas" (por ejemplo, SGEMM cuadrado) pero puede ser más rápido para casos extraños, y para Westmere incluso puede vencer a OpenBLAS / GotoBLAS, no lo he probado yo mismo. Mayormente optimizado para casos seriales, pero incluye rutinas paralelas de subprocesos múltiples.
- Plasma : implementación de LAPACK diseñada específicamente para multinúcleo.
También estoy de acuerdo con el comentario de Mark; dependiendo de las rutinas de LAPACK que esté utilizando, la memoria distribuida con MPI podría ser más rápida que la multiproceso. Es poco probable que sea el caso con las rutinas BLAS, pero para algo más complicado (digamos las rutinas eigenvalue / vector en LAPACK) vale la pena probarlo. Si bien es cierto que las llamadas a funciones MPI son una sobrecarga, hacer las cosas en un modo de memoria distribuida significa que no tiene que preocuparse tanto por el uso compartido falso, la sincronización de acceso a variables compartidas, etc.
Estoy desarrollando un programa que necesita hacer cálculos intensos de álgebra lineal.
Ahora estoy usando las rutinas LAPACK / BLAS , pero necesito explotar mi máquina (24 core Xeon X5690).
He encontrado proyectos como pblas y scalapack , pero todos parecen centrarse en la informática distribuida y en el uso de MPI.
No tengo ningún clúster disponible, todos los cálculos se realizarán en un único servidor y el uso de MPI parece una exageración.
¿Alguien tiene alguna sugerencia sobre esto?