Loading ...
Sorry, an error occurred while loading the content.
 

Multiple Instance of Seti@home

Expand Messages
  • Robert Gammon
    I have read the first 125 messages in this area. I see that several solutions for running multiple instances of Seti@home on a single computer have been
    Message 1 of 9 , May 9, 2001
      I have read the first 125 messages in this area. I see that several
      solutions for running multiple instances of Seti@home on a single
      computer have been shown. However, none of them seems to match my
      needs.

      As each work unit completes, user_info.sah gets updated. To maintain
      a consistent record of your work, this file MUST be copied from
      directory to directory where setiathome.exe is running.

      What I seek to do is to run 2 or 3 instances on a single CPU. Each
      instance will be staged out in time such that work unit completions
      are separated in time by about 24 hours. On this CPU, each work unit
      is requiring more than 75 hours to process (I am grossly unwilling to
      spend money on a faster machine - its the spending money part that I
      object to - I have better uses for that money at present).

      This suggests that I have a master directory that contains one or
      more files, certainly user-info.sah. setiathome will then be started
      via a .CMD file that copies the most recent user-info.sah from the
      master to the destination. Upon completion, the .CMD file will then
      copy the user-info.sah file to the master directory AND to ALL
      destination directories.

      Am I out in left field with this? has anyone else thought about this
      problem and developed a solution? The User Group statistics for OS/2
      Warp suggest that several people have such a solution in place.

      Robert Gammon
      45 WU processed, 475th on the list as of 5/9/01
    • Ralph Cohen
      ... Why do you want to run 2-3 concurrent sessions on your system when a single session already takes 75 hours to complete? For instance, if you run three
      Message 2 of 9 , May 9, 2001
        On Wed, 09 May 2001 20:26:50 -0000, Robert Gammon wrote:

        >
        >What I seek to do is to run 2 or 3 instances on a single CPU. Each
        >instance will be staged out in time such that work unit completions
        >are separated in time by about 24 hours. On this CPU, each work unit
        >is requiring more than 75 hours to process (I am grossly unwilling to
        >spend money on a faster machine - its the spending money part that I
        >object to - I have better uses for that money at present).


        Why do you want to run 2-3 concurrent sessions on your system when a
        single session already takes 75 hours to complete? For instance, if
        you run three sessions, you could expect each one to take approx. 220
        hours to complete. I know that a number of us are running Setiathome
        concurrently on networks of systems, but I'm not sure what advantage
        there is to running several sessions concurrently on a single computer,
        unless it has more than one processor.

        Ralph Cohen

        rpcohen@...
      • Robert Gammon
        ... Each ... completions ... unit ... to ... I ... a ... if ... 220 ... Setiathome ... advantage ... computer, ... Well, please bear with me a moment. The
        Message 3 of 9 , May 10, 2001
          --- In seti-warp@y..., "Ralph Cohen" <rpcohen@n...> wrote:
          > On Wed, 09 May 2001 20:26:50 -0000, Robert Gammon wrote:
          >
          > >
          > >What I seek to do is to run 2 or 3 instances on a single CPU.
          Each
          > >instance will be staged out in time such that work unit
          completions
          > >are separated in time by about 24 hours. On this CPU, each work
          unit
          > >is requiring more than 75 hours to process (I am grossly unwilling
          to
          > >spend money on a faster machine - its the spending money part that
          I
          > >object to - I have better uses for that money at present).
          >
          >
          > Why do you want to run 2-3 concurrent sessions on your system when
          a
          > single session already takes 75 hours to complete? For instance,
          if
          > you run three sessions, you could expect each one to take approx.
          220
          > hours to complete. I know that a number of us are running
          Setiathome
          > concurrently on networks of systems, but I'm not sure what
          advantage
          > there is to running several sessions concurrently on a single
          computer,
          > unless it has more than one processor.
          >
          > Ralph Cohen

          Well, please bear with me a moment. The problem is the SAME as
          running it on a network of computers. Each machine is sending
          results (even if our server does it for all machines) to the seti
          server. That means each machine is keeping a separate user_info.sah
          file, each with its OWN count of how many work units you have
          completed. 5 computers each completing 100 work units only
          increments the counter by 100, not 500 that you should be getting
          credit for.

          The issue is how to setup things so that the seti server recognizes
          the work you have done. Whether this is multiple processes on a
          multi-cpu system, or single processes on a collection of single cpus
          does not matter.

          And in my stupid case above, if I run multiple instances that each
          take 75 hours or so to complete, but I stage their starting points
          out in time, say 24 hours apart, then I have setup a pipeline of seti
          results. Yes, this will be slow, but with the right resources, I can
          produce a seti result more often than every 75 hours. A pipeline
          would work in nearly every situation (multi-cpus or a network of
          single cpus) to produce.

          The issue is that I may not (probably, almost certainly) have the
          resources needed to attempt this.

          Robert
        • David Forrester
          ... That s not right. The user_info.sah is updated each time you retrieve a work unit. I have three machines running SETI@Home using the same userid. So,
          Message 4 of 9 , May 10, 2001
            On Thu, 10 May 2001 11:35:57 -0000, Robert Gammon wrote:

            >
            >Well, please bear with me a moment. The problem is the SAME as
            >running it on a network of computers. Each machine is sending
            >results (even if our server does it for all machines) to the seti
            >server. That means each machine is keeping a separate user_info.sah
            >file, each with its OWN count of how many work units you have
            >completed. 5 computers each completing 100 work units only
            >increments the counter by 100, not 500 that you should be getting
            >credit for.

            That's not right. The user_info.sah is updated each time you retrieve
            a work unit. I have three machines running SETI@Home using the same
            userid. So, all work units processed get credited to one me. One has
            a cache of (currently) 5 work units. If I look at user_info.sah in
            that is associated with each of these work units, the number of
            processed work units is within 10 of each other.

            >
            >The issue is how to setup things so that the seti server recognizes
            >the work you have done. Whether this is multiple processes on a
            >multi-cpu system, or single processes on a collection of single cpus
            >does not matter.
            >
            >And in my stupid case above, if I run multiple instances that each
            >take 75 hours or so to complete, but I stage their starting points
            >out in time, say 24 hours apart, then I have setup a pipeline of seti
            >results. Yes, this will be slow, but with the right resources, I can
            >produce a seti result more often than every 75 hours. A pipeline
            >would work in nearly every situation (multi-cpus or a network of
            >single cpus) to produce.

            If you tried to run more than one instance on a single CPU machine, I
            doubt if you would improve on the average time much. The main reason
            for an improvement would be because you machine would always have
            something to do. But, this could be achieved with a cache. Someone on
            this list has one. I'm sure that they'll chirp up with an link to it.
            I've also written one, which I'm just starting to document and will be
            put up on my site as soon as I do this.


            --
            David Forrester
            davidfor@...
            http://www.os2world.com/djfos2/
          • David Thrum
            OK I have been using a simple home-grown seti caching system, There is a single directory from where I download WUs and store/send results. Then you can have
            Message 5 of 9 , May 10, 2001
              OK I have been using a simple home-grown seti caching system, There is a
              single directory from where I download WUs and store/send results. Then
              you can have as many seti processes on as many networked machines as you
              like that retrieve WUs from this cache and save the results. Each WU and
              result is given a unique name in the cache directory. There are three REXX
              programs:

              GETWU - gets WUs and stores them in the cache
              PUTWU - sends any results and logs details in a simple log file

              GETWU and PUTWU run from the cache directory. They run manually since I
              have only dialup access.

              SETI - runs the SETI client in a separate directory. I have both OS/2 and
              NT clients doing this against the same cache. OS/2 client sends all the
              results.

              Here they are:

              /* GETWU: simple REXX to retrieve multiple WUs */
              /* WUs are named w.nnn, nnn starting at startno */

              parse arg startno endno rest /* start/end WU suffix no. */
              if startno = "" then startno = 1
              if endno = "" then endno = 1

              "@rename stop_after_send.txt stop_after_send.txttmp"

              do i = startno to endno
              'setiathome -sleep 10 -stop_after_xfer -nice 2'
              'rename work_unit.sah w.'||i
              say "w."||i "fetched hopefully.."
              end


              "@rename stop_after_send.txttmp stop_after_send.txt"

              return


              /* PUTWU: Send SETI results from buffer directory */
              /* Run with buffer directory as current directory */

              call RxFuncAdd 'SysFileTree', 'RexxUtil', 'SysFileTree'
              call RxFuncAdd 'SysSleep', 'RexxUtil', 'SysSleep'

              wulog = "wulog.csv" /* Name of log file */

              wucount = 0 /* number of WUs processed */

              "@rename stop_after_send.txttmp stop_after_send.txt"

              rc = SysFileTree("result.sah.*", reslt, "FO")

              do i = 1 to reslt.0
              parse value reslt.i with junk1 "." junk2 "." sysname "." rest
              resfilename = substr(reslt.i, lastpos("\", reslt.i) + 1) /* strip path */
              wucount = wucount + 1
              "copy " reslt.i "results\" /* back it up in case of problems */
              "rename" reslt.i "result.sah"
              if RC \= 0 then do
              say "Error renaming" reslt.i "to result.sah. Processing terminated"
              leave
              end
              call logwu sysname
              "setiathome -sleep 10 -nice 2"
              say " "
              say "=======> RC from setiathome is" RC
              say " "
              if RC \= 0 then "rename results\" || resfilename resfilename || ".bad"
              /* else "delete results\" || resfilename */
              call SysSleep 3
              end

              say wucount "Work Units processed"
              return

              logwu: /* procedure to format and write log record */
              sysname = arg(1) /* System Name */
              logline = sysname||','||date('S')||','||time('N') /* initialise log record */
              line = linein("result.sah", 1) /* line 1: type=result */
              do while chars("result.sah") > 0
              parse value line with tag "=" value /* get tag/value */
              select
              when tag = "name" /* WU name */
              then logline = logline || "," || value
              when tag = "cpu_time" /* CPU time for WU */
              then logline = logline || "," || value
              otherwise nop
              end /* select */
              line = linein("result.sah") /* get next line */
              end
              rc = lineout(wulog, logline) /* append to WU log */
              rc = stream("result.sah", 'c', 'close') /* close input file */
              return


              /* SETI: run the SETI client */
              /* Run Seti Client */

              call RxFuncAdd 'SysFileTree', 'RexxUtil', 'SysFileTree'
              call RxFuncAdd 'SysSleep', 'RexxUtil', 'SysSleep'

              sysname = 'TP390'
              buffdir = 'e:\os2apps\wus'
              setidir = 'e:\os2apps\seti'

              "@CD " setidir

              Do forever

              /* Save any existing result.sah to buffer directory */
              if stream(setidir||"\result.sah", 'C', "query exists") \= "" then do
              resultfile = buffdir||"\result.sah."||sysname ||,
              "." || date('D') || "." || time('S')
              "COPY result.sah" resultfile
              if RC \= 0 then do
              say "Error copying result.sah to buffer directory. Processing terminated"
              leave
              end
              "DEL result.sah"
              end

              /* Check if existing work_unit.sah, if not get new one from buffer */
              if stream(setidir||"\work_unit.sah", 'C', "query exists") = "" then do
              rc = SysFileTree(buffdir || "\w.*", wu, 'FO')
              if wu.0 = 0 then do
              say "No more workunits in buffer. Processing terminated"
              leave
              end
              "copy" wu.1 setidir||"\work_unit.sah"
              "del" wu.1
              end

              /* Run SETI client */
              "setiathome -stop_after_process"
              call SysSleep 2 /* Allow CTRL+C to terminate */

              /* Save any existing result.sah to buffer directory */
              if stream(setidir||"\result.sah", 'C', "query exists") \= "" then do
              resultfile = buffdir||"\result.sah."||sysname ||,
              "." || date('D') || "." || time('S')
              "COPY result.sah" resultfile
              if RC \= 0 then do
              say "Error copying result.sah to buffer directory. Processing terminated"
              leave
              end
              "DEL result.sah"
              end

              end

              return


              Email: thrumd@...
              Phone: 61 2 620 18806 Mobile: 61 412 445 934 Fax: 61 2 620 18167
            • Herbert Rosenau
              ... I use the simplest one: seti seti01 seti02 seti03 ... Means each subdirectory contains all taht is needed to run seti - like as if it is the ONLY one.
              Message 6 of 9 , May 10, 2001
                On Wed, 09 May 2001 20:26:50 -0000, Robert Gammon wrote:

                >I have read the first 125 messages in this area. I see that several
                >solutions for running multiple instances of Seti@home on a single
                >computer have been shown. However, none of them seems to match my
                >needs.

                I use the simplest one:

                seti\seti01
                \seti02
                \seti03
                :
                :

                Means each subdirectory contains all taht is needed to run seti - like as if it is the ONLY one.

                Then I'd logged in in the first directory to login the first time on seti server.
                That gots me all *.sah one has to use.
                copying all (but NOT state, workunit, result ino all other subdirectores sets them off to connect as known user.

                Then I wrote a simple rexx procedure

                ------------------------------------snip----------------------------------------------------
                /* run all seti unti all of them are done */

                'mode co80,50'
                rc = RxFuncAdd('SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs')
                if rc > 1 then do
                say ''
                say 'Unable to Add Function SysLoadFuncs from DLL RexxUtil (rc = 'rc')'
                say 'Please insure that the REXXUTIL.DLL exists in a subdirectory contained'
                say 'in the LIBPATH statement in your CONFIG.SYS file.'
                exit
                end
                else call SysLoadFuncs

                maindir = 'e:\seti'
                searchd = '\seti*'
                logpath = 'e:\seti\runlog.log'
                infile='state.sah'

                signal on halt

                /* restart! search the WU we're processed last */
                first = 1
                rc = SysFileTree(maindir || searchd, sdirs., "DO")
                if rc = 0 then do
                do j = 1 to sdirs.0
                done = stream(sdirs.j || '\act.act', 'C', 'QUERY EXISTS')
                if done = '' then iterate /* inactive */
                /* erase act.act because there is nothin running now */
                first = j
                '@rm 'sdirs.j || 'act.act >nul 2>&1'
                /* sometimes system faitures occores, remove too old act.act */
                do xx = j+1 to sdirs.0
                done = stream(sdirs.xx || '\act.act', 'C', 'QUERY EXISTS')
                if done = '' then iterate /* inactive */
                /* erase act.act becaue there is nothin running now */
                '@rm 'sdirs.xx || 'act.act >nul 2>&1'
                end /* do */
                leave
                end /* do next WU */
                end /* do */
                else do
                rc = lineout(logpath, date('N')' 'time()' error: 'rc' no dir found 'maindir || searchd)
                say date('N')' 'time()' error: 'rc' no dir found 'maindir || searchd
                signal halt
                end /* do */

                /* now we're in a full enabled run. buid until Strg+C occures */
                do forever
                rc = SysFileTree(maindir || searchd, sdirs., "DO")
                if rc = 0 then do
                do j = first to sdirs.0
                done = stream(sdirs.j || '\result.sah', 'C', 'QUERY EXISTS')
                if done <> '' then iterate /* result.sah exists */
                done = stream(sdirs.j || '\work_unit.sah', 'C', 'QUERY EXISTS')
                if done = '' then iterate /* no WU exists */
                done = stream(sdirs.j || '\wtemp.sah', 'C', 'QUERY EXISTS')
                if done <> '' then iterate /* WU missing */
                call build
                end
                if first > 1 then do
                first = first - 1
                do j = 1 to first
                done = stream(sdirs.j || '\result.sah', 'C', 'QUERY EXISTS')
                if done <> '' then iterate /* result.sah exists */
                done = stream(sdirs.j || '\work_unit.sah', 'C', 'QUERY EXISTS')
                if done = '' then iterate /* no WU exists */
                done = stream(sdirs.j || '\wtemp.sah', 'C', 'QUERY EXISTS')
                if done <> '' then iterate /* WU missing */
                call build
                end
                end /* do */
                first = 1
                end /* do */
                else do
                rc = lineout(logpath, date('N')' 'time()' error: 'rc' no dir found 'maindir || searchd)
                say date('N')' 'time()' error: 'rc' no dir found 'maindir || searchd
                leave
                end /* do */
                end /* do */
                fin:
                halt:
                '@killem setiathome >nul 2>&1'
                rc = lineout(logpath, date('N')' 'time()' 'nd' stopped by signal break')
                say date('N')' 'time()' 'nd' stopped by signal break'
                nd = directory(maindir)
                exit

                build:
                nd = directory(sdirs.j)
                '@echo . >act.act'
                rc = GetStats()
                if rc <> 0 then
                rc = lineout(logpath, date('N')' 'time()' starting 'sdirs.j)
                else
                rc = lineout(logpath, date('N')' 'time()' starting 'sdirs.j,
                'Proj.dur: 'format(dur_hrs,2)'h 'format(dur_min,2)'m 'format(dur_secs, 2)'s ',
                'left.dur: 'format(comp_hrs,2)'h 'format(comp_min,2)'m 'format(comp_secs, 2)'s ',
                format(pct_comp,2,2)'%')
                rc = stream(logpath, 'C', 'CLOSE')
                say date('N')' 'time()' starting 'sdirs.j
                do forever
                "@.\setiathome.exe -stop_after_process -nice 1"
                done = stream(sdirs.j || '\result.sah', 'C', 'QUERY EXISTS')
                if done <> '' then leave /* result.sah exists, done */
                done = stream(sdirs.j || '\wtemp.sah', 'C', 'QUERY EXISTS')
                if done <> '' then leave /* UPS? */
                done = stream(sdirs.j || '\work_unit.sah', 'C', 'QUERY EXISTS')
                if done = '' then leave /* WU doesn't exists anymore, done */
                end /* do */
                '@rm act.act >nul 2>&1'
                '@rm act.act >nul 2>&1' /* be sure that it's killed */
                Call GetStats
                rc = lineout(logpath, date('N')' 'time()' finished 'sdirs.j,
                'Proj.dur: 'format(dur_hrs,2)'h 'format(dur_min,2)'m 'format(dur_secs, 2)'s ')
                rc = stream(logpath, 'C', 'CLOSE')
                say date('N')' 'time()' finished 'sdirs.j
                return

                GetStats:
                /* Display Header Information */
                rc = Stream(infile, 'C', 'OPEN READ')
                if rc <> 'READY:' then return 1
                seti. = ''
                in = 0
                sfnd = 0
                do while Lines(infile) <> 0
                in = in + 1
                seti.in = linein(infile)
                if left(seti.in, 3) = 'cpu' then sfnd = sfnd + 1
                if left(seti.in, 4) = 'prog' then sfnd = sfnd + 1
                if sfnd = 2 then leave
                end
                call Stream infile, 'C', 'CLOSE'
                seti.0 = in
                if in = 0 then return 1
                /* Look through the data array */
                do in = 1 to seti.0
                Parse var seti.in keyw '=' keyv
                Select
                when left(seti.in, 3) = 'cpu' then
                do
                cpu = keyv
                cpu_hrs = cpu % 3600
                rem = cpu // 3600
                cpu_min = rem % 60
                cpu_secs = format(rem // 60,,0)
                end
                when left(seti.in, 4) = 'prog' then
                do
                pct_comp = keyv * 100
                end
                otherwise nop
                end /* select */
                end

                if pct_comp = 0 then return 0
                projected_dur = cpu / pct_comp * 100
                dur_hrs = projected_dur % 3600
                rem = projected_dur // 3600
                dur_min = format(rem % 60)
                dur_secs = format(rem // 60,,0)
                c_secs = (projected_dur - cpu) % 1
                comp_hrs = (c_secs) % 3600
                rem = (c_secs) // 3600
                comp_min = format(rem % 60)
                comp_secs = format(rem // 60,,0)
                time_done = Time('S') + c_secs
                done_days = time_done % (24* 3600)
                time_secs = time_done // (24* 3600)

                proj_hour = time_secs % 3600
                proj_rem = time_done // 3600
                proj_minute = proj_rem % 60
                proj_second = proj_rem //60
                return 0

                ------------------------------------snip----------------------------------------------------

                that works straight aroud this directories and lets wor seti for each around until the WU is ready (either result.sah
                exists or work_unit.sah is gone. The procedure is constructed to find out after restart which WU was last calculated
                and restart exactly that one.

                Another procedure has the only job to find out which directory contains a result.sah or is from setiathome declared as
                resultless (no result.sah - but work_unint.sah gone) and exchange that with the seti server.

                ------------------------------------snip----------------------------------------------------
                /* Display work unit progress */

                '@mode co80,50'
                rc = RxFuncAdd('SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs')
                if rc > 1 then do
                say ''
                say 'Unable to Add Function SysLoadFuncs from DLL RexxUtil (rc = 'rc')'
                say 'Please insure that the REXXUTIL.DLL exists in a subdirectory contained'
                say 'in the LIBPATH statement in your CONFIG.SYS file.'
                exit
                end
                else call SysLoadFuncs

                signal on halt

                pathes.0 = 7
                pathes.1 = "E:\"
                pathes.2 = "M:\"
                pathes.3 = "Q:\"
                pathes.4 = "R:\"
                pathes.5 = "S:\"
                pathes.6 = "T:\"
                pathes.7 = "U:\"

                logpath = 'e:\seti\send.log'
                maindir = "seti\seti*"
                curdir = "seti"

                st.0 = 0
                srall = 0

                do forever
                alls = 0
                allr = 0
                do i = 1 to pathes.0
                sendcount = 0
                recv = 0
                base = pathes.i || curdir
                rc = SysFileTree(pathes.i || maindir, sdirs., "DO")
                if rc = 0 then do
                do j = 1 to sdirs.0
                connect = 0
                done = stream(sdirs.j || "\result.sah", 'C', 'QUERY EXISTS')
                wu = stream(sdirs.j || "\work_unit.sah", 'C', 'QUERY EXISTS')
                if wu = '' then do
                /* there is NO WU, we must receive one */
                if done = '' then do
                /* no WU and NO result receive only */
                rc = lineout(logpath, 'receiving 'date('E')' 'time()' 'sdirs.j)
                connect = 1 /* receive only */
                end /* do */
                else do
                /* no WU and result.sah exist: send and receive */
                ftime = stream(sdirs.j || "\result.sah", 'C', 'QUERY DATETIME')
                rc = lineout(logpath, 'finished 'ftime' done 'sdirs.j || "\result.sah")
                rc = lineout(logpath, 'sending 'date('E')' 'time()' 'sdirs.j || "\result.sah")
                connect = 2 /* we have to send AND receive */
                end /* do */
                end /* do */
                else do
                /* WU exists */
                if done <> '' then do
                rc = lineout(logpath, 'UPS 'date('E')' 'time()' ',
                sdirs.j || "\result.sah exists, but WU is NOT gone!")
                say 'UPS 'date('E')' 'time()' ',
                sdirs.j || "\result.sah exists, but WU is NOT gone!"
                SysSllep(5)
                connect = 2
                end /* do */
                end /* do */
                if connect <> 0 then do
                nd = directory(sdirs.j)
                do forever
                ".\setiathome.exe -stop_after_xfer -nice 2 -sleep 20"
                res = rc
                say 'result: 'res
                if res <> 0 then do
                rc = lineout(logpath, 'seti stops with rc: 'res)
                say 'seti stops with rc: 'res', sleeping'
                call syssleep 5
                say 'retry'
                iterate
                end /* do */
                leave
                end /* do */
                if connect = 2 then do
                rc = lineout(logpath, 'sended 'date('E')' 'time()' 'sdirs.j || '\result.sah');
                sendcount = sendcount + 1
                end /* do */
                if connect = 1 then do
                rc = lineout(logpath, 'received 'date('E')' 'time()' 'sdirs.j || '\result.sah');
                recv = recv + 1
                end /* do */
                end /* do */
                end
                end /* do */
                rc = lineout(logpath, 'sended 'date('E')' 'time()' 'sendcount' results, rev only: 'recv);
                if sended <> 0 then say pathes.i' sended 'sendcount
                if recv <> 0 then say pathes.i' received only 'recv
                alls = alls + sendcount
                allr = allr + recv
                end /* do */
                allsr = alls + allr
                srall = srall + allsr
                if allsr <> 0 then do
                rc = lineout(logpath, 'sended 'date('E')' 'time()' 'alls' results, rev only: 'allr);
                say 'WUs sended: 'alls' received: ' allr' total: 'allsr
                end /* do */
                if allsr = 0 then leave
                end /* forever */
                rc = lineout(logpath, 'total : 'date('E')' 'time()' 'srall' WUs')
                say srall' WUs sended/received'
                rc = stream(logpath, 'C', 'CLOSE')
                return

                halt:
                say 'rc = 'rc' res = 'res
                rc = lineout(logpath, "send interupted by control break")
                rc = stream(logpath, 'C', 'CLOSE')
                return


                ------------------------------------snip----------------------------------------------------

                Because I have more than one computer running it does that with each computer.

                You have to replace the pathes with your own!

                Then you need the tool named rm.exe to remove unneeded files. You may replace rm with del - but rm is more
                comfortable.

                Because that's classic rexx tot more than rexxutil (comes with warp) is needed.

                Both prociedures produces a little logfile - just for interrest.

                You should call the send procedure before the last WU is calculated full - but it is on YOU to do that when ever you
                like.

                Tschau/Bye

                Herbert Rosenau
                EDV Beratung & Programmierung
                Lindelbrunnstr. 53a
                76767 Hagenbach

                Tel: 49-7273-919416 http://www.dv-rosenau.de
                0177-3135353
                Fax: 49-7273-93072
              • Herbert Rosenau
                ... Its soo simple. If you have to buy for each second you are online you would not like that your computer goes automaticcally online - however for ever! On
                Message 7 of 9 , May 10, 2001
                  On Wed, 09 May 2001 17:06:49 -0400 (EDT), Ralph Cohen wrote:

                  >On Wed, 09 May 2001 20:26:50 -0000, Robert Gammon wrote:
                  >
                  >>
                  >>What I seek to do is to run 2 or 3 instances on a single CPU. Each
                  >>instance will be staged out in time such that work unit completions
                  >>are separated in time by about 24 hours. On this CPU, each work unit
                  >>is requiring more than 75 hours to process (I am grossly unwilling to
                  >>spend money on a faster machine - its the spending money part that I
                  >>object to - I have better uses for that money at present).
                  >
                  >
                  >Why do you want to run 2-3 concurrent sessions on your system when a
                  >single session already takes 75 hours to complete? For instance, if
                  >you run three sessions, you could expect each one to take approx. 220
                  >hours to complete. I know that a number of us are running Setiathome
                  >concurrently on networks of systems, but I'm not sure what advantage
                  >there is to running several sessions concurrently on a single computer,
                  >unless it has more than one processor.

                  Its soo simple. If you have to buy for each second you are online you would not like that your computer goes
                  automaticcally online - however for ever! On other hand you can't never guarantee that you are exactly on that
                  moment the WU is ready you are in front of your computer to go online in right time.

                  I've run multiple WUs on each single computer but on multiple computers too. So each computer has its own set ow
                  WUs to calculate - and if I have time AND the server is able to connect I exchange all ready ones at one time.

                  If it impossible to connect there is always at least one more WU that waits to be calcuated.

                  Tschau/Bye

                  Herbert Rosenau
                  EDV Beratung & Programmierung
                  Lindelbrunnstr. 53a
                  76767 Hagenbach

                  Tel: 49-7273-919416 http://www.dv-rosenau.de
                  0177-3135353
                  Fax: 49-7273-93072
                • Herbert Rosenau
                  ... NO. That file is updated at each connect from the server - so it counts ALL results you had sent. ... No, the only relevant counter is on the server. It
                  Message 8 of 9 , May 10, 2001
                    On Thu, 10 May 2001 11:35:57 -0000, Robert Gammon wrote:

                    >Well, please bear with me a moment. The problem is the SAME as
                    >running it on a network of computers. Each machine is sending
                    >results (even if our server does it for all machines) to the seti
                    >server. That means each machine is keeping a separate user_info.sah

                    NO. That file is updated at each connect from the server - so it counts ALL results you had sent.

                    >file, each with its OWN count of how many work units you have
                    >completed.

                    No, the only relevant counter is on the server. It sends back its state after it is incremented.


                    Tschau/Bye

                    Herbert Rosenau
                    EDV Beratung & Programmierung
                    Lindelbrunnstr. 53a
                    76767 Hagenbach

                    Tel: 49-7273-919416 http://www.dv-rosenau.de
                    0177-3135353
                    Fax: 49-7273-93072
                  • Eric Erickson
                    ... SAME as ... sending ... the seti ... user_info.sah ... so it counts ALL results you had sent. ... That s the way I understood it to work. I ve been running
                    Message 9 of 9 , May 16, 2001
                      --- In seti-warp@y..., "Herbert Rosenau" <hr@d...> wrote:
                      > On Thu, 10 May 2001 11:35:57 -0000, Robert Gammon wrote:
                      >
                      > >Well, please bear with me a moment. The problem is the
                      SAME as
                      > >running it on a network of computers. Each machine is
                      sending
                      > >results (even if our server does it for all machines) to
                      the seti
                      > >server. That means each machine is keeping a separate
                      user_info.sah
                      >
                      > NO. That file is updated at each connect from the server -
                      so it counts ALL results you had sent.
                      >
                      That's the way I understood it to work. I've been running
                      multiple instances of Seti on each of my networked machines.
                      Since I have a 24x7 connection (DSL) whenever a WU completes
                      it gets sent to the Server and my counts get updated.

                      I use the directory approach to manage this. I have a Seti
                      directory with the executable and a set of subdirectories for
                      each set of instance data. In my startup folder I have a
                      program object for each instance directory. In the working
                      directory field of each program object I specify a unique
                      Instance directory. Works like a champ, no complicated copying
                      required.
                    Your message has been successfully submitted and would be delivered to recipients shortly.