Optimize code by merging expressions

Abierto
#860 1 comentario 2 reacciones 0 asignados Ver en GitHub

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

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

optimization

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

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de stan-dev/stanc3

Todos los issues de stan-dev/stanc3

Issues similares

Más issues de Compilers

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.