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.