Bases de datos de resultados para códigos numéricos


17

En la literatura sobre métodos numéricos, muchos trabajos de investigación consisten en una descripción de una nueva variación algorítmica, seguida de algunos problemas de prueba que comparan el nuevo método con uno o dos métodos existentes. Esto dificulta determinar

  • Cómo funcionaría el nuevo método en otros problemas de interés
  • Cómo se compararía el nuevo método con otros métodos existentes

Por supuesto, ambas de estas preguntas son por lo general crítico para alguien decidir si adoptar el nuevo método. Para mejorar esta situación, parece deseable, si es posible, hacer que la gente ejecute un gran conjunto de problemas de prueba ( vea esta pregunta ) con su método y catalogue los resultados en una base de datos para comparar con otros métodos. Un científico o ingeniero podría consultar la base de datos, quizás indicando qué características de solución / problema son más importantes para ellos (precisión, eficiencia, propiedades cualitativas, etc.), y obtener una comparación cuantitativa del rendimiento de todos los métodos en la base de datos.

Me doy cuenta de que hay muchas dificultades para aplicar esta idea (principalmente: Hacer que la gente realmente se ejecutan todos esos problemas, y la medición de coste computacional). Pero mi pregunta es: ¿existe una base de datos de tales resultados? (digamos de alguna subcampo particular) o tiene un enfoque como éste en ningún implementado sido?

Tanto de las respuestas publicadas hasta ahora son las bases de datos acerca de los problemas. Me estoy preguntando por las bases de datos de resultados.

Respuestas:


9

De los criterios que ha especificado, creo que el proyecto más cercano que conozco sería la colección de matriz dispersa de la Universidad de Florida . La gente usa habitualmente este conjunto de datos para comparar dispersos solucionadores de álgebra lineal, y puede filtrar por aplicación, número de nonzeros, dimensiones de matriz, etc. con una interfaz web realmente agradable, una interfaz MATLAB o una GUI Java. He visto tablas de estos problemas enumeradas en documentos junto con comparaciones de tiempo de ejecución del solucionador con 4 a 8 solucionadores de álgebra lineal.

Estoy de acuerdo en que sería útil compilar tales bases de datos y, además, creo que el enfoque de recopilación de matriz dispersa de UF para compilar los datos es excelente y sería un gran comienzo para cualquiera que esté pensando en darse cuenta de esta idea. Ejecutar todos los problemas, en la práctica, no parece una gran dificultad, siempre y cuando pueda obtener acceso a todos los solucionadores; Si tiene acceso a los solucionadores y una máquina de referencia estándar confiable con todo el software necesario instalado, entonces debe ser cuestión de ejecutar un script y recopilar los datos. La dificultad, en mi opinión, sería lograr que las personas le den su software, si no es de código abierto. Si es comercial, puede comprarlo o incluso hacer que la gente done el software,MONEDA OProyecto . Pero si se trata de software de investigación que no es comercial ni de código abierto, entonces debe convencer a las personas para que compren el esfuerzo, y es posible que no confíen en un tercero para evaluar su software de manera justa.

También sé que en la optimización, hay bases de datos descargables de problemas ( CUTEr viene a mi mente) y libros de problemas de prueba para la optimización. He visto a personas (por ejemplo, estoy pensando específicamente en una charla de Ruth Misener en AIChE 2011) comparar su solucionador de optimización versus otros solucionadores en bases de datos de problemas en presentaciones; No estoy seguro de lo que se publica públicamente. Sé que existe una tradición en la optimización para la comparación a gran escala (muchos solucionadores, muchos problemas); Simplemente no creo que haya una base de datos en línea disponible.

Otra cosa que creo que es importante es que distinguimos aquí entre métodos e implementaciones de software.. En computación científica, todos hablamos sobre qué métodos son más rápidos o más lentos según cosas como las métricas de complejidad computacional o nuestras experiencias con varios problemas. Sin embargo, cuando se trata de medir cuantitativamente el tiempo computacional, a menos que uno cuente el número de FLOP en un algoritmo particular, uno tiene que implementar el algoritmo en el software y luego medir el rendimiento de alguna manera (uso de memoria, tiempo de ejecución del reloj de pared, etc. .). Tiene sentido evaluar el rendimiento de un método cuando se observa la complejidad computacional o los conteos de FLOP, porque no necesitamos una implementación para medir tales cosas, pero en el momento en que estamos interesados ​​en los tiempos reales de ejecución del reloj de pared, hablar de métodos es solo útil como dispositivo abstracto, coloquial. (Por ejemplo,

Traigo esta distinción entre métodos y software porque en una base de datos así, también pude ver la posibilidad de rastrear la mejora en el software a lo largo del tiempo. Entonces, por ejemplo, con algo como, por ejemplo, PETSc o PyCLAW, o cualquier software que se esté probando, sería interesante ver qué problemas se ven afectados de manera positiva (o negativa) por las actualizaciones en el software. Esto podría ser útil para los investigadores que intentan decidir si vale la pena cualquier costo potencial en dinero y mano de obra para actualizar sus códigos. Otra razón por la cual esta distinción es importante es porque un buen método puede implementarse mal; Creo que esta posibilidad contribuye a la reticencia que las personas a veces tienen al compartir sus códigos de investigación.

Creo que sea lo que sea que surja de esta idea (y espero que algo surja de ella y esté dispuesto a contribuir después de mi doctorado), es importante enfatizar esa distinción entre software y métodos, porque si estamos ejecutando problemas de prueba, estamos va a ser resultado de contabilización para el software.


2
Me agradan mucho sus comentarios y usted plantea un punto importante. Como estoy seguro de que está consciente, los enlaces te dan son a bases de datos de problemas, no de resultados.
David Ketcheson el

Esas fueron las cosas más cercanas que pude encontrar. Traté de caza alrededor de las bases de datos de resultados, porque creo que usted plantea una idea muy importante, pero no pude encontrar ninguna. Tal vez este es un nuevo proyecto importante?
Geoff Oxberry el

Gracias; Estoy de acuerdo, y éstos son útiles como "aproximaciones existentes más cercanos" como usted dice. De hecho estoy pensando en esto (con algunos otros que se prestarían más credibilidad) como un nuevo proyecto. ¡Estoy muy contento de que estés interesado! Podemos discutirlo en otra parte, ya que SE es reacio a la discusión.
David Ketcheson el

4

Se ha intentado crear una lista de integrales "difíciles" para calcular numéricamente (ver documentos de Walter Gautschi, Robert Piessens y otros) pero no una base de datos formal.

En el campo de las ecuaciones diferenciales ordinarias, no es el equipo de prueba IVP , un conjunto de pruebas para problemas de valores iniciales.


en realidad estoy preguntando sobre bases de datos de resultados calculados, no sobre bases de datos de problemas
David Ketcheson el

1
@DavidKetcheson Contiene código de controlador para automatizar el cálculo de los resultados usted mismo.
Jed Brown el

¡Excelente! Aunque me encantaría ver una base de datos real donde se almacenan los resultados (además, por supuesto, de la capacidad de volver a calcularlos), esto es lo más parecido que he visto a lo que estaba pensando.
David Ketcheson el

3

No estoy familiarizado con la base de datos tal, pero creo que sería muy difícil de definir de una manera útil. Un mejor sistema, en mi opinión, es liberar el código en una forma ejecutable para que el usuario pueda realizar las pruebas tan exhaustivamente como desee. En términos de repositorios de la comunidad, el conjunto de pruebas IVP que GertVdE menciona también contiene código de controlador para ejecutar varios solucionadores ODE / DAE publicados sobre los problemas de prueba. En mis publicaciones, trato de liberar el código y todos los scripts utilizados para crear el análisis de los datos de salida y crear los gráficos y tablas que aparecen en el documento.


1
Pequeña objeción: esto es más un comentario que una respuesta. Sin embargo, aprecio el pensamiento crítico. Me gustaría ver a la gente hacer las dos cosas. ¿Por qué hacer que instale y ejecute su código solo para poder trazar sus resultados contra los míos? ¿Y luego puedes afirmar que no configuré las opciones correctas? De todos modos, yo (es decir, el investigador típico) simplemente no lo haré porque es demasiado trabajo. Pero si todo lo que tuviera que hacer fuera leer en un archivo de datos, podría estar dispuesto.
David Ketcheson el

1

El Taller de aeroacústica computacional sobre problemas de referencia tiene un objetivo similar en mente para problemas aeroacústicos. Primero presentan un conjunto de problemas de referencia con anticipación, y hacen que las personas los resuelvan usando sus propios métodos y comparen los resultados. Por ejemplo, aquí están las actas de la cuarta reunión: http://www.archive.org/details/nasa_techdoc_20040182258

Aunque, por lo que puedo decir, no comparan cuán eficientes son sus códigos entre sí, principalmente miran la precisión.


¡Interesante! ¿Existe una base de datos de soluciones? O cómo es exactamente lo que se comparan los resultados?
David Ketcheson

La "base de datos" está en el informe que publiqué. Al final del documento hay una sección titulada "Comparaciones de soluciones". Solo ha habido cuatro reuniones para esto, y la última fue en 2004. Desearía que hubiera más impulso para poner este tipo de cosas en línea como usted propone.
James Custer

1

Dentro del modelado de terremotos ha habido varios de estos tipos de esfuerzos. Los que vienen a la mente son el proyecto de simulación de ruptura dinámica y el proyecto de inversión de fuente (http://eqsource.webfactional.com/wiki/). Ambos proporcionan problemas físicos para resolver y son agnósticos (en algún nivel) con respecto a los métodos empleados. Realmente, estos proyectos tratan de hacer que los modeladores específicos del dominio se comparen entre sí, no realmente un conjunto general de problemas de prueba para cada método numérico de pdes. Pero puede comparar con otros resultados, y esto ha revelado muchos problemas con muchos códigos.

Una posibilidad a considerar sería el proyecto de Madagascar , que se ha desarrollado dentro del mundo de las imágenes sísmicas, pero afirma ser un propósito bastante general.


Madagascar es un excelente ejemplo. ¡Gracias!
Jack Poulson
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.