* 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 | |||
# 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 *-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 | |||
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*$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: | |||
print 'Usage: %s <buy_order.cpu> -<mode> [image list]' % (sys.argv[0],) | |||
sys.exit(-1) | |||
mode = sys.argv[2][1] | |||
mode = sys.argv[2] | |||
done = 0 | |||
source = sys.argv[3:] | |||
result = [False] * len(source) | |||
@@ -33,19 +33,25 @@ class buy_state_machine_class(object): | |||
self.handler = self.stringReceived | |||
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): | |||
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 | |||
gd.gdMaxColors = 256 * 256 * 256 | |||
im = gd.image(source[self.index]) | |||
# Send argument count | |||
self.protocol.sendString(PROTO_SECCOMP_FORWARD + chr(3)) | |||
# Send arguments | |||
msg = chr(3) | |||
msg += "bytecode\0" | |||
msg += "-1\0" | |||
msg += mode + "\0" | |||
msg += source[self.index] + "\0" | |||
self.protocol.sendString(PROTO_SECCOMP_FORWARD + msg) | |||
# Send image size | |||
@@ -24,7 +24,7 @@ static int WIDTH, HEIGHT; | |||
int main(int, char *[]); | |||
#ifdef BYTECODE | |||
# define MAXIMAGES 128 | |||
# define MAXIMAGES 6 | |||
static int slots[MAXIMAGES]; | |||
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) | |||
{ | |||
double *floats; | |||
int x, y; | |||
int w, h, x, y; | |||
#ifdef BYTECODE | |||
char c; | |||
if(sys_read(0, &c, 1) != 1) | |||
sys_exit(-5); | |||
WIDTH = ((int)(unsigned char)c) << 8; | |||
w = ((int)(unsigned char)c) << 8; | |||
if(sys_read(0, &c, 1) != 1) | |||
sys_exit(-5); | |||
WIDTH |= (int)(unsigned char)c; | |||
w |= (int)(unsigned char)c; | |||
if(sys_read(0, &c, 1) != 1) | |||
sys_exit(-5); | |||
HEIGHT = ((int)(unsigned char)c) << 8; | |||
h = ((int)(unsigned char)c) << 8; | |||
if(sys_read(0, &c, 1) != 1) | |||
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 | |||
SDL_Surface *tmp, *surface; | |||
uint32_t *pixels; | |||
@@ -420,12 +408,28 @@ static double *load(char const *name) | |||
if(!tmp) | |||
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(); | |||
if(!floats) | |||
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, | |||
0xff0000, 0xff00, 0xff, 0x0); | |||
pixels = (uint32_t *)surface->pixels; | |||
@@ -858,6 +862,7 @@ static void usage(char *argv[]) | |||
msg(" -5 <src> exhaustive displacement study 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(" -8 <src> displacement values on src\n"); | |||
} | |||
int main(int argc, char *argv[]) | |||
@@ -890,8 +895,8 @@ int main(int argc, char *argv[]) | |||
case 1: | |||
{ | |||
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); | |||
del(dest); | |||
del(src); | |||
@@ -1067,6 +1072,38 @@ int main(int argc, char *argv[]) | |||
} | |||
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 | |||
tmp = ed(src, 7, 0, 0, 3, 5, 1, 0, 0, 0, 0, 0, 0); | |||
//dest = dbs(src, tmp, 0., 0.); | |||
@@ -1098,25 +1135,6 @@ int main(int argc, char *argv[]) | |||
#endif | |||
#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"); | |||
#endif | |||