Optimization

This commit is contained in:
Eric Biggers 2016-05-20 00:14:56 -05:00
parent e3cfa7b5cd
commit 4c5d30387a
4 changed files with 64 additions and 0 deletions

View File

@ -0,0 +1,6 @@
VARIABLE MIN INITIAL MAX
BLOCK_SIZE_SHIFT 0 12 20
BLOCK_CUTOFF 0 200 2000
MIN_BLOCK_LENGTH 1000 10000 500000
MAX_BLOCK_LENGTH 1000 300000 2000000
OBSERVATIONS_PER_CHECK 10 512 10000

View File

@ -0,0 +1,23 @@
#!/usr/bin/Rscript
PARAMS = read.table("block_split_params.txt", header=TRUE, row.names=1)
fn = function(params) {
params = as.integer(params)
params = pmax(params, PARAMS$MIN)
params = pmin(params, PARAMS$MAX)
env = paste(rownames(PARAMS), "=", params, sep='', collapse=' ')
cat(env, "\n")
result = system(paste(env, "./try_block_params.sh"), intern=TRUE)
stopifnot(attr(result, "status") == 0)
result = as.numeric(result)
cat(result, "\n")
return(result)
}
result = optim(PARAMS$INITIAL, fn)
print(result)

View File

@ -0,0 +1,15 @@
testdata -6:
BLOCK_SIZE_SHIFT=20 BLOCK_CUTOFF=182 MIN_BLOCK_LENGTH=8071 MAX_BLOCK_LENGTH=299707 OBSERVATIONS_PER_CHECK=553
8727764
moby.txt -12:
BLOCK_SIZE_SHIFT=20 BLOCK_CUTOFF=239 MIN_BLOCK_LENGTH=36336 MAX_BLOCK_LENGTH=303025 OBSERVATIONS_PER_CHECK=772
476063
silesia -6:
BLOCK_SIZE_SHIFT=20 BLOCK_CUTOFF=189 MIN_BLOCK_LENGTH=10225 MAX_BLOCK_LENGTH=323665 OBSERVATIONS_PER_CHECK=556
67927205
0b7d62c8-1ae5-11e6-818e-ca27821f62e9.png -12:
BLOCK_SIZE_SHIFT=20 BLOCK_CUTOFF=193 MIN_BLOCK_LENGTH=21726 MAX_BLOCK_LENGTH=300470 OBSERVATIONS_PER_CHECK=517
596524

View File

@ -0,0 +1,20 @@
#!/bin/bash
set -e
topdir="$(dirname "$0")/../.."
git checkout -f "$topdir/src" > /dev/null
sed -i -e \
"
s/\<block_size >> 12\>/block_size >> $BLOCK_SIZE_SHIFT/
s/\<200 \* stats->num_observations/$BLOCK_CUTOFF * stats->num_observations/
s/#define MIN_BLOCK_LENGTH.*$/#define MIN_BLOCK_LENGTH $MIN_BLOCK_LENGTH/
s/#define MAX_BLOCK_LENGTH.*$/#define MAX_BLOCK_LENGTH $MAX_BLOCK_LENGTH/
s/num_new_observations < 512\>/num_new_observations < $OBSERVATIONS_PER_CHECK/
" \
"$topdir/src/deflate_compress.c"
make -C "$topdir" -j BUILD_BENCHMARK_PROGRAM=yes > /dev/null
"$topdir/benchmark" -l 12 -s 100000000 $HOME/data/testdata | grep Compressed | cut -f 4 -d ' '