From 9bdc5bae5786db07e19a43136a126ae8723eb191 Mon Sep 17 00:00:00 2001 From: Sam Moore Date: Fri, 10 Oct 2014 00:39:48 +0800 Subject: [PATCH] FPS measurement in debugscript, more python analysis --- src/debugscript.cpp | 55 ++++ src/debugscript.h | 7 + src/main.cpp | 4 +- src/main.h | 10 +- src/path.h | 2 +- src/transformationtype.h | 4 +- src/view.h | 4 +- tools/analysis.ipynb | 280 +++++++++++++++++---- tools/build.py | 44 ++++ tools/common.py | 2 +- tools/{gpubounds_error.py => gpubounds.py} | 7 +- tools/grid_scaling.py | 50 ---- tools/scaling.py | 100 ++++++++ 13 files changed, 460 insertions(+), 109 deletions(-) create mode 100755 tools/build.py rename tools/{gpubounds_error.py => gpubounds.py} (90%) delete mode 100755 tools/grid_scaling.py create mode 100755 tools/scaling.py diff --git a/src/debugscript.cpp b/src/debugscript.cpp index 4de62bb..ed10cc3 100644 --- a/src/debugscript.cpp +++ b/src/debugscript.cpp @@ -172,6 +172,19 @@ void DebugScript::ParseAction(View * view, Screen * scr) currentAction.type = AT_ScreenShot; inp >> currentAction.textargs; } + else if (actionType == "printfps") + { + currentAction.type = AT_PrintFPS; + currentAction.iz = currentAction.loops; + m_fps_cpu_mean = 0; + m_fps_gpu_mean = 0; + m_fps_cpu_stddev = 0; + m_fps_gpu_stddev = 0; + } + else if (actionType == "printbounds") + { + currentAction.type = AT_PrintBounds; + } else Fatal("Unknown action %s", actionType.c_str()); @@ -346,6 +359,48 @@ bool DebugScript::Execute(View *view, Screen *scr) currentAction.loops = 1; break; } + case AT_PrintFPS: + { + // Using a (apparently) Soviet trick to calculate the stddev in one pass + // This was my favourite algorithm in my Physics honours project + // Ah the memories + // The horrible horrible memories + // At least things won't get that bad + // Right? + if (currentAction.loops <= 1) + { + double n = double(currentAction.iz); + m_fps_cpu_mean /= n; + m_fps_gpu_mean /= n; + + m_fps_cpu_stddev = sqrt(m_fps_cpu_stddev / n - m_fps_cpu_mean*m_fps_cpu_mean); + m_fps_gpu_stddev = sqrt(m_fps_gpu_stddev / n - m_fps_gpu_mean*m_fps_gpu_mean); + + + + printf("%d\t%f\t%f\t%f\t%f\n", currentAction.iz, + m_fps_gpu_mean, m_fps_gpu_stddev, + m_fps_cpu_mean, m_fps_cpu_stddev); + } + else + { + + double fps_cpu = 1.0/scr->GetLastFrameTimeCPU(); + double fps_gpu = 1.0/scr->GetLastFrameTimeGPU(); + + m_fps_cpu_mean += fps_cpu; + m_fps_gpu_mean += fps_gpu; + + m_fps_cpu_stddev += fps_cpu*fps_cpu; + m_fps_gpu_stddev += fps_gpu*fps_gpu; + } + break; + } + case AT_PrintBounds: + { + printf("%s\t%s\t%s\t%s\n", Str(view->GetBounds().x).c_str(), Str(view->GetBounds().y).c_str(), Str(view->GetBounds().w).c_str(), Str(view->GetBounds().h).c_str()); + break; + } default: Fatal("Unknown script command in queue."); } diff --git a/src/debugscript.h b/src/debugscript.h index ae2c8eb..0625535 100644 --- a/src/debugscript.h +++ b/src/debugscript.h @@ -43,6 +43,8 @@ private: AT_SetBounds, AT_QueryGPUBounds, // query bounds of Beziers when transformed to GPU AT_ScreenShot, // take screenshot + AT_PrintFPS, // Print FPS statistics about the frames + AT_PrintBounds, // Print bounds AT_Quit }; @@ -66,6 +68,11 @@ private: std::map m_labels; unsigned m_index; + double m_fps_cpu_mean; + double m_fps_gpu_mean; + double m_fps_cpu_stddev; + double m_fps_gpu_stddev; + struct PerformanceData { clock_t clock; diff --git a/src/main.cpp b/src/main.cpp index 22a1f6b..cdb2d0a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -61,8 +61,8 @@ int main(int argc, char ** argv) bool hide_control_panel = false; bool lazy_rendering = true; bool window_visible = true; - bool gpu_transform = true; - bool gpu_rendering = true; + bool gpu_transform = USE_GPU_TRANSFORM; + bool gpu_rendering = USE_GPU_RENDERING; diff --git a/src/main.h b/src/main.h index d7945e6..654aa09 100644 --- a/src/main.h +++ b/src/main.h @@ -79,8 +79,8 @@ void MainLoop(Document & doc, Screen & scr, View & view, int max_frames = -1) // order is important... segfaults occur when screen (which inits GL) is not constructed first -_- - scr.DebugFontInit("fonts/DejaVuSansMono.ttf", 12); - //scr.DebugFontInit("fonts/DejaVuSansMono.ttf", 18); + //scr.DebugFontInit("fonts/DejaVuSansMono.ttf", 12); + scr.DebugFontInit("fonts/DejaVuSansMono.ttf", 18); scr.SetMouseHandler(RatCatcher); ifstream tmp; @@ -161,14 +161,14 @@ void MainLoop(Document & doc, Screen & scr, View & view, int max_frames = -1) scr.DebugFontPrintF("Zoom: %s %%\n", Str(VReal(100)/VReal(view.GetBounds().w)).c_str()); //scr.DebugFontPrintF("Similar size: %s\n", HumanScale(view.GetBounds().w * VReal(22e-3))); - #if 1 + #if 0 scr.DebugFontPrintF("Rendered frame %lu\n", (uint64_t)frames); scr.DebugFontPrintF("Lazy Rendering = %d\n", view.UsingLazyRendering()); - /*if (cpu_frame > 0 && total_cpu_time > 0) + if (cpu_frame > 0 && total_cpu_time > 0) scr.DebugFontPrintF("[CPU] Render took %lf ms (%lf FPS) (total %lf s, avg FPS %lf)\n", cpu_frame*1e3, 1.0/cpu_frame, total_cpu_time,frames/total_cpu_time); if (gpu_frame > 0 && total_gpu_time > 0) scr.DebugFontPrintF("[GPU] Render took %lf ms (%lf FPS) (total %lf s, avg FPS %lf)\n", gpu_frame*1e3, 1.0/gpu_frame, total_gpu_time, frames/total_gpu_time); - */ + if (real_frame > 0 && total_real_time > 0) scr.DebugFontPrintF("[REALTIME] Render took %lf ms (%lf FPS) (total %lf s, avg FPS %lf)\n", real_frame*1e3, 1.0/real_frame, total_real_time,frames/total_real_time); diff --git a/src/path.h b/src/path.h index 06aff7a..b303fe7 100644 --- a/src/path.h +++ b/src/path.h @@ -16,7 +16,7 @@ namespace IPDF { #ifdef TRANSFORM_BEZIERS_TO_PATH - typedef Gmprat PReal; + typedef Real PReal; #else typedef Real PReal; #endif diff --git a/src/transformationtype.h b/src/transformationtype.h index 63a743e..4f27d5f 100644 --- a/src/transformationtype.h +++ b/src/transformationtype.h @@ -2,8 +2,8 @@ #define _TRANSFORMATIONTYPE_H #ifdef QUADTREE_DISABLED -//#define TRANSFORM_OBJECTS_NOT_VIEW -//#define TRANSFORM_BEZIERS_TO_PATH +#define TRANSFORM_OBJECTS_NOT_VIEW +#define TRANSFORM_BEZIERS_TO_PATH #endif #endif diff --git a/src/view.h b/src/view.h index 712b95a..124ae07 100644 --- a/src/view.h +++ b/src/view.h @@ -8,7 +8,7 @@ #include "path.h" #include "transformationtype.h" -#define USE_GPU_TRANSFORM false +#define USE_GPU_TRANSFORM true #define USE_GPU_RENDERING true #define USE_SHADING !(USE_GPU_RENDERING) && true @@ -19,7 +19,7 @@ namespace IPDF { #ifdef TRANSFORM_BEZIERS_TO_PATH - typedef Gmprat VReal; + typedef Real VReal; #else typedef Real VReal; #endif diff --git a/tools/analysis.ipynb b/tools/analysis.ipynb index 2fc7ea7..902b8da 100644 --- a/tools/analysis.ipynb +++ b/tools/analysis.ipynb @@ -24,18 +24,44 @@ ] } ], - "prompt_number": 2 + "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ - "from common import *" + "!pkill -9 ipdf" ], "language": "python", "metadata": {}, "outputs": [], - "prompt_number": 3 + "prompt_number": 62 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "from common import *\n", + "import build\n", + "import scaling" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 137 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "# If things are changed run this instead of restarting kernel\n", + "scaling = reload(scaling)\n", + "build = reload(build)" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 190 }, { "cell_type": "markdown", @@ -50,48 +76,18 @@ "cell_type": "code", "collapsed": false, "input": [ - "def build(real_type, quadtree=False, controlpanel=False):\n", - " global options\n", - " real_name = \"\"\n", - " if (type(real_type) == str):\n", - " quadtree = \"enabled\" if (real_type.split(\"-\")[-1] == \"qtree\") else quadtree\n", - " real_type = real_type.split(\"-\")[0]\n", - " real_name = real_type\n", - " real_type = options[\"real_names\"].index(real_type)\n", - " else:\n", - " real_name = options[\"real_names\"][real_type]\n", - " \n", - " quadtree = \"enabled\" if quadtree else \"disabled\"\n", - " controlpanel = \"enabled\" if controlpanel else \"disabled\"\n", - " if (os.system(\"make -C %s clean\" % options[\"ipdf_src\"]) != 0):\n", - " raise Exception(\"Make clean failed.\")\n", - " if (os.system(\"make -C %s REALTYPE=%d QUADTREE=%s CONTROLPANEL=%s\" % (options[\"ipdf_src\"], real_type, quadtree, controlpanel)) != 0):\n", - " raise Exception(\"Make failed.\")\n", - " \n", - " q = \"-qtree\" if quadtree == \"enabled\" else \"\"\n", - " os.rename(options[\"ipdf_bin\"], options[\"local_bin\"]+real_name+q)" + "options[\"tobuild\"] += [\"mpfrc++\"]" ], "language": "python", "metadata": {}, "outputs": [], - "prompt_number": 4 + "prompt_number": 46 }, { "cell_type": "code", "collapsed": false, "input": [ - "p = ProgressBar(len(options[\"tobuild\"]))\n", - "p.animate(0)\n", - "for (i,b) in enumerate(options[\"tobuild\"]): #options[\"real_names\"]:\n", - " if b in options[\"ignore\"]:\n", - " continue\n", - " try:\n", - " build(b, False, False)\n", - " options[\"built\"] += [b]\n", - " #display(\"Built %s\" % b)\n", - " except:\n", - " display(\"Failed to build %s\" % b)\n", - " p.animate(i+1)\n" + "build.BuildAll()" ], "language": "python", "metadata": {}, @@ -100,6 +96,7 @@ "output_type": "stream", "stream": "stdout", "text": [ + "Building: ['single', 'double', 'GMPrat', 'mpfrc++']\n", "\r", "[ 0% ]" ] @@ -109,7 +106,7 @@ "stream": "stdout", "text": [ " \r", - "[************* 33% ] 1 of 3 complete" + "[********** 25% ] 1 of 4 complete" ] }, { @@ -117,7 +114,7 @@ "stream": "stdout", "text": [ " \r", - "[*****************67%***** ] 2 of 3 complete" + "[*****************50% ] 2 of 4 complete" ] }, { @@ -132,7 +129,15 @@ "stream": "stdout", "text": [ " \r", - "[****************100%******************] 3 of 3 complete" + "[*****************75%********* ] 3 of 4 complete" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + " \r", + "[****************100%******************] 4 of 4 complete" ] }, { @@ -143,13 +148,90 @@ ] } ], - "prompt_number": 5 + "prompt_number": 47 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "options[\"built\"] = [\"single\", \"double\", \"cumul-single\", \"cumul-double\", \"path-single\", \"path-double\", \"path-rat\"] # Hack for now, these were manually compiled" + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 91 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Accuracy of Rendering VS Scaling" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "scaling_data = {}\n", + "for b in options[\"built\"]:\n", + " scaling_data[b] = scaling.FixedScales(\"./\"+b, fps=100, xz=0.5, yz=0.5)\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 92 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + " \n", + " \n", + "
OriginalScaled
" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "fig = figure(figsize=(6,4))\n", + "for b in scaling_data:\n", + " plot(1.0/scaling_data[b][\"accuracy\"][:,2], scaling_data[b][\"accuracy\"][:,5])\n", + "xscale(\"log\")\n", + "legend(scaling_data.keys(), loc=\"best\")\n", + "title(\"Loss of Precision for a 1x1 pixel grid\\nView Top Left: (0.5,0.5)\")\n", + "xlabel(\"Magnification (1/width)\")\n", + "ylabel(\"Representable Lines\")\n", + "\n", + "fig.savefig('../../sam/figures/loss_of_precision_grid_0.5.pdf', format='PDF')" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "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\n", + "text": [ + "" + ] + } + ], + "prompt_number": 97 }, { "cell_type": "code", "collapsed": false, "input": [ - "options[\"built\"]" + "fig = figure(figsize=(6,4))\n", + "for b in scaling_data:\n", + " plot(1.0/scaling_data[b][\"accuracy\"][:,2], scaling_data[b][\"performance\"][:,3])\n", + "xscale(\"log\")\n", + "legend(scaling_data.keys())\n", + "xlabel(\"Magnification\")\n", + "ylabel(\"Average FPS (100 frames)\")" ], "language": "python", "metadata": {}, @@ -157,13 +239,123 @@ { "metadata": {}, "output_type": "pyout", - "prompt_number": 6, + "prompt_number": 98, + "text": [ + "" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "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\n", + "text": [ + "" + ] + } + ], + "prompt_number": 98 + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Invariance after scaling" + ] + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "invariance_data = {}\n", + "for b in options[\"built\"]:\n", + " invariance_data[b] = scaling.TestInvariance(\"./\"+b, fps=100, x0 = 0.5, y0 = 0.5, w0 = 1e-6, h0 = 1e-6, xz=400, yz=300)\n", + " " + ], + "language": "python", + "metadata": {}, + "outputs": [], + "prompt_number": 191 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "invariance_data.keys()" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 187, + "text": [ + "['path-single', 'double', 'single', 'cumul-double', 'cumul-single']" + ] + } + ], + "prompt_number": 187 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "fig = figure(figsize=(6,4))\n", + "for b in invariance_data.keys():\n", + " plot(invariance_data[b][\"accuracy\"][:,2], invariance_data[b][\"accuracy\"][:,4])\n", + "xscale(\"log\")\n", + "yscale(\"log\")\n", + "legend(scaling_data.keys(), loc=\"best\")\n", + "xlabel(\"Total scaling factor\")\n", + "ylabel(\"Accumulated Error\")\n", + "fig.savefig(\"../../sam/figures/cumulative_error_grid.pdf\", format=\"PDF\")" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "display_data", + "png": "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\n", + "text": [ + "" + ] + } + ], + "prompt_number": 195 + }, + { + "cell_type": "code", + "collapsed": false, + "input": [ + "for b in invariance_data:\n", + " plot(1.0/invariance_data[b][\"accuracy\"][:,2], invariance_data[b][\"performance\"][:,3])\n", + "xscale(\"log\")\n", + "legend(invariance_data.keys())\n", + "xlabel(\"Magnification\")\n", + "ylabel(\"Average FPS (100 frames)\")" + ], + "language": "python", + "metadata": {}, + "outputs": [ + { + "metadata": {}, + "output_type": "pyout", + "prompt_number": 118, + "text": [ + "" + ] + }, + { + "metadata": {}, + "output_type": "display_data", + "png": "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\n", "text": [ - "['single', 'double', 'GMPrat']" + "" ] } ], - "prompt_number": 6 + "prompt_number": 118 }, { "cell_type": "markdown", diff --git a/tools/build.py b/tools/build.py new file mode 100755 index 0000000..82e9aa1 --- /dev/null +++ b/tools/build.py @@ -0,0 +1,44 @@ +#!/usr/bin/python + +from common import * + +import subprocess + +def Build(real_type, quadtree=False, controlpanel=False): + global options + real_name = "" + if (type(real_type) == str): + quadtree = "enabled" if (real_type.split("-")[-1] == "qtree") else quadtree + real_type = real_type.split("-")[0] + real_name = real_type + real_type = options["real_names"].index(real_type) + else: + real_name = options["real_names"][real_type] + + quadtree = "enabled" if quadtree else "disabled" + controlpanel = "enabled" if controlpanel else "disabled" + if (os.system("make -C %s clean" % options["ipdf_src"]) != 0): + raise Exception("Make clean failed.") + if (os.system("make -C %s REALTYPE=%d QUADTREE=%s CONTROLPANEL=%s" % (options["ipdf_src"], real_type, quadtree, controlpanel)) != 0): + raise Exception("Make failed.") + + q = "-qtree" if quadtree == "enabled" else "" + os.rename(options["ipdf_bin"], options["local_bin"]+real_name+q) + + +def BuildAll(): + p = ProgressBar(len(options["tobuild"])) + print("Building: %s" % str(options["tobuild"])) + p.animate(0) + for (i,b) in enumerate(options["tobuild"]): #options["real_names"]: + if b in options["ignore"]: + continue + try: + Build(b, False, False) + options["built"] += [b] + except: + display("Failed to build %s" % b) + p.animate(i+1) + +if __name__ == "__main__": + BuildAll() diff --git a/tools/common.py b/tools/common.py index f755d46..4ebfb1b 100644 --- a/tools/common.py +++ b/tools/common.py @@ -15,7 +15,7 @@ options = { "local_bin" : "./", "tests" : "../src/tests/", "ignore" : ["virtual", "Rational_Arbint", "iRRAM", "ParanoidNumber"], - "tobuild" : ["single", "double", "GMPrat"], + "tobuild" : ["single", "double", "mpfrc++","GMPrat"], "numerical_tests" : ["identitytests"], "built" : [] } diff --git a/tools/gpubounds_error.py b/tools/gpubounds.py similarity index 90% rename from tools/gpubounds_error.py rename to tools/gpubounds.py index ecf13c4..d054bcc 100755 --- a/tools/gpubounds_error.py +++ b/tools/gpubounds.py @@ -6,8 +6,11 @@ import math # Calculates the total error in coordinates of GPU bounds rectangles of objects def ComputeError(reference, other): - reference = open(reference, "r") - other = open(other, "r") + if type(reference) == str: + reference = open(reference, "r") + if type(other) == str: + other = open(other, "r") + total = 0.0 while True: a = reference.readline() diff --git a/tools/grid_scaling.py b/tools/grid_scaling.py deleted file mode 100755 index 92c66c6..0000000 --- a/tools/grid_scaling.py +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/python -u - -import sys -import os -from pylab import * -import subprocess -import time - -import gpubounds_error - -def grid_scaling(binname, x0, y0, w0, h0, s, steps=100,testsvg="svg-tests/grid.svg"): - data = [] - n = open("/dev/null", "w") - p = subprocess.Popen(binname + " -s stdin", bufsize=0, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=n, shell=True) - p.stdin.write("setbounds %s %s %s %s\n" % (str(x0),str(y0),str(w0),str(h0))) - p.stdin.write("loadsvg %s\n" % testsvg) - p.stdin.write("querygpubounds original.dat\n") - p.stdin.write("screenshot original.bmp\n") - for i in xrange(steps): - p.stdin.write("clear\n") - p.stdin.write("loop 1 zoom 0.5 0.5 %s\n" % str(s)) - p.stdin.write("loadsvg %s\n" % testsvg) - p.stdin.write("querygpubounds step%d.dat\n" % i) - while not os.path.isfile("step%d.dat" % i): - pass - p.stdin.write("clearperf\n") - p.stdin.write("loop 10 wait\n") - p.stdin.write("recordperf\n") - p.stdin.write("printperf\n") - perf = p.stdout.readline() - time.sleep(0.5) - data += [gpubounds_error.ComputeError("original.dat", "step%d.dat" % i)] - #data += [gpubounds_error.UniqueBounds("step%d.dat" % i)] - - - print "Quit" - p.stdin.write("screenshot final.bmp\n") - p.stdin.write("quit\n") - p.stdin.close() - - data = asarray(data) - plot(data) - show(block=True) - - -if __name__ == "__main__": - binname = "../src/ipdf" - if len(sys.argv) > 1: - binname = sys.argv[1] - grid_scaling(binname, 0.5, 0.5, 1, 1, 0.5) diff --git a/tools/scaling.py b/tools/scaling.py new file mode 100755 index 0000000..6240718 --- /dev/null +++ b/tools/scaling.py @@ -0,0 +1,100 @@ +#!/usr/bin/python -u + +import sys +import os +from matplotlib.pyplot import * +from numpy import * +import subprocess +import time + +import gpubounds + +def FixedScales(binname, x0=0, y0=0, w0=1, h0=1, s=0.5, steps=100, xz = 0.5, yz = 0.5, testsvg="svg-tests/grid.svg", renderer="gpu", fps=1): + accuracy = [] + performance = [] + n = open("/dev/null", "w") + #n = sys.stderr + p = subprocess.Popen(binname + " -s stdin", bufsize=0, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=n, shell=True) + p.stdin.write("%s\n" % renderer) + p.stdin.write("setbounds %s %s %s %s\n" % (str(x0),str(y0),str(w0),str(h0))) + p.stdin.write("loadsvg %s\n" % testsvg) + p.stdin.write("querygpubounds original.dat\n") + p.stdin.write("screenshot original.bmp\n") + for i in xrange(steps): + p.stdin.write("clear\n") + p.stdin.write("loop 1 zoom %s %s %s\n" % (str(xz), str(yz), str(s))) + p.stdin.write("loadsvg %s\n" % testsvg) + p.stdin.write("querygpubounds step%d.dat\n" % i) + while not os.path.isfile("step%d.dat" % i): + pass + p.stdin.write("loop %d printfps\n" % fps) # Print an FPS count to signal it is safe to read the file + fpsout = p.stdout.readline().strip(" \r\n").split("\t") + #print(str(fpsout)) + p.stdin.write("printbounds\n") + bounds = map(float, p.stdout.readline().strip(" \r\n").split("\t")) + + performance += [map(float, fpsout)] + accuracy += [bounds + [gpubounds.ComputeError("original.dat", "step%d.dat" % i), \ + gpubounds.UniqueBounds("step%d.dat" % i)]] + + os.unlink("step%d.dat" % i) # Don't need it any more + if accuracy[-1][-1] <= 0: + print "%s - Quit early after %d steps" % (binname, i) + break + + p.stdin.write("screenshot final.bmp\n") + p.stdin.write("quit\n") + p.stdin.close() + return {"accuracy" : asarray(accuracy), + "performance" : asarray(performance)} + + +def TestInvariance(binname, x0=0, y0=0, w0=1, h0=1, s=-1, steps=1000, xz = 0.5, yz = 0.5, testsvg="svg-tests/grid.svg", renderer="gpu", fps=1): + accuracy = [] + performance = [] + n = open("/dev/null", "w") + #n = sys.stderr + p = subprocess.Popen(binname + " -s stdin", bufsize=0, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=n, shell=True) + p.stdin.write("%s\n" % renderer) + p.stdin.write("setbounds %s %s %s %s\n" % (str(x0),str(y0),str(w0),str(h0))) + p.stdin.write("loadsvg %s\n" % testsvg) + p.stdin.write("querygpubounds original.dat\n") + p.stdin.write("screenshot original.bmp\n") + p.stdin.write("printbounds\n") + bounds_orig = map(float, p.stdout.readline().strip(" \r\n").split("\t")) + for i in xrange(1,steps,50): + p.stdin.write("loop %d pxzoom %s %s %s\n" % (i, str(xz), str(yz), str(int(s)))) + p.stdin.write("printbounds\n") + bounds = map(float, p.stdout.readline().strip(" \r\n").split("\t")) + p.stdin.write("loop %d pxzoom %s %s %s\n" % (i, str(xz), str(yz), str(-int(s)))) + p.stdin.write("querygpubounds step%d.dat\n" % i) + while not os.path.isfile("step%d.dat" % i): + pass + p.stdin.write("loop %d printfps\n" % fps) # Print an FPS count to signal it is safe to read the file + fpsout = p.stdout.readline().strip(" \r\n").split("\t") + #print(str(fpsout)) + + + bounds[0] = bounds[0]-bounds_orig[0] + bounds[1] = bounds[1]-bounds_orig[1] + bounds[2] = bounds[2]/bounds_orig[2] + bounds[3] = bounds[3]/bounds_orig[3] + performance += [map(float, fpsout)] + accuracy += [bounds + [gpubounds.ComputeError("original.dat", "step%d.dat" % i), \ + gpubounds.UniqueBounds("step%d.dat" % i)]] + + os.unlink("step%d.dat" % i) # Don't need it any more + if accuracy[-1][-1] <= 0: + print "%s - Quit early after %d steps" % (binname, i) + break + + p.stdin.write("screenshot final.bmp\n") + p.stdin.write("quit\n") + p.stdin.close() + return {"accuracy" : asarray(accuracy), + "performance" : asarray(performance)} + +if __name__ == "__main__": + results = Scaling("./single", xz=0, yz=0, fps=100) + + -- 2.20.1