mirror of
https://github.com/Unidata/netcdf-c.git
synced 2024-12-03 08:01:25 +08:00
120 lines
2.8 KiB
Bash
Executable File
120 lines
2.8 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# This shell runs a bunch of benchmarks on some specific files
|
|
# available at Unidata. If you want to run this shell, you need these
|
|
# data files.
|
|
|
|
# This script gets and benchmarks against some 2D radar data.
|
|
|
|
# $Id: run_bm_radar_2D.sh,v 1.9 2008/01/16 13:27:01 ed Exp $
|
|
|
|
set -e
|
|
|
|
# Radar 2D file. Make sure we have a local disk copy. Not much point
|
|
# in benchmarking read and write times over NFS!
|
|
TMP=/shecky/data
|
|
d1=20070803-2300
|
|
file_num=0
|
|
for t in 1 2 4
|
|
do
|
|
file=${d1}_tile${t}-2d.nc3
|
|
in_file[$file_num]=$file
|
|
let file_num=$file_num+1
|
|
if ! test -f $TMP/$file; then
|
|
echo "getting file: $file"
|
|
cp -f /upc/share/testdata/nssl/mosaic2d_nc/tile${t}/$d1.netcdf.gz $TMP
|
|
gunzip -f $TMP/$d1.netcdf.gz
|
|
cp $d1.netcdf $TMP/$file
|
|
fi
|
|
done
|
|
num_in_files=${#in_file[@]}
|
|
|
|
# Copy the 2D rarar file into a netCDF-4 version, with various
|
|
# CHUNKING settings.
|
|
out1=radar_2d_chunking.csv
|
|
out2=radar_2d_chunking_2.csv
|
|
rm -rf $out1 $out2
|
|
|
|
# Turn on header (for the first run of bm_file).
|
|
h=-h
|
|
|
|
# Turn off compression and shuffle filters.
|
|
s=0
|
|
d=-1
|
|
|
|
# file_num=0
|
|
# for c0 in 251 1001 1501
|
|
# do
|
|
# for c1 in 251 1001 2001
|
|
# do
|
|
# # Build the command including chunk sizes for all 13 vars.
|
|
# cmd="./bm_file $h -f 4 -o $TMP/$d1-2d_${c0}x${c1}.nc4 -c 0:${d}:${s}:${c0}:${c1}"
|
|
# for ((v=1; v < 12; v++))
|
|
# do
|
|
# cmd="$cmd,${v}:${d}:${s}:${c0}:${c1}"
|
|
# done
|
|
# cmd="$cmd $TMP/${in_file[${file_num}]}"
|
|
# echo "cmd=$cmd"
|
|
# if ! ($cmd); then
|
|
# exit 1;
|
|
# fi
|
|
# h=
|
|
|
|
# # Switch to the next input file of three.
|
|
# let file_num=$file_num+1
|
|
# test $file_num -eq $num_in_files && file_num=0
|
|
# done
|
|
# done
|
|
|
|
|
|
file_num=0
|
|
for c0 in 251 1001 1501
|
|
do
|
|
for c1 in 251 1001 2001
|
|
do
|
|
for try in 0 1 2 3 4 5 6 7 8 9
|
|
do
|
|
# Confuse the disk buffering by copying the file each time, so
|
|
# always reading a new file.
|
|
# cp $TMP/${in_file[${file_num}]} $TMP/cp_${in_file[${file_num}]}
|
|
|
|
# Build the command including chunk sizes for all 13 vars.
|
|
cmd="./bm_file $h -f 4 -c 0:${d}:${s}:${c0}:${c1}"
|
|
for ((v=1; v < 12; v++))
|
|
do
|
|
cmd="$cmd,${v}:${d}:${s}:${c0}:${c1}"
|
|
done
|
|
cmd="$cmd $TMP/${in_file[${file_num}]}"
|
|
echo "cmd=$cmd"
|
|
sudo bash ./clear_cache.sh
|
|
if ! ($cmd >> $out1); then
|
|
exit 1;
|
|
fi
|
|
|
|
cmd="./bm_file $h -f 3 -c 0:${d}:${s}:${c0}:${c1}"
|
|
for ((v=1; v < 12; v++))
|
|
do
|
|
cmd="$cmd,${v}:${d}:${s}:${c0}:${c1}"
|
|
done
|
|
cmd="$cmd $TMP/$d1-2d_${c0}x${c1}.nc4"
|
|
echo "cmd=$cmd"
|
|
sudo bash ./clear_cache.sh
|
|
if ! ($cmd >> $out2); then
|
|
exit 1;
|
|
fi
|
|
|
|
# Remove the copy. Next read will a "new" file.
|
|
# rm $TMP/cp_${in_file[${file_num}]}
|
|
|
|
# Turn off header next time around.
|
|
h=
|
|
|
|
# Switch to the next input file of three.
|
|
let file_num=$file_num+1
|
|
test $file_num -eq $num_in_files && file_num=0
|
|
done
|
|
done
|
|
done
|
|
|
|
exit 0
|