내가 지정한 기준 중 내가 아는 가장 가까운 프로젝트는 University of Florida의 희소 행렬 모음 일 것 입니다. 사람들은 일반적으로이 데이터 세트를 사용하여 희소 선형 대수 솔버를 비교하며, 정말 멋진 웹 인터페이스, MATLAB 인터페이스 또는 Java GUI를 사용하여 응용 프로그램, 0이 아닌 수, 행렬의 차원 등으로 필터링 할 수 있습니다. 이 문제의 표를 4-8 선형 대수 솔버에 대한 솔버 런타임 비교와 함께 논문에 나와 있습니다.
나는 그러한 데이터베이스를 컴파일하는 것이 유용 할 것이라는 데 동의하며, 또한 데이터를 컴파일하기위한 UF 희소 행렬 수집 접근법은 훌륭한 방법이라고 생각하며,이 아이디어를 실현하고자하는 모든 사람들에게 훌륭한 출발을 할 것이라고 생각합니다. 실제로 모든 문제를 해결하는 것은 모든 솔버에 액세스 할 수있는 한 큰 어려움처럼 보이지 않습니다. 솔버 및 필요한 모든 소프트웨어가 설치된 신뢰할 수있는 표준 참조 시스템에 액세스 할 수있는 경우 스크립트를 실행하고 데이터를 수집해야합니다. 내 생각에 어려움은 사람들이 오픈 소스가 아닌 경우 소프트웨어를 제공하게 만드는 것입니다. 상업적인 경우에는 소프트웨어를 구매하거나 사람들이 소프트웨어를 기부하도록 할 수 있습니다.COIN-OR 프로젝트. 그러나 상용 소프트웨어 나 오픈 소스가 아닌 리서치 소프트웨어 인 경우 사람들이 노력하도록 구매하도록 설득해야하며 소프트웨어를 공정하게 평가하기 위해 제 3자를 신뢰하지 않을 수 있습니다.
또한 최적화에는 다운로드 가능한 문제 데이터베이스 ( CUTEr
가 떠오를 것)와 최적화를위한 테스트 문제 가 있다는 것을 알고 있습니다. 나는 사람들을 보았습니다 (예를 들어, AIChE 2011에서 Ruth Misener의 대화를 생각하고 있습니다)는 프레젠테이션의 문제 데이터베이스에서 최적화 솔버와 다른 솔버를 비교합니다. 무엇이 공개 될지 잘 모르겠습니다. 대규모 비교 (많은 솔버, 많은 문제)에 대한 최적화의 전통이 있다는 것을 알고 있습니다. 온라인 데이터베이스가 있다고 생각하지 않습니다.
내가 생각하는 또 다른 중요한 것은 여기에서 메소드 와 소프트웨어 구현을 구별한다는 것입니다. 과학 컴퓨팅에서 우리는 계산 복잡도 메트릭스 또는 다양한 문제에 대한 경험을 바탕으로 어떤 방법이 더 빠르거나 느린 지에 대해 이야기합니다. 그러나 계산 시간을 정량적으로 측정하는 경우 특정 알고리즘에서 FLOP 수를 계산하지 않는 한 소프트웨어에서 알고리즘을 구현 한 다음 어떤 방식 으로든 성능을 측정해야합니다 (메모리 사용, 월 클록 실행 시간 등). ). 계산 복잡성 또는 FLOP 카운트를 볼 때 메소드의 성능을 평가하는 것이 합리적입니다. 왜냐하면 우리는 그러한 것들을 측정하기 위해 구현이 필요하지 않기 때문에 실제 벽시계 실행 시간에 관심이있는 방법은 추상 구어체 장치로만 유용합니다. (예를 들어
이러한 데이터베이스에서는 시간이 지남에 따라 소프트웨어의 향상을 추적 할 가능성이 있기 때문에 방법과 소프트웨어의 차이점을 제시합니다. 예를 들어 PETSc 또는 PyCLAW와 같은 테스트 또는 어떤 소프트웨어를 테스트하든 소프트웨어 업그레이드로 인해 어떤 문제가 긍정적 (또는 부정적!)으로 영향을 받는지 보는 것이 흥미로울 것입니다. 이는 코드를 업그레이드하는 데 비용과 인력이 어느 정도의 가치가 있는지 결정하려는 연구원에게 유용 할 수 있습니다. 그러한 구별이 중요한 또 다른 이유는 좋은 방법이 잘못 구현 될 수 있기 때문입니다. 이 가능성은 사람들이 때때로 연구 코드를 공유하는 데있어 회귀에 기여한다고 생각합니다.
나는이 아이디어가 무엇이든 생각하고 (그리고 무언가가 나오기를 희망하며 박사 학위 후에 기꺼이 기꺼이 기여할 것입니다), 우리가 테스트 문제를 실행한다면, 우리는 소프트웨어에 대한 결과를 게시 할 예정입니다.