Cputime exceeded?

Viestiketju Vapaata keskustelua -osiossa. Ketjun avasi hired_gun 13.06.2002.

  1. hired_gun

    hired_gun Guest

    Auttakaapas tietotekniikan asiantuntijat.

    Tein C-kielisen ohjelman, joka laskee kolminkertaisen integraalin numeerisesti. Sitten tätä integraalia lasketaan yhden muuttujan funktiona muuttujan eri arvoilla.
    Yhden tuloksen laskemiseen saattaa kulua aikaa noin 10minuuttiakin.
    Kun ohjelma oli ollur käynnissä noin 2.5h, ajo keskeytyi ja ruutuun tuli teksti :"Cputime exceeded".
    Mitä tämä ilmoitus tarkoittaa, ja voiko sitä välttää?

    Kiitoksia jo etukäteen avusta.
     
  2.  
  3. Jake

    Jake Active member

    Liittynyt:
    20.04.2002
    Viestejä:
    2,547
    Kiitokset:
    1
    Pisteet:
    66
    Tuohon on todella vaikea vastata, pitäisi nähdä sinun .cpp tiedosto. Syitä voi olla monia.
    Looginen virhe tai virheellinen data "työ kansiossa" eli kaikki tiedostot paitsi standardi "ulostulo" tuhoutuu ohjelman päätyttyä.
    "Interactively" jos on niin cputime ja datan määrä voi kasvaa liian suureksi, joka aiheuttaa virheen. Mutta tietääkseni virhe "cputime exceeded" johtuu aina siitä, että prosessorille menee liikaa dataa kerralla liian nopeasti, minkä voi aiheuttaa todella moni syy.
    Mielestäni tämä on ohjelmoijan "h*lvetti" tuo virheilmoitus :)
    Todella vaikea etsiä vika..

    Sen verran vielä lisättävä, että otathan matikka kirjastosta kaiken irti, ettei tule turhaa kuormaa ohjelmalle..
     
    Viimeksi muokattu: 14.06.2002
  4. Jake

    Jake Active member

    Liittynyt:
    20.04.2002
    Viestejä:
    2,547
    Kiitokset:
    1
    Pisteet:
    66
    Sellainen kysymys vielä, että teetkö todellakin kaiken yhdessä funktiossa ja käytät vain yhtä muuttujaa. Jos teet noin niin ei ole mikään ihme, että ohjelma alkaa tökkiä.
    Ja tuota lausetta "yhden muuttujan funktiona" en oikein ymmärrä, vai tarkoitatko sillä sitä, että funktiossa eli pää- tai aliohjelmassa on yksi muuttuja. Ihmettelen kyllä suuresti miten olet tehnyt tuon ohjelman, jos et käytä kuin yhtä muuttujaa.
    Varmaan on jotain väärin ymmärrystä minulla tuosta sinun tekstistä :)
     
  5. hired_gun

    hired_gun Guest

    Siis, muuttujia ohjelmassa toki on suuri määrä, mutta ohjelman eri ajokerroilla eräälle muuttujalle annetaan aina eri (diskreetti) arvo.
    Ts. tällöin voin sanoa, että integraalia lasketan "yhden muuttujan funktiona".
     
  6. Jake

    Jake Active member

    Liittynyt:
    20.04.2002
    Viestejä:
    2,547
    Kiitokset:
    1
    Pisteet:
    66
    Juu, nyt ymmärsin ongelmasi.
    Älä käytä vain yhtä muuttujaa, vaan luo useampi muuttuja, jotka käsittelee sitä "arvoasi" yhtä aikaa.
    Prosessori ei välttämättä pysty käsittelemään sitä kerralla ja antaa virhe ilmoituksen.
    Ja olethan "varannut" muuttujalle tarpeeksi "tilaa" prosessorilta?
    Mikä muuttuja tyyppi sinulla on käytössä?
     
  7. hired_gun

    hired_gun Guest

    Noniin.
    Itse asiassa luulen saaneeni selville asiaa paikallisilta kollegoilta kyseltyäni että mistä on kyse.

    Ajoin ohjelmaa SSH yhteydellä eräässä yliopistoni Unix koneessa. Nyt on ilmeisesti niin, että tuota yhteyden yhtäjaksoista aukioloa on rajoitettu, aika lienee jotain 2,5-3 tuntia. Tämän ajan ylityttyä yhteys katkaistaan automaattisesti, tai ainakin ohjelmani lopetettiin! :)
    Tämä on tietysti ymmärrettävää, sillä käyttämiäni koneita ei ole tarkoitettu tällaiseen raskaaseen laskentaan, vaan pääasiassa opiskelijoiden sähköpostin käyttöön.
    En ole vielä kokeillut, mutta voi olla, että tuon aikarajoituksen voi ohittaa käskyllä "unlimit cpu". Tiedä tuota sitten.
    Täytynee hommata itselleen tunnukset hiukan tehokkaampiin koneisiin, joiden käyttöaikaa ei ole rajoitettu.
    Kiitoksia kuitenkin avusta/mielenkiinnosta.
     

Jaa tämä sivu