Reduce overhead of read_data and write_data
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Refactorización
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- numpy, python
- Área
- api, performance
Línea de trabajo
Comienza por los puntos de entrada de los bindings de Python read_data y write_data, usando el hilo de Discourse enlazado para comprender la sobrecarga reportada y las notas sobre reshape, asignaciones y comprobación de errores. Compara las mediciones de tiempo del lado de Python con las mediciones de tiempo de preCICE y, después, verifica que las funciones conserven su comportamiento evitando al mismo tiempo copias y asignaciones innecesarias.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
In this discourse thread, I tracked down the increased duration spent in the "do-nothing solver" down to read_data and write_data.
Most logical explanation would be the additional
- input
vertex_idsandvaluesare copied to a vector, even though passingnp.reshape(X, -1)to the preCICE API suffices and prevents copies. - output values are allocated, then passed to the API, then allocated to build an
np.array - we do a lot of additional error checking (which is good)
Example of rhoVW on solver2, being vectorial data of large mesh:
- Time measured in preCICE: 7ms (note: this doesn't allocate)
- Time measured in Python: 40ms (including overhead from activating profiling in python, this needs to allocate, so overhead scales with size)
Notes:
- With some tweaking I can get this down to 30ms. This makes the function actually shorter, simpler, and easier to follow.
np.flatten()copies the input, whilenp.reshapedoesn't if it can avoid it.- The majority of the generated code seems to be error handling, which we could potentially be avoided by using the CPP API directly for calls to
getDataDimensionsand do this in one place. - This overhead could be profiled with something like https://github.com/precice/precice/issues/1647
- Lenguaje dominante
- Cython
- Estrellas
- 30
- Forks
- 19
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de precice/python-bindings
-
documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
precice/python-bindings#258 · 1 reacción ·
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
precice/python-bindings#175 · 2 comentarios ·
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
precice/python-bindings#255 ·
-
good first issue
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
precice/python-bindings#248 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 38/100
precice/python-bindings#238 · 6 comentarios ·
Todos los issues de precice/python-bindings
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
speaches-ai/speaches#678 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
-
[BUG] ECR GetAuthorizationToken returns a proxyEndpoint for the default region, not the request's Abiertobug ecr
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
conda-forge/spacy-feedstock#177 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100