diff --git a/alice/gen-sim/alice-gen-sim.spec b/alice/gen-sim/alice-gen-sim.spec index c4d4657a61bf890435e8efdd9fb576f5f8e9520d..f66ea0507f5e350b95c2deeb90d90812862e47d0 100644 --- a/alice/gen-sim/alice-gen-sim.spec +++ b/alice/gen-sim/alice-gen-sim.spec @@ -3,5 +3,5 @@ HEPWL_BMKOPTS="-c 4 -e 1" # -c replaces -n as of v0.10 HEPWL_BMKDIR=alice-gen-sim HEPWL_BMKDESCRIPTION="ALICE pp GEN-SIM" HEPWL_DOCKERIMAGENAME=alice-gen-sim-bmk -HEPWL_DOCKERIMAGETAG=v0.15 # versions >= v0.11 use common bmk driver +HEPWL_DOCKERIMAGETAG=v0.16 # versions >= v0.11 use common bmk driver HEPWL_CVMFSREPOS=alice.cern.ch diff --git a/alice/gen-sim/alice-gen-sim/jobs/bad_1/alice-gen-sim_summary.json b/alice/gen-sim/alice-gen-sim/jobs/bad_1/alice-gen-sim_summary.json index 1e66c884453482231e039171842652b5cfa51563..5979de687fc451ef4d1569c6cc52aa1bf1542b1d 100644 --- a/alice/gen-sim/alice-gen-sim/jobs/bad_1/alice-gen-sim_summary.json +++ b/alice/gen-sim/alice-gen-sim/jobs/bad_1/alice-gen-sim_summary.json @@ -1 +1 @@ -{"copies":2 , "threads_per_copy":1 , "events_per_thread" : 1 , "CPU_score": "" , "log": "[ERROR] There is at least one job not finished properly", "app": {"version":"v0.15","description":"ALICE pp GEN-SIM","cvmfs_checksum":"9986a9a83745b416a510788e1f35d807","bmkdata_checksum":"b94489e16c0a77f2a0a9aaf333260a96","bmk_checksum":"6c5c2fd1379388c9b1cbd3888e5ecbd3"} } +{"copies":2 , "threads_per_copy":1 , "events_per_thread" : 1 , "wl-scores":{} , "log": "[ERROR] There is at least one job not finished properly", "app": {"version":"v0.15","description":"ALICE pp GEN-SIM","cvmfs_checksum":"9986a9a83745b416a510788e1f35d807","bmkdata_checksum":"b94489e16c0a77f2a0a9aaf333260a96","bmk_checksum":"6c5c2fd1379388c9b1cbd3888e5ecbd3"} } diff --git a/alice/gen-sim/alice-gen-sim/jobs/good_1/alice-gen-sim_summary.json b/alice/gen-sim/alice-gen-sim/jobs/good_1/alice-gen-sim_summary.json index 59d971fc522846978d8cd5970b09b4afeffa686d..2fe43f2cb34ceb599a28fc7e1989a1343d2776ac 100644 --- a/alice/gen-sim/alice-gen-sim/jobs/good_1/alice-gen-sim_summary.json +++ b/alice/gen-sim/alice-gen-sim/jobs/good_1/alice-gen-sim_summary.json @@ -1 +1 @@ -{"copies":4 , "threads_per_copy":1 , "events_per_thread" : 1 , "CPU_score": {"score": 0.0606, "avg": 0.0152, "median": 0.0152, "min": 0.0152, "max": 0.0152} , "log": "ok", "app": {"version":"v0.15","description":"ALICE pp GEN-SIM","cvmfs_checksum":"9986a9a83745b416a510788e1f35d807","bmkdata_checksum":"b94489e16c0a77f2a0a9aaf333260a96","bmk_checksum":"6c5c2fd1379388c9b1cbd3888e5ecbd3"} } +{"copies":4 , "threads_per_copy":1 , "events_per_thread" : 1 , "wl-scores": {"gen-sim": 0.0606} , "wl-stats": {"score": 0.0606, "avg": 0.0152, "median": 0.0152, "min": 0.0152, "max": 0.0152} , "log": "ok", "app": {"version":"v0.15","description":"ALICE pp GEN-SIM","cvmfs_checksum":"9986a9a83745b416a510788e1f35d807","bmkdata_checksum":"b94489e16c0a77f2a0a9aaf333260a96","bmk_checksum":"6c5c2fd1379388c9b1cbd3888e5ecbd3"} } diff --git a/alice/gen-sim/alice-gen-sim/parseResults.sh b/alice/gen-sim/alice-gen-sim/parseResults.sh index c4c675f6275e5e08142f1b02b4a38439e89f3b54..df656f083dbf3d4f95117af6c948fa1188ccfdcc 100644 --- a/alice/gen-sim/alice-gen-sim/parseResults.sh +++ b/alice/gen-sim/alice-gen-sim/parseResults.sh @@ -1,7 +1,7 @@ #!/bin/bash function generateSummary(){ - echo -e "{\"copies\":$NCOPIES , \"threads_per_copy\":$NTHREADS , \"events_per_thread\" : $NEVENTS_THREAD , \"CPU_score\": $resJSON , \"log\": \"${s_msg}\", \"app\": `cat $BMKDIR/version.json` }" > ${APP}_summary.json + echo -e "{\"copies\":$NCOPIES , \"threads_per_copy\":$NTHREADS , \"events_per_thread\" : $NEVENTS_THREAD , $resJSON , \"log\": \"${s_msg}\", \"app\": `cat $BMKDIR/version.json` }" > ${APP}_summary.json cat ${APP}_summary.json } @@ -21,7 +21,7 @@ function parseResults(){ if [ "$1" == "" ] || [ "$2" != "" ]; then echo "[parseresults] ERROR! Invalid arguments '$@' to parseResults"; return 1; fi echo "[parseResults] parse results and generate summary (previous status: $1)" echo "[parseResults] current directory: $(pwd)" - export resJSON='""' + export resJSON='"wl-scores":{}' export s_msg="ok" #----------------------- # Parse results @@ -36,15 +36,16 @@ function parseResults(){ median=a[(n + 1) / 2]; } else { median=(a[(n / 2)] + a[(n / 2) + 1]) / 2.0; - }; printf "{\"score\": %.4f, \"avg\": %.4f, \"median\": %.4f, \"min\": %.4f, \"max\": %.4f}", sum, sum/count, median, amin, amax - }' || (echo "\"[ERROR] Something went wrong in parsing the CPU score\""; exit 1)` + }; +printf "\"wl-scores\": {\"gen-sim\": %.4f} , \"wl-stats\": {\"score\": %.4f, \"avg\": %.4f, \"median\": %.4f, \"min\": %.4f, \"max\": %.4f}", sum, sum, sum/count, median, amin, amax + }' || (echo "\"wl-scores\":{}"; exit 1)` STATUS=$? echo "[parseResults] checking that all job are completed correctly from" proc_*/out_*.log ALL_JOBS_SUCCEED=`grep -c -h -m1 "finished with the expected exit code" proc_*/out_*.log | awk 'BEGIN{sum=0;count=0}{sum+=$1;count+=1}END{print sum==count}'` if [ "$ALL_JOBS_SUCCEED" != 1 ]; then STATUS=1 s_msg="[ERROR] There is at least one job not finished properly" - resJSON='""' + resJSON='"wl-scores":{}' grep -c "finished with the expected exit code" proc_*/out_*.log fi #----------------------- diff --git a/atlas/gen/atlas-gen.spec b/atlas/gen/atlas-gen.spec index 075693717f3275a04406e1250d1204b24daacfd1..6ff816eb320c1e25f225a8f56a5da28586ba13c0 100644 --- a/atlas/gen/atlas-gen.spec +++ b/atlas/gen/atlas-gen.spec @@ -1,8 +1,8 @@ HEPWL_BMKEXE=atlas-gen-bmk.sh -HEPWL_BMKOPTS="" # -c replaces -n as of v0.11 +HEPWL_BMKOPTS="-e 4 -t 2" # -c replaces -n as of v0.11 HEPWL_BMKDIR=atlas-gen HEPWL_BMKDESCRIPTION="ATLAS Event Generation based on athena version 19.2.5.5" HEPWL_DOCKERIMAGENAME=atlas-gen-bmk -HEPWL_DOCKERIMAGETAG=v0.15 # versions >= v0.11 use common bmk driver +HEPWL_DOCKERIMAGETAG=v1.0 # versions >= v0.11 use common bmk driver HEPWL_CVMFSREPOS=atlas.cern.ch,atlas-condb.cern.ch,sft.cern.ch HEPWL_EXTEND_SFT_SPEC=./sft_spec_custom.txt diff --git a/atlas/gen/atlas-gen/DESCRIPTION b/atlas/gen/atlas-gen/DESCRIPTION new file mode 100644 index 0000000000000000000000000000000000000000..d5df935f080f8dae51474db8c8cfe1cca7b1a903 --- /dev/null +++ b/atlas/gen/atlas-gen/DESCRIPTION @@ -0,0 +1,2 @@ +Generation of ttbar MC events. The application is single-threaded and requires no input data. +The score consists of throughput (events per second). diff --git a/atlas/gen/atlas-gen/atlas-gen-bmk.sh b/atlas/gen/atlas-gen/atlas-gen-bmk.sh index 87c11edfb9ee7c0c07ac18f2c7dc7b40eb888dbc..677f3514ac1972e83e2c438ba35ae73eea0dece0 100755 --- a/atlas/gen/atlas-gen/atlas-gen-bmk.sh +++ b/atlas/gen/atlas-gen/atlas-gen-bmk.sh @@ -23,7 +23,7 @@ function doOne(){ # Execute WL copy Generate_tf.py --ecmEnergy="13000" --firstEvent="47060001" --jobConfig="$joboptions" \ --maxEvents="$NEVENTS_THREAD" --outputEVNTFile="EVNT.10867034._003922.pool.root.1" --outputTXTFile="TXT.10867034._003922.tar.gz.1" \ - --randomSeed="9413" --runNumber="410501" --skipEvents="17060000" > out_$1.log 2>&1 + --randomSeed="9413" --runNumber="410501" > out_$1.log 2>&1 status=${?} echo "[doOne ($1)] $(date) completed (status=$status)" # Return 0 if this workload copy was successful, 1 otherwise @@ -33,7 +33,7 @@ function doOne(){ # Default values for NCOPIES, NTHREADS, NEVENTS_THREAD must be set in each benchmark NCOPIES=$(nproc) NTHREADS=1 # cannot be changed by user input (single-threaded single-process WL) -NEVENTS_THREAD=5 +NEVENTS_THREAD=500 # Source the common benchmark driver if [ -f $(dirname $0)/bmk-driver.sh ]; then diff --git a/atlas/gen/atlas-gen/jobs/good_1/atlas-gen_summary.json b/atlas/gen/atlas-gen/jobs/good_1/atlas-gen_summary.json index cccff46f6cb39b78924a50397d71219fe0d88e2e..718c35efe7d2863deff9c6c1e1e332aa1e88af8f 100644 --- a/atlas/gen/atlas-gen/jobs/good_1/atlas-gen_summary.json +++ b/atlas/gen/atlas-gen/jobs/good_1/atlas-gen_summary.json @@ -1 +1 @@ -{"copies":4 , "threads_per_copy": 1 , "events_per_thread" : 5 , "wl-scores": {"sim": 89.2575} , "wl-stats": {"score": 89.2575, "avg": 22.3144, "median": 22.3242, "min": 21.8818, "max": 22.7273} , "log": "ok", "app":{"version":"v0.15","description":"ATLAS Event Generation based on athena version 19.2.5.5","cvmfs_checksum":"512aae44a881c0d4f9bc690488653241","bmkdata_checksum":"9a62d4782b086a9c74ab6edd38dc0ee3","bmk_checksum":"e93678ff532a3233f94f3e3890a8f39c"} } +{"copies":4 , "threads_per_copy": 1 , "events_per_thread" : 5 , "wl-scores": {"gen": 89.2575} , "wl-stats": {"score": 89.2575, "avg": 22.3144, "median": 22.3242, "min": 21.8818, "max": 22.7273} , "log": "ok", "app":{"version":"v0.15","description":"ATLAS Event Generation based on athena version 19.2.5.5","cvmfs_checksum":"512aae44a881c0d4f9bc690488653241","bmkdata_checksum":"9a62d4782b086a9c74ab6edd38dc0ee3","bmk_checksum":"e93678ff532a3233f94f3e3890a8f39c"} } diff --git a/atlas/gen/atlas-gen/parseResults.sh b/atlas/gen/atlas-gen/parseResults.sh index 8d093a7a590799e7301ebff1812f97e08f8b6e2c..a012298a92c0bfa47cbff93f9e59dc60a065ae24 100644 --- a/atlas/gen/atlas-gen/parseResults.sh +++ b/atlas/gen/atlas-gen/parseResults.sh @@ -46,7 +46,7 @@ function parseResults(){ } else { median=(a[(n / 2)] + a[(n / 2) + 1]) / 2.0; }; -printf "\"wl-scores\": {\"sim\": %.4f} , \"wl-stats\": {\"score\": %.4f, \"avg\": %.4f, \"median\": %.4f, \"min\": %.4f, \"max\": %.4f}", sum, sum, sum/count, median, amin, amax +printf "\"wl-scores\": {\"gen\": %.4f} , \"wl-stats\": {\"score\": %.4f, \"avg\": %.4f, \"median\": %.4f, \"min\": %.4f, \"max\": %.4f}", sum, sum, sum/count, median, amin, amax }' || (echo "\"wl-scores\":{}"; exit 1)` shstatus=$? [ "$shstatus" != "0" ] && s_msg="ERROR" diff --git a/atlas/sim/atlas-sim.spec b/atlas/sim/atlas-sim.spec index 7ec72f34ed453e527458525447b1c74089595212..75e68ca9431968a4dedfc3e307b692b10a8fc7b7 100644 --- a/atlas/sim/atlas-sim.spec +++ b/atlas/sim/atlas-sim.spec @@ -3,5 +3,5 @@ HEPWL_BMKOPTS="-e 3 -t 2" # -c replaces -n as of v0.14 HEPWL_BMKDIR=atlas-sim HEPWL_BMKDESCRIPTION="ATLAS Sim (GEANT4) based on athena version 21.0.15" HEPWL_DOCKERIMAGENAME=atlas-sim-bmk -HEPWL_DOCKERIMAGETAG=v0.18 # versions >= v0.14 use common bmk driver +HEPWL_DOCKERIMAGETAG=v1.0 # versions >= v0.14 use common bmk driver HEPWL_CVMFSREPOS=atlas.cern.ch,atlas-condb.cern.ch,sft.cern.ch diff --git a/atlas/sim/atlas-sim/DESCRIPTION b/atlas/sim/atlas-sim/DESCRIPTION new file mode 100644 index 0000000000000000000000000000000000000000..8f40a6753c35be9a259d1d0f0762c6d8870420e6 --- /dev/null +++ b/atlas/sim/atlas-sim/DESCRIPTION @@ -0,0 +1,3 @@ +Simulation of MC events that have been generated by a generation workload. +The application is multi-threaded and reads an input data file containing 10'000 generated events. +The score consists of throughput (events per second). \ No newline at end of file diff --git a/cms/digi/cms-digi.spec b/cms/digi/cms-digi.spec index 65034ed26b0564a0d352186add9d04004ed316b0..b3f2d0ffaf7cfdcdab2d3d841731ce41bca50b91 100644 --- a/cms/digi/cms-digi.spec +++ b/cms/digi/cms-digi.spec @@ -3,5 +3,5 @@ HEPWL_BMKOPTS="-t 4 -e 20" # -c replaces -n as of v0.11 (NB the input file has o HEPWL_BMKDIR=cms-digi HEPWL_BMKDESCRIPTION="CMS DIGI of ttbar events based on CMSSW_10_2_9" HEPWL_DOCKERIMAGENAME=cms-digi-bmk -HEPWL_DOCKERIMAGETAG=v0.16 # versions >= v0.12 use common bmk driver +HEPWL_DOCKERIMAGETAG=v1.0 # versions >= v0.12 use common bmk driver HEPWL_CVMFSREPOS=cms.cern.ch diff --git a/cms/digi/cms-digi/jobs/good_1/cms-digi_summary.json b/cms/digi/cms-digi/jobs/good_1/cms-digi_summary.json index c5ea995adbff98413c7493aa5142374088da1126..d69a3b17b9734fb02858d5d22e26c46fe332775f 100644 --- a/cms/digi/cms-digi/jobs/good_1/cms-digi_summary.json +++ b/cms/digi/cms-digi/jobs/good_1/cms-digi_summary.json @@ -1 +1 @@ -{"copies":1 , "threads_per_copy":4 , "events_per_thread" : 20 , "throughput_score": {"score": 0.5115, "avg": 0.5115, "median": 0.5115, "min": 0.5115, "max": 0.5115} , "CPU_score": {"score": 0.1630, "avg": 0.1630, "median": 0.1630, "min": 0.1630, "max": 0.1630} , "log": "ok", "app": {"version":"v0.15","description":"CMS DIGI of ttbar events based on CMSSW_10_2_9","cvmfs_checksum":"7bb1a8eb5227436a7625edeff6c1c89c","bmkdata_checksum":"b7dfab57bfbd132ebdd80335fe368e13","bmk_checksum":"b126af4c6938ccd96f583ea4492859df"} } +{"copies":1 , "threads_per_copy":4 , "events_per_thread" : 20 , "wl-scores": {"digi": 0.5115}, "wl-stats": {"throughput_score": {"score": 0.5115, "avg": 0.5115, "median": 0.5115, "min": 0.5115, "max": 0.5115} , "CPU_score": {"score": 0.1630, "avg": 0.1630, "median": 0.1630, "min": 0.1630, "max": 0.1630} }, "log": "ok", "app": {"version":"v0.15","description":"CMS DIGI of ttbar events based on CMSSW_10_2_9","cvmfs_checksum":"7bb1a8eb5227436a7625edeff6c1c89c","bmkdata_checksum":"b7dfab57bfbd132ebdd80335fe368e13","bmk_checksum":"b126af4c6938ccd96f583ea4492859df"} } diff --git a/cms/digi/cms-digi/parseResults.sh b/cms/digi/cms-digi/parseResults.sh index e6714283baabbed2f638bfbbbf5e9ee0b63f9ab5..5df6841cebe9b365a676163369c4e81e18d20236 100644 --- a/cms/digi/cms-digi/parseResults.sh +++ b/cms/digi/cms-digi/parseResults.sh @@ -1,5 +1,5 @@ function generateSummary(){ - echo -e "{\"copies\":$NCOPIES , \"threads_per_copy\":$NTHREADS , \"events_per_thread\" : $NEVENTS_THREAD , \"throughput_score\": $res_thr , \"CPU_score\": $res_cpu , \"log\": \"${s_msg}\", \"app\": `cat $BMKDIR/version.json` }" > ${APP}_summary.json + echo -e "{\"copies\":$NCOPIES , \"threads_per_copy\":$NTHREADS , \"events_per_thread\" : $NEVENTS_THREAD , \"wl-scores\": $res_score, \"wl-stats\": {\"throughput_score\": $res_thr , \"CPU_score\": $res_cpu }, \"log\": \"${s_msg}\", \"app\": `cat $BMKDIR/version.json` }" > ${APP}_summary.json cat ${APP}_summary.json } @@ -21,6 +21,7 @@ function parseResults(){ echo "[parseResults] current directory: $(pwd)" export res_cpu='""' export res_thr='""' + export res_score='""' export s_msg="ok" if [ "$1" -ne 0 ]; then echo "Previous steps failed: skip parsing, go to generateSummary" @@ -35,12 +36,18 @@ function parseResults(){ # Parsing Event Throughput: xxxx ev/s res_thr=`grep -H "Event Throughput" proc_*/out_*.log | sed -e "s@[^:]*: Event Throughput: \([ 0-9\.]*\) ev/s@\1@" | awk 'BEGIN{amin=1000000;amax=0;count=0;} { val=$1; a[count]=val; count+=1; sum+=val; if(amax<val) amax=val; if(amin>val) amin=val} END{n = asort(a); if (n % 2) { median=a[(n + 1) / 2]; } else {median=(a[(n / 2)] + a[(n / 2) + 1]) / 2.0;}; printf "{\"score\": %.4f, \"avg\": %.4f, \"median\": %.4f, \"min\": %.4f, \"max\": %.4f}", sum, sum/count, median, amin, amax -}' nevt=$NEVENTS_THREAD nthread=$NTHREADS || (echo "\"[ERROR] Something went wrong in parsing the Event Throughput\""; return 1)` +}' nevt=$NEVENTS_THREAD nthread=$NTHREADS || (echo "{}"; return 1)` STATUS_1=$? + + #Duplicating above parsing, as quick and dirty. SHoudl be replaced by a python parser + res_score=`grep -H "Event Throughput" proc_*/out_*.log | sed -e "s@[^:]*: Event Throughput: \([ 0-9\.]*\) ev/s@\1@" | awk 'BEGIN{amin=1000000;amax=0;count=0;} { val=$1; a[count]=val; count+=1; sum+=val; if(amax<val) amax=val; if(amin>val) amin=val} END{n = asort(a); if (n % 2) { median=a[(n + 1) / 2]; } else {median=(a[(n / 2)] + a[(n / 2) + 1]) / 2.0;}; +printf "{\"digi\": %.4f}", sum +}' nevt=$NEVENTS_THREAD nthread=$NTHREADS || (echo "{}"; return 1)` + # Parsing CPU Summary: \n- Total loop:: xxxx seconds of all CPUs res_cpu=`grep -H -A2 "CPU Summary" proc_*/out_*.log | grep "Total loop" | sed -e "s@.*\sTotal loop: \([ 0-9\.]*\)@\1@" | awk 'BEGIN{amin=1000000;amax=0;count=0;} { val=nevt*nthread/$1; a[count]=val; count+=1; sum+=val; if(amax<val) amax=val; if(amin>val) amin=val} END{n = asort(a); if (n % 2) {median=a[(n + 1) / 2]; } else {median=(a[(n / 2)] + a[(n / 2) + 1]) / 2.0;}; printf "{\"score\": %.4f, \"avg\": %.4f, \"median\": %.4f, \"min\": %.4f, \"max\": %.4f}", sum, sum/count, median, amin, amax -}' nevt=$NEVENTS_THREAD nthread=$NTHREADS || (echo "\"[ERROR] Something went wrong in parsing the CPU score\""; return 1)` +}' nevt=$NEVENTS_THREAD nthread=$NTHREADS || (echo "{}"; return 1)` STATUS_2=$? [[ "$STATUS_1" == "0" ]] && [[ "$STATUS_2" == "0" ]] STATUS=$? diff --git a/cms/gen-sim/cms-gen-sim.spec b/cms/gen-sim/cms-gen-sim.spec index 931976189ca118c1ba630e8ddf832e23c1e39a10..ea5767d3a7dcaae8f1b418f8735fafa8874fa0f6 100644 --- a/cms/gen-sim/cms-gen-sim.spec +++ b/cms/gen-sim/cms-gen-sim.spec @@ -3,6 +3,6 @@ HEPWL_BMKOPTS="-t 4 -e 2" # -c replaces -n as of v0.12 HEPWL_BMKDIR=cms-gen-sim HEPWL_BMKDESCRIPTION="CMS GEN-SIM of ttbar events, based on CMSSW_10_2_9" HEPWL_DOCKERIMAGENAME=cms-gen-sim-bmk -HEPWL_DOCKERIMAGETAG=v0.17 # versions >= v0.13 use common bmk driver +HEPWL_DOCKERIMAGETAG=v1.0 # versions >= v0.13 use common bmk driver HEPWL_CVMFSREPOS=cms.cern.ch HEPWL_EXTEND_CMS_SPEC=./cms_spec_custom.txt diff --git a/cms/gen-sim/cms-gen-sim/jobs/good_1/cms-gen-sim_summary.json b/cms/gen-sim/cms-gen-sim/jobs/good_1/cms-gen-sim_summary.json index 8ae5fbce53d57e482ba5a0940c73201bb8f5acbe..fbf3f56231c34795ee7b995305a0d38645eae002 100644 --- a/cms/gen-sim/cms-gen-sim/jobs/good_1/cms-gen-sim_summary.json +++ b/cms/gen-sim/cms-gen-sim/jobs/good_1/cms-gen-sim_summary.json @@ -1 +1 @@ -{"copies":1 , "threads_per_copy":4 , "events_per_thread" : 2 , "throughput_score": {"score": 0.0666, "avg": 0.0666, "median": 0.0666, "min": 0.0666, "max": 0.0666} , "CPU_score": {"score": 0.0254, "avg": 0.0254, "median": 0.0254, "min": 0.0254, "max": 0.0254} , "log": "ok", "app": {"version":"v0.16","description":"CMS GEN-SIM of ttbar events, based on CMSSW_10_2_9","cvmfs_checksum":"c8e29b993587c7e92411afb219787e65","bmkdata_checksum":"9035578520013c3a5faac30bc36e30e0","bmk_checksum":"a3299c240b48e19a7547d8a865fb7233"} } +{"copies":1 , "threads_per_copy":4 , "events_per_thread" : 2 , "wl-scores": {"gen-sim" :0.0666} , "wl-stats": {"throughput_score": {"score": 0.0666, "avg": 0.0666, "median": 0.0666, "min": 0.0666, "max": 0.0666} , "CPU_score": {"score": 0.0254, "avg": 0.0254, "median": 0.0254, "min": 0.0254, "max": 0.0254} }, "log": "ok", "app": {"version":"v0.16","description":"CMS GEN-SIM of ttbar events, based on CMSSW_10_2_9","cvmfs_checksum":"c8e29b993587c7e92411afb219787e65","bmkdata_checksum":"9035578520013c3a5faac30bc36e30e0","bmk_checksum":"a3299c240b48e19a7547d8a865fb7233"} } diff --git a/cms/gen-sim/cms-gen-sim/parseResults.sh b/cms/gen-sim/cms-gen-sim/parseResults.sh index e6714283baabbed2f638bfbbbf5e9ee0b63f9ab5..915748df09ff905508ebd925e93d6a5be18d0396 100644 --- a/cms/gen-sim/cms-gen-sim/parseResults.sh +++ b/cms/gen-sim/cms-gen-sim/parseResults.sh @@ -1,5 +1,5 @@ function generateSummary(){ - echo -e "{\"copies\":$NCOPIES , \"threads_per_copy\":$NTHREADS , \"events_per_thread\" : $NEVENTS_THREAD , \"throughput_score\": $res_thr , \"CPU_score\": $res_cpu , \"log\": \"${s_msg}\", \"app\": `cat $BMKDIR/version.json` }" > ${APP}_summary.json + echo -e "{\"copies\":$NCOPIES , \"threads_per_copy\":$NTHREADS , \"events_per_thread\" : $NEVENTS_THREAD , \"wl-scores\": $res_score, \"wl-stats\": {\"throughput_score\": $res_thr , \"CPU_score\": $res_cpu }, \"log\": \"${s_msg}\", \"app\": `cat $BMKDIR/version.json` }" > ${APP}_summary.json cat ${APP}_summary.json } @@ -21,6 +21,7 @@ function parseResults(){ echo "[parseResults] current directory: $(pwd)" export res_cpu='""' export res_thr='""' + export res_score='""' export s_msg="ok" if [ "$1" -ne 0 ]; then echo "Previous steps failed: skip parsing, go to generateSummary" @@ -35,12 +36,18 @@ function parseResults(){ # Parsing Event Throughput: xxxx ev/s res_thr=`grep -H "Event Throughput" proc_*/out_*.log | sed -e "s@[^:]*: Event Throughput: \([ 0-9\.]*\) ev/s@\1@" | awk 'BEGIN{amin=1000000;amax=0;count=0;} { val=$1; a[count]=val; count+=1; sum+=val; if(amax<val) amax=val; if(amin>val) amin=val} END{n = asort(a); if (n % 2) { median=a[(n + 1) / 2]; } else {median=(a[(n / 2)] + a[(n / 2) + 1]) / 2.0;}; printf "{\"score\": %.4f, \"avg\": %.4f, \"median\": %.4f, \"min\": %.4f, \"max\": %.4f}", sum, sum/count, median, amin, amax -}' nevt=$NEVENTS_THREAD nthread=$NTHREADS || (echo "\"[ERROR] Something went wrong in parsing the Event Throughput\""; return 1)` +}' nevt=$NEVENTS_THREAD nthread=$NTHREADS || (echo "{}"; return 1)` STATUS_1=$? + + #Duplicating above parsing, as quick and dirty. SHoudl be replaced by a python parser + res_score=`grep -H "Event Throughput" proc_*/out_*.log | sed -e "s@[^:]*: Event Throughput: \([ 0-9\.]*\) ev/s@\1@" | awk 'BEGIN{amin=1000000;amax=0;count=0;} { val=$1; a[count]=val; count+=1; sum+=val; if(amax<val) amax=val; if(amin>val) amin=val} END{n = asort(a); if (n % 2) { median=a[(n + 1) / 2]; } else {median=(a[(n / 2)] + a[(n / 2) + 1]) / 2.0;}; +printf "{\"gen-sim\" :%.4f} ", sum +}' nevt=$NEVENTS_THREAD nthread=$NTHREADS || (echo "{}"; return 1)` + # Parsing CPU Summary: \n- Total loop:: xxxx seconds of all CPUs res_cpu=`grep -H -A2 "CPU Summary" proc_*/out_*.log | grep "Total loop" | sed -e "s@.*\sTotal loop: \([ 0-9\.]*\)@\1@" | awk 'BEGIN{amin=1000000;amax=0;count=0;} { val=nevt*nthread/$1; a[count]=val; count+=1; sum+=val; if(amax<val) amax=val; if(amin>val) amin=val} END{n = asort(a); if (n % 2) {median=a[(n + 1) / 2]; } else {median=(a[(n / 2)] + a[(n / 2) + 1]) / 2.0;}; printf "{\"score\": %.4f, \"avg\": %.4f, \"median\": %.4f, \"min\": %.4f, \"max\": %.4f}", sum, sum/count, median, amin, amax -}' nevt=$NEVENTS_THREAD nthread=$NTHREADS || (echo "\"[ERROR] Something went wrong in parsing the CPU score\""; return 1)` +}' nevt=$NEVENTS_THREAD nthread=$NTHREADS || (echo "{}"; return 1)` STATUS_2=$? [[ "$STATUS_1" == "0" ]] && [[ "$STATUS_2" == "0" ]] STATUS=$? diff --git a/cms/reco/cms-reco.spec b/cms/reco/cms-reco.spec index de7f5ebfc899cc7d429bf874409f57752f93b219..ac11facabde32ac1424b12ed9eaee21660f52815 100644 --- a/cms/reco/cms-reco.spec +++ b/cms/reco/cms-reco.spec @@ -3,5 +3,5 @@ HEPWL_BMKOPTS="-t 4 -e 3" # -c replaces -n as of v0.7 HEPWL_BMKDIR=cms-reco HEPWL_BMKDESCRIPTION="CMS RECO of ttbar events, based on CMSSW_10_2_9" HEPWL_DOCKERIMAGENAME=cms-reco-bmk -HEPWL_DOCKERIMAGETAG=v0.12 # versions >= v0.8 use common bmk driver +HEPWL_DOCKERIMAGETAG=v1 # versions >= v0.8 use common bmk driver HEPWL_CVMFSREPOS=cms.cern.ch diff --git a/cms/reco/cms-reco/jobs/bad_1/cms-reco_summary.json b/cms/reco/cms-reco/jobs/bad_1/cms-reco_summary.json index af366b3d205e20c35ef75ec08a9437278f1e3f91..d2c5333a1d503715f7d0d51a0b23e478832abaa6 100644 --- a/cms/reco/cms-reco/jobs/bad_1/cms-reco_summary.json +++ b/cms/reco/cms-reco/jobs/bad_1/cms-reco_summary.json @@ -1 +1 @@ -{"copies":1 , "threads_per_copy":4 , "events_per_thread" : 3 , "throughput_score": "[ERROR] Something went wrong in parsing the Event Throughput" , "CPU_score": "[ERROR] Something went wrong in parsing the CPU score" , "log": "ERROR", "app": {"version":"v0.11","description":"CMS RECO of ttbar events, based on CMSSW_10_2_9","cvmfs_checksum":"7709cc1dd71cc16f1e82ed0bef0002a2","bmkdata_checksum":"85537134eef4c02127b3b638bd6f766d","bmk_checksum":"ff2071f17349425463b4e8e59e23f846"} } +{"copies":1 , "threads_per_copy":4 , "events_per_thread" : 3 , "wl-scores": {"reco": 0.0000}, "wl-stats": {"throughput_score": {} , "CPU_score": {} }, "log": "ERROR", "app": {"version":"v0.11","description":"CMS RECO of ttbar events, based on CMSSW_10_2_9","cvmfs_checksum":"7709cc1dd71cc16f1e82ed0bef0002a2","bmkdata_checksum":"85537134eef4c02127b3b638bd6f766d","bmk_checksum":"ff2071f17349425463b4e8e59e23f846"} } diff --git a/cms/reco/cms-reco/jobs/good_1/cms-reco_summary.json b/cms/reco/cms-reco/jobs/good_1/cms-reco_summary.json index e0ab752057e6460c00b5f3bfec7015a0f024cb33..c7da933eded35acc17e0a0fda82db23ced7348ea 100644 --- a/cms/reco/cms-reco/jobs/good_1/cms-reco_summary.json +++ b/cms/reco/cms-reco/jobs/good_1/cms-reco_summary.json @@ -1 +1 @@ -{"copies":1 , "threads_per_copy":4 , "events_per_thread" : 3 , "throughput_score": {"score": 0.1574, "avg": 0.1574, "median": 0.1574, "min": 0.1574, "max": 0.1574} , "CPU_score": {"score": 0.0756, "avg": 0.0756, "median": 0.0756, "min": 0.0756, "max": 0.0756} , "log": "ok", "app": {"version":"v0.11","description":"CMS RECO of ttbar events, based on CMSSW_10_2_9","cvmfs_checksum":"7709cc1dd71cc16f1e82ed0bef0002a2","bmkdata_checksum":"85537134eef4c02127b3b638bd6f766d","bmk_checksum":"ff2071f17349425463b4e8e59e23f846"} } +{"copies":1 , "threads_per_copy":4 , "events_per_thread" : 3 , "wl-scores": {"reco": 0.1574}, "wl-stats": {"throughput_score": {"score": 0.1574, "avg": 0.1574, "median": 0.1574, "min": 0.1574, "max": 0.1574} , "CPU_score": {"score": 0.0756, "avg": 0.0756, "median": 0.0756, "min": 0.0756, "max": 0.0756} }, "log": "ok", "app": {"version":"v0.11","description":"CMS RECO of ttbar events, based on CMSSW_10_2_9","cvmfs_checksum":"7709cc1dd71cc16f1e82ed0bef0002a2","bmkdata_checksum":"85537134eef4c02127b3b638bd6f766d","bmk_checksum":"ff2071f17349425463b4e8e59e23f846"} } diff --git a/cms/reco/cms-reco/parseResults.sh b/cms/reco/cms-reco/parseResults.sh index e6714283baabbed2f638bfbbbf5e9ee0b63f9ab5..2af853aac8b43aa43590ca6075fdc86f15c17570 100644 --- a/cms/reco/cms-reco/parseResults.sh +++ b/cms/reco/cms-reco/parseResults.sh @@ -1,5 +1,5 @@ function generateSummary(){ - echo -e "{\"copies\":$NCOPIES , \"threads_per_copy\":$NTHREADS , \"events_per_thread\" : $NEVENTS_THREAD , \"throughput_score\": $res_thr , \"CPU_score\": $res_cpu , \"log\": \"${s_msg}\", \"app\": `cat $BMKDIR/version.json` }" > ${APP}_summary.json + echo -e "{\"copies\":$NCOPIES , \"threads_per_copy\":$NTHREADS , \"events_per_thread\" : $NEVENTS_THREAD , \"wl-scores\": $res_score, \"wl-stats\": {\"throughput_score\": $res_thr , \"CPU_score\": $res_cpu }, \"log\": \"${s_msg}\", \"app\": `cat $BMKDIR/version.json` }" > ${APP}_summary.json cat ${APP}_summary.json } @@ -21,6 +21,7 @@ function parseResults(){ echo "[parseResults] current directory: $(pwd)" export res_cpu='""' export res_thr='""' + export res_score='""' export s_msg="ok" if [ "$1" -ne 0 ]; then echo "Previous steps failed: skip parsing, go to generateSummary" @@ -35,12 +36,18 @@ function parseResults(){ # Parsing Event Throughput: xxxx ev/s res_thr=`grep -H "Event Throughput" proc_*/out_*.log | sed -e "s@[^:]*: Event Throughput: \([ 0-9\.]*\) ev/s@\1@" | awk 'BEGIN{amin=1000000;amax=0;count=0;} { val=$1; a[count]=val; count+=1; sum+=val; if(amax<val) amax=val; if(amin>val) amin=val} END{n = asort(a); if (n % 2) { median=a[(n + 1) / 2]; } else {median=(a[(n / 2)] + a[(n / 2) + 1]) / 2.0;}; printf "{\"score\": %.4f, \"avg\": %.4f, \"median\": %.4f, \"min\": %.4f, \"max\": %.4f}", sum, sum/count, median, amin, amax -}' nevt=$NEVENTS_THREAD nthread=$NTHREADS || (echo "\"[ERROR] Something went wrong in parsing the Event Throughput\""; return 1)` +}' nevt=$NEVENTS_THREAD nthread=$NTHREADS || (echo "{}"; return 1)` STATUS_1=$? + + #Duplicating above parsing, as quick and dirty. SHoudl be replaced by a python parser + res_score=`grep -H "Event Throughput" proc_*/out_*.log | sed -e "s@[^:]*: Event Throughput: \([ 0-9\.]*\) ev/s@\1@" | awk 'BEGIN{amin=1000000;amax=0;count=0;} { val=$1; a[count]=val; count+=1; sum+=val; if(amax<val) amax=val; if(amin>val) amin=val} END{n = asort(a); if (n % 2) { median=a[(n + 1) / 2]; } else {median=(a[(n / 2)] + a[(n / 2) + 1]) / 2.0;}; +printf "{\"reco\": %.4f}", sum +}' nevt=$NEVENTS_THREAD nthread=$NTHREADS || (echo "{}"; return 1)` + # Parsing CPU Summary: \n- Total loop:: xxxx seconds of all CPUs res_cpu=`grep -H -A2 "CPU Summary" proc_*/out_*.log | grep "Total loop" | sed -e "s@.*\sTotal loop: \([ 0-9\.]*\)@\1@" | awk 'BEGIN{amin=1000000;amax=0;count=0;} { val=nevt*nthread/$1; a[count]=val; count+=1; sum+=val; if(amax<val) amax=val; if(amin>val) amin=val} END{n = asort(a); if (n % 2) {median=a[(n + 1) / 2]; } else {median=(a[(n / 2)] + a[(n / 2) + 1]) / 2.0;}; printf "{\"score\": %.4f, \"avg\": %.4f, \"median\": %.4f, \"min\": %.4f, \"max\": %.4f}", sum, sum/count, median, amin, amax -}' nevt=$NEVENTS_THREAD nthread=$NTHREADS || (echo "\"[ERROR] Something went wrong in parsing the CPU score\""; return 1)` +}' nevt=$NEVENTS_THREAD nthread=$NTHREADS || (echo "{}"; return 1)` STATUS_2=$? [[ "$STATUS_1" == "0" ]] && [[ "$STATUS_2" == "0" ]] STATUS=$? diff --git a/lhcb/gen-sim/lhcb-gen-sim.spec b/lhcb/gen-sim/lhcb-gen-sim.spec index 59c7953195e1e26ed3dc563c97aee804bb7b3368..d9fd652ef9999217fe91decbb3657609ac1935c3 100644 --- a/lhcb/gen-sim/lhcb-gen-sim.spec +++ b/lhcb/gen-sim/lhcb-gen-sim.spec @@ -3,5 +3,5 @@ HEPWL_BMKOPTS="-c 4 -e 5" # -c replaces -n as of v0.7 HEPWL_BMKDIR=lhcb-gen-sim HEPWL_BMKDESCRIPTION="LHCb GEN-SIM benchmark" HEPWL_DOCKERIMAGENAME=lhcb-gen-sim-bmk -HEPWL_DOCKERIMAGETAG=v0.12 # versions >= v0.6 use common bmk driver, >= v0.9 use separate GEN/SIM scores +HEPWL_DOCKERIMAGETAG=v0.13 # versions >= v0.6 use common bmk driver, >= v0.9 use separate GEN/SIM scores HEPWL_CVMFSREPOS=lhcb.cern.ch diff --git a/lhcb/gen-sim/lhcb-gen-sim/jobs/good_1/lhcb-gen-sim_summary_old.json b/lhcb/gen-sim/lhcb-gen-sim/jobs/good_1/lhcb-gen-sim_summary_old.json index 7af0ce14e7e0ad7ce30b54e1b5500c1f5921c889..94b68fc7b0e84123e3b4b8da496ab4ae7e008017 100644 --- a/lhcb/gen-sim/lhcb-gen-sim/jobs/good_1/lhcb-gen-sim_summary_old.json +++ b/lhcb/gen-sim/lhcb-gen-sim/jobs/good_1/lhcb-gen-sim_summary_old.json @@ -1 +1 @@ -{"copies":4 , "threads_per_copy":1 , "events_per_thread" : 5 , "wl-scores": {"sim": 18.8494} , "wl-stats": {"score": 18.8494, "avg": 4.7124, "median": 4.7115, "min": 4.6994, "max": 4.7271} , "log": "ok", "app":{"version":"v0.12","description":"LHCb GEN-SIM benchmark","cvmfs_checksum":"dc9fea953411cf41c03f9086f355e5fc","bmkdata_checksum":"199a9d5cb218c303eafd74076bb7a3c0","bmk_checksum":"8b45d0b7de247fea287383312204f5d8"} } +{"copies":4 , "threads_per_copy":1 , "events_per_thread" : 5 , "wl-scores": {"gen-sim": 18.8494} , "wl-stats": {"score": 18.8494, "avg": 4.7124, "median": 4.7115, "min": 4.6994, "max": 4.7271} , "log": "ok", "app":{"version":"v0.12","description":"LHCb GEN-SIM benchmark","cvmfs_checksum":"dc9fea953411cf41c03f9086f355e5fc","bmkdata_checksum":"199a9d5cb218c303eafd74076bb7a3c0","bmk_checksum":"8b45d0b7de247fea287383312204f5d8"} } diff --git a/lhcb/gen-sim/lhcb-gen-sim/parseResults.sh b/lhcb/gen-sim/lhcb-gen-sim/parseResults.sh index 12f328b4c30fd5ad0e84334060637b22ca2a1572..998fedd3022aef88bbd14a0ac4c24ec123090940 100644 --- a/lhcb/gen-sim/lhcb-gen-sim/parseResults.sh +++ b/lhcb/gen-sim/lhcb-gen-sim/parseResults.sh @@ -27,7 +27,7 @@ function parseResults(){ awk -F"|" 'BEGIN{amin=1000000;amax=0;count=0;} \ { val=1000.*$5/$6; a[count]=val; count+=1; sum+=val; if(amax<val) amax=val; if(amin>val) amin=val} \ END{n = asort(a); if (n % 2) { median=a[(n + 1) / 2]; } else {median=(a[(n / 2)] + a[(n / 2) + 1])/ 2.0;}; -printf "\"wl-scores\": {\"sim\": %.4f} , \"wl-stats\": {\"score\": %.4f, \"avg\": %.4f, \"median\": %.4f, \"min\": %.4f, \"max\": %.4f}", sum, sum, sum/count, median, amin, amax +printf "\"wl-scores\": {\"gen-sim\": %.4f} , \"wl-stats\": {\"score\": %.4f, \"avg\": %.4f, \"median\": %.4f, \"min\": %.4f, \"max\": %.4f}", sum, sum, sum/count, median, amin, amax }' || (echo "\"wl-scores\":{}"; exit 1)` shstatus=$? [ "$shstatus" != "0" ] && s_msg="ERROR in bash parsing"