On 06/02/2015 23:03, Michael Black wrote:

Hi Mike,

<snip>

A suggestion for a better test method might be to run it on a collection 
of .WAV files rather than running it in a loop with just one .WAV file.

You can invoke jt9 with a list of .WAV files which can be generated from 
a shell glob for example given a directory 'test_dir' containing a 
collection of representative .WAV files:

jt9[_omp] -p 1 -d 3 -w 2 -  m 3 test_dir/*.wav

there is no need to run this in a loop if you have sufficient .WAV 
files. Also this removes the start up and close down overhead of jt9 
which is more realistic since in WSJT-X jt9 runs continuously rather 
than being restarted for each decode cycle.

This reduces your test to:

TimeMem-1.0 jt9_omp -p 1 -d 3 -w 2 -m 3 test_dir\*.wav | grep Elapsed | 
cut -f2 -d:

No driving program required.

Also the file timer.out will have accumulated profiling data for the 
complete run.

Note that any test using jt9 in command line mode will give very skewed 
results for elapsed time since there is a considerable time consumed 
reading the .WAV file from disk which is not a factor in real running 
with WSJT-X where the sample data is acquired into memory in real time 
before the decode cycle starts. Also jt9 in command line mode does 
symbol spectra calculations while reading the .WAV file data which in 
WSJT-X are calculated in real time before the decode cycle starts. This 
means that any percentage gains you report will represent considerably 
larger gains in decoding time in WSJT-X.

> #include <stdio.h>
> #include <math.h>
>
> int main(int argc,char *argv[])
> {
>       char cmdbuf[4096];
>       double total=0;
>       int n=0;
>       int nthreads=1;
>       char buf[4096];
>       char *cmd="jt9";
>
>       if (argc > 1) {
>               nthreads = atoi(argv[1]);
>       }
>       if (nthreads > 0) {
>               cmd = "jt9_omp";
>       }
>       printf("Testing %s with %d thread%c\n",cmd,nthreads,nthreads==1?'
> ':'s');
>       sprintf(cmdbuf,"TimeMem-1.0.exe %s -p 1 -d 3 -w 3 -m %d
> 130610_2343.wav | grep Elapsed | cut -f2 -d: >doit.txt",cmd,nthreads);
>       while(1) {
>               system(cmdbuf);
>               FILE *fp=fopen("doit.txt","r");
>               fgets(buf,sizeof(buf),fp);
>               fclose(fp);
>               double sec = atof(buf);
>               ++n;
>               total+=sec;
>               double avg = total/n;
>               if (sec > avg*1.5) {
>                       printf("\nlong run %.2f avg=%.2f\n",sec,avg);
>               }
>               printf("%d sec=%.2f avg=%.2f\r",n,sec,avg);
>               fflush(stdout);
>       }
> }
>
73
Bill
G4WJS.

------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
_______________________________________________
wsjt-devel mailing list
wsjt-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wsjt-devel

Reply via email to