* Add results for mode 8 in part0/lena-values.txt. * Make the bytecode version use less memory. git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/research@2288 92316355-f0b4-4df1-b90c-862c8a59935fmaster
@@ -15,9 +15,15 @@ for x in part2/*txt ; do grep '^.2' $x | awk '{ print $3,$5 }' >| $x.clean; done | |||||
for x in part2/*txt ; do grep '^.2' $x | awk '{ print $3,$9 }' >| $x.clean; done ; ./vote part2/*clean | sort -rnk3 | head -30 ; rm -f part2/*clean | for x in part2/*txt ; do grep '^.2' $x | awk '{ print $3,$9 }' >| $x.clean; done ; ./vote part2/*clean | sort -rnk3 | head -30 ; rm -f part2/*clean | ||||
# Get phase 3 and phase 4 stuff | # Get phase 3 and phase 4 stuff | ||||
ssh canard.zoy.org "cd test-20080329; tar cz *raster.txt *serp.txt" | tar xz | |||||
# .. from canard | |||||
ssh canard.zoy.org "cd test-20080329; tar cz *raster.txt" | tar xz | |||||
ssh canard.zoy.org "cd test-20080329; tar cz *serp.txt" | tar xz | |||||
for x in *-raster.txt; do y="$x"; y="${y%%-raster.txt}"; y="${y%%.tiff}"; y="${y##usc-sipi}"; \mv "$x" part3/"$y".txt; done | for x in *-raster.txt; do y="$x"; y="${y%%-raster.txt}"; y="${y%%.tiff}"; y="${y##usc-sipi}"; \mv "$x" part3/"$y".txt; done | ||||
for x in *-serp.txt; do y="$x"; y="${y%%-serp.txt}"; y="${y%%.tiff}"; y="${y##usc-sipi}"; \mv "$x" part4/"$y".txt; done | for x in *-serp.txt; do y="$x"; y="${y%%-serp.txt}"; y="${y%%.tiff}"; y="${y##usc-sipi}"; \mv "$x" part4/"$y".txt; done | ||||
# .. from poulet (cpushare) | |||||
scp poulet.zoy.org:cpushare/'test*-*.txt' . | |||||
for f in test6-*.txt; do grep '###' $f|cut -f2 -d'`'|cut -f1 -d"'"|tr / .|while read i ; do sed -ne '/`'$i'/,/limit/p' $f | cut -b61- >| part3/$(echo $i | cut -f5 -d.).txt ; done; done; rm -f test6-*.txt | |||||
for f in test7-*.txt; do grep '###' $f|cut -f2 -d'`'|cut -f1 -d"'"|tr / .|while read i ; do sed -ne '/`'$i'/,/limit/p' $f | cut -b61- >| part4/$(echo $i | cut -f5 -d.).txt ; done; done; rm -f test7-*.txt | |||||
# Condorcet voting for part 3 and 4 | # Condorcet voting for part 3 and 4 | ||||
for x in part3/*txt ; do cat $x | awk '{ print $2,$4 }' >| $x.clean; done ; ./vote part3/*clean | sort -rnk3 | head -20 ; rm -f part3/*clean | for x in part3/*txt ; do cat $x | awk '{ print $2,$4 }' >| $x.clean; done ; ./vote part3/*clean | sort -rnk3 | head -20 ; rm -f part3/*clean | ||||
@@ -37,6 +43,31 @@ cat part3/aerials2.1.01.txt | grep K | while read x k y ; do grep $k part3/* | a | |||||
cat part4/aerials2.1.01.txt | grep K | while read x k y ; do grep $k part4/* | awk '{ dx+=$10; dy+=$12; n+=1 } END { print dx/n, dy/n }' | read dx dy; echo "$k $(grep $k part4/* | awk 'BEGIN { dx='$dx'; dy='$dy' } { x=dx-$10; y=dy-$12; t+=2.^-5*(x*x+y*y); a+=t*$4; n+=t } END { print a/n, n }')"; done | sort -nk2 | head -20 | cat part4/aerials2.1.01.txt | grep K | while read x k y ; do grep $k part4/* | awk '{ dx+=$10; dy+=$12; n+=1 } END { print dx/n, dy/n }' | read dx dy; echo "$k $(grep $k part4/* | awk 'BEGIN { dx='$dx'; dy='$dy' } { x=dx-$10; y=dy-$12; t+=2.^-5*(x*x+y*y); a+=t*$4; n+=t } END { print a/n, n }')"; done | sort -nk2 | head -20 | ||||
cat part4/aerials2.1.01.txt | grep K | while read x k y ; do grep $k part4/* | awk '{ dx+=$10; dy+=$12; n+=1 } END { print dx/n, dy/n }' | read dx dy; echo "$k $(grep $k part4/* | awk 'BEGIN { dx='$dx'; dy='$dy' } { x=dx-$10; y=dy-$12; t+=2.^-5*(x*x+y*y); a+=t*$8; n+=t } END { print a/n, n }')"; done | sort -nk2 | head -20 | cat part4/aerials2.1.01.txt | grep K | while read x k y ; do grep $k part4/* | awk '{ dx+=$10; dy+=$12; n+=1 } END { print dx/n, dy/n }' | read dx dy; echo "$k $(grep $k part4/* | awk 'BEGIN { dx='$dx'; dy='$dy' } { x=dx-$10; y=dy-$12; t+=2.^-5*(x*x+y*y); a+=t*$8; n+=t } END { print a/n, n }')"; done | sort -nk2 | head -20 | ||||
# Plot lena displacement | |||||
set contour | |||||
unset surface | |||||
set view 0,0 | |||||
set cntrparam levels discrete 0.31, 0.35, 0.42, 0.52, 0.7, 1, 1.5 | |||||
set xrange [-1:1] | |||||
set yrange [1:-1] | |||||
set mxtics 2 | |||||
set mytics 2 | |||||
set size square | |||||
set xzeroaxis | |||||
set yzeroaxis | |||||
set xlabel "dx" font "Italic,32" | |||||
splot 'part0/lena-values.txt' with lines | |||||
#set border 0 | |||||
set style line 1 lt 1 lw 1 | |||||
set style line 2 lt 2 lw 1 | |||||
set style line 3 lt 3 lw 1 | |||||
set style line 4 lt 6 lw 1 | |||||
set style line 5 lt 1 lw 3 | |||||
set style line 6 lt 2 lw 3 | |||||
set style line 7 lt 3 lw 3 | |||||
set style line 8 lt 6 lw 3 | |||||
### | ### | ||||
### | ### | ||||
### | ### | ||||
@@ -16,7 +16,7 @@ todo = 0 | |||||
if len(sys.argv) < 4: | if len(sys.argv) < 4: | ||||
print 'Usage: %s <buy_order.cpu> -<mode> [image list]' % (sys.argv[0],) | print 'Usage: %s <buy_order.cpu> -<mode> [image list]' % (sys.argv[0],) | ||||
sys.exit(-1) | sys.exit(-1) | ||||
mode = sys.argv[2][1] | |||||
mode = sys.argv[2] | |||||
done = 0 | done = 0 | ||||
source = sys.argv[3:] | source = sys.argv[3:] | ||||
result = [False] * len(source) | result = [False] * len(source) | ||||
@@ -33,19 +33,25 @@ class buy_state_machine_class(object): | |||||
self.handler = self.stringReceived | self.handler = self.stringReceived | ||||
def start(self): | def start(self): | ||||
global todo, source | |||||
global mode, todo, source | |||||
gd.gdMaxColors = 256 * 256 * 256 | |||||
while todo < len(source): | |||||
try: | |||||
self.index = todo | |||||
im = gd.image(source[self.index]) | |||||
break | |||||
except: | |||||
todo += 1 | |||||
self.result = "Error\n" | |||||
if todo >= len(source): | if todo >= len(source): | ||||
return # We're finished... FIXME: is the transaction kept stuck? | |||||
self.index = todo | |||||
return # We're finished... FIXME: isn't the transaction stuck? | |||||
todo += 1 | todo += 1 | ||||
gd.gdMaxColors = 256 * 256 * 256 | |||||
im = gd.image(source[self.index]) | |||||
# Send argument count | # Send argument count | ||||
self.protocol.sendString(PROTO_SECCOMP_FORWARD + chr(3)) | self.protocol.sendString(PROTO_SECCOMP_FORWARD + chr(3)) | ||||
# Send arguments | # Send arguments | ||||
msg = chr(3) | msg = chr(3) | ||||
msg += "bytecode\0" | msg += "bytecode\0" | ||||
msg += "-1\0" | |||||
msg += mode + "\0" | |||||
msg += source[self.index] + "\0" | msg += source[self.index] + "\0" | ||||
self.protocol.sendString(PROTO_SECCOMP_FORWARD + msg) | self.protocol.sendString(PROTO_SECCOMP_FORWARD + msg) | ||||
# Send image size | # Send image size | ||||
@@ -24,7 +24,7 @@ static int WIDTH, HEIGHT; | |||||
int main(int, char *[]); | int main(int, char *[]); | ||||
#ifdef BYTECODE | #ifdef BYTECODE | ||||
# define MAXIMAGES 128 | |||||
# define MAXIMAGES 6 | |||||
static int slots[MAXIMAGES]; | static int slots[MAXIMAGES]; | ||||
static double slotbuf[MAXIMAGES * MAXWIDTH * MAXHEIGHT]; | static double slotbuf[MAXIMAGES * MAXWIDTH * MAXHEIGHT]; | ||||
@@ -382,36 +382,24 @@ static double dist(double const *p1, double const *p2, double max) | |||||
static double *load(char const *name) | static double *load(char const *name) | ||||
{ | { | ||||
double *floats; | double *floats; | ||||
int x, y; | |||||
int w, h, x, y; | |||||
#ifdef BYTECODE | #ifdef BYTECODE | ||||
char c; | char c; | ||||
if(sys_read(0, &c, 1) != 1) | if(sys_read(0, &c, 1) != 1) | ||||
sys_exit(-5); | sys_exit(-5); | ||||
WIDTH = ((int)(unsigned char)c) << 8; | |||||
w = ((int)(unsigned char)c) << 8; | |||||
if(sys_read(0, &c, 1) != 1) | if(sys_read(0, &c, 1) != 1) | ||||
sys_exit(-5); | sys_exit(-5); | ||||
WIDTH |= (int)(unsigned char)c; | |||||
w |= (int)(unsigned char)c; | |||||
if(sys_read(0, &c, 1) != 1) | if(sys_read(0, &c, 1) != 1) | ||||
sys_exit(-5); | sys_exit(-5); | ||||
HEIGHT = ((int)(unsigned char)c) << 8; | |||||
h = ((int)(unsigned char)c) << 8; | |||||
if(sys_read(0, &c, 1) != 1) | if(sys_read(0, &c, 1) != 1) | ||||
sys_exit(-5); | sys_exit(-5); | ||||
HEIGHT |= (int)(unsigned char)c; | |||||
floats = new(); | |||||
if(!floats) | |||||
return NULL; | |||||
for(y = 0; y < HEIGHT; y++) | |||||
for(x = 0; x < WIDTH; x++) | |||||
{ | |||||
if(sys_read(0, &c, 1) != 1) | |||||
sys_exit(-5); | |||||
put(floats, x, y, (double)(unsigned char)c / 0xff); | |||||
} | |||||
h |= (int)(unsigned char)c; | |||||
#else | #else | ||||
SDL_Surface *tmp, *surface; | SDL_Surface *tmp, *surface; | ||||
uint32_t *pixels; | uint32_t *pixels; | ||||
@@ -420,12 +408,28 @@ static double *load(char const *name) | |||||
if(!tmp) | if(!tmp) | ||||
return NULL; | return NULL; | ||||
WIDTH = tmp->w > MAXWIDTH ? MAXWIDTH : tmp->w; | |||||
HEIGHT = tmp->h > MAXHEIGHT ? MAXHEIGHT : tmp->h; | |||||
w = tmp->w; | |||||
h = tmp->h; | |||||
#endif | |||||
WIDTH = w > MAXWIDTH ? MAXWIDTH : w; | |||||
HEIGHT = h > MAXHEIGHT ? MAXHEIGHT : h; | |||||
floats = new(); | floats = new(); | ||||
if(!floats) | if(!floats) | ||||
return NULL; | return NULL; | ||||
#ifdef BYTECODE | |||||
for(y = 0; y < h; y++) | |||||
for(x = 0; x < w; x++) | |||||
{ | |||||
if(sys_read(0, &c, 1) != 1) | |||||
sys_exit(-5); | |||||
if(x >= WIDTH || y >= HEIGHT) | |||||
continue; | |||||
put(floats, x, y, (double)(unsigned char)c / 0xff); | |||||
} | |||||
#else | |||||
surface = SDL_CreateRGBSurface(SDL_SWSURFACE, WIDTH, HEIGHT, 32, | surface = SDL_CreateRGBSurface(SDL_SWSURFACE, WIDTH, HEIGHT, 32, | ||||
0xff0000, 0xff00, 0xff, 0x0); | 0xff0000, 0xff00, 0xff, 0x0); | ||||
pixels = (uint32_t *)surface->pixels; | pixels = (uint32_t *)surface->pixels; | ||||
@@ -858,6 +862,7 @@ static void usage(char *argv[]) | |||||
msg(" -5 <src> exhaustive displacement study on src\n"); | msg(" -5 <src> exhaustive displacement study on src\n"); | ||||
msg(" -6 <src> restrained (a,b,c,d) ED kernel analysis on src\n"); | msg(" -6 <src> restrained (a,b,c,d) ED kernel analysis on src\n"); | ||||
msg(" -7 <src> restrained displacement study on src\n"); | msg(" -7 <src> restrained displacement study on src\n"); | ||||
msg(" -8 <src> displacement values on src\n"); | |||||
} | } | ||||
int main(int argc, char *argv[]) | int main(int argc, char *argv[]) | ||||
@@ -890,8 +895,8 @@ int main(int argc, char *argv[]) | |||||
case 1: | case 1: | ||||
{ | { | ||||
double *dest = ed(src, false, 7, 0, | double *dest = ed(src, false, 7, 0, | ||||
0, 3, 5, 1, 0, | |||||
0, 0, 0, 0, 0); | |||||
0, 3, 5, 1, 0, | |||||
0, 0, 0, 0, 0); | |||||
study(src, dest, 1.2, 0.001, .16, .28); | study(src, dest, 1.2, 0.001, .16, .28); | ||||
del(dest); | del(dest); | ||||
del(src); | del(src); | ||||
@@ -1067,6 +1072,38 @@ int main(int argc, char *argv[]) | |||||
} | } | ||||
break; | break; | ||||
case 8: | |||||
{ | |||||
const int STEP = 32; | |||||
double mat[NN][NN]; | |||||
double *dest = ed(src, false, 7, 0, | |||||
0, 3, 5, 1, 0, | |||||
0, 0, 0, 0, 0); | |||||
double *tmp, *tmp2; | |||||
int dx, dy; | |||||
makegauss(mat, 1.2, 0., 0.); | |||||
tmp = gauss(src, mat); | |||||
for(dy = 0; dy <= STEP; dy++) | |||||
{ | |||||
for(dx = 0; dx <= STEP; dx++) | |||||
{ | |||||
double fy = 2. / STEP * (dy - STEP / 2.); | |||||
double fx = 2. / STEP * (dx - STEP / 2.); | |||||
makegauss(mat, 1.2, fx, fy); | |||||
tmp2 = gauss(dest, mat); | |||||
msg("%g %g %g\n", fy, fx, 1000. * dist(tmp, tmp2, 1.)); | |||||
del(tmp2); | |||||
} | |||||
msg("\n"); | |||||
} | |||||
del(tmp); | |||||
del(dest); | |||||
del(src); | |||||
} | |||||
break; | |||||
#if 0 | #if 0 | ||||
tmp = ed(src, 7, 0, 0, 3, 5, 1, 0, 0, 0, 0, 0, 0); | tmp = ed(src, 7, 0, 0, 3, 5, 1, 0, 0, 0, 0, 0, 0); | ||||
//dest = dbs(src, tmp, 0., 0.); | //dest = dbs(src, tmp, 0., 0.); | ||||
@@ -1098,25 +1135,6 @@ int main(int argc, char *argv[]) | |||||
#endif | #endif | ||||
#if 0 | #if 0 | ||||
# define STEP 32 | |||||
dest = ed(src, 7, 0, 0, 3, 5, 1, 0, 0, 0, 0, 0, 0); | |||||
makegauss(mat, 1.2, 0., 0.); | |||||
tmp = gauss(src, mat); | |||||
for(dy = 0; dy < STEP; dy++) | |||||
{ | |||||
for(dx = 0; dx < STEP; dx++) | |||||
{ | |||||
double fy = 2. / STEP * (dy - STEP / 2.); | |||||
double fx = 2. / STEP * (dx - STEP / 2.); | |||||
makegauss(mat, 1.2, fx, fy); | |||||
tmp2 = gauss(dest, mat); | |||||
msg("%g %g %g\n", fy, fx, 1000. * dist(tmp, tmp2, 1.)); | |||||
fflush(stdout); | |||||
del(tmp2); | |||||
} | |||||
msg("\n"); | |||||
} | |||||
save(dest, "output.bmp"); | save(dest, "output.bmp"); | ||||
#endif | #endif | ||||