Acelerando código científico en Python usando Numba

Autores
Milla, Andrés; Rucci, Enzo
Año de publicación
2021
Idioma
español castellano
Tipo de recurso
documento de conferencia
Estado
versión publicada
Descripción
En la actualidad, Python es uno de los lenguajes más utilizados en diversas áreas de aplicación. Una de ellas es el ámbito científico, donde resulta habitual la existencia de algoritmos numéricos que requieren un gran costo computacional. Sin embargo, Python presenta limitaciones a la hora de poder paralelizar esta clase de código. Para solucionar esta problemática surge Numba, un compilador JIT que traduce Python en código de máquina optimizado a través de LLVM. Esta herramienta cuenta con primitivas para paralelizar algoritmos, autovectorización mediante instrucciones SIMD, entre otras características. En este estudio, se analizan algunas capacidades y limitaciones de Numba para acelerar algoritmos numéricos, utilizando como caso de estudio N-Body, un problema popular en simulación y con alta demanda computacional. Partiendo desde una implementación base desarrollada en Python con NumPy, se muestra como la integración de diferentes opciones de Numba la mejoran hasta 687x, presentando rendimientos cercanos a una implementación de C+OpenMP en una arquitectura multicore Intel de 56 núcleos.
Red de Universidades con Carreras en Informática
Materia
Ciencias Informáticas
Python
Numba
N-body
HPC
multi-threading
Shared memory algorithms
Nivel de accesibilidad
acceso abierto
Condiciones de uso
http://creativecommons.org/licenses/by-nc-sa/4.0/
Repositorio
SEDICI (UNLP)
Institución
Universidad Nacional de La Plata
OAI Identificador
oai:sedici.unlp.edu.ar:10915/126012

id SEDICI_c8c81e76e44799fcfc4072282b9d6a0f
oai_identifier_str oai:sedici.unlp.edu.ar:10915/126012
network_acronym_str SEDICI
repository_id_str 1329
network_name_str SEDICI (UNLP)
spelling Acelerando código científico en Python usando NumbaMilla, AndrésRucci, EnzoCiencias InformáticasPythonNumbaN-bodyHPCmulti-threadingShared memory algorithmsEn la actualidad, Python es uno de los lenguajes más utilizados en diversas áreas de aplicación. Una de ellas es el ámbito científico, donde resulta habitual la existencia de algoritmos numéricos que requieren un gran costo computacional. Sin embargo, Python presenta limitaciones a la hora de poder paralelizar esta clase de código. Para solucionar esta problemática surge Numba, un compilador JIT que traduce Python en código de máquina optimizado a través de LLVM. Esta herramienta cuenta con primitivas para paralelizar algoritmos, autovectorización mediante instrucciones SIMD, entre otras características. En este estudio, se analizan algunas capacidades y limitaciones de Numba para acelerar algoritmos numéricos, utilizando como caso de estudio N-Body, un problema popular en simulación y con alta demanda computacional. Partiendo desde una implementación base desarrollada en Python con NumPy, se muestra como la integración de diferentes opciones de Numba la mejoran hasta 687x, presentando rendimientos cercanos a una implementación de C+OpenMP en una arquitectura multicore Intel de 56 núcleos.Red de Universidades con Carreras en Informática2021-10-05info:eu-repo/semantics/conferenceObjectinfo:eu-repo/semantics/publishedVersionObjeto de conferenciahttp://purl.org/coar/resource_type/c_5794info:ar-repo/semantics/documentoDeConferenciaapplication/pdfhttp://sedici.unlp.edu.ar/handle/10915/126012spainfo:eu-repo/semantics/openAccesshttp://creativecommons.org/licenses/by-nc-sa/4.0/Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)reponame:SEDICI (UNLP)instname:Universidad Nacional de La Platainstacron:UNLP2025-10-15T11:22:16Zoai:sedici.unlp.edu.ar:10915/126012Institucionalhttp://sedici.unlp.edu.ar/Universidad públicaNo correspondehttp://sedici.unlp.edu.ar/oai/snrdalira@sedici.unlp.edu.arArgentinaNo correspondeNo correspondeNo correspondeopendoar:13292025-10-15 11:22:16.889SEDICI (UNLP) - Universidad Nacional de La Platafalse
dc.title.none.fl_str_mv Acelerando código científico en Python usando Numba
title Acelerando código científico en Python usando Numba
spellingShingle Acelerando código científico en Python usando Numba
Milla, Andrés
Ciencias Informáticas
Python
Numba
N-body
HPC
multi-threading
Shared memory algorithms
title_short Acelerando código científico en Python usando Numba
title_full Acelerando código científico en Python usando Numba
title_fullStr Acelerando código científico en Python usando Numba
title_full_unstemmed Acelerando código científico en Python usando Numba
title_sort Acelerando código científico en Python usando Numba
dc.creator.none.fl_str_mv Milla, Andrés
Rucci, Enzo
author Milla, Andrés
author_facet Milla, Andrés
Rucci, Enzo
author_role author
author2 Rucci, Enzo
author2_role author
dc.subject.none.fl_str_mv Ciencias Informáticas
Python
Numba
N-body
HPC
multi-threading
Shared memory algorithms
topic Ciencias Informáticas
Python
Numba
N-body
HPC
multi-threading
Shared memory algorithms
dc.description.none.fl_txt_mv En la actualidad, Python es uno de los lenguajes más utilizados en diversas áreas de aplicación. Una de ellas es el ámbito científico, donde resulta habitual la existencia de algoritmos numéricos que requieren un gran costo computacional. Sin embargo, Python presenta limitaciones a la hora de poder paralelizar esta clase de código. Para solucionar esta problemática surge Numba, un compilador JIT que traduce Python en código de máquina optimizado a través de LLVM. Esta herramienta cuenta con primitivas para paralelizar algoritmos, autovectorización mediante instrucciones SIMD, entre otras características. En este estudio, se analizan algunas capacidades y limitaciones de Numba para acelerar algoritmos numéricos, utilizando como caso de estudio N-Body, un problema popular en simulación y con alta demanda computacional. Partiendo desde una implementación base desarrollada en Python con NumPy, se muestra como la integración de diferentes opciones de Numba la mejoran hasta 687x, presentando rendimientos cercanos a una implementación de C+OpenMP en una arquitectura multicore Intel de 56 núcleos.
Red de Universidades con Carreras en Informática
description En la actualidad, Python es uno de los lenguajes más utilizados en diversas áreas de aplicación. Una de ellas es el ámbito científico, donde resulta habitual la existencia de algoritmos numéricos que requieren un gran costo computacional. Sin embargo, Python presenta limitaciones a la hora de poder paralelizar esta clase de código. Para solucionar esta problemática surge Numba, un compilador JIT que traduce Python en código de máquina optimizado a través de LLVM. Esta herramienta cuenta con primitivas para paralelizar algoritmos, autovectorización mediante instrucciones SIMD, entre otras características. En este estudio, se analizan algunas capacidades y limitaciones de Numba para acelerar algoritmos numéricos, utilizando como caso de estudio N-Body, un problema popular en simulación y con alta demanda computacional. Partiendo desde una implementación base desarrollada en Python con NumPy, se muestra como la integración de diferentes opciones de Numba la mejoran hasta 687x, presentando rendimientos cercanos a una implementación de C+OpenMP en una arquitectura multicore Intel de 56 núcleos.
publishDate 2021
dc.date.none.fl_str_mv 2021-10-05
dc.type.none.fl_str_mv info:eu-repo/semantics/conferenceObject
info:eu-repo/semantics/publishedVersion
Objeto de conferencia
http://purl.org/coar/resource_type/c_5794
info:ar-repo/semantics/documentoDeConferencia
format conferenceObject
status_str publishedVersion
dc.identifier.none.fl_str_mv http://sedici.unlp.edu.ar/handle/10915/126012
url http://sedici.unlp.edu.ar/handle/10915/126012
dc.language.none.fl_str_mv spa
language spa
dc.rights.none.fl_str_mv info:eu-repo/semantics/openAccess
http://creativecommons.org/licenses/by-nc-sa/4.0/
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)
eu_rights_str_mv openAccess
rights_invalid_str_mv http://creativecommons.org/licenses/by-nc-sa/4.0/
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)
dc.format.none.fl_str_mv application/pdf
dc.source.none.fl_str_mv reponame:SEDICI (UNLP)
instname:Universidad Nacional de La Plata
instacron:UNLP
reponame_str SEDICI (UNLP)
collection SEDICI (UNLP)
instname_str Universidad Nacional de La Plata
instacron_str UNLP
institution UNLP
repository.name.fl_str_mv SEDICI (UNLP) - Universidad Nacional de La Plata
repository.mail.fl_str_mv alira@sedici.unlp.edu.ar
_version_ 1846064278954573824
score 12.891075