Optimize code by merging expressions
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- cpp, ocaml
- Área
- compilers, performance
Línea de trabajo
Empieza en la ruta de generación de expresiones de Stan a C++ ilustrada por los ejemplos de matrix, vector y row_vector, y sigue cómo se representan las variables de un solo uso. Se considera terminado cuando las asignaciones elegibles se integran en expresiones posteriores para reducir los accesos a memoria, mientras que las variables utilizadas en varios lugares siguen estando disponibles.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Now that we are using Eigen expressions in Stan Math it makes sense for compiler to merge multiple expressions into singe one where possible to avoid unnecessary memory accesses. This is possible where we have a variable of matrix, vector or row_vector type (or if using OpenCL any type that is replaced with a matrix_cl) that is used in exactly one place in further code. Such a variable can be removed and its use case replaced with the expression that was assigned to the variable.
For example from stan code:
matrix a, b;
matrix c = a + b;
matrix d = c * 3;
We want to generate (assuming c is not used anywhere else):
Eigen::MatrixXd a, b;
Eigen::MatrixXd d = (a + b) * 3;
instead of:
Eigen::MatrixXd a, b;
Eigen::MatrixXd c = a + b;
Eigen::MatrixXd d = c * 3;
- Lenguaje dominante
- OCaml
- Estrellas
- 162
- Forks
- 60
- Merge medio
- 2 d 22 h
- PR fusionados (30 d)
- 14
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Sin guía de contribución
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 stan-dev/stanc3
-
optimization performance robustness
Dificultad 5/5 Más de una semana Aptitud para principiantes 8/100
stan-dev/stanc3#1761 · 6 comentarios ·
Los mantenedores suelen responder en 1 día
-
feature
Dificultad 4/5 1-2 días Aptitud para principiantes 52/100
stan-dev/stanc3#1757 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
cleanup help wanted
Dificultad 5/5 Más de una semana Aptitud para principiantes 22/100
Los mantenedores suelen responder en 1 día
-
cpp-codegen feature performance
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
stan-dev/stanc3#1722 · 5 comentarios ·
Los mantenedores suelen responder en 1 día
-
feature optimization
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
Los mantenedores suelen responder en 1 día
Todos los issues de stan-dev/stanc3
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
swc-project/swc-ai-issues#414 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 69/100
-
HIP and OpenCL parsers raise AttributeError ('NoneType' has no attribute 'type') on a truncated `template <...` headerPosiblemente ocupada @jay23606 la tomó hoy. Abiertoarea:frontend backend:hip backend:opencl bug direction:input
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
CrossGL/crosstl#4386 · 1 comentario ·
Los mantenedores suelen responder en 1 día