Teadusarvutuse tööaja ennustaja

Date

2013

Journal Title

Journal ISSN

Volume Title

Publisher

Tartu Ülikool

Abstract

Töö koosneb kahest suuremast osast. Esimeses osas tutvustame meetodit, kuidas ennustada suvalise arvutuse tööaega, kasutades eelnevate jooksutamiste tulemusi. Teises osas tutvustame implementatsiooni koos kasutusjuhendi ja näidetega. Tööaja ennustamine tugineb järgnevale tähelepanekule. Me saame eristada erinevaid programmi jooksutamisi jooksutamise tööaega potentsiaalselt mõjutavate parameetrite abil. Talletades jooksutamiste parameetreid ja kulunud aega, saame andmetest tuletada mudeli, mis hindaks parameetrite alusel programmi kestust. Olles huvitatud mudeli arusaadavusest, ei saa me kasutada tavalisi mitteparameetrilise regressiooni meetodeid. Seetõttu kasutame üldistatud lineaarset regressiooni erinevate baasfunktsioonidega nagu n*n, n*log(n) ja n*n*n*log(n). Lähenedes lihtsa ja täpse mudeli leidmise probleemile mudelite ruumis genereerimise abil, võivad baasfunktsioonid ka keerulisemaid kujusid võtta, avaldudes näiteks erinevate astmetega parameetrite korrutise kaudu. Leitud mudeli ja parameetrite abil on juba võimalik ennustada programmi kestust. Tööga on kaasas ka Pythoni teek, mis rakendab kirjeldatud meetodit, ennustamaks suvalise programmi tööaega.
The thesis consists of two major parts. In the first part, we present a technique to predict an arbitrary computation’s running-time based on data gathered from previous executions. In the second part, we present an implementation along with a user manual and an example. Running-time prediction is based on the following observation. We can distinguish between different program calls using parameters that potentially affect the running time. By recording both parameters and elapsed time, we can derive a model from the data that would estimate the running time. As we are interested in the comprehensibility of the model, we cannot use regular non-parametric regression methods. Hence, we use generalised linear regression with different basis functions such as n*n , n*log(n) and n*n*n*log(n). However, as we approach the problem of finding a relatively simple yet accurate model while traversing the search space by generating different models, basis functions can get even more complicated, involving multiplications of multiple parameters with different powers. Using the found model, it is then possible to predict the running time when parameters are known. Thesis comes also with a Python library that uses the described method to estimate an arbitrary program’s running-time.

Description

Keywords

Citation