summaryrefslogtreecommitdiff
path: root/benchmarks/CUDA/CP
diff options
context:
space:
mode:
authorTor Aamodt <[email protected]>2010-10-01 08:55:28 -0800
committerTor Aamodt <[email protected]>2010-10-01 08:55:28 -0800
commit11b308e7363e937966b035b4891db32b4eece3bf (patch)
tree50ca4c9ad6f163ac4acb2bf505e64dfebed66947 /benchmarks/CUDA/CP
parentbb820c116764d7a1b8e071137d32b74e7f34dd2f (diff)
integrating recent changes from fermi-test into fermi
(i'll use "fermi" for more disruptive changes to the pipeline model such as updating the MSHRs and getting rid of the warp tracker, ripping out DWF, etc...) [git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 7805]
Diffstat (limited to 'benchmarks/CUDA/CP')
-rw-r--r--benchmarks/CUDA/CP/README.GPGPU-Sim11
-rw-r--r--benchmarks/CUDA/CP/benchmarks/cp/DESCRIPTION6
-rw-r--r--benchmarks/CUDA/CP/benchmarks/cp/build/cuda_short/gpgpusim.config32
-rw-r--r--benchmarks/CUDA/CP/benchmarks/cp/build/cuda_short/mesh44
-rw-r--r--benchmarks/CUDA/CP/benchmarks/cp/output/default/ref.txt19
-rw-r--r--benchmarks/CUDA/CP/benchmarks/cp/output/short/ref.txt19
-rw-r--r--benchmarks/CUDA/CP/benchmarks/cp/output/small/ref.txt19
-rw-r--r--benchmarks/CUDA/CP/benchmarks/cp/src/base/Makefile12
-rw-r--r--benchmarks/CUDA/CP/benchmarks/cp/src/base/cenergy.c53
-rw-r--r--benchmarks/CUDA/CP/benchmarks/cp/src/base/cenergy.h29
-rw-r--r--benchmarks/CUDA/CP/benchmarks/cp/src/base/main.c176
-rw-r--r--benchmarks/CUDA/CP/benchmarks/cp/src/base/structs.h14
-rw-r--r--benchmarks/CUDA/CP/benchmarks/cp/src/cpu/Makefile12
-rw-r--r--benchmarks/CUDA/CP/benchmarks/cp/src/cpu/cenergy.c127
-rw-r--r--benchmarks/CUDA/CP/benchmarks/cp/src/cpu/cenergy.h29
-rw-r--r--benchmarks/CUDA/CP/benchmarks/cp/src/cpu/main.c176
-rw-r--r--benchmarks/CUDA/CP/benchmarks/cp/src/cpu/structs.h14
-rw-r--r--benchmarks/CUDA/CP/benchmarks/cp/src/cuda/Makefile15
-rw-r--r--benchmarks/CUDA/CP/benchmarks/cp/src/cuda/cuenergy.h44
-rw-r--r--benchmarks/CUDA/CP/benchmarks/cp/src/cuda/cuenergy_pre8_coalesce.cu85
-rw-r--r--benchmarks/CUDA/CP/benchmarks/cp/src/cuda/main.cu229
-rw-r--r--benchmarks/CUDA/CP/benchmarks/cp/src/cuda_base/Makefile15
-rw-r--r--benchmarks/CUDA/CP/benchmarks/cp/src/cuda_base/cuenergy.h44
-rw-r--r--benchmarks/CUDA/CP/benchmarks/cp/src/cuda_base/cuenergy_pre.cu69
-rw-r--r--benchmarks/CUDA/CP/benchmarks/cp/src/cuda_base/main.cu230
-rw-r--r--benchmarks/CUDA/CP/benchmarks/cp/src/cuda_short/Makefile15
-rw-r--r--benchmarks/CUDA/CP/benchmarks/cp/src/cuda_short/cuenergy.h44
-rw-r--r--benchmarks/CUDA/CP/benchmarks/cp/src/cuda_short/cuenergy_pre8_coalesce.cu85
-rw-r--r--benchmarks/CUDA/CP/benchmarks/cp/src/cuda_short/main.cu229
-rw-r--r--benchmarks/CUDA/CP/benchmarks/cp/tools/compare-output48
-rw-r--r--benchmarks/CUDA/CP/common/include/parboil.h132
-rw-r--r--benchmarks/CUDA/CP/common/lib/.dummy.txt1
-rw-r--r--benchmarks/CUDA/CP/common/mk/common.mk51
-rw-r--r--benchmarks/CUDA/CP/common/mk/cuda.mk17
-rw-r--r--benchmarks/CUDA/CP/common/mk/cuda_rules.mk30
-rw-r--r--benchmarks/CUDA/CP/common/mk/rules.mk48
-rw-r--r--benchmarks/CUDA/CP/common/python/binaryfilecompare.py50
-rw-r--r--benchmarks/CUDA/CP/common/python/filecompare.py154
-rw-r--r--benchmarks/CUDA/CP/common/python/textfilecompare.py27
-rw-r--r--benchmarks/CUDA/CP/common/src/Makefile23
-rw-r--r--benchmarks/CUDA/CP/common/src/parboil.c349
-rw-r--r--benchmarks/CUDA/CP/driver/__init__.py33
-rw-r--r--benchmarks/CUDA/CP/driver/actions.py109
-rw-r--r--benchmarks/CUDA/CP/driver/benchmark.py374
-rw-r--r--benchmarks/CUDA/CP/driver/futures.py14
-rw-r--r--benchmarks/CUDA/CP/driver/globals.py16
-rw-r--r--benchmarks/CUDA/CP/driver/options.py208
-rw-r--r--benchmarks/CUDA/CP/driver/process.py181
-rw-r--r--benchmarks/CUDA/CP/driver/text.py75
-rwxr-xr-xbenchmarks/CUDA/CP/parboil13
50 files changed, 0 insertions, 3849 deletions
diff --git a/benchmarks/CUDA/CP/README.GPGPU-Sim b/benchmarks/CUDA/CP/README.GPGPU-Sim
deleted file mode 100644
index e1772dc..0000000
--- a/benchmarks/CUDA/CP/README.GPGPU-Sim
+++ /dev/null
@@ -1,11 +0,0 @@
-To build and run:
-
-Add GPGPUSIM_ROOT/lib to LD_LIBRARY_PATH, then run the commands:
-
-export PARBOIL_ROOT=`pwd`
-cd common/src
-make
-cd -
-./parboil compile cp cuda_short
-cd benchmarks/cp/build/cuda_short/
-./cp
diff --git a/benchmarks/CUDA/CP/benchmarks/cp/DESCRIPTION b/benchmarks/CUDA/CP/benchmarks/cp/DESCRIPTION
deleted file mode 100644
index 0118ee6..0000000
--- a/benchmarks/CUDA/CP/benchmarks/cp/DESCRIPTION
+++ /dev/null
@@ -1,6 +0,0 @@
-A benchmark for computing the coulombic potential at each grid point over one plane in a 3D grid in which point charges have been randomly distributed. This benchmark was adapted from the 'cionize' benchmark in VMD.
-
-See also:
- http://www.ks.uiuc.edu/
-
- J. E. Stone, J. C. Phillips, P. L. Freddolino, D. J. Hardy, L. G. Trabuco, and K. Schulten. "Accelerating Molecular Modeling Applications with Graphics Processors." Journal of Computational Chemistry 28:2618-2640, 2007.
diff --git a/benchmarks/CUDA/CP/benchmarks/cp/build/cuda_short/gpgpusim.config b/benchmarks/CUDA/CP/benchmarks/cp/build/cuda_short/gpgpusim.config
deleted file mode 100644
index b6d1ec1..0000000
--- a/benchmarks/CUDA/CP/benchmarks/cp/build/cuda_short/gpgpusim.config
+++ /dev/null
@@ -1,32 +0,0 @@
--gpgpu_interwarp_mshr_merge 6
--gpgpu_n_mem_per_ctrlr 2
--gpgpu_partial_write_mask 1
--gpgpu_shmem_port_per_bank 2
--gpgpu_cache_port_per_bank 2
--gpgpu_const_port_per_bank 2
--gpgpu_shmem_bkconflict 1
--gpgpu_n_cache_bank 1
--gpgpu_cache_bkconflict 1
--gpgpu_ptx_instruction_classification 0
--gpgpu_ptx_sim_mode 0
--gpgpu_pdom_sched_type 8
--gpgpu_shader_registers 16768
--gpgpu_shader_cta 8
--gpgpu_cuda_sim
--gpgpu_shader_core_pipeline 1024:32:32
-
--gpgpu_mem_address_mask 1
--gpgpu_pre_mem_stages 1
--gpgpu_dram_sched_queue_size 32
--gpgpu_spread_blocks_across_cores
--network_mode 1
--gpgpu_simd_model 1
--gpgpu_clock_domains 500.0:2000.0:2000.0:2000.0
-
--gpgpu_dram_scheduler 1
--gpgpu_cache:dl1 128:64:4:L
--gpgpu_no_dl1
--gpgpu_n_shader 28 -gpgpu_n_mem 8
--gpgpu_dram_buswidth 4
-
--inter_config_file mesh
diff --git a/benchmarks/CUDA/CP/benchmarks/cp/build/cuda_short/mesh b/benchmarks/CUDA/CP/benchmarks/cp/build/cuda_short/mesh
deleted file mode 100644
index b91f18c..0000000
--- a/benchmarks/CUDA/CP/benchmarks/cp/build/cuda_short/mesh
+++ /dev/null
@@ -1,44 +0,0 @@
-use_map=1;
-flit_size = 16;
-network_count = 2;
-
-topology = mesh;
-k = 6;
-n = 2;
-
-// Routing
-routing_function = dim_order;
-
-// Flow control
-num_vcs = 2;
-vc_buf_size = 4;
-wait_for_tail_credit = 1;
-
-// Router architecture
-vc_allocator = islip;
-sw_allocator = islip;
-alloc_iters = 1;
-
-credit_delay = 1;
-routing_delay = 1;
-vc_alloc_delay = 1;
-
-input_speedup = 2;
-output_speedup = 1;
-internal_speedup = 1.0;
-
-// Traffic
-traffic = gpgpusim;
-//not used in gpgpusim
-injection_process = gpgpu_injector;
-// Simulation
-//not used in gpgpusim
-sim_type = latency;
-injection_rate = 0.1;
-
-
-//STATS
-MATLAB_OUTPUT = 0; // output data in MATLAB friendly format
-DISPLAY_LAT_DIST = 0; // distribution of packet latencies
-DISPLAY_HOP_DIST = 0; // distribution of hop counts
-DISPLAY_PAIR_LATENCY = 0;
diff --git a/benchmarks/CUDA/CP/benchmarks/cp/output/default/ref.txt b/benchmarks/CUDA/CP/benchmarks/cp/output/default/ref.txt
deleted file mode 100644
index 35d73f4..0000000
--- a/benchmarks/CUDA/CP/benchmarks/cp/output/default/ref.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-512 512 1 40000
-1.493e+04
--3.532 -5.685 -1.683 0.6428 0.962 -0.7105 -2.303 -4.236 -7.508 -12.86 -5.817 -2.664 -2.141 -1.79 -1.271 -0.5442 0.4262 1.762 3.926 5.636 3.331 1.362 0.3884 -0.4771 -1.194 -1.172 -0.97 -4.023 -7.194 -10.24 -11.44 -9.932 -8.865 -7.456 -4.625 18.6 -3.3 -9.835 -9.91 -9.398 -9.048 -8.81 -8.621 -8.519 -8.871 -10.2 -13 -11.28 -9.211 -8.407 -8.11 -7.757 -7.071 -5.866 -3.696 1.904 15.47 -0.05327 -2.773 -3.626 -4.121 -6.391 -9.553 -11.45 -12.94 -21.02 -20.74 -26.27 -11.37 -9.45 -11.13 -14.61 -10.55 -7.729 -6.195 -5.758 -5.614 -5.051 -3.62 -0.9599 2.82 15.24 7.093 12.69 7.221 2.613 1.756 1.398 0.6638 -0.1682 -0.7725 -1.151 -1.408 -1.636 -1.906 -2.274 -2.731 -3.733 -7.075 7.917 28.36 8.495 7.36 10.51 10.5 7.892 6.65 5.997 6.603 8.727 10.9 8.865 6.949 6.316 6.201 5.974 5.646 6.416 7.969 10.2 12.4 21.32 9.915 3.624 -3.831 -4.022 -1.09 -1.636 -4.643 -49.44 -7.053 -3.534 -3.23 -3.759 -4.24 -4.873 -7.679 -33.91 -12.93 -7.643 -13.26 -7.938 -6.539 -5.888 -6.219 -10.55 -12.27 -6.938 -5.715 -5.375 -5.222 -4.905 -4.339 -3.674 -2.994 -2.338 -1.778 -1.493 -1.485 0.0009085 1.452 2.568 3.562 4.563 5.736 6.971 7.503 8.257 9.139 9.799 9.952 9.748 9.518 9.496 9.944 11.47 13.83 12.56 13.87 11.38 9.697 9.064 8.79 8.554 8.236 7.801 7.208 6.446 5.907 5.798 5.58 5.196 5.435 8.931 8.81 6.024 8.883 3.136 4.429 4.97 5.136 4.99 4.907 4.809 4.381 3.197 2.317 1.776 1.552 1.782 3.083 10.89 6.541 3.779 2.16 -0.04895 -2.444 -7.341 -4.995 -3.231 -2.897 -3.147 -3.778 -4.635 -5.524 -6.35 -7.469 -9.146 -10.27 -9.168 -6.942 -5.789 -5.537 -5.274 -4.946 -4.719 -4.909 -5.723 -4.794 1.381 -0.2563 -3.704 -6.959 -21.23 -17.32 -6.436 -3.842 -2.676 -2.207 -2.223 -2.524 -2.959 -3.419 -3.833 -4.225 -4.751 -5.841 -10.56 -9.308 -8.945 -1.627 -3.787 -5.173 -7.433 -17.29 -11.55 -6.421 -4.856 -4.328 -4.575 -5.92 -8.288 -7.242 -5.802 -5.976 -0.9344 2.8 5.432 6.729 5.261 2.435 0.5126 1.182 2.365 3.292 4.191 5.25 6.049 7.065 9.491 14.81 11.6 9.195 7.48 5.958 4.638 3.492 2.872 2.974 3.335 3.638 3.746 3.638 3.539 3.406 4.648 5.377 6.373 7.831 12.23 11.18 9.959 9.466 9.096 9.257 10.18 12.62 17.63 25.21 9.619 6.355 6.471 6.642 7.109 8.117 10.56 25.7 19.57 8.544 5.461 3.969 3.279 3.057 2.847 2.232 1.224 -0.2089 -2.631 -7.202 -7.129 -8.19 -3.8 2.616 10.47 27.33 10.73 5.466 2.67 1.454 0.9883 0.3148 -1.072 -4 -11.1 -7.302 -6.056 -7.785 -11.96 -19.41 -18.84 -18.33 -19.23 -23.34 -16.66 -11.73 -8.478 -4.413 -2.472 -2.115 -0.5344 0.5906 0.977 1.404 2.019 2.99 4.604 7.14 11.08 17.7 20.66 17.19 16.48 13.98 11.28 10.47 9.486 7.51 6.07 5.629 8.473 3.206 -0.8314 -2.478 -1.642 -0.7106 -0.514 -0.7029 -1.069 -1.342 -1.073 -0.1405 1.097 2.492 4.191 6.626 9.962 10.68 12.4 15.31 15.53 12.92 10.72 9.583 9.305 8.564 6.799 5.197 3.59 1.692 8.257 25.78 9.07 6.173 5.409 5.377 5.705 3.929 3.392 3.279 2.708 1.874 1.261 0.9053 0.7697 0.872 1.302 2.222 3.719 4.79 4.3 3.611 2.926 2.089 1.249 0.4841 -0.2784 -1.222 -2.732 -5.386 -5.878 -2.917 -0.976 0.3395 1.489 2.706 4.493 9.395 13.18 9.233 5.847 5.247 6.374 14.85 9.584 5.024 3.147 1.778 0.7902 0.6877 2.032 7.969 13.92 3.4 1.079 -0.4398 -2.803 -5.291 -6.985 -7.642 -6.924 -4.508 -1.801 -5.807 -7.278 -7.835 -7.176 -4.816 -7.935 -10.65 -12.18 -13.34 -15.27 -19.06 -32.06 -19.15 -11.2 -8.24 -8.09 -10.17 -14.57 -14.09 -9.781 -7.567 -5.696 -3.816 -1.71 3.112 7.69 0.4711 -0.7313 -1.401 -1.918
--3.747 -3.373 -0.7506 7.889 9.011 0.7156 -1.709 -4.578 -14.02 -22.92 0.04625 0.36 -1.739 -1.653 -1.033 -0.0124 1.452 3.386 7.639 53.42 6.493 2.666 2.512 0.8836 -0.5254 0.3348 114.9 -4.063 -9.458 -16.49 -23.76 -12.52 -11.99 -9.107 -6.594 -4.47 -11.28 -34.51 -12.52 -10.65 -9.786 -9.325 -8.865 -7.994 -7.81 -10.53 -19.98 -12.62 -8.75 -7.898 -8.504 -8.503 -7.817 -6.407 -3.899 1.126 12.82 1.69 -2.064 -1.977 4.567 -4.081 -14.43 -16.83 -13.89 -16.45 -16.75 -15.15 -6.819 -7.028 -11.58 -33.44 -11.8 -7.522 -2.778 -5.161 -6.383 -6.46 -5.034 2.379 11.66 4.767 4.254 13.75 5.753 3.222 3.601 4.516 2.271 0.2677 -0.7263 -1.198 -1.501 -1.815 -2.297 -3.211 -4.855 -5.786 -3.53 5.557 11.58 7.548 7.725 14.78 15.09 11.05 8.655 6.142 6.647 20.32 27.36 11.75 8.236 7.661 8.376 8.601 3.708 15.13 9.37 11.89 15.31 23.52 12.7 5.446 -7.464 -3.102 0.8547 -0.5028 -2.53 -5.239 -3.679 -2.472 -3.071 -5.383 -6.035 -4.009 -5.477 -9.324 -8.472 -4.638 69.02 -9.014 -8.205 -6.127 -4.72 -7.656 -11.39 -6.999 -6.331 -6.424 -6.91 -6.719 -5.608 -4.627 -3.728 -2.884 -2.188 -2.063 -13.26 -0.4866 1.636 2.948 4.052 5.158 6.691 13.42 8.767 9.836 11.49 12.92 12.6 11.58 10.78 10.38 11.03 12.88 12.49 15.19 56.81 13.24 10.3 10.04 10.09 10 9.691 9.202 8.496 6.629 5.237 6.779 6.847 5.523 4.622 7.516 3.73 3.516 14.78 5.771 5.268 7.17 7.477 6.564 7.019 7.223 9.59 3.899 2.516 1.753 1.375 1.474 2.514 5.573 6.118 9.42 6.262 0.6524 -2.455 -6.66 -4.785 -2.905 -2.277 -2.756 -3.894 -5.505 -7.218 -7.698 -9.077 -13.17 -22.21 -14.6 -7.469 -6.035 -6.453 -6.538 -5.808 -5.087 -5.408 -9.346 -11.98 0.2604 0.02543 -2.927 -5.742 -9.909 -9.282 -5.134 -2.777 -1.361 -0.8953 -1.313 -2.05 -2.901 -3.727 -4.317 -4.695 -5.206 -6.262 -8.251 -8.691 -9.659 -4.521 -4.181 -5.537 -7.368 -13.88 -11.03 -6.83 -5.119 -4.505 -4.927 -7.616 -27.22 -14.26 -7.537 -24.89 -0.4867 5.261 10.42 18.4 9.692 1.097 -12.4 -0.6792 2.316 3.57 4.706 7.618 7.345 7.861 10.78 23.28 15.44 13.27 9.485 6.763 4.651 2.054 0.3663 1.896 3.048 3.726 3.853 2.38 2.889 -0.396 1.836 5.205 6.713 8.294 10.84 12 14.69 11.74 10.15 10.09 11.13 14.76 59.44 18.66 8.722 2.901 6.521 6.906 7.725 9.316 10.68 13.69 13.61 9.028 5.267 3.629 3.188 3.867 4.65 3.601 2.039 0.2356 -2.981 -18.27 -11.03 -10.27 -5.807 3.101 11.07 23.84 18.94 6.786 1.746 1.081 2.36 2.171 0.6011 -2.651 -12.7 -5.994 -4.257 -6.376 -13.83 -28.32 -26.14 -30.43 -24.43 -44.21 -20.55 -13.97 -10.46 -5.9 -3.275 -1.913 1.773 3.233 2.101 1.959 2.158 2.745 4.612 8.173 14.23 30.47 39.21 23.6 42 32.61 13.59 17.91 19.97 9.378 6.884 6.148 6.796 1.557 -4.1 -43.49 -3.769 -1.169 -0.9297 -1.429 -2.484 -3.924 -3.947 -1.71 0.3372 2.168 4.264 7.72 34.49 12.85 16.47 32.41 32.93 17.73 12.93 11.39 13.81 15.38 8.323 5.784 3.073 -7.872 2.541 14.24 10.21 6.872 6.996 8.473 7.029 4.42 4.397 6.55 4.652 2.316 1.3 0.7986 0.5771 0.6372 1.162 2.65 6.927 14.47 7.218 5.905 4.936 3.204 1.788 0.7575 -0.1481 -1.266 -3.419 -12.36 -19.69 -3.943 -1.017 0.6316 2.138 3.624 5.126 9.436 12.88 7.614 6.914 6.573 6.466 2.622 11.18 6.201 6.24 2.736 0.2652 -0.2414 1.129 5.766 8.886 3.716 3.04 3.537 -2.524 -8.779 -11 -12.82 -9.494 -5.944 -0.4302 -6.801 -8.373 -9.738 -9.082 14.14 -9.959 -13.16 -15.69 -16.37 -17.87 -41.76 -20.32 -15.35 -10.33 -7.226 -7.521 -10.52 -22.31 -20.57 -11.63 -9.601 -6.662 -3.814 -1.432 1.13 2.388 1.261 0.2154 -0.7018 -1.516
--4.421 -3.838 -1.516 3.432 4.497 1.059 -0.7149 -2.802 -6.335 -4.915 0.503 -0.8439 -2.343 -1.904 -1.042 0.4237 2.946 5.968 7.68 10.17 5.675 3.321 2.528 1.012 -0.3687 -0.7831 -1.213 -7.64 -12.22 -11.82 -13.21 -13.22 -41.02 -10.47 -8.167 -9.531 -39.56 -17.39 -19.14 -11.96 -10.45 -9.902 -9.295 -7.183 -1.154 -9.755 -11.41 -10.51 -5.283 -4.339 -9.36 -9.892 -9.149 -7.516 -4.751 -0.3854 11.66 1.019 -2.403 -2.77 5.16 -5.119 -15.15 -17.51 -13.37 -12.09 -10.44 -6.646 20.48 -2.126 -8.46 -10.9 -9.824 -7.656 -3.222 -6.232 -7.882 -8.992 -65.14 -0.7005 -0.4132 -1.616 -9.643 2.327 3.035 5.465 5.35 29.35 5.216 -0.006775 -1.014 -1.339 -1.587 -1.924 -2.546 -4.063 -10.42 -16.24 -2.906 1.66 4.15 4.644 5.382 10.07 17.81 20.71 13.38 4.347 -10.99 2.689 11.08 10.4 8.995 8.818 11.57 61.67 -5.135 6.741 9.959 13.86 24.05 17.85 20.53 9.312 5.673 39.83 3.953 0.9163 -0.1009 -0.137 0.434 -0.202 -1.936 -9.403 -16.66 2.11 -1.305 -5.064 -6.092 -5.961 -7.924 -48.23 -11.52 -6.186 -1.059 68.96 -3.119 -6.178 -6.901 -7.622 -10.5 -11.44 -7.267 -5.887 -4.69 -3.531 -2.493 -1.719 -1.068 0.4981 2.181 3.59 4.711 5.735 6.956 8.341 9.604 11.56 15.12 21.43 10.78 13.88 12.05 11.04 10.1 15.28 10.27 13.09 34.81 6.574 9.432 11.18 12.05 12.26 11.87 11.26 11.32 11.28 -3.524 10.71 11.67 6.035 2.094 -1.813 -10.85 -1.987 1.715 2.488 4.619 16.91 13.35 8.496 7.174 6.674 6.01 3.967 2.515 1.524 0.9106 0.6269 0.9404 2.067 3.996 13.4 7.947 0.383 -2.311 -3.698 -3.553 -1.679 0.7785 -1.417 -3.72 -6.713 -23.02 -8.846 -9.735 -15.87 -30.64 -40 -13.52 -7.92 -7.75 -12.69 -7.687 -5.032 -4.895 -6.553 -13.02 -7.523 -2.457 3.36 -4.08 -5.264 -4.831 -2.965 -0.7157 1.904 2.712 0.4272 -1.145 -2.781 -4.526 -5.406 -5.362 -5.578 -13.71 -6.182 -5.8 -5.087 -3.918 -3.718 -7.69 -7.138 -7.554 -8.884 -7.405 -5.072 -4.266 -4.429 -6.081 -11.11 -8.5 -3.897 -1.548 3.297 10.15 16.02 47.62 13.72 2.734 -5.864 0.7421 3.049 3.999 5.051 6.423 7.346 8.112 9.656 12.34 18.65 37.04 11.59 7.514 4.849 0.6357 -5.097 -0.3313 2.808 4.103 4.552 4.045 4.044 3.054 2.654 4.634 7.142 8.583 9.859 11.66 18.3 12.74 10.81 10.59 11.33 13.26 15.9 15.97 14.45 8.04 6.87 6.904 8.193 14.09 12.37 7.69 9.118 7.504 4.192 2.393 2.167 5.148 17.73 6.312 3.528 1.624 -0.4992 -4.137 -6.488 -6.135 -1.215 4.292 9.179 16.29 18.05 5.397 -1.844 0.5487 7.665 6.797 3.958 1.589 -0.1844 0.3702 0.9436 3.816 -14.68 -31.78 -48.39 -34.03 -27.05 -25.13 -19.79 -16.02 -14.08 -11.17 -6.971 -2.533 9.349 8.256 3.589 2.707 2.188 0.1865 2.692 8.349 16.9 33.31 22.48 18.44 17.07 13.62 11.71 15.97 13.55 8.993 7.345 6.503 5.461 3.167 0.1635 -2.746 -1.777 -0.941 -1.149 -2.177 -4.647 -10.46 -16.61 -3.813 -0.6327 1.638 3.804 6.732 11.67 3.939 13.52 27.69 74.74 21.28 14.27 12.04 13.4 13.87 8.877 6.945 4.486 0.8861 3.212 7.218 11.32 6.723 7.846 21.57 5.791 3.896 4.498 15.42 6.255 2.299 1.139 0.559 0.1984 0.05017 0.3806 1.872 6.503 15.27 8.398 11.65 10.76 4.651 2.261 1.012 0.09668 -0.8924 -2.466 -5.477 -6.11 -2.689 -0.5917 1.054 3.28 6.61 5.752 4.121 -0.5533 4.916 10.11 10.21 6.518 3.999 3.628 4.811 29.14 2.662 -2.022 -3.158 -1.491 0.7114 2.173 2.677 5.047 100.2 -1.059 -17.43 -15.56 -33.81 -12.57 -12.86 -11.6 -9.058 -9.696 -11.13 -12.21 -19.43 -19.84 -16.12 -29.3 -21.91 -17.44 -16.58 -14.32 -11.33 -7.909 -6.036 -7.199 -8.734 -6.453 -12.63 -13.22 -21.59 -8.402 -3.375 -0.7637 1.318 3.632 3.476 2.113 0.5807 -1.112
--6.304 -7.42 -4.11 -0.6154 1.064 1.258 0.8413 0.01689 -0.7423 -1.474 -1.324 -2.137 -3.156 -2.986 -1.557 0.505 3.814 11.65 11.73 6.431 4.167 4.001 10.1 1.908 -0.368 -1.572 -2.949 -5.232 -7.27 -8.524 -9.58 -10.47 -10.98 -9.285 -7.424 -5.66 -5.616 -8.691 -11.87 -11.47 -10.91 -10.61 -10.22 -9.534 -9.331 -10.35 -10.96 -10.7 -9.465 -9.706 -11.82 -12.92 -11.31 -9.259 -6.061 -2.883 -1.778 -1.044 -2.505 -6.155 -12.94 -13.16 -4.265 -13.23 -13.8 -10.25 -6.795 -3.142 1.498 -4.088 -7.544 -9.018 -9.167 -8.754 -8.511 -9.239 -10.22 -10.69 -10.13 -7.294 -6.649 -30.35 -6.359 -2.039 0.4061 4.636 1.981 10.38 4.643 -3.966 -1.681 -1.509 -1.603 -1.893 -2.446 -3.65 -6.823 -7.487 -2.399 0.4907 2.275 2.668 -84.21 8.589 19.06 19.53 13.61 8.347 0.3372 5.516 11.31 12.15 9.979 9.333 10.88 13.93 10.03 9.26 11.17 16.42 28.02 19.91 19.49 9.635 5.892 5.097 2.978 1.49 1.359 3.441 10.5 3.294 0.8589 1.266 3.354 21.87 -7.95 -4.456 -5.724 -7.516 -11.23 -15.99 -10.9 -5.878 -2.747 -0.497 -4.339 -6.812 -7.923 -8.751 -9.992 -10.4 -9.212 -7.726 -6.086 -4.389 -2.813 -1.468 -0.1968 1.264 3.041 4.925 5.827 6.4 7.369 8.686 10.38 12.95 18.63 54.64 29.22 15.76 12.81 12.08 8.846 -8.02 4.919 7.377 9.69 9.235 10.56 13.14 16.17 16.68 15.63 14.31 13.26 16.17 9.164 17.56 22.17 5.902 -1.139 -18.25 -9.534 -5.729 -2.199 -2.434 -7.475 15.47 12.09 11.29 9.504 6.602 5.476 4.199 2.319 0.9971 0.2031 -0.7659 -2.174 -0.01389 1.059 2.093 0.9329 -1.573 -3.279 -4.262 -4.563 -1.529 88.24 0.02433 -3.26 -5.802 -6.895 -6.724 -8.763 -12.56 -18.13 -18.65 -11.41 -7.073 -6.658 -13.6 -6.666 -3.839 -3.557 -4.225 -5.154 -4.589 -3.318 -2.934 -3.603 -3.702 -3.122 -0.7381 3.057 7.045 11.15 3.094 0.9305 -2.184 -7.441 -9.37 -6.265 -5.605 -5.536 -5.156 -4.576 -3.667 -2.25 -0.8792 -2.229 -4.267 -5.879 -9.924 -7.971 -4.503 -3.683 -3.391 -3.406 -2.93 2.37 -0.05222 1.79 5.919 22.26 21.45 14.39 9.242 5.069 5.274 6.074 4.715 4.436 5.466 7.125 8.461 8.683 8.844 10.07 13.25 15.23 10.88 8.12 5.817 2.018 -15.88 -1.335 3.251 5.012 6.015 6.213 6.07 6.159 5.492 5.311 8.483 9.532 9.997 10.8 11.64 11.73 11.32 10.88 11.34 12.37 13.32 13.78 12.43 8.012 6.386 6.167 7.263 11.2 8.788 5.371 6.45 7.197 2.397 -0.54 -1.739 1.344 9.158 8.509 6.444 3.604 7.795 -0.2779 -5.192 -17.61 1.348 7.839 11.04 9.632 7.814 2.507 -33.44 -0.3767 15.3 14.05 9.662 6.342 5.148 8.848 15.51 5.857 -7.005 -21.26 -38.39 -34.47 -32.21 -30.55 -20.87 -18.52 -23.64 -21.57 -10.59 -4.854 1.758 8.901 6.01 3.791 4.052 -5.276 0.3713 7.937 14.28 20.72 16.9 14.03 11.88 9.902 7.64 -0.6799 6.569 8.072 8.152 7.934 7.393 5.334 2.803 0.9874 0.1335 -0.4874 -1.296 -2.52 -8.885 -10.28 -9.706 -4.001 -1.969 1.877 2.752 5.145 7.288 7.926 12.84 20.34 25.49 19.51 14.38 11.56 10.26 9.281 8.748 12.12 6.547 4.18 4.008 4.894 5.53 5.449 5.519 5.279 3.599 2.511 2.564 3.368 2.702 1.507 0.8065 0.2668 -0.3213 -1.001 -1.524 -0.6889 1.829 4.206 6.036 15.12 14.72 4.827 2.298 1.132 0.3806 -0.2829 -1.033 -1.774 -1.823 -1.044 -0.07286 1.196 3.823 18.79 7.279 5.842 -13.94 4.966 21.7 20.95 7.021 3.624 1.733 0.6394 0.9339 -1.502 -8.72 -14.18 -5.007 -2.425 -0.02164 2.05 3.912 4.556 -0.3598 -4.746 -7.025 -10.87 -15.09 -15.35 -13 -8.238 -10.97 -12.12 -12.99 -14.77 -15.61 -16 -18.91 -19.25 -21.9 -14.51 -11.87 -9.179 -3.464 6.007 -6.115 -8.529 -8.58 -8.769 -10.58 -17.82 -6.384 -1.2 1.285 2.669 11.72 9.792 2.942 0.8948 -0.9774
--8.831 -95.96 -6.773 -1.425 1.08 2.859 3.662 2.852 1.661 0.718 -0.5239 -2.959 -6.3 -7.358 -2.786 0.1552 3.3 10.44 9.641 4.595 2.991 2.932 4.397 1.349 -0.3646 -1.549 -2.653 -3.805 -5.195 -6.691 -7.92 -8.808 -9.099 -8.421 -6.299 2.728 24.54 -1.514 -9.288 -11.09 -11.53 -11.57 -11.37 -11.12 -11.09 -11.38 -11.69 -11.85 -12 -12.8 -15.35 -31.47 -8.368 -12.62 -5.332 -3.958 -4.737 4.313 3.625 -7.161 -20.61 -19.67 -12.36 -14.37 -39.35 -7.871 0.5094 -3.485 -1.771 -6.41 -8.361 -9.153 -9.447 -9.764 -10.55 -12.16 -14.17 -14.52 -12.21 -9.754 -8.45 -8.959 -7.396 -3.581 -1.801 -8.578 -3.404 -4.604 -8.813 -3.849 -2.097 -1.481 -1.453 -1.739 -2.112 -2.614 -3.072 -2.176 -1.217 0.3194 1.806 3.452 11.4 10.17 10.33 15.62 9.633 10.12 8.258 12.14 19.76 20.99 11.21 9.488 10.02 13.19 11.47 12.27 16.31 15.17 29.61 33.14 11.07 6.566 4.248 2.919 1.868 1.265 1.639 4.16 11.67 4.242 2.393 8.35 13.61 2.699 -2.685 -3.609 -5.875 -8.694 -13.7 -40.12 -10.49 -5.863 -4.998 -5.819 -7.502 -8.916 -9.846 -10.51 -10.88 -12.53 -14.03 -10.97 -8.642 -5.687 -3.161 -1.337 0.1999 1.72 4.029 11.34 8.074 7.044 7.833 9.239 11.15 13.65 17.45 23.5 19.92 14.4 6.252 15.88 12.91 2.753 3.223 -16.37 4.749 8.1 11.38 15.76 26.77 24.12 25.17 21.77 13.17 10.24 8.229 8.835 8.549 4.382 -1.723 -14.26 -12.22 -6.871 -3.759 -3.353 -8.188 10.21 17.56 24.13 9.966 6.891 6.557 7.178 -0.2262 -0.1756 -0.5857 -1.55 -2.254 -1.648 -1.23 -1.243 -2.404 -4.468 -5.328 -5.959 -9.068 -10.55 -2.061 -1.964 -2.778 -4.063 -6.964 -5.673 -7.095 -10.46 -31.22 -15.3 -7.652 -4.152 -2.314 -1.877 -1.581 -1.435 -1.705 -2.356 -3.04 -3.286 -3.276 -3.461 -3.7 -2.101 -2.617 0.3427 62.24 4.54 6.042 9.054 11.93 0.5399 -8.053 -10.33 -6.555 -5.569 -5.145 -4.721 -4.091 -2.955 -0.3494 10.93 4.587 -1.846 -11.93 -2.566 -3.184 -3.4 -3.121 -2.43 -1.427 -0.3147 1.559 1.889 3.171 5.349 9.293 14.09 12.31 6.508 3.112 16.75 54.15 5.252 4.167 5.857 9.777 14.18 11.02 8.145 8.006 9.067 10.18 10.72 9.342 8.182 5.773 2.71 2.815 4.366 6.516 9.152 8.996 7.764 8.561 10.68 9.288 11.52 11.42 10.49 10.7 11.01 11.44 11.46 11.07 11.57 12.96 15.04 13.22 7.885 5.604 4.37 4.148 5.289 5.897 5.215 4.076 4.088 4.064 -0.1463 -7.728 -13.22 -15.37 2.168 15.22 11.91 3.326 3.027 -1.871 -2.314 -0.2821 5.164 15.13 22.01 7.327 8.349 4.142 -4.322 -5.035 0.2683 11.49 14.36 13.62 11.03 8.195 4.819 -2.764 -8.795 -14.65 -18.3 -18.85 -21.72 -24.57 -24.37 -22.26 -19.39 -17.3 -11.51 -9.127 -3.423 18.06 6.78 4.08 10.09 21.32 7.455 8.044 11.12 16.44 17.04 11.91 9.076 7.346 5.824 2.56 5.927 9.003 11.53 11.08 16.5 9.384 4.609 2.417 1.18 -0.4287 -3.688 -1.909 -3.212 -4.148 -3.829 -3.07 -4.081 -33.03 0.4683 4 5.985 5.831 13.08 20.58 25.36 21.71 14.35 10.83 8.722 7.151 8.028 26.28 7.802 4.52 3.706 3.837 4.462 5.243 4.84 3.117 1.508 0.5987 0.4371 0.6372 0.7283 0.7187 0.6659 0.22 -0.7507 -2.399 -6.355 -6.748 -1.722 0.581 2.267 4.406 4.789 3.094 1.814 1.062 0.6125 0.3143 0.1004 -0.002887 0.0354 0.06435 0.03583 0.5315 2.109 4.257 5.949 9.54 4.475 8.644 19.31 12.11 5.41 2.874 0.2324 -9.571 -4.074 -3.7 -8.406 -11.61 -8.273 -8.885 -1.448 2.995 7.025 3.535 -0.2602 -1.596 7.742 2.602 -12.37 -11.66 -11.71 -7.257 -15.03 -14.43 -13.93 -14.31 -14.87 -15.29 -15.49 -15.66 -16.08 -12.75 -10.5 -8.488 -5.207 -3.104 -6.64 -14.74 -11.21 -5.657 -3.935 -3.276 -0.5145 3.553 9.786 2.9 4.274 3.78 1.368 -0.0885 -1.148
--7.305 -9.21 -2.195 -0.6652 2.536 6.823 12.12 7.199 4.531 3.675 2.091 -8.518 -10.31 -19.35 -3.254 -0.04067 2.125 4.72 4.039 2.773 1.864 1.245 -1.299 0.3649 0.1239 -1.014 -1.836 -1.482 -2.617 -5.303 -6.864 -8.274 -8.996 -8.737 -7.339 -3.389 -1.409 -6.673 -10.72 -12.16 -12.82 -13.03 -12.75 -12.36 -12.23 -12.41 -12.75 -13.13 -13.64 -14.6 -16.64 -20.11 -18.03 -21.94 -16.83 -8.982 -12.13 -4.786 -0.4704 -5.022 -11.49 -13.6 -13.53 -14.33 -15.66 -10.69 -7.003 -6.828 -7.312 -9.14 -10.62 -10.09 -9.996 -10.58 -12.1 -15.71 -23.82 -30.56 -16.11 -11.73 -8.881 9.242 -20.18 -2.922 7.195 -4.391 -4.665 -7.997 -12.77 -4.281 -1.924 -0.8608 -0.9474 -1.762 -1.849 -1.917 -1.873 -1.475 -0.7225 0.2994 1.587 3.571 7.228 7.558 7.243 7.437 6.891 6.58 8.225 62.54 46.82 15.31 12.64 9.999 8.23 10.62 15.27 42.6 11.03 7.983 9.275 9.461 5.555 3.039 2.577 1.664 0.8421 0.4041 0.8114 2.455 4.021 2.476 0.577 1.949 2.834 0.6564 -2.1 -3.74 -7.538 -16.69 -8.603 -19.7 -7.394 -6.134 -6.368 -8.58 -12.11 -12.74 -13.26 -15.06 -11.17 -16.08 -55.94 -15.1 -27.29 -7.218 -3.154 -1.014 0.9387 1.914 3.538 7.779 7.431 7.163 8.159 9.805 12.21 15.18 16.34 16.32 15.34 14.27 16.43 40.9 25.17 16.83 11.26 -0.6919 2.698 -0.377 11.51 16.88 25.03 18.54 21.12 19.11 12.03 8.385 3.226 1.687 5.649 3.777 0.8964 -9.234 -19.72 -14.18 -5.805 0.09272 3.388 7.99 13.71 15.9 8.87 6.373 7.355 51.49 2.824 -0.3523 -1.374 -2.44 -3.176 -3.273 -2.946 -2.73 -4.154 -14.71 -8.831 -7.55 -10.3 -10.12 -5.625 -3.21 -1.649 -0.8553 -1.964 -3.484 -4.983 -6.916 -9.207 -7.534 -3.785 -0.0508 3.866 6.506 3.404 1.414 0.7641 -0.4664 -1.977 -2.618 -2.904 -3.581 -4.412 -5.462 -37.8 -6.7 -0.3036 -1.606 -0.4759 1.281 4.311 -1.721 -7.585 -7.856 -5.888 -5.493 -5.15 -4.748 -4.218 -3.211 -0.7828 5.185 4.916 2.631 -1.771 21.75 -0.7994 -2.984 -3.448 -2.086 4.049 1.122 2.002 3.137 4.178 4.917 3.48 16.84 19.15 4.695 -11.3 -5.14 -13.77 0.653 2.63 5.069 15.89 27.01 11.85 6.236 5.64 6.657 8.668 33.47 11 16.07 11.43 5.843 4.612 1.15 7.85 21.75 13.98 7.811 10.05 14.98 11.66 11.22 11.26 11.16 11.22 11.29 11.32 11.26 11.26 11.87 14.17 33.66 19.12 3.39 3.483 1.736 1.524 3.75 3.752 2.835 1.345 0.7029 0.6106 -1.389 -10.37 -14.11 -5.739 0.6037 4.082 3.517 0.504 -3.01 -398.6 -0.6382 4.467 8.942 32.47 11.58 -27.24 8.508 -4.794 -12.04 -11.88 -8.539 5.446 32.56 37.21 29.46 8.269 -4.448 -7.644 -9.976 -13.25 -11.59 10.2 -16.24 -40.02 -28.76 -22.54 -11.93 -10.17 -10.29 -17.33 -15.37 -4.144 0.5467 2.228 5.094 7.619 20.21 7.051 9.057 18.66 22.66 9.996 6.075 3.919 5.35 6.389 7.744 10.4 29.72 10.6 18.96 21.51 4.981 3.008 2.088 0.7933 -1.462 -0.1666 -0.6462 -1.522 -2.115 -2.538 -3.392 -3.506 0.2654 3.635 6.261 7.584 21.69 23.79 37.65 18.11 13.13 10.03 7.432 3.874 -4.182 6.129 5.556 3.581 2.843 2.905 4.178 9.235 8.82 1.959 -0.9204 -1.974 -1.804 -1.242 -0.5829 0.3511 1.679 1.24 -0.6928 -3.002 -9.515 -11.44 -3.979 -2.144 -1.847 -0.6759 1.426 1.62 1.16 0.8369 0.7506 0.8318 1.055 1.443 1.801 1.22 -0.8728 -2.101 -0.04622 1.887 4.463 4.657 4.76 8.295 23.37 7.55 1.865 0.9465 4.015 -11.9 -4.936 -3.249 -3.724 -2.653 -6.083 -15.06 -0.8751 4.6 61.16 4.757 -0.7572 -3.099 -0.5004 29.05 -3.556 -10.52 -18.29 -16.45 -30.73 -16.9 -15.2 -15.08 -15.92 -16.53 -14.95 -12.65 -11.53 -10.96 -7.935 -9.106 -6.874 -3.836 -5.317 -11.17 -7.898 -0.6155 6.794 3.42 9.497 5.391 3.066 1.833 1.602 1.183 0.3078 -0.5861 -1.354
--5.964 -6.471 -4.934 0.1711 4.679 10.76 36.21 10.98 7.409 9.309 15.39 2.534 -2.444 -3.309 -1.106 0.5936 1.794 2.532 2.147 1.726 1.276 0.6507 0.3804 2.813 3.055 -0.03312 -1.108 0.3842 0.4399 -4.16 -6.709 -9.375 -10.32 -10.06 -9.766 -9.118 -9.49 -11.32 -14.21 -14.08 -15.2 -15.87 -14.66 -13.49 -13.14 -13.46 -14.01 -14.52 -15.13 -16.05 -17.4 -19.04 -20.86 -21.53 -16.47 -1.312 -23.44 -11.19 -4.655 -5.255 -10.51 -13.07 -14.58 -14.97 -13.84 -11.53 -9.246 -7.501 -9.064 -12 -24.61 -10.99 -10.32 -10.99 -12.84 -17.55 -48.24 -27.62 -15.01 -13.52 -11.52 -9.534 -13.16 -3.401 6.973 -1.306 -3.225 -4.127 -4.513 -3.683 -1.091 1.301 2.056 -5.528 -1.738 -1.514 -1.354 -1.066 -0.5617 0.1745 1.158 2.8 8.479 6.034 5.455 5.536 5.241 4.475 1.713 -8.682 7.914 10.67 26.78 12.68 1.196 5.542 12.45 11.73 6.093 -0.87 -2.44 -0.6903 0.9122 1.414 1.416 0.688 -0.4572 -1.339 -1.462 1.598 9.67 2.603 -10.03 -2.311 1.329 0.4906 -3.38 -8.938 -7.198 -6.686 -4.271 -1.771 -5.641 -4.827 -5.79 -10.62 -41.91 -19.16 -16.96 -136.6 -15.64 -13.09 -20.96 -13.68 -10.19 -4.369 -2.039 -0.5608 6.218 1.231 1.197 3.987 5.669 6.888 8.315 10.24 13.59 28.59 18.68 14.25 11.88 13.24 18 36.13 26.88 29.16 34.2 15.96 12.1 8.475 13.56 18.07 27.55 -4.465 10.97 12.34 9.974 7.306 2.051 3.874 7.705 -7.848 10.07 -0.2565 -4.387 -7.282 -17.35 8.078 7.427 9.897 12 9.458 6.262 4.657 4.468 4.723 1.951 -0.639 -2.417 -4.075 -5.652 -5.871 -4.709 -3.135 3.142 -7.783 -8.309 -7.864 -13.99 -13.98 -7.896 -3.586 0.7875 9.835 2.679 -1.29 -2.922 -3.92 -4.236 -3.152 -0.4257 4.747 15.39 75.47 -44.4 3.998 6.334 2.486 -2.565 -2.624 -1.69 -3.522 -5.519 -6.73 -8.364 -9.133 -11.86 -10.99 -5.93 -3.83 -3.729 -6.533 -15.26 -4.409 -3.642 -5.65 -5.433 -5.109 -5.001 -4.886 -3.195 -0.6964 1.582 2.914 -0.987 -0.879 -0.9038 -4.047 -7.747 -3.786 0.2769 1.828 3.489 5.506 5.988 9.124 6.708 8.335 7.512 3.134 -1.694 -2.319 -1.159 0.02915 0.001412 -0.3602 6.4 8.164 3.958 1.388 1.639 4.215 6.439 8.422 9.125 11.67 9.704 5.354 5.011 5.869 8.094 10.96 9.376 2.141 0.2739 21.69 13.32 12.27 12.27 12.39 12.4 12.27 12.13 11.93 11.65 12.06 13.82 17.23 151.6 11.04 5.501 3.64 2.915 2.909 2.507 0.8624 -4.429 -5.957 -0.9519 -0.1977 -0.5871 -3.081 0.001396 1.655 1.345 -0.2286 -2.138 -4.18 -6.123 -6.403 -5.183 5.991 14.01 16.18 21.87 4.266 -2.331 -6.105 -8.579 -32.66 0.4761 14.45 27.83 25.54 -0.1258 -125.5 -12.39 -11.09 -13.66 -20.9 -8.594 -13.76 -19.35 -17.67 -10.78 12.71 -4.262 -8.429 -10.66 -21.63 -12.68 -2.079 0.2944 2.087 2.844 2.467 3.513 5.68 8.54 9.25 7.041 3.856 -9.209 5.343 8.376 13.95 8.319 7.517 3.554 -23.51 0.4813 3.028 3.083 3.135 3.116 2.925 2.467 1.322 -0.4935 -1.551 -2.923 -4.896 -5.718 -0.1991 3.583 6.995 12.98 18.2 19.17 19.98 14.73 11.97 9.658 -17.8 3.738 -2.012 -3.028 2.276 2.104 1.554 1.494 2.694 9.618 9.171 -0.7461 -5.545 -6.672 -4.571 -3.104 -1.881 0.04315 8.358 5.358 -0.3183 -2.449 -4.504 -5.555 -5.426 -4.52 -8.417 -10.44 1.114 1.062 0.4187 0.4043 0.7718 1.285 1.962 3.104 5.641 4.547 -2.557 -19.37 -2.692 -2.26 9.062 3.586 3.151 3.893 4.06 0.6707 -4.773 -8.183 -4.871 -4.365 -3.498 1.33 12.04 3.83 3.889 3.543 1.771 2.796 3.94 1.088 -2.206 -5.754 -12.43 -4.854 -7.274 -10.81 -13.55 -15.37 -17.09 -17.81 -17.54 -16 -18.82 -28.31 -16.32 -9.829 -5.502 -9.739 -14.85 -19.3 -8.161 3.609 -1.984 -2.746 -1.479 3.035 15.58 7.542 8.431 2.907 0.3793 0.8122 0.7422 0.4089 -0.1624 -0.8365 -1.491
--5.805 -6.902 -8.641 2.142 9.229 12.28 14.66 12.61 8.867 13.67 16.47 5.084 -0.3026 1.111 1.705 2.097 4.137 2.118 1.121 1.759 2.167 0.5433 -0.09377 9.772 12.77 0.292 -1.061 0.3907 3.617 -3.643 -6.536 -9.281 -10.96 -12.29 -12.98 -12.62 -14.01 -18.01 -15.24 -15.86 -19.81 -31.19 -17.28 -14.13 -13.47 -14.61 -15.91 -16.26 -16.73 -17.67 -19.03 -21.08 -27.39 -44.06 -19.88 -13.01 -9.505 -0.3624 -6.83 -8.783 -11.51 -14.65 -18.91 -20 -15.86 -12.45 -10.32 -8.601 -10.05 -11.17 -11.58 -10.26 -10.06 -10.9 -12.62 -15.5 -18.51 -16.98 -15.84 -17.35 -16.05 -13.05 -10.41 -6.621 -3.488 -2.761 -2.563 -2.255 -2.182 -6.502 0.4614 3.768 10.06 -2.095 -1.71 -1.157 -0.9822 -0.8692 -0.5682 0.06529 0.6254 1.202 2.279 3.416 4.725 5.304 4.803 3.939 0.5541 -13.37 -13 6.242 10.66 5.718 -0.5464 0.4546 0.5552 -0.3812 -4.794 -30.18 -29.58 -10.23 -2.354 0.5634 1.582 0.3909 -3.007 -4.418 -26.73 -0.8823 8.374 2.601 -9.086 -0.9788 5.654 4.09 -2.837 -22.94 -5.838 -3.669 -2.867 -5.21 -16.23 -1.153 -1.682 -8.906 -16.88 -15.72 -14.34 -16.12 -12.34 -1.695 -19.22 -10.77 -5.863 31.22 -0.1159 -1.182 -1.56 -94.44 -1.397 2.77 4.946 6.692 8.402 10.34 13.07 17.67 16.75 14.05 -15.02 9.863 12.95 14.62 17.59 39.4 26.27 21.84 62.37 19.41 16.22 18.04 26.89 14.84 11.71 10.24 7.785 6.865 6.068 7.233 12.54 21.87 10.86 3.136 -0.1867 -3.74 -2.497 8.449 12.44 28.52 12.09 5.432 3.581 2.24 1.597 1.267 0.05818 -1.773 -3.877 -6.403 -12.13 -12.41 -7.036 -4.465 -0.5573 -2.02 -5.529 -6.725 -8.703 -15.39 -10.24 -3.893 1.055 15.29 4.094 0.01381 -1.293 -1.916 -1.947 -0.9998 1.44 7.16 34.65 18.73 10.35 5.91 5.733 6.096 -17.84 -3.295 11.22 -3.634 -9.379 -7.776 -0.7712 -12.67 -22.88 -21.46 -9.14 -6.29 -5.846 -8.515 -20.51 -12.4 -7.393 -6.704 -5.984 -5.596 -6.192 -12.61 -7.044 -2.992 -2.022 -3.78 -4.995 -3.123 -6.472 -8.054 -46.11 -5.043 1.038 2.685 5.461 16.98 9.717 6.028 5.842 6.133 3.963 2.101 0.3794 -0.3894 -0.32 -0.1361 -1.32 -3.61 3.068 5.79 -20.96 -6.724 -9.483 2.075 4.74 6.178 6.991 7.395 6.805 4.404 5.748 6.917 8.54 9.302 7.586 4.148 4.383 10.88 26.48 13.99 14.68 14.86 14.86 14.18 14.01 14.23 12.45 12.2 21.31 8.524 9.183 7.465 4.792 3.208 2.187 1.927 1.888 0.4172 -6.913 -9.451 -0.7173 1.343 4.444 32.29 4.938 9.395 1.051 -3.218 -5.298 -5.885 -6.448 -10.08 -14.33 3.716 22.92 12.51 7.487 3.096 -0.3 -3.013 -5.595 -8.084 -1.6 4.447 7.706 -2.834 -14.51 -13.01 -11.68 -11.43 -12.36 -14.01 -12.6 -12.52 -13.19 -12 -7.919 -0.4928 -4.206 -11 -7.107 10.11 -6.04 -3.534 -0.5663 4.95 0.1114 -0.1251 -2.198 2.387 4.196 5.088 4.982 4.112 4.209 7.893 11.87 9.615 6.957 4.682 1.272 -4.243 -1.16 1.738 3.195 4.427 5.787 6.911 6.074 3.868 -0.4203 -34 -3.506 -6.827 -15.45 -0.4471 3.639 6.767 9.561 10.64 11.59 13.19 12.57 11.81 11.22 8.596 5.578 3.299 2.439 1.954 0.8155 -0.06901 -0.5423 -0.6971 -0.07138 -1.115 -5.066 -14.78 -21.64 -6.893 -5.02 -3.564 -1.516 1.702 1.897 -0.6136 -2.059 -3.174 -4.928 -13.3 -8.368 0.3 33.64 3.89 0.3753 -1.288 -0.5895 0.6716 1.725 2.805 4.501 9.891 9.44 3.693 0.915 1.42 0.3145 1.183 1.594 1.396 1.069 -0.1767 -4.079 -18.13 -49.76 -7.241 -3.916 -12.85 -5.339 9.519 8.545 21.23 7.476 3.675 1.845 0.4729 -1.361 -3.513 -5.72 -7.475 -8.505 -10.39 -12.47 -14.14 -15.86 -18.45 -21.74 -44.38 -13.97 -18.04 -28.49 -15.66 9.42 -2.437 -9.188 -14.3 -16.88 -8.478 -3.979 -0.4134 4.764 2.583 2.837 4.718 5.134 4.47 1.603 -0.8295 0.5594 0.7022 0.4309 -0.1422 -0.8427 -1.528
--6.641 -5.736 -2.497 4.853 82.38 19.78 22.14 23.93 7.965 5.382 4.213 2.849 3.617 8.44 6.248 3.479 3.817 3.403 -1.184 1.251 8.808 0.04722 -0.8668 0.7138 0.4251 -2.095 -1.536 0.207 -0.7433 -3.52 -6.23 -8.51 -10.49 -17.48 -21.14 -15.2 -15.99 -19.38 -16.3 -16.7 -21.57 -29.99 -17.51 -13.04 -11.35 -16.45 -22.26 -18.52 -18.51 -19.72 -21.44 -23.35 -26.48 -28.27 -22.23 -18.62 -13.93 -5.62 -6.115 -8.697 -12.52 -16.51 -34.91 -46.4 -18.13 -12.9 -11.22 -10.88 -11.7 -11.67 -9.947 -8.678 -9.287 -10.55 -12.13 -14.39 -17.21 -21.55 -24.64 -26.41 -23.35 -16.76 -12.99 -9.005 -5.645 -3.408 -1.899 -0.6261 1.291 4.114 3.61 3.58 10.56 -10.39 -1.571 -0.1143 -0.2838 -0.5483 -0.8276 1.031 0.9043 -0.6381 -1.083 1.025 6.642 8.426 5.537 5.575 17.13 -0.7114 -0.4834 37.19 5 0.8083 -2.189 -4.318 -7.375 -9.715 -36.61 -34.43 -19.18 -10.32 -3.459 2.145 7.699 1.712 -2.166 -5.001 -7.601 -2.148 0.9075 3.729 2.956 3.81 19.68 10.77 1.37 -1.68 -1.699 -1.236 -0.1683 5.353 5.803 6.327 32.81 -7.039 -20.44 -12.54 -10.69 -10.22 -9.817 -9.464 -10.12 -9.64 -8.043 -3.201 -1.345 -2.247 -2.59 -3.051 -0.1873 2.427 4.598 6.689 8.607 10.44 12.13 13.15 12.75 12.3 10.35 13.34 12.98 10.99 18.68 21.77 22.22 21.98 22.6 18.1 20.64 14.65 15.06 14.55 14.54 10.18 -7.427 6.101 6.497 7.438 11.61 16.37 7.443 2.3 1.392 1.528 5.516 8.241 8.861 8.981 1.841 -11.25 2.643 -2.676 -1.946 -0.2819 -0.9873 -2.891 -5.964 -9.012 -13.3 -14.12 -9.402 -6.513 -4.807 -4.543 -5.112 -5.67 -6.37 -7.131 -6.199 -4.383 -2.336 0.7046 1.083 0.5758 0.2606 -0.3449 -0.7119 -0.1485 1.698 5.143 9.809 16.25 12.93 6.391 5.546 10.06 1.049 19.15 8.417 -5.874 -44.47 -10.77 -5.718 -18.59 -16.45 -13.48 -9.593 -6.891 -2.217 -7.423 -14.31 -39.65 -11.64 -8.114 -6.656 -5.937 -6.059 -8.673 -6.236 -3.669 -3.269 -5.722 -6.794 -1.867 -9.226 -5.686 -3.455 0.5841 14.36 3.334 5.144 11.72 8.104 4.851 4.052 3.438 2.257 1.083 0.1049 -0.4382 -0.5966 0.2229 -0.002083 -11.56 -3.771 5.575 -5.671 -5.738 -2.278 1.78 4.028 5.237 5.787 5.772 5.266 5.916 9.236 8.665 10.56 18.06 7.204 5.758 7.254 9.657 12.07 15.68 19.32 21.87 21.73 17.54 16.8 40.57 13.37 9.401 10.99 6.323 4.024 3.499 2.848 1.639 -0.8956 -1.017 1.883 1.986 0.6285 0.1888 1.344 2.34 3.903 6.226 6.306 6.139 -1.216 -10.17 -12.83 -9.399 -7.734 -7.105 -4.978 1.564 13.35 8.509 4.217 2.483 0.8498 -2.764 -3.221 -3.808 -2.341 0.7565 6.13 0.2021 -7.167 -10.08 -11.39 -11.89 -12.02 -11.83 -11.46 -11.43 -11.57 -10.43 -8.15 -5.174 -5.263 -6.199 -4.573 -2.861 -4.407 -4.149 -2.825 -1.558 -7.57 -3.375 -1.753 -0.007308 1.704 3.165 4.142 4.662 5.754 10.29 51.09 10.36 6.793 3.639 0.7091 -1.059 -1.691 0.9689 3.552 6.248 9.686 19.93 12.6 8.913 3.643 -0.8609 -0.9585 -1.803 -1.856 0.8626 3.957 7.116 9.809 6.706 3.26 13.66 11.98 12.71 25.17 11.74 6.788 5.101 6.107 3.181 -0.9152 -2.197 -2.785 -5.71 -4.998 -5.468 -7.849 -12.88 -13.87 -4.953 -7.717 -5.938 -3.486 -1.293 5.252 -1.28 -1.983 -2.188 -2.636 -9.524 -6.54 0.6922 5.389 2.299 -2.234 -10.52 -2.733 0.7068 2.324 3.659 5.362 7.951 15.1 11.81 7.393 19.11 2.886 0.8253 0.3342 0.03333 -0.4929 -1.776 -5.005 -15.74 -11.46 -3.449 1.792 -0.586 3.222 12.1 11.51 15.28 12.55 5.599 1.632 -0.7665 -2.719 -4.588 -6.434 -8.298 -10.63 -14.24 -16.05 -16.18 -17.51 -23.04 -27.24 -11.75 -8.831 -13.14 -16.91 -14.85 -10.53 -9.095 -9.643 -10.38 -9.816 -7.378 -4.283 0.6882 34.89 0.006606 3.88 5.939 4.781 4.337 2.875 0.83 1.067 1.56 1.276 0.386 -0.601 -1.466
--12.06 -8.681 -2.845 2.273 3.349 16.49 47.99 14.42 3.753 0.637 -0.4829 -0.1683 4.485 21.19 10.04 3.786 4.278 15.26 5.456 0.208 0.3469 -2.1 -3.28 -3.895 -5.317 -7.876 -2.274 12.82 3.018 -1.777 -5.543 -8.74 -5.316 -16.07 -18.28 -16.07 -16.23 -16.57 -16.29 -16.33 -16.49 -16.31 -17.66 -8.973 12.15 -13.41 -24.58 -19.8 -20.27 -22.51 -25.84 -28.13 -27.05 -26.27 -25.24 -26.1 -32.08 -13.22 -4.603 -0.7269 -14.92 -17.19 -18.96 -18.16 -14.01 -11.99 -11.3 -11.67 -16.46 -18.58 -8.757 -4.533 -7.448 -9.882 -11.8 -14.3 -17.51 -27.99 -36.68 -63.95 -32.88 -21.33 -21.77 -11.54 -6.432 -2.958 -0.2919 1.095 4.453 56.55 7.61 2.858 1.414 -0.2202 -0.171 -0.1682 -65.3 0.03298 -1.892 -38.51 -0.956 -3.035 -9.293 -7.657 11.92 17.12 6.123 3.768 4.09 6.711 -0.9523 1.753 -0.9972 -3.113 -5.707 -7.689 -14.08 -14.51 -16.08 -18.23 -13.1 -8.269 -3.833 2.655 18.68 2.142 -1.542 -3.833 -4.909 -2.429 -0.03384 6.853 6.383 4.204 6.098 5.501 3.547 3.227 2.218 0.8008 1.269 6.127 6.357 -0.5737 -7.576 -6.724 -12.67 -9.819 -7.272 -6.625 -8.368 -9.275 -10.03 -10.65 -16.16 -18.82 0.3357 -4.062 -2.406 -0.8853 0.7291 1.493 3.755 6.962 9.17 11.16 12.63 12.58 4.358 11.06 15.06 20.29 25.36 20.26 20.83 21.79 22.28 23.38 21.8 9.259 10.08 -68.71 12.74 14.65 14.78 11.43 6.71 6.275 5.595 5.253 6.94 7.346 3.395 -18.22 1.279 5.469 17.95 12.57 6.673 4.946 2.034 0.3285 6.114 -21.08 -3.633 0.1387 -1.034 -3.405 -8.896 -13.46 -14.02 -25.01 -12.44 -8.105 -6.269 -5.541 -5.139 -4.97 -4.978 -4.922 -4.642 -5.307 -16.79 -1.795 0.1759 1.854 4.005 1.625 -0.267 -0.4421 1.049 3.449 6.077 8.352 7.99 5.871 4.651 4.129 4.002 6.174 0.6686 -7.35 -9.589 -10.89 -12.22 -15.47 -24.27 -12.62 -9.629 -7.761 -5.833 -9.452 -14.66 -16.18 -16.45 -9.119 -7.493 -6.588 -5.178 -4.185 -3.7 -3.686 -3.794 -3.36 -1.111 3.923 21.48 6.574 4.329 -1.579 -6.005 1.388 3.339 4.234 3.961 3.242 2.819 2.084 0.9819 -0.09696 -0.9719 -1.34 -0.9427 0.901 15.45 -1.301 -15.82 -19.01 -12.69 -13.35 -0.5563 2.5 4.108 5.012 5.23 3.723 3.269 10.03 20.73 13.65 10.15 9.558 1.437 1.514 7.982 9.156 11.11 13.6 16.23 20.61 26.14 18.97 15.35 16.15 9.85 2.464 -1.628 -2.83 -2.908 -1.172 0.769 -0.6751 -3.334 -1.39 3.129 4.437 4.31 3.673 3.198 2.847 2.547 6.918 15.33 2.816 -4.348 -15.08 -18.61 -19.31 -9.618 -7.435 -5.855 -3.014 2.666 10.13 1.7 3.453 8.991 3.565 -1.972 -4.237 -4.413 -2.593 5.139 -0.4552 -7.59 -11.46 -13.35 -13.61 -12.79 -10.95 -10.08 -10.45 -14 -10.27 -8.945 -0.1901 -4.932 -6.142 -3.709 -1.996 -5.022 -5.398 -5.672 -7.389 -10.65 -6.103 -4.017 -2.47 -0.3889 2.285 4.665 5.264 5.498 7.086 9.26 10.37 11.01 2.857 -2.067 -4.007 -1.851 0.9162 3.877 8.867 13.17 18.9 14.76 84.28 7.699 3.369 1.661 0.435 -0.5374 0.84 3.974 8.194 16.84 17.75 11.5 11.76 12.59 13.87 14.16 10.77 6.924 5.171 12.16 2.633 -6.518 -5.486 -4.302 -5.49 -7.542 -8.754 -10 -11.46 -11.85 -11.54 -16.04 -11.19 -5.301 -3.366 -2.276 -2.265 -2.166 -1.268 5.255 3.262 -1.506 -0.1329 1.672 2.995 0.3547 -16.54 -2.167 1.746 3.399 4.784 6.915 9.465 11.72 8.869 5.007 5.567 1.517 -0.3853 -0.8798 -1.025 -1.332 -2.104 -3.592 -5.32 -4.599 0.5425 47.13 8.928 9.551 29.41 12.92 30.91 39.16 6.681 1.111 -1.734 -3.793 -5.623 -7.417 -9.351 -12.25 -23.16 -24.3 -19.42 -21.25 -19.33 -16.87 -11.01 26.45 -9.775 -25.26 -18.6 -12.62 -10.67 -9.96 -9.382 -8.472 -7.092 -4.978 -1.762 0.6895 -7.7 18.01 13.14 5.948 8.203 9.684 -4.672 2.042 4.487 3.786 1.549 -0.1409 -1.342
--14.41 -9.67 -3.601 -0.3255 2.356 5.74 9.263 3.111 -7.905 -5.133 -6.03 -10.39 2.431 51.63 6.362 1.973 2.453 9.228 4.079 -1.342 -3.339 -4.768 -5.793 -6.769 -9.018 -27.12 -10.4 5.468 2.471 -0.5708 -5.682 -10.91 -16.55 -16.04 -15.81 -16.47 -18.3 -18.05 -16.87 -16.48 -15.23 -15.17 -57.55 -12.33 -6.291 -12.72 -18.08 -20.29 -21.92 -26.16 -38.82 -119.7 -30.71 -30.54 -50.97 -25.36 -21.12 -14.57 -10.17 -11.83 -55.56 -19.37 -15.74 -12.84 0.8248 -10.69 -11.03 -10.83 -13.32 -13.83 -5.725 13.05 6.481 -7.716 -12.27 -15.65 -17.55 -19.78 -25.93 -33.8 -25.74 -22.02 -25.9 -12.13 -6.326 -1.329 9.488 2.962 3.277 6.494 4.224 1.964 1.417 2.124 2.61 -0.1369 -2.922 -1.884 -2.089 -3.863 -4.791 -4.847 -6.762 -3.434 7.624 12.75 6.572 0.2536 -7.603 -13.3 -6.557 -8.681 -9.233 -6.552 -6.329 -7.88 -13.01 -17.51 -13.37 -16.54 -11.62 -8.133 -5.016 -1.788 1.314 0.04554 -1.987 -3.366 -6.081 -3.105 -0.4835 1.735 2.862 3.35 4.056 4.278 5.072 13.72 8.777 1.567 0.7309 1.882 1.67 -2.793 -1.166 -1.983 -7.354 -7.764 -5.13 -4.212 -6.494 -9.906 -22.81 -11.31 -14.55 -15.9 -14.41 -9.327 -3.141 -0.2764 1.55 -0.1101 4.212 8.059 10.19 13.08 16.08 14.96 13.37 14.47 17.51 22.72 27.14 25.61 24.22 23.99 26.28 93.94 27.2 20.29 17.53 21.64 20.24 16.78 15.15 11.45 7.613 6.112 3.627 -9.454 4.453 6.341 4.396 0.7719 7.082 6.221 7.954 6.62 5.208 3.972 2.618 1.755 1.498 0.9533 7.649 4.528 -0.1778 -2.943 -6.02 -8.959 -13.01 -21.48 -12.94 -9.015 -6.894 -8.128 -5.191 -4.366 -4.062 -3.81 -3.569 -3.619 -3.456 -1.481 0.2587 3.241 57.26 3.271 -1.21 -3.843 -0.2607 2.561 5.073 7.212 7.597 5.962 4.365 3.718 5.224 6.99 17.19 -1.742 -8.37 -12.53 -18.55 -18.61 -15.84 -11.69 -9.616 -8.744 -9.255 -13.84 -49.13 -14.3 -11.15 -10.24 -9.003 -12.49 -4.759 -1.414 -1.78 -9.134 -7.48 -5.848 0.2442 6.022 18.58 9.34 6.215 -1.726 -7.951 2.838 3.944 1.94 1.779 1.938 3.399 1.908 -0.1756 -1.593 -3.054 -3.555 -2.616 -0.968 1.54 -6.22 -8.098 -13.16 -10.59 0.3817 3.454 3.875 4.744 5.384 5.505 4.44 5.222 13.35 44.36 17.63 9.678 6.273 1.355 10.61 9.107 7.005 10.49 13.3 16.5 17.59 14.48 14.56 12.67 9.914 16.6 -23.86 -12.47 -13.2 -6.826 -2.353 -0.2987 -4.459 -8.444 2.232 6.065 8.609 8.533 6.571 4.77 3.255 -0.4192 -5.175 11.9 3.253 -4.644 -15.81 -13.64 -15.13 -10 -8.825 -9.038 -9.288 -6.16 -1.577 -3.591 -4.169 21.64 10.46 -2.753 -6.512 -8.555 -8.149 -5.784 -6.491 -10.16 -17.82 -19.13 -17.96 -15.59 -6.889 -5.85 -9.29 -7.997 -9.782 -13.58 -10.88 -8.341 -7.575 -6.772 -6.305 -6.489 -6.928 -7.996 -10.37 -16.4 -8.475 -6.968 -6.583 -3.463 2.238 12.4 7.757 4.874 4.474 5.139 8.943 16.7 -0.2278 -8.388 -20.79 -2.847 0.8163 3.637 7.583 18.69 11.32 11.05 11.29 7.485 4.906 3.524 1.566 -6.894 -2.286 2.83 7.569 19.06 25.86 14.41 12.68 14.52 29.36 15.37 12.99 6.52 3.198 0.01499 -9.57 -40.15 -10.03 -2.153 -4.513 -13.13 -13.41 -13.36 -14.15 -15.67 -16.85 -16.65 -12.5 -6.64 -4.259 -3.37 -3.106 -2.711 -1.415 0.7725 0.5702 -0.5369 -0.4153 1.123 6.689 34.94 2.355 2.438 4.54 5.366 6.126 9.865 30.01 4.139 1.38 -1.35 -0.7049 -1.669 -3.499 -2.518 -1.978 -1.79 -1.97 -2.558 -3.439 -5.002 -2.157 5.694 7.404 8.537 10.39 8.474 12.62 10.65 3.826 -0.3805 -2.946 -4.905 -6.748 -8.638 -10.42 -12.28 -15.53 -17.58 -22.22 -145.5 -18.24 -14.47 -11.21 -8.365 -12.15 -22.25 -17.52 -12.58 -11.47 -10.81 -9.439 -8.261 -8.025 -7.261 -3.62 -0.08637 3.604 8.491 8.948 6.993 0.3668 -1.268 -0.5852 5.108 18.25 10.64 3.132 0.3996 -1.236
--6.944 -5.67 -3.269 -1.491 -0.4042 0.3994 0.1478 -3.649 -16.92 -8.543 -9.108 -24.61 -3.182 4.292 1.112 -1.978 -2.487 1.804 -1.796 -4.244 -6.158 -7.712 -8.365 -8.941 -10.01 -11.51 -8.464 -3.761 -2.1 -3.965 -7.469 -12.31 -34.52 -16.8 -15.3 -16.85 -28.31 -21.58 -17.63 -29.6 -16.33 -16.71 -17.42 -14.44 -12.76 -14.53 -19.02 -26.46 -23.13 -27.49 -40.61 -33.87 -29.33 -41.09 -31.63 -21.71 -13.3 -13.12 -13.83 -15.81 -20.49 -17.29 -14.56 -12.75 -13.16 -16.67 -11.04 -8.989 12.53 -7.012 -4.668 1.559 -2.192 -9.261 -15.29 -26.07 -26.34 -13.01 -16.42 -17.71 -17.12 -16.65 -17.87 -9.755 -5.886 -1.775 5.107 1.739 1.082 1.479 1.195 0.7709 1.271 5.263 28.71 1.427 -6.182 -1.282 0.1377 -4.461 -13.51 -6.843 -3.753 0.8303 12.61 115.5 8.82 -2.632 -12.72 -14.12 -9.783 -18.91 -21.22 -8.82 -6.95 -7.212 -9.133 -11.01 -11.69 -11.8 -10.98 -9.307 -6.731 -3.984 4.64 -0.4942 -2.917 -3.655 -4.321 -2.92 -1.061 0.4689 1.808 3.269 4.836 4.732 5.001 10.89 19.89 -4.637 -1.17 1.698 8.376 -1.983 -2.62 -5.166 -8.321 -8.22 -7.596 -8.349 -12.15 -14.67 -11.55 -11.56 -12.41 -11.79 -17.17 -10.51 -2.832 0.4682 2.881 6.554 12.5 9.42 11.16 15.51 364.4 18.37 16.29 16.62 18.81 25.18 33.36 44.75 28.89 27.15 27.66 30.25 37.76 30.21 29.15 24.71 29.63 20.04 26.72 12.22 0.7874 5.238 4.897 1.814 6.699 8.877 7.732 6.538 15.06 -0.2198 -2.964 3.503 4.885 3.854 2.514 1.579 1.293 2.535 10.26 5.504 0.3266 -2.247 -4.646 -7.188 -10.08 -12.6 -12.57 -10.61 -5.589 -2.739 -3.881 -3.583 -3.253 -2.922 -2.542 -2.094 -1.423 -0.466 0.4919 1.692 2.902 0.9228 -2.293 -9.583 -0.9671 2.37 5.725 11 14.29 7.448 4.351 3.171 4.759 6.078 1.731 -4.444 -10.43 -16.49 -25.6 -19.19 -11.94 -10.37 -9.398 -8.991 -9.553 -12.05 -15.34 -11.68 -7.977 -9.268 -8.207 -12.55 6.86 3.913 3.157 -0.3994 -13.56 -9.725 1.536 5.395 8.034 7.729 5.059 1.665 -0.03547 2.004 -0.9981 -0.5587 -0.03687 0.4832 1.925 0.5216 -1.644 -3.379 -7.601 -9.675 -5.451 -3.736 -3.943 -5.654 -6.371 -7.683 -4.843 15.27 6.971 5.209 5.723 6.29 6.478 6.261 6.718 10.15 17.83 12.84 8.123 4.301 -0.8997 5.638 7.353 5.326 10.96 13.88 20.9 27.48 16.96 13.94 13.11 8.987 -9.101 -10.99 -5.753 -13.71 -20.98 -1.924 0.4917 -2.871 -0.9231 5.144 10.37 20.63 18.61 9.867 5.99 4.047 1.7 0.836 21.27 6.368 -2.514 -6.458 -8.364 -9.199 -9.305 -10.25 -13.41 -22.59 -22.38 -1.634 -10.17 -11.48 -5.959 -4.275 -6.417 -10.85 -20.17 -30.71 -9.228 -7.952 -11.63 -17.49 -23.27 -27.67 -24.31 -18.11 -11.43 -9.647 -2.094 -7.082 -29.25 -16.85 -10.37 -9.27 -9.105 -8.631 -7.993 -8.332 -12.67 -12.34 -13.23 -9.498 -10.48 -23.76 -10.11 0.2782 19.76 9.206 3.588 2.116 1.574 1.473 -0.3526 -7.37 -24.63 -9 -2.686 0.6837 3.002 4.78 8.066 10.65 11.43 9.044 6.606 5.698 7.03 4.182 -0.2841 -6.891 -0.253 4.357 11.89 19.66 14.08 13.1 16.91 18.1 14.96 11.96 5.414 1.392 -3.557 -23.96 -12.79 -9.231 -6.882 -10.46 -44.75 -18.91 -19.08 -22.29 -17.89 -15.47 -11.87 -9.33 -5.972 -2.951 -3.368 -3.871 -3.734 -2.665 -1.311 0.09543 0.1458 -1.396 -0.4188 2.039 5.891 5.665 5.916 14.62 9.18 6.974 9.119 24.14 -8.371 -2.16 -0.9976 -1.756 -4.062 -11.58 -4.315 -2.921 -1.965 -1.5 -1.665 -2.485 -6.489 -5.326 4.203 8.835 9.036 23.61 8.232 7.416 3.989 -0.009299 -2.697 -4.46 -6.095 -8.022 -10.71 -13.01 -12.3 -12.01 -12.98 -16.18 -19.76 -15.89 -13.9 -11.81 -9.905 -11.91 -13.89 -12.92 -10.78 -11.77 -18.35 -10.11 -7.635 -10.01 -31.45 -4.923 0.8246 14.28 10.46 8.941 24.27 6.057 0.9549 1.841 5.986 16.5 9.763 4.369 0.8754 -1.262
--5.488 -4.236 -1.641 -0.8735 -2.204 -2.844 -3.319 -4.654 -6.618 -10.06 -6.62 -4.931 -4.262 -2.682 -3.202 -6.548 -21.15 -4.19 -5.372 -7.102 -9.057 -19.36 -11.2 -11.1 -11.21 -10.16 -7.613 -4.81 7.385 -2.534 -7.804 -10.49 -12.22 -12.83 -14.07 -14.89 -18.65 -18.73 -17.53 -16.9 -16.23 -15.85 -15.4 -14.23 -11.34 -13.05 -18.21 -21.45 -23.23 -27.79 -31.67 -26.89 -25.15 -25.66 -23.4 -19.15 -13.88 -14.16 -14.88 -15.09 -15.81 -15.09 -13.78 -13.15 -16.15 -16.2 -9.084 -8.022 -6.41 -5.569 -5.452 -5.124 -5.198 -9.712 -17.75 -23.26 -17.63 -10.68 -11.19 -11.2 -10.17 -8.163 -7.506 -6.758 -6.116 -4.618 -1.598 -2.951 -0.6047 -0.2619 -0.4818 -0.5459 0.06244 2.322 4.711 0.8219 -1.008 -0.4737 4.782 3.009 -22.76 -8.351 -4.079 -0.0694 10.56 24.24 -0.005996 -14.85 -6.857 -7.396 -9.371 -11.62 -11.5 -8.63 -6.286 -4.68 -6.956 -10.24 -12.96 -12.6 -12.97 -14.91 -8.903 -7.201 -4.49 -4.03 -4.483 -4.39 -3.818 -2.737 -1.386 -0.01939 1.46 3.973 14.75 7.114 2.659 3.867 1.731 -20.43 -2.196 2.036 7.004 -13.68 -5.67 -12.19 -17.02 -10.04 -8.597 -9.475 -16.07 -20.59 -11.3 -13.13 -27.18 -10.04 -7.445 -4.548 -1.149 1.528 3.813 6.196 8.345 9.761 11.44 14.3 18.02 18.37 18.74 17.85 16.07 26.8 54.78 41.1 33.47 33.89 34.79 24.59 27.04 27.63 22.66 22.47 28.08 19.35 18.35 13.5 -4.887 6.705 7.988 8.746 12.01 19.48 12.38 7.103 1.877 -17.41 -4.139 5.046 10.4 4.591 2.204 0.8131 0.2068 0.8203 2.032 1.754 0.4046 -1.402 -3.708 -6.238 -9.355 -14.98 -18.06 -32.63 -6.145 1.964 -2.667 -2.619 -2.355 -2.045 -1.536 -0.8512 0.04285 1.094 1.441 0.8801 0.2842 1.232 -1.863 -2.269 -0.4306 2.537 6.961 16.02 25.46 8.132 4.025 2.188 0.7714 -5.213 -8.561 -8.908 -16.29 -30.39 -21.52 49.76 -8.627 -9.665 -9.342 -8.918 -8.988 -9.787 -10.99 -14.04 -11.89 -9.56 -7.181 -0.2399 8.068 9.549 18.54 7.063 -2.834 2.858 5.617 6.721 9.406 13.67 7.428 2.938 0.5324 -1.523 -19.39 -3.761 -1.835 -1.147 -1.058 -1.954 -3.852 -5.152 -7.425 -18.55 -7.549 -5.631 -6.466 -11.38 -8.084 -4.161 -1.528 2.306 4.987 6.064 7.018 7.857 8.242 7.193 4.706 1.676 12.64 8.114 6.19 4.075 1.618 5.798 8.501 11.14 13.59 14.58 16.09 16.45 18.38 12.64 12.09 9.115 1.68 -0.9373 -0.8958 -3.216 -3.154 1.365 3.655 2.126 3.541 7.932 12.85 29.42 24.77 11.59 -0.08299 4.996 3.389 1.895 5.362 -0.6127 -3.666 -5.055 -6.483 -7.698 -8.97 -11.13 -16.46 -69.35 -27.92 -33.01 -18.45 -17.61 -36.08 -10.98 -9.133 -10.83 -15.3 -8.826 -7.365 2.773 -13.52 -18.35 -23.02 -46.01 -39.74 -33.07 -16.32 -11.3 -8.226 -10.1 -14.58 -12.44 -10.53 -10.91 -13.55 -12.26 -9.474 -7.344 1.335 -11.2 -9.65 -8.86 -11.24 -20.35 -14.44 -4.62 2.775 3.306 1.239 -0.6894 -2.521 -3.74 -6.389 -11.62 -17.46 -6.836 -1.773 0.8784 2.662 3.416 7.063 14.25 27.53 8.944 4.704 5.157 10.98 6.116 2.538 -0.9596 1.593 5.764 10.39 23.03 13.37 9.766 55.47 13.47 9.846 7.648 4.072 0.2806 -3.785 -8.546 -8.992 -8.98 -11.15 -15.71 -17.25 -17.41 -25.77 -52.09 -18.25 -13.39 -9.258 -8.922 -6.426 27.83 -3.064 -4.995 -5.327 -5.191 -4.972 -6.631 -4.148 -3.402 -2.721 -9.768 4.821 11.62 9.31 9.974 35.69 6.369 4.752 4.064 0.941 -0.9061 -1.69 -2.4 -3.822 -6.127 -7.413 -4.145 -1.655 -0.01007 -0.1464 -0.97 -1.028 1.299 6.931 179.1 8.932 6.117 6.494 11.98 2.012 -6.358 -5.955 -6.09 -7.182 -9.073 -13.95 -46.22 -12.71 -8.554 -7.012 -9.98 -12.05 -12.59 -17.15 6.611 -8.784 -11.62 -14.97 -12.47 -5.529 -7.901 -10.37 -7.357 -3.978 -6.4 -14.36 -3.681 0.449 6.768 6.518 6.872 29.71 3.541 -1.204 4.745 3.381 5.718 14.3 8.618 1.224 -1.597
--5.313 -4.229 5.91 5.545 -4.043 -6.06 -5.593 -5.343 -5.495 -5.608 2.949 -12.98 -5.299 -4.995 -5.212 -6.144 -6.83 -6.603 -7.982 -9.809 -11.35 -12.81 -13.18 -13.83 -14.6 -11.87 -2.234 -6.443 -4.454 -5.815 -8.482 -9.336 -5.037 -4.468 -17.29 -16.87 -17.82 -18.23 -17.92 -17.06 -16.2 -15.58 -15.1 -14.46 -12.25 -14.07 -18.35 -20.51 -22.8 -29.82 -62.59 -14.64 -21.44 -20.76 -19.61 -18.14 -17.13 -17.64 -16.82 -12.65 -15.68 -14.69 -13.18 -11.99 -11.47 -9.976 -7.571 -7.179 -6.243 0.08889 -6.347 -9.972 -4.252 9.195 -4.585 -4.718 -7.627 -7.672 -7.536 -7.139 -5.647 4.706 -0.9798 -4.306 -4.846 -6.047 -1.868 -0.8124 0.1185 -1.016 -1.892 -2.078 -1.805 -1.149 -0.6887 -0.9066 -0.8558 -0.1426 -0.2185 -5.854 -13.28 -7.396 -5.008 -3.256 -2.13 -11.85 -18.59 -8.643 10.99 -3.096 -10.19 -10.55 -10.01 -8.593 -5.183 33.36 -4.377 -11.03 -36.36 -15.43 -12.06 -12.68 -10.65 -15.58 -8.243 -7.014 -6.735 -5.927 -4.568 -3.099 -1.636 -0.2323 1.13 3.085 7.57 3.443 -7.027 -2.831 -1.343 -2.04 -0.2369 2.573 9.792 2.667 -4.784 -13.18 -19.03 -10.58 -8.746 -8.756 -9.847 -9.71 -8.123 -9.584 -12.02 -7.98 -4.254 -1.65 0.6623 2.744 4.658 6.532 8.558 11.11 11.49 12.9 15.64 19.58 29.93 21.2 -14.7 14.4 34.69 35.68 35.58 38.99 25.05 18.04 16.7 17.96 17.64 17.35 17.04 15.85 15.53 21.45 15.73 10.81 10.6 11.47 15.08 29.15 16.98 7.82 -4.078 -0.8301 -1.023 3.574 15.02 4.169 1.605 -0.8831 -2.909 -1.512 0.02712 0.7681 2.391 0.7985 -2.671 -5.519 -8.801 -16.14 -19.74 -13.86 -7.86 -4.166 -2.552 -0.3037 -1.116 -1.128 -0.3825 0.658 1.93 5.205 5.877 1.131 -1.116 -2.21 -3.065 -2.831 -0.9525 2.612 7.465 70.73 11.51 6.507 3.232 1.435 4.646 -11.64 -15.92 -9.829 -15.4 -15.39 -12.86 -8.397 -9.223 -10.6 -10.23 -8.962 -8.394 -8.679 -10.11 -13.93 -9.622 -9.011 -19.02 8.646 9.958 12.7 21.63 11.27 8.203 116.8 11.38 8.332 10.97 39.82 8.814 2.993 0.1024 -2.541 -5.409 -7.201 -3.466 -2.407 -2.387 -3.42 -9.415 -7.277 -6.935 -8.028 -7.726 -6.917 -7.568 -16.94 -8.571 -2.795 -2.006 -1.84 5.199 7.407 8.893 10.44 14.03 9.915 3.108 -30.1 -13.77 1.602 4.803 4.867 4.792 6.02 9.691 16.05 23.05 16.78 13.79 11.68 7.5 6.208 8.811 8.001 5.486 3.971 3.285 2.882 3.416 5.372 9.284 14.88 10.13 10.55 12.56 14.71 16.64 13.48 8.638 7.302 5.819 3.7 0.5496 -22.39 -5.603 -4.778 -5.828 -7.166 -8.773 -11.11 -15.2 -21.61 -25.4 -28.16 -19.82 -17.37 -17.46 -13.12 -11.04 -6.348 2.738 -1.455 10.11 -12.32 -47.34 -21.58 -21.91 -28.91 -36.85 -27.43 -16.81 -11.87 -8.5 -7.197 -10.69 -9.592 -9.716 -11.61 -26.74 -18.48 -11.64 -7.194 -4.183 -18.93 -9.795 -7.24 -8.77 -13.26 -83.76 -8.064 -1.944 -0.2511 -0.7796 -3.797 -18.74 -8.865 -21.35 -13.8 -8.881 -3.181 -0.2872 1.25 2.552 4.171 6.543 11.62 16.22 5.07 -7.113 2.917 2.66 4.521 4.787 4.072 4.432 5.89 7.172 12.96 7.773 -56.4 6.693 7.686 7.255 11.59 3.876 -0.7014 -3.903 -6.496 -7.918 -7.952 -11.79 -117.9 -16.92 -15.23 -16.9 -18.02 -15.79 -13.54 -10.92 -10.56 -20.87 -10.02 -6.266 -6.9 -7.64 -8.165 -8.092 -9.159 -8.626 -5.998 -4.277 -2.921 2.233 7.912 53.2 9.895 6.308 3.13 0.8451 -0.05621 0.3634 -1.23 -3.851 -2.589 -3.605 -7.241 -30.7 -5.021 -0.548 8.017 3.201 0.06612 0.7397 14 5.121 7.001 4.427 2.711 2.656 5.588 17.96 -39.52 -8.623 -7.343 -7.949 -9.228 -11.62 -13.89 -10.2 -4.422 10.23 -4.186 -8.163 -10.23 -10.53 -9.332 -9.673 -11.23 -17.71 -14.07 12.23 -4.53 -5.872 -3.97 7.78 6.248 31.06 0.06644 -0.4381 0.4503 0.948 1.229 0.4628 -10.76 -12.69 -21.87 -2.654 1.467 8.804 7.263 0.000444 -2.501
--5.752 -5.187 -2.662 -5.972 -6.547 -12.9 -7.643 -5.869 -4.785 -4.07 -4.052 -5.811 -6.397 -6.477 -6.226 -5.653 -3.555 -5.452 -10.06 -13.32 -14 -13.78 -15.33 -17.25 -24.72 -24.34 -4.86 -9.621 -10.25 -9.26 -9.646 -9.878 -8.774 -11.35 -24.7 -20.36 -19.14 -20.16 -20.63 -18.05 -16.37 -15.46 -15.02 -15.08 -15.97 -18.46 -21.1 -21.34 -21.79 -23.83 -25.35 -21.05 -19.14 -18.31 -17.74 -17.52 -18.09 -20.86 -76.89 -21.48 -17.9 -15.81 -12.85 -10.35 -9.225 -8.438 -7.131 -6.919 -6.547 -6.228 -18.94 -29.37 -4.706 1.945 7.479 6.519 -2.467 -4.185 -4.427 -4.13 -3.351 -1.776 -2.167 -3.334 -3.793 -3.429 0.1513 10.37 24.53 -2.803 -3.969 -3.977 -3.87 -3.649 -3.078 -2.317 -0.9598 2.986 3.225 -3.151 -5.904 -6.176 -5.915 -5.926 -7.265 -14.97 -14.86 -9.557 -5.914 -16.6 -15.8 -11.99 -10.8 -10.87 -7.792 -4.063 -6.626 -10.33 -14.38 -12.68 -10.67 -9.965 -8.385 -29.6 -10.18 -9.66 -11.18 -8.99 -5.794 -3.597 -1.724 0.06368 1.147 1.508 1.549 -0.4219 -7.879 -7.653 -1.343 -0.005957 1.061 2.691 5.726 -0.5423 -3.733 -7.734 -11.08 -10.31 -8.607 -7.995 -7.72 -6.281 1.89 -5.411 -9.676 -5.899 -1.488 0.7106 2.424 4.067 5.642 7.168 8.972 15.39 9.918 10.65 14.81 19.76 29.39 22.11 17.28 19.67 25.87 31.23 30.58 23.93 14.28 8.447 7.828 13.14 14.18 14.03 13.15 12.86 13.54 14.37 13.98 13.19 12.89 13.01 14.86 21.2 41.15 9.675 2.941 0.6532 -3.078 -40.52 0.5802 2.155 1.84 -3.051 -30.07 -4.252 -0.6985 0.4769 3.068 3.048 -1.415 -4.971 -8.059 -10.06 -10.47 -8.965 -6.93 -4.962 -2.698 2.562 -0.3866 -0.3279 1.227 4.056 3.866 9.867 14.33 0.6252 -3.034 -5.367 -5.937 -5.975 -4.258 8.714 5.753 7.606 9.803 6.018 2.255 0.4406 -1.121 -4.754 -7.062 -7.048 -7.045 -8.013 -9.004 -9.179 -10.6 -17.23 -14.33 -9.032 -7.691 -7.833 -9.209 -14.61 -6.253 -2.27 2.905 12.2 20.43 20.06 12.37 10.72 13.6 86.18 13.46 8.318 7.734 7.933 5.053 1.956 -0.6742 -4.222 -10.03 -8.191 -4.457 -3.184 -3.08 -3.817 -5.409 -6.541 -7.607 -9.182 -11.69 -9.025 -7.101 -6.017 -3.716 -0.7499 1.652 4.368 7.575 9.898 11.74 13.61 17.69 11.7 4.966 -1.599 -4.796 8.27 4.504 4.932 4.398 -10.27 9.716 19.36 36.16 17.2 13.08 9.94 0.4063 -0.6804 7.23 7.781 7.113 6.547 6.363 6.389 6.742 8.045 12.11 20.75 13.08 13.07 20.98 8.866 23.29 18.28 11.13 11.75 10.62 5.016 -9.874 -2.713 -3.592 -4.336 -5.558 -6.991 -8.626 -10.72 -13.71 -18.81 -69.14 -22.88 -17.11 -14.83 -13.61 -13.72 -15.34 -7.578 -6.108 -7.832 -12.42 -19.53 -21.29 -19.93 -19.51 -20.9 -22.21 -20.45 -16.14 -11.62 -6.023 11.27 -3.595 -7.39 -8.421 -9.62 -13.73 -63.75 -14.14 -7.344 -5.992 -8.786 -6.285 -2.539 -5.115 -9.768 -9.605 -5.783 -2.633 -1.25 -1.378 -3.401 -7.28 -10.39 -14.6 -6.914 -2.684 0.2427 1.78 0.6475 1.113 3.7 4.583 6.608 11.1 9.185 3.902 2.985 0.1102 4.439 18.16 6.257 5.515 6.053 5.795 10.44 -43.01 2.472 3.924 3.838 3.775 6.497 1.213 -2.618 -5.435 -8.349 -9.211 -11.07 -14.04 -17.24 -14.85 -13.17 -12.98 -13.53 -16.35 -18.52 -12.53 -10.9 -11.44 -10.51 -9.226 -9.104 -11.09 -18.13 -11.07 -17.49 -19.63 -8.735 -6.242 -3.69 0.3278 5.124 9.216 7.291 3.625 -0.7376 -7.184 -2.657 1.878 0.7988 -72.28 24.65 -2.801 -5.048 -6.068 -4.107 -0.8567 7.323 2.65 -0.5291 -0.4867 1.323 0.9507 0.8006 0.3251 -0.3222 -0.6409 -0.4813 -2.224 -7.095 -7.869 -7.992 -8.505 -9.112 -9.157 -5.779 -21.59 -6.075 -0.2095 25.89 -5.484 -9.341 -10.12 -9.841 -9.397 -9.565 -10.08 -7.041 -1.666 -3.118 -4.525 -3.389 0.3835 4.422 19.61 2.847 -1.202 -2.046 -2.163 -2.297 -3.506 -7.475 -9.078 -9.297 -5.632 -2.747 -1.087 -1.247 -2.71 -3.906
--6.33 -6.542 -10.04 -34.96 -23.13 -14.05 -8.411 -5.885 -3.17 -0.7079 -3.391 -6.059 -8.013 -8.755 -6.11 -6.05 8.507 -1.182 -13.02 -21.44 -22.43 -14.9 -18.13 -19.83 -24.89 -23.17 -15.22 -12.6 -11.52 -10.74 -10.43 -10.71 -11.89 -14.97 -20.42 -22.74 -20.71 -23.8 -39.92 -19.03 -16.37 -15.14 -14.5 -14.82 -17.11 -22.9 -39.89 -23.43 -20.9 -20.22 -19.55 -18.21 -17.03 -16.4 -16.3 -16.91 -18.7 -21.54 -23.62 -22.69 -23.47 -20.79 -12.6 -4.545 -6.753 -7.244 -7.374 -7.58 -7.056 -6.763 -8.145 -7.141 -2.959 0.7136 4.453 4.563 -0.1422 -1.561 -1.537 -1.035 -1.297 -1.788 -2.338 -2.865 -3.464 -6.266 -1.994 6.469 1.135 -9.074 -8.387 -6.316 -6.049 -6.932 -5.47 -3.817 -1.844 3.94 5.212 -2.838 -4.691 -5.937 -6.903 -7.683 -8.954 -11.23 -12.83 -12.44 -12.01 -14.57 -15.89 -22.23 -8.841 -96.03 -10.93 -8.577 -8.669 -9.645 -10.4 -10.12 -9.35 -8.88 -8.567 -10.08 -10.23 -11.64 -34.58 -13.55 -6.815 -3.992 -1.596 2.287 3.856 0.5427 -0.04097 -1.523 -3.515 -2.588 -0.1115 1.287 2.114 2.654 1.654 -8.682 -2.324 -5.974 -20.09 -12.51 -8.598 -7.817 -7.538 -6.626 -4.261 -12.88 -6.752 -1.194 3.631 3.479 4.268 5.56 6.875 7.98 8.874 8.893 1.354 2.762 14.64 19.52 22.11 21.36 20.14 21.1 24.5 36.53 33.98 20.25 11.11 -36.29 3.749 10.65 12.1 11.93 9.126 9.306 12.11 13.19 14.42 16.58 16.71 14.37 14.4 22.39 17.43 8.442 3.516 0.9418 -0.8469 -3.209 -1.635 1.45 6.744 8.457 -6.007 -2.39 -0.1229 1.208 2.674 1.968 0.3509 -6.196 -11.48 -8.773 -8.046 -7.224 -6.642 -6.392 -3.658 -1.469 -0.651 0.1701 2.488 27.78 4.15 2.57 1.292 -1.826 -5.421 -13.76 -11.45 -9.742 -12.37 1.47 3.971 4.138 4.221 3.021 1.197 -0.2946 -1.779 -3.36 -4.487 -4.739 -2.078 -3.799 -7.283 -8.903 -10.77 -15.48 -12.83 -7.866 -6.391 -7.144 -10.41 -6.947 -2.041 2.581 6.114 9.958 14.04 14.88 10.78 9.829 11.18 13.94 10.18 6.914 5.277 3.99 2.366 0.7086 -1.179 -5.069 -30.8 -9.299 -4.564 -3.543 -3.42 -3.915 -5.055 -7.107 -10.69 -12.1 -25.58 -12.44 -8.935 -3.671 -1.719 0.8611 4.426 8.589 11.8 14.32 16.35 22.44 16.33 11.23 6.781 -5.847 -28.23 1.06 4.305 5.04 5.286 6.002 9.241 13.37 16.21 15.34 13.47 10.73 8.065 7.569 8.699 8.764 8.409 8.522 9.319 9.752 9.253 9.403 10.81 12.59 13.84 16.1 17.3 10.14 10.14 12.17 11.07 15.94 17.51 5.835 1.775 -0.7013 -2.431 -3.938 -5.551 -7.127 -8.653 -10.43 -12.65 -15.74 -19.41 -17.85 -15.39 -13.76 -12.55 -11.73 -10.85 -9.69 -9.974 -12.43 -18.98 -40.08 -22.69 -19 -17.82 -17.93 -18.88 -21.52 -18.19 -12.09 -6.485 1.4 -3.723 -6.804 -7.504 -5.905 -5.483 -11.08 -8.702 -4.891 -1.865 -1.045 -2.439 3.076 -4.084 -21.93 -6.16 -3.732 -2.089 -0.9825 -0.715 -1.883 -7.666 -37.59 -5.536 -1.156 1.668 4.219 6.002 2.808 1.731 4.02 1.471 -7.96 15.84 17.9 6.784 4.582 3.01 4.264 6.609 5.196 5.844 6.859 7.694 8.523 10.67 9.473 3.493 0.2626 -1.995 -1.642 -4.507 -6.98 -7.621 -63.07 -10.74 -14.13 -19.91 -21 -13.91 -11.44 -10.43 -10.43 -13.2 -22.22 -11.96 -10.46 -10.34 -11.86 -12.72 -12.06 -11.84 -13 -11.05 -12.77 -13.19 -10.64 -10.51 -8.263 -1.646 5.417 16.79 8.294 2.582 -2.814 -27.81 -3.744 6.957 5.511 -3.66 -2.74 -3.254 -4.258 -4.685 -4.264 -3.044 -1.599 -1.639 -2.43 -2.866 -2.929 -2.744 -2.25 -2.392 -2.887 -3.409 -4.103 -5.318 -6.88 -7.944 -8.621 -9.198 -9.628 -9.486 -5.489 -2.166 -6.525 -4.82 -2.467 -7.835 -10.26 -10.65 -9.955 -7.585 -6.175 -7.956 -6.009 8.591 -1.663 -4.474 -4.066 -2.363 1.065 7.884 1.075 -2.829 -4.114 -4.4 -3.806 -3.869 -4.881 -5.039 -5.934 -6.195 -5.542 -4.917 -4.773 -5.059 -5.435
--7.123 -3.02 -9.435 -27.25 -18.8 -11.64 -6.009 -5.787 -0.8802 144.3 -1.974 -6.856 -9.872 -21.52 -7.686 -9.701 -8.417 -9.807 -16.21 -31.13 -60.67 -23.73 -21.51 -22.38 -23.24 -21.21 -17.44 -14.61 -12.77 -11.35 -10.1 -9.962 -12.09 -15.82 -25.65 -39.56 -20.97 -20.39 -20.62 -17.83 -15.91 -14.45 -12.8 -11.81 -15.84 -25.26 -33.08 -24.05 -20.1 -18.25 -16.93 -15.73 -14.8 -14.42 -14.69 -15.93 -19.89 -32.16 -23.55 -24.8 -40.65 -29.3 -11.13 -3.24 -4.593 -6.011 -7.302 -11.72 -8.388 -5.447 -5.769 -3.773 0.0005745 3.478 5.526 3.984 1.304 0.3497 1.622 7.01 1.935 -0.6451 -2.045 -2.429 -2.406 -4.763 -3.088 1.843 12 -6.289 -21.8 -8.726 -10.8 -18.17 -8.44 -5.402 -3.626 -2.323 -3.46 -9.067 -2.67 -6.191 -8.638 -9.313 -10.28 -12.2 -17.5 -19.37 -14.37 -18.52 -22.65 -15.22 -9.458 -9.056 -10.7 -9.925 -9.619 -9.644 -9.562 -8.937 -7.812 -7.634 -8.703 -9.605 -10.18 -11.11 -12.75 -10.43 -6.9 -4.217 -1.697 1.656 1.532 -4.096 -0.1953 -3.257 -8.964 -1.49 1.858 3.082 3.637 4.265 5.231 5.013 1.432 -3.644 -9.668 -10.55 -8.437 -8.351 -9.256 -8.949 -12.52 -29.32 -5.928 1.797 15 6.37 6.12 7.377 8.66 9.24 9.409 9.228 7.754 10.37 17.29 24.54 27.51 23.58 20.99 21.19 23.23 26.54 25.89 17.78 7.054 5.187 8.13 10.41 11.17 10.92 10.08 10.14 11.4 12.95 15.46 25.17 29.26 15.31 12.96 12.65 10.05 5.551 0.7894 -1.518 2.822 -4.855 -7.318 0.6573 6.254 3.225 1.478 1.426 1.327 2.453 8.253 7.038 -1.405 -6.146 -10.68 -9.719 -7.249 -6.204 -6.331 -54.29 -3.412 -0.7242 -0.1578 0.6845 2.053 2.646 1.064 -1.002 -3.638 -4.066 35.77 -27.67 -16.16 -8.862 -3.103 7.285 6.394 3.025 1.988 1.366 0.6603 -0.5376 -1.828 -2.817 -3.362 -3.505 -3.707 -4.827 -6.65 -9.405 -14.23 -9.573 -7.819 -5.34 -3.628 -4.973 -19.71 -4.932 1.913 11.6 11.75 9.362 10.14 10.22 9.56 9.003 8.762 8.43 8.62 5.254 3.505 1.669 -0.2312 -0.6353 -0.9356 -2.385 -4.739 -4.522 -3.893 -4.132 -3.659 -3.96 -5.034 -7.777 -26.5 -14.76 -10.05 -13.17 -9.7 -0.9732 -2.329 0.02021 6.757 17.63 18.75 44.28 21.59 26.53 17.02 11.77 11.59 8.827 3.799 3.888 4.714 5.14 5.668 6.726 8.571 10.93 14.42 17.56 18.52 11.92 10.72 11.29 11.83 10.45 9.322 10.05 14.08 17.93 11.79 10.14 10.51 12.03 15.56 26.18 95.22 15.81 11.3 10.18 9.583 9.679 8.458 5.279 2.433 0.00587 -1.962 -3.492 -6.063 -7.96 -9.012 -10.69 -12.19 -13.84 -15.2 -15.43 -14.86 -13.71 -12.22 -10.84 -9.925 -9.892 -11.23 -14.39 -21.59 -55.83 -68.27 -18.22 -16.74 -16.29 -17.29 -27.33 -30.11 -12.52 -8.276 -6.085 -6.247 -7.748 -9.893 -3.127 8.05 -4.008 -4.068 -1.791 5.95 19.3 -2.241 -12.52 -3.325 -4.218 -3.003 -2.292 -1.704 -0.1207 0.8927 1.164 -0.06941 -1.609 1.894 3.785 5.719 9.054 22.08 13.13 8.366 6.009 3.949 3.513 7.531 8.37 6.395 5.316 4.958 5.232 5.622 4.904 6.571 8.54 11.64 9.832 11.28 9.294 1.888 -4.418 -46.5 -5.369 -7.217 -9.245 -5.168 -7.353 -7.6 -9.965 -17.3 -23.4 -12.47 -9.765 -7.888 -3.569 -7.611 -10.42 -10.3 -9.984 -9.837 -16.04 -23.58 -36.15 -11.01 -9.609 -9.708 -11 -14.3 -13.33 -18.51 -21.84 -3.371 3.917 16.98 7.316 2.028 -1.113 -3.033 1.136 9.625 0.04096 -3.07 -4.086 -3.849 -4.528 -5.09 -5.71 -5.561 -4.476 -3.996 -4.352 -5.383 -6.761 -6.525 -4.454 -4.554 -5.04 -5.709 -6.646 -7.36 -8.04 -8.802 -9.554 -10.24 -10.82 -12.42 -14.4 -5.919 -7.798 -9.747 -11.47 -12.61 -12.72 -12.08 -10.79 -7.935 -6.121 -8.154 -7.285 -5.346 -5.059 -5.149 -4.869 -4.104 -2.785 -0.4754 -3.279 -5.335 -6.455 -6.83 -5.387 -4.087 -3.194 5.499 -4.706 -7.983 -8.048 -7.605 -7.234 -7.023 -6.912
diff --git a/benchmarks/CUDA/CP/benchmarks/cp/output/short/ref.txt b/benchmarks/CUDA/CP/benchmarks/cp/output/short/ref.txt
deleted file mode 100644
index 9fb2a52..0000000
--- a/benchmarks/CUDA/CP/benchmarks/cp/output/short/ref.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-256 256 1 200
-8.029e+04
--0.09409 -0.1164 -0.1393 -0.1627 -0.1864 -0.2098 -0.2328 -0.2546 -0.2749 -0.293 -0.3084 -0.3206 -0.3292 -0.3341 -0.3353 -0.333 -0.3277 -0.3197 -0.3098 -0.2985 -0.2863 -0.2738 -0.2614 -0.2495 -0.2382 -0.2278 -0.2185 -0.2102 -0.2031 -0.1971 -0.1922 -0.1884 -0.1858 -0.1841 -0.1834 -0.1837 -0.1848 -0.1868 -0.1896 -0.1932 -0.1975 -0.2025 -0.2082 -0.2145 -0.2215 -0.229 -0.237 -0.2455 -0.2545 -0.2637 -0.2732 -0.2827 -0.2921 -0.3012 -0.3096 -0.3171 -0.3233 -0.3278 -0.3302 -0.3304 -0.328 -0.323 -0.3154 -0.3054 -0.2934 -0.2797 -0.2647 -0.2488 -0.2326 -0.2164 -0.2005 -0.1854 -0.1714 -0.1588 -0.1479 -0.1391 -0.1329 -0.1296 -0.1298 -0.1341 -0.1432 -0.1579 -0.1794 -0.2088 -0.248 -0.299 -0.3648 -0.4496 -0.5594 -0.7032 -0.8943 -1.153 -1.504 -1.961 -2.445 -2.654 -2.376 -1.88 -1.435 -1.096 -0.8443 -0.6549 -0.5088 -0.3929 -0.2988 -0.2205 -0.1539 -0.09581 -0.0434 0.006712 0.06178 0.1538 0.2209 0.1584 0.1574 0.1678 0.1808 0.1937 0.2058 0.2166 0.2258 0.2331 0.2384 0.2414 0.2419 0.2396 0.2341 0.225 0.212 0.1946 0.1724 0.1451 0.1126 0.07571 0.03603 -0.002985 -0.03588 -0.05592 -0.05751 -0.03906 -0.003848 0.04198 0.0924 0.1432 0.192 0.2381 0.2814 0.3224 0.3617 0.4 0.4382 0.4767 0.5164 0.5575 0.6005 0.6451 0.6907 0.7359 0.7779 0.8131 0.8367 0.8443 0.8334 0.804 0.7596 0.7053 0.6465 0.5882 0.5338 0.4858 0.4455 0.4138 0.3907 0.376 0.3691 0.3693 0.3754 0.3861 0.4002 0.4163 0.4332 0.4502 0.4671 0.4841 0.5018 0.5197 0.5334 0.5351 0.5235 0.5067 0.4915 0.4802 0.4728 0.4687 0.4673 0.4682 0.4708 0.475 0.4805 0.487 0.4945 0.5027 0.5116 0.521 0.5308 0.541 0.5514 0.5621 0.5728 0.5836 0.5944 0.6051 0.6157 0.626 0.6362 0.6461 0.6559 0.6658 0.676 0.6867 0.6984 0.7112 0.7251 0.7399 0.7557 0.7723 0.7899 0.8087 0.829 0.8512 0.876 0.9039 0.9357 0.9725 1.016 1.067 1.128 1.202 1.294 1.41 1.557 1.748 1.997 2.315 2.679 2.968 2.983 2.709 2.341 2.012 1.751 1.55 1.393 1.27 1.172 1.091
--0.1116 -0.1365 -0.1624 -0.1891 -0.2162 -0.2435 -0.2703 -0.2961 -0.3201 -0.3416 -0.3599 -0.3741 -0.3838 -0.3887 -0.3889 -0.3847 -0.3766 -0.3655 -0.352 -0.337 -0.3212 -0.3053 -0.2898 -0.275 -0.2613 -0.2487 -0.2376 -0.2278 -0.2194 -0.2124 -0.2068 -0.2024 -0.1994 -0.1975 -0.1967 -0.197 -0.1982 -0.2005 -0.2036 -0.2076 -0.2124 -0.218 -0.2244 -0.2315 -0.2394 -0.2479 -0.2571 -0.2669 -0.2773 -0.2882 -0.2994 -0.3108 -0.3223 -0.3335 -0.3442 -0.3538 -0.362 -0.3683 -0.3721 -0.373 -0.3707 -0.365 -0.3561 -0.3441 -0.3295 -0.3128 -0.2946 -0.2755 -0.2559 -0.2363 -0.2172 -0.199 -0.182 -0.1665 -0.1529 -0.1415 -0.1329 -0.1273 -0.1255 -0.1281 -0.1358 -0.1497 -0.1708 -0.2006 -0.2411 -0.2948 -0.3652 -0.4575 -0.5796 -0.7442 -0.9731 -1.306 -1.819 -2.663 -4.007 -4.911 -3.774 -2.502 -1.721 -1.241 -0.925 -0.7026 -0.5382 -0.4116 -0.3106 -0.2278 -0.1581 -0.09765 -0.04348 0.007959 0.06366 0.1501 0.209 0.1626 0.1634 0.1748 0.1885 0.2021 0.2149 0.2262 0.2359 0.2436 0.2491 0.2521 0.2524 0.2494 0.2428 0.2319 0.2162 0.1949 0.1671 0.132 0.08875 0.03715 -0.02167 -0.08369 -0.1403 -0.1783 -0.1849 -0.1564 -0.1011 -0.03236 0.0386 0.1058 0.1671 0.2225 0.2729 0.3195 0.3636 0.4063 0.4488 0.4921 0.5373 0.5852 0.6366 0.6918 0.7507 0.8117 0.8716 0.9248 0.9633 0.9786 0.965 0.9228 0.8579 0.7799 0.6978 0.6187 0.5472 0.4857 0.4356 0.3971 0.3702 0.3543 0.3485 0.3517 0.3623 0.3787 0.399 0.4212 0.4437 0.4654 0.4863 0.5079 0.5332 0.566 0.601 0.6058 0.5703 0.5314 0.5037 0.4857 0.4747 0.4686 0.4662 0.4665 0.469 0.4733 0.4791 0.4861 0.494 0.5028 0.5123 0.5224 0.533 0.5439 0.5551 0.5664 0.5779 0.5894 0.6008 0.612 0.623 0.6336 0.6439 0.6537 0.6632 0.6725 0.682 0.6922 0.7038 0.7171 0.7318 0.7476 0.7643 0.7816 0.7998 0.8189 0.8395 0.8621 0.8871 0.9155 0.948 0.9858 1.031 1.084 1.149 1.229 1.331 1.461 1.635 1.874 2.217 2.729 3.488 4.345 4.406 3.576 2.785 2.244 1.882 1.629 1.445 1.305 1.196 1.109
--0.1297 -0.1577 -0.187 -0.2175 -0.2489 -0.2807 -0.3124 -0.3432 -0.3722 -0.3982 -0.4202 -0.4372 -0.4484 -0.4533 -0.4521 -0.4452 -0.4334 -0.4179 -0.3997 -0.3799 -0.3596 -0.3394 -0.32 -0.3019 -0.2852 -0.2702 -0.257 -0.2455 -0.2358 -0.2277 -0.2213 -0.2164 -0.2129 -0.2108 -0.2099 -0.2102 -0.2117 -0.2142 -0.2177 -0.2222 -0.2276 -0.2339 -0.241 -0.249 -0.2579 -0.2675 -0.278 -0.2893 -0.3013 -0.314 -0.3273 -0.341 -0.355 -0.3689 -0.3824 -0.395 -0.4059 -0.4146 -0.4203 -0.4224 -0.4204 -0.414 -0.4033 -0.3887 -0.3708 -0.3504 -0.3282 -0.3049 -0.2812 -0.2577 -0.2348 -0.2129 -0.1924 -0.1735 -0.1567 -0.1423 -0.1307 -0.1224 -0.118 -0.1182 -0.1238 -0.136 -0.1558 -0.185 -0.2256 -0.2803 -0.353 -0.4493 -0.5782 -0.7549 -1.006 -1.388 -2.027 -3.304 -6.981 -18.75 -6.036 -3.035 -1.907 -1.323 -0.9656 -0.7245 -0.5504 -0.4182 -0.3139 -0.2289 -0.1577 -0.09632 -0.04192 0.008229 0.05687 0.1044 0.1378 0.1528 0.1662 0.1813 0.1968 0.2116 0.2252 0.2373 0.2477 0.256 0.2619 0.2653 0.2655 0.2622 0.2546 0.2422 0.224 0.1988 0.1651 0.1213 0.06515 -0.005508 -0.09197 -0.1919 -0.2934 -0.3699 -0.3875 -0.3354 -0.2379 -0.128 -0.02505 0.06467 0.1414 0.2073 0.2652 0.3175 0.3661 0.413 0.4598 0.5079 0.5588 0.614 0.675 0.7432 0.8192 0.9025 0.9899 1.074 1.14 1.171 1.155 1.091 0.9915 0.8757 0.759 0.6512 0.5572 0.4789 0.417 0.371 0.3402 0.3238 0.3203 0.3282 0.3456 0.3703 0.3995 0.4303 0.4603 0.4876 0.5124 0.5375 0.5706 0.6308 0.7598 0.8072 0.6457 0.5579 0.5136 0.4888 0.4745 0.4667 0.4635 0.4635 0.4661 0.4707 0.4769 0.4844 0.493 0.5025 0.5128 0.5237 0.535 0.5468 0.5588 0.571 0.5833 0.5955 0.6076 0.6195 0.631 0.6419 0.6523 0.6618 0.6706 0.6787 0.6867 0.6957 0.7069 0.7208 0.7371 0.7547 0.7727 0.791 0.8096 0.829 0.8497 0.8721 0.8971 0.9254 0.958 0.9961 1.041 1.096 1.163 1.247 1.354 1.494 1.686 1.961 2.385 3.115 4.601 8.209 8.735 4.839 3.21 2.425 1.973 1.681 1.476 1.326 1.211 1.119
--0.1485 -0.1797 -0.213 -0.2479 -0.2844 -0.3219 -0.3598 -0.3971 -0.4326 -0.4647 -0.492 -0.5128 -0.5259 -0.5308 -0.5275 -0.5168 -0.4998 -0.4783 -0.4537 -0.4278 -0.4016 -0.3761 -0.3521 -0.3299 -0.3099 -0.2921 -0.2766 -0.2632 -0.2521 -0.2429 -0.2356 -0.2301 -0.2263 -0.224 -0.2231 -0.2235 -0.2252 -0.228 -0.232 -0.237 -0.243 -0.25 -0.258 -0.2669 -0.2769 -0.2878 -0.2997 -0.3126 -0.3264 -0.3412 -0.3569 -0.3734 -0.3904 -0.4077 -0.4249 -0.4412 -0.456 -0.4681 -0.4767 -0.4806 -0.4791 -0.4718 -0.4589 -0.4408 -0.4186 -0.3933 -0.366 -0.3376 -0.309 -0.2807 -0.2533 -0.2271 -0.2026 -0.1798 -0.1593 -0.1412 -0.1261 -0.1144 -0.1067 -0.1038 -0.1066 -0.1161 -0.1338 -0.1611 -0.2003 -0.2541 -0.3263 -0.4224 -0.5514 -0.7276 -0.9775 -1.353 -1.974 -3.175 -6.202 -11.45 -5.497 -2.934 -1.869 -1.302 -0.9521 -0.7145 -0.5423 -0.4113 -0.3077 -0.2232 -0.1523 -0.09142 -0.03786 0.01032 0.05422 0.0933 0.1251 0.1496 0.17 0.1886 0.2061 0.2223 0.2371 0.2502 0.2614 0.2705 0.2772 0.2811 0.2817 0.2783 0.2704 0.2568 0.2364 0.2077 0.1684 0.1158 0.04555 -0.04796 -0.1721 -0.3335 -0.5258 -0.699 -0.7471 -0.6278 -0.4321 -0.246 -0.09501 0.02349 0.1176 0.1944 0.2595 0.3169 0.3696 0.4202 0.4708 0.5233 0.5798 0.6426 0.7141 0.7972 0.8947 1.009 1.138 1.275 1.396 1.465 1.446 1.339 1.176 0.998 0.8295 0.6824 0.5598 0.4613 0.3858 0.3316 0.2973 0.2812 0.2818 0.2969 0.3243 0.361 0.4033 0.4469 0.4874 0.5216 0.5491 0.5735 0.6061 0.6798 1.003 1.523 0.6991 0.5698 0.5159 0.4873 0.4711 0.4625 0.4589 0.459 0.4619 0.4669 0.4738 0.482 0.4914 0.5018 0.5129 0.5247 0.537 0.5497 0.5626 0.5758 0.589 0.6022 0.6151 0.6277 0.6398 0.6512 0.6616 0.6707 0.6783 0.6843 0.6893 0.695 0.7048 0.7205 0.7402 0.7609 0.7811 0.8006 0.8197 0.8392 0.8595 0.8816 0.906 0.9336 0.9656 1.003 1.048 1.102 1.169 1.253 1.361 1.503 1.698 1.981 2.425 3.217 5.006 12.37 14.57 5.327 3.324 2.467 1.993 1.691 1.483 1.33 1.213 1.121
--0.1675 -0.2025 -0.2402 -0.2804 -0.3229 -0.3674 -0.4131 -0.4589 -0.5031 -0.5437 -0.5783 -0.6047 -0.6208 -0.6256 -0.6191 -0.6027 -0.5783 -0.5484 -0.5153 -0.4812 -0.4475 -0.4155 -0.3858 -0.359 -0.335 -0.3141 -0.296 -0.2807 -0.268 -0.2577 -0.2496 -0.2436 -0.2394 -0.237 -0.2361 -0.2367 -0.2387 -0.2419 -0.2463 -0.2519 -0.2586 -0.2664 -0.2753 -0.2853 -0.2964 -0.3086 -0.3221 -0.3367 -0.3526 -0.3698 -0.3883 -0.4079 -0.4287 -0.4502 -0.472 -0.4934 -0.5134 -0.5306 -0.5434 -0.5502 -0.5498 -0.5415 -0.5255 -0.5026 -0.4745 -0.4427 -0.4087 -0.3739 -0.3392 -0.3053 -0.2727 -0.2416 -0.2124 -0.1852 -0.1604 -0.1382 -0.1189 -0.1031 -0.09141 -0.08456 -0.08351 -0.08942 -0.1037 -0.1279 -0.1643 -0.2152 -0.2843 -0.3763 -0.4987 -0.6629 -0.8886 -1.21 -1.689 -2.43 -3.472 -4.077 -3.314 -2.314 -1.629 -1.186 -0.887 -0.6737 -0.5146 -0.3912 -0.2923 -0.2108 -0.1421 -0.08274 -0.03067 0.01571 0.05722 0.09398 0.1257 0.1528 0.1764 0.1975 0.2168 0.2345 0.2505 0.2648 0.2772 0.2875 0.2952 0.3 0.3014 0.2985 0.2907 0.2766 0.2548 0.2234 0.1796 0.1192 0.03573 -0.08128 -0.2499 -0.5012 -0.8782 -1.353 -1.529 -1.145 -0.6937 -0.375 -0.1608 -0.01088 0.09985 0.1862 0.2572 0.3185 0.3744 0.4278 0.4814 0.5376 0.5992 0.669 0.7511 0.8502 0.9728 1.126 1.318 1.548 1.786 1.949 1.931 1.726 1.434 1.149 0.9043 0.7059 0.5486 0.4271 0.3366 0.2741 0.2368 0.2227 0.2296 0.2553 0.2971 0.3513 0.4132 0.4762 0.5327 0.5762 0.6043 0.6209 0.6373 0.6735 0.7565 0.771 0.6407 0.555 0.5076 0.48 0.4639 0.4554 0.4521 0.4527 0.4562 0.462 0.4697 0.4789 0.4892 0.5005 0.5127 0.5255 0.5389 0.5526 0.5667 0.5809 0.5952 0.6094 0.6233 0.6369 0.6497 0.6616 0.6722 0.6809 0.687 0.6896 0.6881 0.6849 0.69 0.711 0.7396 0.7666 0.79 0.8109 0.8305 0.8496 0.8694 0.8905 0.9138 0.9403 0.971 1.007 1.05 1.103 1.167 1.248 1.351 1.486 1.669 1.927 2.314 2.939 4.027 5.695 5.85 4.173 3.012 2.345 1.933 1.658 1.462 1.316 1.204 1.114
--0.1865 -0.2256 -0.2683 -0.3145 -0.3643 -0.4174 -0.473 -0.5298 -0.586 -0.6385 -0.684 -0.7187 -0.7392 -0.7438 -0.7325 -0.7075 -0.6722 -0.6303 -0.5855 -0.5406 -0.4974 -0.4573 -0.4209 -0.3886 -0.3602 -0.3358 -0.3151 -0.2977 -0.2835 -0.272 -0.2632 -0.2566 -0.2522 -0.2497 -0.2489 -0.2498 -0.2521 -0.2558 -0.2608 -0.267 -0.2744 -0.2831 -0.2929 -0.304 -0.3164 -0.33 -0.3451 -0.3617 -0.3798 -0.3996 -0.4212 -0.4446 -0.4697 -0.4964 -0.5243 -0.5525 -0.5798 -0.6043 -0.6237 -0.6353 -0.6369 -0.6273 -0.6067 -0.577 -0.5404 -0.4998 -0.4572 -0.4143 -0.3722 -0.3316 -0.2929 -0.2563 -0.2218 -0.1897 -0.16 -0.1329 -0.1089 -0.08821 -0.07161 -0.05984 -0.05392 -0.05506 -0.06472 -0.08457 -0.1166 -0.1631 -0.2269 -0.3119 -0.4231 -0.5681 -0.7578 -1.008 -1.334 -1.738 -2.137 -2.305 -2.099 -1.702 -1.321 -1.018 -0.7869 -0.6097 -0.4711 -0.3601 -0.269 -0.1926 -0.1273 -0.07045 -0.02029 0.02443 0.06449 0.1003 0.1321 0.1603 0.1855 0.2083 0.2292 0.2483 0.2657 0.2814 0.2953 0.3069 0.3161 0.3224 0.3251 0.3234 0.3163 0.3026 0.2805 0.2478 0.2012 0.1356 0.04277 -0.09204 -0.2984 -0.6438 -1.315 -2.909 -4.29 -2.028 -0.9638 -0.4758 -0.2031 -0.0291 0.09297 0.1852 0.2595 0.3231 0.3806 0.4357 0.4912 0.5501 0.6154 0.6912 0.7824 0.8967 1.045 1.244 1.52 1.905 2.406 2.863 2.862 2.363 1.783 1.317 0.9696 0.71 0.5145 0.3683 0.2625 0.1919 0.1529 0.1428 0.1592 0.1997 0.2616 0.3414 0.4332 0.5274 0.6104 0.6683 0.694 0.6929 0.6791 0.6667 0.6576 0.6302 0.578 0.5277 0.4911 0.4672 0.4528 0.4453 0.4429 0.4444 0.449 0.4558 0.4646 0.4748 0.4863 0.4988 0.5121 0.5261 0.5406 0.5556 0.5709 0.5863 0.6019 0.6173 0.6325 0.6471 0.661 0.6737 0.6848 0.6933 0.6979 0.696 0.6826 0.6517 0.6317 0.6804 0.7354 0.7733 0.8008 0.8229 0.8424 0.8608 0.8794 0.8991 0.9208 0.9455 0.9741 1.008 1.048 1.097 1.158 1.232 1.327 1.448 1.606 1.82 2.113 2.517 3.037 3.512 3.54 3.085 2.551 2.127 1.817 1.59 1.419 1.287 1.183 1.099
--0.205 -0.2486 -0.2968 -0.3499 -0.4081 -0.4715 -0.5397 -0.6112 -0.6839 -0.7538 -0.8156 -0.8633 -0.8909 -0.8951 -0.8761 -0.8376 -0.7857 -0.7266 -0.6655 -0.6062 -0.5509 -0.501 -0.4567 -0.4181 -0.385 -0.3569 -0.3333 -0.3138 -0.2981 -0.2856 -0.276 -0.2691 -0.2645 -0.2621 -0.2615 -0.2627 -0.2654 -0.2696 -0.2753 -0.2822 -0.2905 -0.3 -0.3109 -0.3231 -0.3367 -0.3519 -0.3687 -0.3873 -0.4078 -0.4306 -0.4556 -0.4832 -0.5135 -0.5466 -0.5821 -0.6193 -0.657 -0.6925 -0.7223 -0.7419 -0.7471 -0.7357 -0.7082 -0.6679 -0.6191 -0.566 -0.5119 -0.4588 -0.4078 -0.3594 -0.3138 -0.2709 -0.2307 -0.193 -0.1579 -0.1254 -0.09577 -0.06942 -0.04693 -0.02912 -0.01708 -0.01213 -0.01582 -0.0299 -0.0563 -0.09704 -0.1543 -0.2307 -0.3291 -0.4532 -0.6071 -0.7939 -1.011 -1.24 -1.428 -1.503 -1.427 -1.248 -1.037 -0.8403 -0.6723 -0.5328 -0.4175 -0.3212 -0.2398 -0.1698 -0.1088 -0.05503 -0.007072 0.03603 0.07493 0.1101 0.1419 0.1708 0.197 0.2211 0.2433 0.2638 0.2828 0.3001 0.3156 0.3291 0.3402 0.3485 0.3532 0.3534 0.3481 0.3359 0.3148 0.2824 0.2354 0.1684 0.07277 -0.06732 -0.2845 -0.6581 -1.442 -4.073 -11.2 -2.426 -1.029 -0.488 -0.2015 -0.02295 0.1006 0.1931 0.2674 0.3308 0.3883 0.4436 0.4997 0.5598 0.6273 0.7067 0.8043 0.9298 1.099 1.339 1.705 2.306 3.373 5.052 5.185 3.413 2.184 1.461 0.9986 0.6781 0.4456 0.2754 0.1547 0.07682 0.03777 0.03442 0.06407 0.1245 0.2139 0.3301 0.4682 0.6156 0.7477 0.8318 0.8489 0.8112 0.7494 0.6877 0.6344 0.5859 0.54 0.5005 0.4705 0.4502 0.438 0.4322 0.4313 0.4342 0.4401 0.4483 0.4583 0.4699 0.4826 0.4964 0.511 0.5264 0.5423 0.5586 0.5753 0.5922 0.6091 0.626 0.6426 0.6587 0.6739 0.6878 0.6998 0.7088 0.713 0.708 0.6818 0.5794 0.1691 0.6191 0.736 0.7853 0.8154 0.8376 0.8561 0.8731 0.89 0.9077 0.9272 0.9494 0.9753 1.006 1.043 1.087 1.141 1.208 1.291 1.394 1.524 1.688 1.893 2.138 2.394 2.577 2.584 2.409 2.149 1.894 1.677 1.501 1.36 1.246 1.154 1.077
--0.2227 -0.2709 -0.325 -0.3856 -0.4536 -0.5294 -0.6131 -0.704 -0.7997 -0.8953 -0.9829 -1.052 -1.092 -1.095 -1.063 -1.002 -0.9244 -0.8397 -0.756 -0.6778 -0.6074 -0.5457 -0.4924 -0.4469 -0.4086 -0.3766 -0.3502 -0.3287 -0.3115 -0.2981 -0.288 -0.2809 -0.2763 -0.274 -0.2737 -0.2753 -0.2786 -0.2835 -0.2898 -0.2975 -0.3067 -0.3172 -0.3291 -0.3425 -0.3575 -0.3742 -0.3928 -0.4135 -0.4365 -0.4623 -0.4911 -0.5234 -0.5596 -0.6002 -0.6452 -0.6945 -0.7468 -0.7991 -0.846 -0.8797 -0.8921 -0.878 -0.8388 -0.7812 -0.7135 -0.6427 -0.5733 -0.5074 -0.4458 -0.3885 -0.3351 -0.2854 -0.2389 -0.1951 -0.154 -0.1155 -0.07952 -0.0465 -0.01698 0.008198 0.02787 0.04053 0.04443 0.03762 0.0181 -0.01601 -0.06634 -0.1343 -0.2208 -0.3266 -0.4515 -0.5928 -0.7432 -0.8862 -0.9949 -1.041 -1.012 -0.9228 -0.8031 -0.6771 -0.5585 -0.4524 -0.3594 -0.2782 -0.2069 -0.1439 -0.08771 -0.03724 0.008411 0.04991 0.08777 0.1224 0.1542 0.1835 0.2105 0.2356 0.2591 0.2811 0.3016 0.3208 0.3383 0.3541 0.3677 0.3786 0.3861 0.3892 0.3868 0.3772 0.3587 0.3286 0.2838 0.2194 0.1281 -0.003048 -0.198 -0.5062 -1.033 -1.907 -2.348 -1.499 -0.7939 -0.3925 -0.1502 0.009535 0.1234 0.2103 0.2808 0.3416 0.3973 0.4512 0.5065 0.5661 0.6337 0.7138 0.8134 0.943 1.121 1.382 1.799 2.557 4.309 11.7 14.17 4.51 2.424 1.498 0.9559 0.5917 0.3293 0.1373 0.002174 -0.08199 -0.1189 -0.1119 -0.06427 0.02195 0.1469 0.3129 0.5216 0.7643 1 1.144 1.132 1.008 0.859 0.732 0.6361 0.5655 0.5129 0.4742 0.4471 0.4295 0.4198 0.4161 0.4172 0.4219 0.4295 0.4393 0.4509 0.464 0.4782 0.4935 0.5096 0.5264 0.5438 0.5616 0.5799 0.5984 0.617 0.6356 0.6539 0.6716 0.6886 0.7042 0.7178 0.7284 0.7341 0.7308 0.708 0.6267 0.46 0.6623 0.7614 0.8074 0.8355 0.8558 0.8723 0.887 0.9014 0.9165 0.9332 0.9524 0.9749 1.002 1.034 1.073 1.12 1.178 1.247 1.332 1.434 1.556 1.695 1.844 1.98 2.066 2.067 1.982 1.842 1.686 1.537 1.405 1.293 1.198 1.118 1.05
--0.2387 -0.2916 -0.3518 -0.4206 -0.4993 -0.5894 -0.6923 -0.8083 -0.9361 -1.07 -1.2 -1.307 -1.369 -1.372 -1.315 -1.215 -1.095 -0.972 -0.8567 -0.7541 -0.6653 -0.5899 -0.5265 -0.4738 -0.4301 -0.3943 -0.3652 -0.3419 -0.3235 -0.3094 -0.2989 -0.2917 -0.2873 -0.2853 -0.2855 -0.2877 -0.2917 -0.2973 -0.3044 -0.313 -0.323 -0.3345 -0.3476 -0.3622 -0.3785 -0.3967 -0.4171 -0.44 -0.4656 -0.4945 -0.5273 -0.5646 -0.6074 -0.6565 -0.7132 -0.778 -0.8508 -0.929 -1.005 -1.066 -1.093 -1.074 -1.013 -0.9249 -0.8271 -0.7307 -0.641 -0.5593 -0.4853 -0.4181 -0.3565 -0.2994 -0.2462 -0.196 -0.1484 -0.1031 -0.06004 -0.0193 0.01859 0.05277 0.08196 0.1044 0.118 0.1203 0.109 0.08216 0.03845 -0.0225 -0.1002 -0.193 -0.2981 -0.411 -0.5238 -0.6251 -0.7004 -0.7371 -0.7303 -0.686 -0.6171 -0.5366 -0.4542 -0.3752 -0.3018 -0.2344 -0.1729 -0.1167 -0.06515 -0.0179 0.02552 0.0655 0.1024 0.1366 0.1683 0.1979 0.2256 0.2517 0.2764 0.2999 0.3223 0.3434 0.3634 0.3819 0.3986 0.413 0.4243 0.4314 0.4331 0.4278 0.4133 0.3874 0.347 0.2885 0.2066 0.09353 -0.06242 -0.2773 -0.5598 -0.8531 -0.9528 -0.7586 -0.4741 -0.2379 -0.06449 0.06259 0.1589 0.2353 0.299 0.3551 0.4072 0.4584 0.5113 0.5687 0.634 0.7117 0.8081 0.9334 1.105 1.354 1.745 2.432 3.855 7.302 7.786 3.926 2.227 1.358 0.8177 0.4379 0.1542 -0.05875 -0.2094 -0.2996 -0.3314 -0.3089 -0.2371 -0.1188 0.0487 0.2767 0.5863 1.002 1.494 1.825 1.698 1.329 1.006 0.7843 0.6403 0.5468 0.4855 0.4453 0.4198 0.405 0.398 0.3971 0.4006 0.4075 0.4172 0.4289 0.4423 0.4571 0.473 0.4899 0.5076 0.5261 0.5451 0.5647 0.5847 0.605 0.6255 0.646 0.6664 0.6862 0.7053 0.7232 0.7391 0.7524 0.7614 0.7641 0.7568 0.7377 0.7295 0.7648 0.8079 0.8394 0.8615 0.8779 0.8912 0.9029 0.9141 0.9259 0.9392 0.9547 0.9733 0.9958 1.023 1.056 1.096 1.144 1.201 1.268 1.346 1.434 1.528 1.622 1.699 1.744 1.743 1.695 1.612 1.512 1.409 1.312 1.224 1.146 1.078 1.019
--0.2524 -0.3099 -0.3761 -0.4531 -0.5431 -0.6492 -0.7744 -0.9221 -1.094 -1.287 -1.489 -1.667 -1.776 -1.776 -1.669 -1.496 -1.305 -1.124 -0.9656 -0.8323 -0.7219 -0.6314 -0.5575 -0.4973 -0.4486 -0.4092 -0.3777 -0.3529 -0.3336 -0.3191 -0.3086 -0.3016 -0.2975 -0.2961 -0.297 -0.2999 -0.3046 -0.3111 -0.3191 -0.3286 -0.3396 -0.3522 -0.3663 -0.3821 -0.3998 -0.4196 -0.4417 -0.4666 -0.4948 -0.5268 -0.5635 -0.606 -0.6556 -0.7142 -0.7841 -0.8681 -0.9688 -1.087 -1.215 -1.331 -1.393 -1.364 -1.255 -1.109 -0.962 -0.8289 -0.7131 -0.6129 -0.5253 -0.4474 -0.3772 -0.3127 -0.2525 -0.1956 -0.1411 -0.08852 -0.03742 0.01221 0.06004 0.1053 0.1464 0.1815 0.2077 0.2217 0.2205 0.2014 0.1634 0.1066 0.03326 -0.0533 -0.1485 -0.2467 -0.341 -0.4233 -0.4853 -0.5208 -0.5275 -0.5084 -0.4699 -0.4194 -0.3632 -0.3054 -0.2482 -0.193 -0.14 -0.08973 -0.04232 0.002113 0.04361 0.0823 0.1184 0.1522 0.1839 0.2138 0.2421 0.2692 0.2952 0.3202 0.3445 0.368 0.3908 0.4126 0.4331 0.4519 0.4681 0.4806 0.488 0.4885 0.48 0.4599 0.4257 0.3748 0.3041 0.2106 0.09133 -0.05324 -0.2109 -0.3427 -0.3891 -0.3289 -0.2077 -0.07875 0.03395 0.1266 0.2024 0.2657 0.3206 0.3704 0.4176 0.4647 0.5139 0.5676 0.6287 0.7009 0.7896 0.9027 1.053 1.262 1.567 2.031 2.727 3.504 3.495 2.598 1.718 1.071 0.5911 0.215 -0.08819 -0.3281 -0.5009 -0.5992 -0.6212 -0.5739 -0.4682 -0.3109 -0.09746 0.1951 0.6223 1.31 2.509 3.844 2.968 1.781 1.149 0.8151 0.627 0.5164 0.4499 0.4101 0.3874 0.376 0.3727 0.375 0.3815 0.3912 0.4032 0.4171 0.4326 0.4493 0.4671 0.4857 0.5052 0.5255 0.5463 0.5678 0.5897 0.6121 0.6347 0.6575 0.6802 0.7025 0.7242 0.7449 0.7639 0.7805 0.794 0.8033 0.8082 0.8108 0.8183 0.8359 0.8578 0.8773 0.8925 0.9041 0.9132 0.9209 0.9283 0.9362 0.9454 0.9567 0.9709 0.9885 1.01 1.037 1.069 1.108 1.153 1.205 1.264 1.327 1.391 1.451 1.498 1.523 1.521 1.49 1.437 1.37 1.298 1.225 1.157 1.094 1.037 0.9868
--0.2631 -0.3245 -0.3963 -0.4811 -0.5823 -0.7047 -0.8545 -1.04 -1.269 -1.551 -1.877 -2.205 -2.425 -2.418 -2.193 -1.871 -1.557 -1.291 -1.077 -0.9071 -0.7732 -0.6673 -0.5831 -0.516 -0.4627 -0.4204 -0.3872 -0.3613 -0.3416 -0.327 -0.3168 -0.3103 -0.3069 -0.3062 -0.308 -0.3118 -0.3175 -0.3249 -0.3339 -0.3444 -0.3565 -0.3701 -0.3853 -0.4023 -0.4213 -0.4425 -0.4664 -0.4933 -0.5238 -0.5588 -0.5993 -0.6466 -0.7029 -0.7709 -0.8547 -0.9604 -1.096 -1.273 -1.495 -1.739 -1.898 -1.842 -1.61 -1.344 -1.116 -0.9327 -0.7859 -0.6655 -0.5638 -0.4754 -0.3967 -0.3248 -0.2577 -0.194 -0.1324 -0.07192 -0.01198 0.04782 0.1074 0.1662 0.2227 0.2744 0.3175 0.3474 0.3592 0.3488 0.3147 0.2581 0.1827 0.09423 -0.000853 -0.09598 -0.1847 -0.2611 -0.32 -0.3582 -0.3749 -0.372 -0.3533 -0.3235 -0.2865 -0.2454 -0.2017 -0.1565 -0.1105 -0.0648 -0.02039 0.02203 0.06212 0.09985 0.1353 0.1688 0.2005 0.2307 0.2597 0.2878 0.315 0.3418 0.3681 0.3943 0.4202 0.4459 0.4711 0.4953 0.5178 0.5374 0.5526 0.5611 0.5605 0.548 0.5212 0.478 0.4174 0.3394 0.2459 0.1424 0.04092 -0.03824 -0.07369 -0.05864 -0.006763 0.06102 0.1298 0.1929 0.2489 0.2987 0.3439 0.3863 0.4277 0.4698 0.5143 0.5631 0.6184 0.6831 0.7608 0.8569 0.9788 1.137 1.345 1.611 1.91 2.122 2.051 1.679 1.193 0.7258 0.3066 -0.06914 -0.4056 -0.6934 -0.9081 -1.021 -1.023 -0.9314 -0.7734 -0.5672 -0.3092 0.03182 0.539 1.452 3.844 26.66 5.131 2.082 1.18 0.7815 0.5767 0.4639 0.4005 0.3657 0.3484 0.3422 0.3435 0.35 0.3601 0.3729 0.3877 0.404 0.4217 0.4405 0.4603 0.4809 0.5023 0.5245 0.5473 0.5708 0.5949 0.6195 0.6446 0.6699 0.6953 0.7206 0.7455 0.7694 0.792 0.8127 0.8309 0.846 0.8584 0.8691 0.8805 0.8936 0.9072 0.919 0.928 0.9343 0.9386 0.9416 0.9443 0.9476 0.9521 0.9587 0.9679 0.9804 0.9966 1.017 1.042 1.072 1.107 1.146 1.189 1.234 1.278 1.317 1.346 1.361 1.358 1.337 1.301 1.254 1.202 1.147 1.094 1.043 0.9962 0.9534
--0.27 -0.3346 -0.4109 -0.5022 -0.6133 -0.7507 -0.9245 -1.149 -1.447 -1.85 -2.392 -3.058 -3.61 -3.584 -3.011 -2.36 -1.84 -1.457 -1.178 -0.9706 -0.8139 -0.6939 -0.6008 -0.5282 -0.4714 -0.4271 -0.3928 -0.3666 -0.347 -0.3329 -0.3234 -0.3177 -0.3154 -0.3158 -0.3186 -0.3235 -0.3303 -0.3388 -0.3489 -0.3605 -0.3737 -0.3883 -0.4047 -0.4229 -0.4431 -0.4657 -0.4911 -0.5198 -0.5525 -0.5901 -0.6339 -0.6855 -0.7477 -0.824 -0.9206 -1.047 -1.221 -1.472 -1.851 -2.412 -2.956 -2.778 -2.137 -1.621 -1.273 -1.031 -0.8529 -0.7133 -0.5987 -0.5008 -0.4143 -0.3355 -0.2619 -0.1914 -0.1225 -0.05385 0.01568 0.08696 0.1605 0.236 0.3123 0.3864 0.4534 0.5061 0.5361 0.5364 0.5039 0.4409 0.3545 0.2537 0.148 0.04525 -0.04798 -0.127 -0.1888 -0.232 -0.257 -0.2656 -0.2609 -0.2463 -0.2244 -0.1973 -0.1652 -0.1281 -0.08685 -0.04354 -0.0003752 0.04122 0.08065 0.1178 0.153 0.1863 0.2181 0.2486 0.2782 0.3072 0.3358 0.3643 0.3929 0.4219 0.4515 0.4816 0.5123 0.5432 0.5737 0.6026 0.6281 0.6476 0.6578 0.6552 0.6365 0.6001 0.5462 0.477 0.397 0.3129 0.2342 0.1721 0.1359 0.1288 0.1457 0.1776 0.2161 0.256 0.2948 0.3317 0.3672 0.4019 0.437 0.4735 0.5127 0.5558 0.6045 0.6606 0.7261 0.8037 0.8965 1.007 1.136 1.274 1.392 1.433 1.337 1.097 0.7631 0.3882 -0.002082 -0.4019 -0.8066 -1.193 -1.501 -1.649 -1.603 -1.417 -1.167 -0.8945 -0.596 -0.2372 0.2587 1.072 2.715 5.397 3.449 1.719 0.9962 0.6549 0.4788 0.3846 0.335 0.3111 0.3025 0.3036 0.3109 0.3222 0.3365 0.3528 0.3706 0.3897 0.4098 0.4308 0.4527 0.4753 0.4988 0.523 0.548 0.5738 0.6002 0.6273 0.6551 0.6833 0.7119 0.7406 0.7691 0.797 0.8239 0.8491 0.8722 0.8926 0.9101 0.9252 0.9382 0.9495 0.9587 0.965 0.9684 0.9691 0.9677 0.9652 0.9625 0.9604 0.9596 0.9609 0.9648 0.9717 0.9821 0.9963 1.014 1.036 1.062 1.091 1.122 1.154 1.184 1.21 1.228 1.236 1.233 1.218 1.192 1.158 1.119 1.077 1.036 0.9948 0.9562 0.9202
--0.2724 -0.3391 -0.4185 -0.5143 -0.6324 -0.7813 -0.9741 -1.233 -1.596 -2.136 -2.997 -4.441 -6.381 -6.243 -4.296 -2.921 -2.105 -1.594 -1.253 -1.013 -0.838 -0.7074 -0.6082 -0.5321 -0.4735 -0.4285 -0.3942 -0.3684 -0.3497 -0.3366 -0.3283 -0.3239 -0.3229 -0.3247 -0.3288 -0.3351 -0.3432 -0.353 -0.3643 -0.3771 -0.3913 -0.4071 -0.4245 -0.4438 -0.4652 -0.489 -0.5158 -0.546 -0.5805 -0.6204 -0.6668 -0.7219 -0.7885 -0.871 -0.9767 -1.118 -1.321 -1.637 -2.2 -3.441 -6.596 -5.116 -2.788 -1.87 -1.399 -1.109 -0.9063 -0.7524 -0.6281 -0.5226 -0.4296 -0.3447 -0.265 -0.1882 -0.1122 -0.03514 0.04454 0.1285 0.2181 0.3141 0.4161 0.5214 0.6235 0.7114 0.77 0.7852 0.7505 0.6706 0.5589 0.4312 0.3013 0.1798 0.07317 -0.01495 -0.08347 -0.1329 -0.1651 -0.1825 -0.1882 -0.1854 -0.1768 -0.1634 -0.1432 -0.1129 -0.07266 -0.02774 0.01699 0.05938 0.09902 0.1361 0.1711 0.2043 0.2362 0.2671 0.2974 0.3273 0.3572 0.3875 0.4185 0.4506 0.4841 0.5192 0.5563 0.5953 0.6358 0.6769 0.7164 0.7513 0.7767 0.7873 0.7781 0.7468 0.6943 0.6256 0.5473 0.4674 0.3936 0.3332 0.2912 0.2692 0.2648 0.2738 0.2911 0.3131 0.3375 0.3629 0.3891 0.4163 0.4449 0.4756 0.5091 0.5465 0.5884 0.6359 0.6896 0.7503 0.8179 0.8907 0.9639 1.026 1.057 1.028 0.9151 0.7117 0.431 0.08931 -0.3069 -0.7647 -1.297 -1.892 -2.441 -2.685 -2.493 -2.077 -1.656 -1.287 -0.951 -0.6025 -0.1838 0.3735 1.091 1.644 1.478 1.003 0.6531 0.4493 0.338 0.2806 0.2545 0.2469 0.2504 0.2607 0.2751 0.2922 0.311 0.3312 0.3523 0.3741 0.3968 0.4201 0.4442 0.4691 0.4947 0.5211 0.5484 0.5765 0.6055 0.6354 0.6661 0.6976 0.7298 0.7624 0.7952 0.8279 0.8598 0.8903 0.9187 0.9444 0.9667 0.9852 0.9996 1.01 1.016 1.017 1.015 1.009 1.001 0.9923 0.9831 0.9747 0.968 0.9634 0.9615 0.9627 0.9672 0.9753 0.9868 1.002 1.02 1.04 1.062 1.083 1.104 1.121 1.132 1.137 1.133 1.122 1.102 1.077 1.048 1.015 0.9825 0.9497 0.9179 0.8877
--0.27 -0.3374 -0.4179 -0.5156 -0.6369 -0.791 -0.9935 -1.271 -1.672 -2.305 -3.442 -6.051 -16.51 -14.66 -5.708 -3.322 -2.256 -1.659 -1.281 -1.024 -0.8399 -0.7047 -0.6033 -0.5265 -0.4681 -0.4239 -0.3908 -0.3665 -0.3493 -0.338 -0.3314 -0.3288 -0.3295 -0.333 -0.3389 -0.3467 -0.3563 -0.3675 -0.3802 -0.3942 -0.4096 -0.4265 -0.4449 -0.4652 -0.4876 -0.5125 -0.5404 -0.572 -0.608 -0.6495 -0.6979 -0.7553 -0.8245 -0.91 -1.019 -1.166 -1.375 -1.705 -2.31 -3.785 -10.83 -6.475 -2.983 -1.951 -1.453 -1.15 -0.9401 -0.7803 -0.6507 -0.5402 -0.4423 -0.3525 -0.2676 -0.1849 -0.1022 -0.01696 0.07307 0.1705 0.2782 0.3987 0.5338 0.6827 0.8388 0.9855 1.095 1.135 1.09 0.9733 0.8117 0.6343 0.4619 0.3082 0.1795 0.07719 -0.0003704 -0.05633 -0.0943 -0.1181 -0.1315 -0.1386 -0.1434 -0.1479 -0.1467 -0.1229 -0.07406 -0.01897 0.0317 0.07676 0.1174 0.1547 0.1897 0.2229 0.2549 0.2862 0.317 0.3478 0.379 0.4111 0.4445 0.4797 0.5174 0.558 0.6024 0.6509 0.7038 0.7605 0.8194 0.8764 0.9248 0.9552 0.9584 0.9293 0.8706 0.7912 0.7021 0.6136 0.5332 0.4659 0.4148 0.3802 0.3607 0.3534 0.3552 0.3632 0.3756 0.391 0.4087 0.4286 0.4508 0.4757 0.5037 0.5354 0.5711 0.611 0.6549 0.702 0.7504 0.7964 0.8338 0.8524 0.8379 0.7741 0.6473 0.4507 0.1834 -0.1563 -0.5804 -1.122 -1.85 -2.869 -4.159 -4.804 -3.992 -2.943 -2.21 -1.718 -1.353 -1.035 -0.7045 -0.3308 0.05998 0.3506 0.432 0.3651 0.2718 0.2056 0.171 0.1597 0.1633 0.1759 0.1938 0.2146 0.2371 0.2604 0.2842 0.3083 0.3328 0.3576 0.3828 0.4085 0.4349 0.462 0.4898 0.5185 0.5482 0.5789 0.6107 0.6435 0.6776 0.7127 0.749 0.7861 0.824 0.8622 0.9001 0.937 0.9719 1.004 1.031 1.054 1.07 1.079 1.082 1.078 1.069 1.056 1.04 1.023 1.007 0.9909 0.9773 0.9662 0.9581 0.9533 0.952 0.9541 0.9596 0.9681 0.9793 0.9925 1.007 1.021 1.035 1.046 1.053 1.055 1.051 1.042 1.027 1.008 0.9852 0.9602 0.9341 0.9076 0.8816 0.8564
--0.2624 -0.3291 -0.4086 -0.5052 -0.6249 -0.777 -0.9766 -1.249 -1.643 -2.256 -3.336 -5.652 -11.99 -11.19 -5.36 -3.219 -2.203 -1.622 -1.251 -0.9971 -0.8163 -0.6837 -0.5848 -0.5104 -0.4546 -0.4129 -0.3823 -0.3606 -0.3459 -0.337 -0.3328 -0.3325 -0.3354 -0.341 -0.3488 -0.3585 -0.3699 -0.3827 -0.3968 -0.4121 -0.4287 -0.4467 -0.4662 -0.4874 -0.5106 -0.5364 -0.5653 -0.5978 -0.6349 -0.6775 -0.7272 -0.7857 -0.8558 -0.9413 -1.049 -1.189 -1.381 -1.663 -2.114 -2.873 -3.804 -3.477 -2.486 -1.831 -1.426 -1.154 -0.9539 -0.7968 -0.6665 -0.5538 -0.4528 -0.3593 -0.27 -0.1824 -0.09357 -0.0007776 0.09922 0.2103 0.3372 0.4857 0.662 0.8712 1.112 1.364 1.575 1.666 1.593 1.394 1.136 0.8722 0.6304 0.4274 0.2678 0.1479 0.06093 -0.0002523 -0.04187 -0.06936 -0.08776 -0.1026 -0.1212 -0.1553 -0.2107 -0.2019 -0.101 -0.01616 0.0455 0.09439 0.1362 0.1739 0.2088 0.242 0.274 0.3055 0.3368 0.3684 0.4008 0.4346 0.4703 0.5086 0.5505 0.597 0.6493 0.7086 0.7763 0.8532 0.9386 1.029 1.114 1.178 1.201 1.17 1.091 0.9831 0.8672 0.7571 0.6604 0.5804 0.5176 0.4712 0.4393 0.4195 0.4092 0.4061 0.4085 0.4151 0.4251 0.4381 0.4542 0.4735 0.4962 0.5228 0.5532 0.5872 0.624 0.6618 0.6977 0.7272 0.7437 0.7381 0.6996 0.6167 0.4792 0.2797 0.01115 -0.3375 -0.7916 -1.411 -2.342 -4.004 -7.823 -12.3 -6.523 -3.863 -2.729 -2.137 -1.778 -1.516 -1.274 -1.008 -0.7185 -0.4535 -0.2629 -0.1505 -0.08617 -0.04204 -0.004273 0.03182 0.06718 0.1017 0.135 0.1671 0.1979 0.2276 0.2564 0.2846 0.3124 0.34 0.3678 0.396 0.4246 0.454 0.4841 0.5152 0.5474 0.5808 0.6155 0.6516 0.6892 0.7284 0.7693 0.8117 0.8555 0.9003 0.9456 0.9904 1.033 1.073 1.108 1.135 1.153 1.162 1.161 1.151 1.133 1.111 1.086 1.059 1.033 1.009 0.9874 0.9692 0.9545 0.9435 0.9362 0.9326 0.9324 0.9353 0.9408 0.9482 0.9569 0.9659 0.9742 0.9808 0.9848 0.9853 0.9818 0.9742 0.9627 0.9478 0.9302 0.9106 0.8898 0.8685 0.8473 0.8264
--0.25 -0.3144 -0.3909 -0.4833 -0.5969 -0.7399 -0.9246 -1.171 -1.513 -2.011 -2.77 -3.925 -5.219 -5.134 -3.807 -2.69 -1.963 -1.487 -1.163 -0.9336 -0.7671 -0.644 -0.5522 -0.4836 -0.4327 -0.3954 -0.3688 -0.3507 -0.3395 -0.3338 -0.3326 -0.3351 -0.3407 -0.3487 -0.3589 -0.3707 -0.3841 -0.3987 -0.4144 -0.4312 -0.449 -0.4681 -0.4884 -0.5104 -0.5344 -0.5609 -0.5903 -0.6235 -0.6613 -0.7047 -0.755 -0.8139 -0.8835 -0.9668 -1.068 -1.195 -1.357 -1.568 -1.846 -2.173 -2.407 -2.322 -1.99 -1.64 -1.356 -1.132 -0.9533 -0.8047 -0.6771 -0.5643 -0.4616 -0.3655 -0.273 -0.1813 -0.08751 0.01174 0.1205 0.2441 0.3897 0.5673 0.791 1.079 1.45 1.902 2.35 2.573 2.409 2.007 1.569 1.157 0.8029 0.528 0.3298 0.1922 0.09838 0.03536 -0.006441 -0.03419 -0.05397 -0.07249 -0.101 -0.1707 -0.4597 -0.6426 -0.1424 -0.008967 0.0626 0.1139 0.1562 0.1938 0.2284 0.2614 0.2934 0.325 0.3567 0.3889 0.4224 0.4576 0.4954 0.5367 0.5827 0.6349 0.6953 0.7663 0.8509 0.9525 1.074 1.215 1.365 1.494 1.555 1.512 1.382 1.213 1.047 0.8999 0.7783 0.6807 0.6045 0.5467 0.5042 0.4742 0.4542 0.442 0.436 0.4348 0.4378 0.4443 0.4545 0.4683 0.4862 0.5083 0.5347 0.5649 0.5978 0.6312 0.6616 0.6838 0.6911 0.6749 0.6254 0.5328 0.3881 0.1833 -0.09013 -0.4462 -0.9142 -1.56 -2.553 -4.426 -9.974 -28.33 -7.69 -4.27 -3.055 -2.491 -2.209 -2.059 -1.937 -1.754 -1.473 -1.142 -0.8343 -0.5896 -0.4083 -0.2749 -0.1736 -0.09348 -0.02765 0.02818 0.07671 0.1198 0.1588 0.1947 0.2282 0.2602 0.2912 0.3216 0.3519 0.3823 0.4132 0.4449 0.4774 0.511 0.5458 0.582 0.6198 0.6594 0.7009 0.7445 0.7905 0.8388 0.8895 0.9423 0.9967 1.052 1.105 1.156 1.2 1.234 1.257 1.265 1.259 1.24 1.212 1.177 1.139 1.1 1.063 1.029 0.9983 0.9721 0.9502 0.9328 0.9197 0.9105 0.9051 0.9029 0.9035 0.9061 0.9102 0.915 0.9196 0.9232 0.9251 0.9246 0.9214 0.9153 0.9063 0.8947 0.8811 0.8657 0.8493 0.8322 0.8149 0.7978
--0.233 -0.2938 -0.3655 -0.4512 -0.5551 -0.6834 -0.845 -1.052 -1.324 -1.682 -2.144 -2.675 -3.081 -3.057 -2.623 -2.09 -1.637 -1.29 -1.031 -0.839 -0.695 -0.5871 -0.5064 -0.4464 -0.4026 -0.3714 -0.3502 -0.3369 -0.33 -0.3283 -0.3308 -0.3368 -0.3455 -0.3565 -0.3693 -0.3837 -0.3993 -0.4159 -0.4334 -0.4517 -0.4708 -0.4909 -0.5121 -0.5348 -0.5593 -0.5861 -0.6159 -0.6495 -0.6876 -0.7313 -0.7819 -0.8406 -0.9092 -0.9897 -1.084 -1.197 -1.329 -1.482 -1.65 -1.805 -1.888 -1.843 -1.687 -1.484 -1.285 -1.105 -0.9471 -0.8084 -0.6849 -0.573 -0.4696 -0.3719 -0.2771 -0.1825 -0.08509 0.01892 0.1343 0.2677 0.4286 0.6321 0.902 1.279 1.83 2.654 3.761 4.478 3.895 2.92 2.182 1.519 0.9639 0.5876 0.35 0.2015 0.1083 0.04972 0.01275 -0.01099 -0.02783 -0.04419 -0.07009 -0.1306 -0.3122 -0.3675 -0.09819 0.01927 0.08711 0.1367 0.1779 0.2146 0.2487 0.2813 0.313 0.3446 0.3765 0.4092 0.4434 0.4798 0.5193 0.5631 0.6126 0.6701 0.7381 0.8206 0.9229 1.053 1.22 1.436 1.703 1.98 2.141 2.058 1.791 1.493 1.239 1.039 0.8852 0.7675 0.6774 0.6088 0.5571 0.5187 0.4908 0.4711 0.4579 0.4499 0.4463 0.4467 0.4509 0.4594 0.4725 0.4907 0.5144 0.5432 0.5759 0.6101 0.642 0.6661 0.675 0.6595 0.6095 0.5145 0.3657 0.1556 -0.1231 -0.4818 -0.9432 -1.554 -2.417 -3.747 -5.818 -7.115 -5.474 -3.95 -3.142 -2.762 -2.649 -2.713 -2.828 -2.77 -2.405 -1.874 -1.375 -0.9821 -0.6931 -0.4825 -0.3267 -0.2083 -0.1156 -0.04066 0.02159 0.07464 0.121 0.1624 0.2002 0.2356 0.2694 0.3023 0.3348 0.3675 0.4006 0.4345 0.4694 0.5056 0.5431 0.5823 0.6233 0.6665 0.7121 0.7606 0.8121 0.8671 0.9258 0.9882 1.054 1.122 1.19 1.256 1.314 1.36 1.389 1.397 1.383 1.352 1.308 1.256 1.201 1.147 1.096 1.05 1.009 0.9743 0.9449 0.9208 0.9018 0.8873 0.877 0.8703 0.8667 0.8654 0.8659 0.8675 0.8694 0.8709 0.8714 0.8705 0.8677 0.8628 0.8559 0.8471 0.8366 0.8247 0.8119 0.7984 0.7845 0.7706
diff --git a/benchmarks/CUDA/CP/benchmarks/cp/output/small/ref.txt b/benchmarks/CUDA/CP/benchmarks/cp/output/small/ref.txt
deleted file mode 100644
index eab02a3..0000000
--- a/benchmarks/CUDA/CP/benchmarks/cp/output/small/ref.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-128 128 1 100
-1.043e+04
--1.278 -1.387 -1.5 -1.61 -1.707 -1.781 -1.823 -1.829 -1.804 -1.756 -1.696 -1.635 -1.576 -1.525 -1.482 -1.448 -1.422 -1.404 -1.393 -1.388 -1.39 -1.396 -1.408 -1.423 -1.441 -1.458 -1.471 -1.473 -1.458 -1.42 -1.355 -1.268 -1.164 -1.05 -0.9316 -0.8143 -0.7013 -0.5957 -0.5004 -0.4184 -0.3522 -0.3032 -0.2712 -0.2545 -0.2499 -0.2536 -0.2622 -0.2729 -0.2836 -0.2931 -0.3001 -0.3025 -0.2934 -0.2211 -0.1883 -0.3291 -0.3749 -0.4132 -0.4569 -0.513 -0.5879 -0.6893 -0.8262 -1.007 -1.234 -1.477 -1.643 -1.648 -1.545 -1.435 -1.362 -1.329 -1.33 -1.357 -1.404 -1.466 -1.539 -1.617 -1.694 -1.763 -1.812 -1.832 -1.813 -1.751 -1.651 -1.525 -1.397 -1.288 -1.213 -1.167 -1.14 -1.119 -1.097 -1.073 -1.047 -1.02 -0.992 -0.965 -0.9394 -0.9155 -0.8936 -0.8737 -0.8557 -0.8395 -0.8249 -0.8116 -0.7994 -0.7879 -0.777 -0.7662 -0.7554 -0.7443 -0.7327 -0.7204 -0.7074 -0.6934 -0.6786 -0.663 -0.6465 -0.6295 -0.6118 -0.5937 -0.5754 -0.5569 -0.5384 -0.52 -0.5017 -0.4837
--1.384 -1.524 -1.673 -1.824 -1.963 -2.069 -2.124 -2.12 -2.065 -1.979 -1.882 -1.788 -1.705 -1.636 -1.58 -1.538 -1.507 -1.486 -1.475 -1.473 -1.478 -1.491 -1.511 -1.538 -1.57 -1.606 -1.64 -1.664 -1.663 -1.626 -1.547 -1.432 -1.293 -1.144 -0.9933 -0.8455 -0.7042 -0.5726 -0.4542 -0.3532 -0.2738 -0.2188 -0.1879 -0.1781 -0.1839 -0.1991 -0.2185 -0.2381 -0.2556 -0.2697 -0.2797 -0.284 -0.2784 -0.2496 -0.2516 -0.3092 -0.3459 -0.3793 -0.4195 -0.4744 -0.5531 -0.668 -0.8372 -1.088 -1.463 -1.979 -2.4 -2.258 -1.875 -1.606 -1.463 -1.404 -1.398 -1.43 -1.49 -1.57 -1.667 -1.775 -1.886 -1.99 -2.07 -2.109 -2.088 -1.998 -1.839 -1.635 -1.427 -1.266 -1.182 -1.156 -1.154 -1.151 -1.139 -1.119 -1.092 -1.062 -1.032 -1.002 -0.9737 -0.9479 -0.9245 -0.9035 -0.8849 -0.8685 -0.854 -0.841 -0.8293 -0.8185 -0.8082 -0.7981 -0.7879 -0.7772 -0.7658 -0.7535 -0.7401 -0.7256 -0.71 -0.6933 -0.6757 -0.6572 -0.6381 -0.6184 -0.5985 -0.5784 -0.5583 -0.5383 -0.5186 -0.4993
--1.498 -1.676 -1.876 -2.093 -2.306 -2.475 -2.556 -2.527 -2.413 -2.257 -2.099 -1.958 -1.842 -1.75 -1.68 -1.629 -1.593 -1.571 -1.56 -1.561 -1.571 -1.591 -1.621 -1.662 -1.716 -1.78 -1.85 -1.915 -1.948 -1.92 -1.815 -1.651 -1.458 -1.258 -1.062 -0.8752 -0.6978 -0.5321 -0.3822 -0.2545 -0.1566 -0.09442 -0.06838 -0.07268 -0.09727 -0.1316 -0.1675 -0.1999 -0.2265 -0.2466 -0.2605 -0.2682 -0.27 -0.2686 -0.2751 -0.2926 -0.3127 -0.3356 -0.3666 -0.4137 -0.4884 -0.6078 -0.7999 -1.118 -1.688 -2.904 -5.197 -3.619 -2.263 -1.747 -1.535 -1.457 -1.452 -1.495 -1.572 -1.678 -1.806 -1.955 -2.115 -2.275 -2.412 -2.492 -2.478 -2.345 -2.09 -1.737 -1.361 -1.099 -1.035 -1.088 -1.151 -1.184 -1.186 -1.169 -1.141 -1.108 -1.073 -1.04 -1.009 -0.9806 -0.9556 -0.9336 -0.9146 -0.8982 -0.884 -0.8717 -0.8608 -0.851 -0.8417 -0.8326 -0.8232 -0.8132 -0.8022 -0.79 -0.7763 -0.7613 -0.7447 -0.7269 -0.7077 -0.6876 -0.6667 -0.6452 -0.6233 -0.6014 -0.5795 -0.5578 -0.5364 -0.5155
--1.614 -1.838 -2.111 -2.432 -2.782 -3.089 -3.231 -3.14 -2.891 -2.603 -2.346 -2.14 -1.982 -1.865 -1.78 -1.72 -1.68 -1.657 -1.648 -1.651 -1.667 -1.695 -1.737 -1.796 -1.876 -1.98 -2.11 -2.256 -2.374 -2.378 -2.219 -1.954 -1.665 -1.391 -1.137 -0.9012 -0.6786 -0.4679 -0.2732 -0.1048 0.02195 0.09362 0.1075 0.0751 0.01643 -0.04956 -0.1104 -0.1603 -0.1983 -0.2253 -0.2431 -0.2534 -0.2581 -0.2598 -0.2619 -0.266 -0.2716 -0.2799 -0.2951 -0.325 -0.3829 -0.4899 -0.6801 -1.017 -1.662 -3.317 -14.45 -4.529 -2.361 -1.765 -1.545 -1.476 -1.486 -1.547 -1.648 -1.784 -1.953 -2.156 -2.388 -2.638 -2.877 -3.045 -3.065 -2.874 -2.459 -1.821 -1.023 -0.4812 -0.6109 -0.9382 -1.143 -1.229 -1.247 -1.23 -1.197 -1.157 -1.117 -1.079 -1.044 -1.013 -0.9866 -0.9637 -0.9444 -0.9283 -0.9148 -0.9036 -0.8941 -0.8857 -0.8779 -0.8702 -0.8621 -0.853 -0.8427 -0.8307 -0.8168 -0.8011 -0.7835 -0.7641 -0.7432 -0.7211 -0.698 -0.6742 -0.6502 -0.626 -0.602 -0.5783 -0.5551 -0.5324
--1.722 -1.999 -2.362 -2.843 -3.46 -4.119 -4.451 -4.16 -3.563 -3.017 -2.609 -2.32 -2.116 -1.973 -1.874 -1.808 -1.766 -1.743 -1.737 -1.745 -1.766 -1.803 -1.858 -1.936 -2.045 -2.2 -2.42 -2.729 -3.085 -3.219 -2.889 -2.374 -1.915 -1.537 -1.213 -0.9207 -0.6435 -0.3734 -0.1121 0.1242 0.3034 0.3909 0.3765 0.2864 0.1646 0.04627 -0.05103 -0.1237 -0.1745 -0.2082 -0.229 -0.2401 -0.2441 -0.2431 -0.2387 -0.2318 -0.2225 -0.2118 -0.2029 -0.2028 -0.2257 -0.2959 -0.4506 -0.7423 -1.254 -2.123 -3.08 -2.672 -1.973 -1.626 -1.486 -1.457 -1.495 -1.583 -1.712 -1.884 -2.101 -2.371 -2.701 -3.093 -3.524 -3.898 -4.024 -3.748 -3.082 -1.974 0.05666 2.326 0.4224 -0.7656 -1.183 -1.314 -1.332 -1.305 -1.26 -1.21 -1.162 -1.118 -1.079 -1.045 -1.017 -0.9935 -0.9742 -0.9588 -0.9465 -0.9369 -0.9292 -0.9228 -0.9171 -0.9114 -0.9051 -0.8975 -0.8881 -0.8765 -0.8626 -0.846 -0.8271 -0.8059 -0.7827 -0.7581 -0.7323 -0.7059 -0.6791 -0.6524 -0.6259 -0.5999 -0.5746 -0.55
--1.809 -2.136 -2.593 -3.278 -4.375 -6.093 -7.374 -6.082 -4.456 -3.451 -2.851 -2.476 -2.231 -2.068 -1.96 -1.891 -1.85 -1.83 -1.828 -1.841 -1.869 -1.914 -1.981 -2.076 -2.214 -2.42 -2.749 -3.333 -4.447 -5.451 -4.122 -2.901 -2.176 -1.679 -1.283 -0.932 -0.5927 -0.245 0.1191 0.4806 0.7727 0.8963 0.8127 0.5955 0.3523 0.1486 0.001318 -0.09717 -0.16 -0.1984 -0.22 -0.2298 -0.2308 -0.2248 -0.2125 -0.1937 -0.1676 -0.1332 -0.09079 -0.04396 -0.005137 -0.003262 -0.08718 -0.3079 -0.6821 -1.155 -1.536 -1.612 -1.504 -1.409 -1.379 -1.407 -1.482 -1.6 -1.761 -1.97 -2.239 -2.585 -3.037 -3.636 -4.425 -5.329 -5.818 -5.298 -4.182 -2.643 0.8643 35.25 1.087 -0.9072 -1.367 -1.466 -1.45 -1.395 -1.33 -1.266 -1.208 -1.156 -1.113 -1.076 -1.046 -1.022 -1.004 -0.9894 -0.9789 -0.9715 -0.9664 -0.9628 -0.96 -0.9571 -0.9532 -0.9477 -0.9397 -0.9289 -0.9147 -0.8973 -0.8766 -0.853 -0.8271 -0.7993 -0.7703 -0.7405 -0.7105 -0.6807 -0.6514 -0.6227 -0.595 -0.5682
--1.863 -2.219 -2.739 -3.583 -5.216 -9.665 -24.38 -9.411 -5.263 -3.757 -3.009 -2.58 -2.313 -2.143 -2.035 -1.968 -1.932 -1.918 -1.922 -1.941 -1.976 -2.028 -2.104 -2.213 -2.371 -2.612 -3.012 -3.817 -6.321 -49.5 -5.647 -3.307 -2.374 -1.792 -1.341 -0.9373 -0.534 -0.09078 0.4307 1.042 1.629 1.866 1.583 1.054 0.5703 0.2342 0.02818 -0.09221 -0.1611 -0.1992 -0.2182 -0.2241 -0.2203 -0.208 -0.187 -0.1558 -0.1114 -0.04958 0.03561 0.1498 0.2914 0.4308 0.4785 0.3189 -0.04406 -0.4723 -0.8257 -1.038 -1.138 -1.195 -1.256 -1.339 -1.451 -1.599 -1.789 -2.034 -2.351 -2.772 -3.35 -4.195 -5.558 -7.988 -10.52 -8.228 -5.862 -4.21 -2.25 -0.4326 -1.054 -1.615 -1.734 -1.689 -1.596 -1.496 -1.403 -1.321 -1.251 -1.192 -1.144 -1.105 -1.074 -1.05 -1.032 -1.02 -1.012 -1.008 -1.006 -1.006 -1.007 -1.008 -1.008 -1.005 -0.9991 -0.9893 -0.9751 -0.9564 -0.9335 -0.9069 -0.8773 -0.8455 -0.8123 -0.7784 -0.7445 -0.711 -0.6783 -0.6466 -0.6162 -0.587
--1.875 -2.23 -2.744 -3.571 -5.133 -9.032 -17.21 -8.842 -5.192 -3.755 -3.029 -2.611 -2.355 -2.194 -2.096 -2.04 -2.013 -2.009 -2.022 -2.048 -2.089 -2.147 -2.228 -2.344 -2.512 -2.761 -3.149 -3.825 -5.195 -6.692 -4.781 -3.298 -2.453 -1.865 -1.386 -0.9451 -0.4868 0.05542 0.7881 1.888 3.43 4.209 3.108 1.718 0.7532 0.2464 -0.000687 -0.1226 -0.1837 -0.2134 -0.2249 -0.2244 -0.2143 -0.195 -0.1654 -0.1222 -0.06019 0.02978 0.1627 0.3632 0.6671 1.094 1.487 1.371 0.7504 0.1168 -0.3513 -0.6637 -0.8677 -1.013 -1.136 -1.262 -1.405 -1.578 -1.793 -2.065 -2.42 -2.898 -3.571 -4.598 -6.435 -11.33 -150.7 -12.02 -7.632 -6.339 -5.329 -3.991 -3.026 -2.512 -2.186 -1.943 -1.751 -1.597 -1.472 -1.371 -1.289 -1.223 -1.17 -1.129 -1.098 -1.075 -1.059 -1.05 -1.045 -1.045 -1.048 -1.053 -1.06 -1.066 -1.07 -1.071 -1.068 -1.06 -1.046 -1.026 -0.9998 -0.969 -0.9345 -0.8974 -0.8589 -0.82 -0.7813 -0.7434 -0.7068 -0.6716 -0.6381 -0.6062
--1.847 -2.17 -2.615 -3.265 -4.262 -5.697 -6.658 -5.71 -4.366 -3.468 -2.917 -2.573 -2.357 -2.223 -2.145 -2.107 -2.097 -2.108 -2.132 -2.167 -2.213 -2.273 -2.356 -2.473 -2.642 -2.885 -3.227 -3.685 -4.193 -4.376 -3.883 -3.138 -2.47 -1.913 -1.427 -0.9679 -0.479 0.1266 1.036 2.791 7.645 14.62 6.473 2.568 0.661 0.08151 -0.1194 -0.1979 -0.23 -0.241 -0.2401 -0.2307 -0.2134 -0.1874 -0.1502 -0.09723 -0.02094 0.09216 0.2669 0.5534 1.064 2.075 3.955 3.877 1.819 0.6425 -0.007473 -0.406 -0.6716 -0.8665 -1.029 -1.184 -1.349 -1.539 -1.769 -2.058 -2.435 -2.941 -3.652 -4.712 -6.433 -9.549 -13.22 -10.57 -8.76 -9.396 -10.32 -7.003 -4.508 -3.259 -2.582 -2.167 -1.886 -1.683 -1.53 -1.411 -1.319 -1.247 -1.191 -1.149 -1.119 -1.098 -1.085 -1.079 -1.079 -1.084 -1.093 -1.105 -1.118 -1.131 -1.142 -1.149 -1.151 -1.145 -1.131 -1.108 -1.078 -1.041 -1 -0.9562 -0.9108 -0.8654 -0.8209 -0.7778 -0.7366 -0.6975 -0.6606 -0.6257
--1.791 -2.067 -2.417 -2.867 -3.425 -3.994 -4.276 -4.05 -3.554 -3.084 -2.73 -2.487 -2.328 -2.233 -2.186 -2.175 -2.189 -2.22 -2.262 -2.307 -2.357 -2.414 -2.491 -2.603 -2.771 -3.017 -3.358 -3.773 -4.129 -4.163 -3.763 -3.139 -2.514 -1.962 -1.474 -1.014 -0.5312 0.05881 0.9382 2.658 7.842 17.21 5.595 1.084 -0.2424 -0.3496 -0.3328 -0.3114 -0.2939 -0.2781 -0.2615 -0.242 -0.2176 -0.1858 -0.1431 -0.08407 0.0002323 0.1253 0.321 0.6512 1.283 2.83 10.77 10.84 2.634 0.9447 0.1906 -0.2465 -0.5382 -0.7556 -0.9369 -1.107 -1.282 -1.48 -1.715 -2.008 -2.387 -2.894 -3.596 -4.606 -6.096 -8.125 -9.721 -9.431 -9.241 -13.23 -83.15 -9.836 -5.347 -3.679 -2.823 -2.311 -1.975 -1.739 -1.566 -1.436 -1.337 -1.261 -1.205 -1.163 -1.135 -1.117 -1.108 -1.107 -1.113 -1.125 -1.142 -1.162 -1.184 -1.207 -1.227 -1.242 -1.25 -1.248 -1.234 -1.208 -1.172 -1.127 -1.076 -1.023 -0.9686 -0.9151 -0.8634 -0.8142 -0.7677 -0.7241 -0.6834 -0.6454
--1.724 -1.95 -2.213 -2.514 -2.832 -3.105 -3.234 -3.168 -2.967 -2.733 -2.529 -2.379 -2.282 -2.233 -2.224 -2.248 -2.295 -2.357 -2.423 -2.483 -2.533 -2.581 -2.642 -2.739 -2.9 -3.165 -3.583 -4.2 -4.9 -5.025 -4.27 -3.358 -2.612 -2.019 -1.525 -1.08 -0.6367 -0.138 0.5055 1.437 2.635 2.138 -4.009 -6.256 -1.943 -0.9089 -0.5728 -0.4323 -0.3611 -0.3176 -0.2854 -0.2565 -0.2261 -0.1902 -0.1448 -0.08413 0.0005043 0.1235 0.3109 0.615 1.154 2.23 4.331 4.286 2.064 0.872 0.2258 -0.1775 -0.4592 -0.6759 -0.8596 -1.031 -1.207 -1.402 -1.632 -1.915 -2.278 -2.761 -3.423 -4.375 -5.861 -8.67 -14.22 -10.35 -8.745 -10.11 -12.04 -7.951 -5.125 -3.69 -2.869 -2.352 -2.004 -1.758 -1.577 -1.442 -1.341 -1.265 -1.209 -1.17 -1.145 -1.132 -1.129 -1.134 -1.147 -1.168 -1.194 -1.224 -1.259 -1.294 -1.328 -1.356 -1.373 -1.377 -1.363 -1.332 -1.286 -1.229 -1.165 -1.099 -1.033 -0.969 -0.9086 -0.8521 -0.7996 -0.7511 -0.7062 -0.6648
--1.663 -1.847 -2.042 -2.243 -2.433 -2.582 -2.657 -2.642 -2.559 -2.448 -2.344 -2.269 -2.229 -2.228 -2.264 -2.332 -2.426 -2.534 -2.639 -2.72 -2.769 -2.793 -2.818 -2.879 -3.018 -3.296 -3.829 -4.92 -7.362 -8.688 -5.476 -3.685 -2.708 -2.06 -1.566 -1.148 -0.7628 -0.3798 0.01398 0.3662 0.3737 -0.9542 -7.045 -8.582 -2.59 -1.203 -0.7268 -0.5202 -0.4143 -0.3513 -0.3076 -0.2717 -0.2374 -0.1998 -0.1547 -0.09664 -0.01857 0.09039 0.2474 0.4804 0.8305 1.327 1.813 1.766 1.183 0.5899 0.1464 -0.1767 -0.4222 -0.621 -0.7941 -0.9573 -1.124 -1.306 -1.519 -1.779 -2.111 -2.547 -3.14 -3.989 -5.349 -8.318 -19.51 -9.951 -7.443 -7.076 -6.772 -5.645 -4.367 -3.412 -2.754 -2.298 -1.974 -1.737 -1.561 -1.428 -1.329 -1.255 -1.203 -1.169 -1.149 -1.142 -1.146 -1.159 -1.181 -1.211 -1.249 -1.293 -1.343 -1.396 -1.449 -1.496 -1.53 -1.542 -1.529 -1.49 -1.428 -1.352 -1.269 -1.185 -1.103 -1.027 -0.9559 -0.8911 -0.8319 -0.7779 -0.7287 -0.6837
--1.624 -1.778 -1.922 -2.054 -2.166 -2.249 -2.293 -2.296 -2.266 -2.222 -2.184 -2.166 -2.177 -2.223 -2.308 -2.432 -2.592 -2.774 -2.949 -3.072 -3.112 -3.082 -3.033 -3.022 -3.105 -3.348 -3.9 -5.25 -10.56 -23.31 -6.248 -3.77 -2.699 -2.048 -1.577 -1.198 -0.8728 -0.5867 -0.3527 -0.2379 -0.4117 -1.154 -2.469 -2.782 -1.827 -1.12 -0.7502 -0.5549 -0.4435 -0.3737 -0.3248 -0.2858 -0.2502 -0.2132 -0.171 -0.119 -0.05213 0.03651 0.1555 0.3142 0.5158 0.7358 0.8857 0.8445 0.6121 0.3099 0.02694 -0.2123 -0.412 -0.5833 -0.7371 -0.8836 -1.032 -1.193 -1.378 -1.602 -1.888 -2.261 -2.761 -3.442 -4.409 -5.803 -7.079 -6.629 -5.813 -5.348 -4.924 -4.325 -3.643 -3.034 -2.548 -2.177 -1.896 -1.681 -1.518 -1.393 -1.3 -1.232 -1.186 -1.158 -1.145 -1.146 -1.158 -1.181 -1.214 -1.255 -1.307 -1.367 -1.437 -1.515 -1.596 -1.674 -1.735 -1.765 -1.753 -1.698 -1.609 -1.503 -1.39 -1.281 -1.18 -1.087 -1.005 -0.9303 -0.8638 -0.8041 -0.7503 -0.7017
--1.626 -1.763 -1.869 -1.942 -1.992 -2.026 -2.045 -2.049 -2.045 -2.04 -2.045 -2.07 -2.124 -2.216 -2.354 -2.547 -2.801 -3.11 -3.429 -3.65 -3.667 -3.51 -3.309 -3.17 -3.148 -3.29 -3.684 -4.545 -6.206 -6.853 -4.842 -3.384 -2.528 -1.962 -1.546 -1.216 -0.9447 -0.7255 -0.571 -0.519 -0.6294 -0.9356 -1.308 -1.419 -1.202 -0.9136 -0.6928 -0.5459 -0.4495 -0.3837 -0.3357 -0.2973 -0.2631 -0.229 -0.1918 -0.148 -0.09434 -0.02709 0.0569 0.1583 0.2704 0.3718 0.4235 0.3888 0.2674 0.09598 -0.08649 -0.2587 -0.4145 -0.5552 -0.6851 -0.8093 -0.9335 -1.064 -1.21 -1.386 -1.61 -1.91 -2.31 -2.827 -3.457 -4.135 -4.618 -4.668 -4.448 -4.174 -3.861 -3.481 -3.062 -2.66 -2.308 -2.018 -1.784 -1.598 -1.452 -1.339 -1.253 -1.193 -1.155 -1.136 -1.133 -1.144 -1.167 -1.201 -1.245 -1.3 -1.367 -1.447 -1.542 -1.653 -1.776 -1.903 -2.014 -2.078 -2.069 -1.983 -1.846 -1.687 -1.531 -1.388 -1.26 -1.15 -1.053 -0.9684 -0.8943 -0.8288 -0.7705 -0.7184
--1.699 -1.842 -1.91 -1.913 -1.89 -1.87 -1.86 -1.859 -1.866 -1.885 -1.92 -1.979 -2.07 -2.203 -2.395 -2.666 -3.047 -3.574 -4.227 -4.75 -4.696 -4.18 -3.662 -3.316 -3.149 -3.149 -3.321 -3.668 -4.066 -4.073 -3.511 -2.824 -2.257 -1.819 -1.475 -1.198 -0.9732 -0.7981 -0.6792 -0.6319 -0.6699 -0.7816 -0.9022 -0.9392 -0.8664 -0.7393 -0.6147 -0.5146 -0.4395 -0.3836 -0.3408 -0.3059 -0.2752 -0.2458 -0.215 -0.1806 -0.1403 -0.09262 -0.03679 0.02523 0.0868 0.1348 0.1516 0.1232 0.04923 -0.05707 -0.1784 -0.3017 -0.4201 -0.5315 -0.6359 -0.7348 -0.8298 -0.923 -1.018 -1.126 -1.268 -1.483 -1.801 -2.212 -2.666 -3.091 -3.392 -3.505 -3.461 -3.322 -3.121 -2.873 -2.598 -2.321 -2.066 -1.842 -1.652 -1.495 -1.367 -1.265 -1.188 -1.136 -1.108 -1.101 -1.111 -1.135 -1.171 -1.217 -1.274 -1.343 -1.427 -1.529 -1.654 -1.807 -1.992 -2.204 -2.414 -2.556 -2.553 -2.398 -2.16 -1.912 -1.689 -1.5 -1.342 -1.21 -1.099 -1.004 -0.9223 -0.8512 -0.7886 -0.7332
--1.899 -2.113 -2.125 -1.986 -1.843 -1.75 -1.706 -1.695 -1.709 -1.744 -1.802 -1.887 -2.007 -2.177 -2.415 -2.761 -3.285 -4.138 -5.598 -7.496 -7.054 -5.21 -4.051 -3.427 -3.103 -2.969 -2.965 -3.037 -3.092 -2.999 -2.718 -2.343 -1.973 -1.65 -1.377 -1.15 -0.9641 -0.8191 -0.7176 -0.6639 -0.6577 -0.6859 -0.7184 -0.7219 -0.6837 -0.6174 -0.5438 -0.4769 -0.4213 -0.3768 -0.3411 -0.3116 -0.2861 -0.2625 -0.2391 -0.2144 -0.187 -0.1563 -0.1222 -0.08651 -0.05375 -0.03118 -0.02746 -0.04908 -0.0969 -0.1659 -0.248 -0.3358 -0.4239 -0.5089 -0.5888 -0.6618 -0.7254 -0.7756 -0.8068 -0.8163 -0.8246 -0.916 -1.19 -1.597 -2.01 -2.358 -2.602 -2.729 -2.748 -2.686 -2.565 -2.404 -2.217 -2.023 -1.835 -1.663 -1.51 -1.378 -1.265 -1.172 -1.101 -1.056 -1.04 -1.051 -1.079 -1.119 -1.17 -1.229 -1.3 -1.384 -1.485 -1.609 -1.766 -1.971 -2.241 -2.595 -3.017 -3.371 -3.392 -3.042 -2.579 -2.174 -1.856 -1.61 -1.418 -1.265 -1.14 -1.035 -0.9465 -0.8703 -0.804 -0.7456
--2.345 -2.935 -2.756 -2.187 -1.816 -1.631 -1.554 -1.538 -1.559 -1.608 -1.683 -1.789 -1.933 -2.128 -2.399 -2.792 -3.413 -4.544 -7.253 -20.11 -13.39 -6.22 -4.279 -3.432 -2.998 -2.769 -2.655 -2.596 -2.532 -2.412 -2.217 -1.973 -1.718 -1.478 -1.264 -1.08 -0.9265 -0.8041 -0.7139 -0.656 -0.6273 -0.6187 -0.6155 -0.6031 -0.5747 -0.5331 -0.486 -0.4404 -0.4001 -0.3661 -0.3381 -0.3149 -0.2954 -0.2785 -0.263 -0.2481 -0.233 -0.2173 -0.2006 -0.1835 -0.1681 -0.1578 -0.1574 -0.1711 -0.2005 -0.2444 -0.2991 -0.3603 -0.424 -0.4864 -0.5443 -0.5934 -0.6271 -0.6338 -0.5916 -0.4594 -0.1866 0.06634 -0.2925 -0.9453 -1.453 -1.805 -2.038 -2.17 -2.219 -2.2 -2.132 -2.027 -1.899 -1.76 -1.621 -1.487 -1.364 -1.252 -1.151 -1.06 -0.9822 -0.9355 -0.9378 -0.9784 -1.035 -1.097 -1.165 -1.239 -1.324 -1.422 -1.538 -1.682 -1.869 -2.124 -2.494 -3.059 -3.947 -5.064 -5.201 -4.095 -3.097 -2.442 -2.009 -1.705 -1.482 -1.309 -1.172 -1.06 -0.9657 -0.8855 -0.8161 -0.7554
diff --git a/benchmarks/CUDA/CP/benchmarks/cp/src/base/Makefile b/benchmarks/CUDA/CP/benchmarks/cp/src/base/Makefile
deleted file mode 100644
index 997d23e..0000000
--- a/benchmarks/CUDA/CP/benchmarks/cp/src/base/Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
-# (c) 2007 The Board of Trustees of the University of Illinois.
-
-include $(PARBOIL_ROOT)/common/mk/common.mk
-
-SRCDIR_OBJS=main.o cenergy.o
-EXTRA_LIBS=-lm
-
-LINK_MODE=C
-
-all: $(BIN)
-
-include $(PARBOIL_ROOT)/common/mk/rules.mk
diff --git a/benchmarks/CUDA/CP/benchmarks/cp/src/base/cenergy.c b/benchmarks/CUDA/CP/benchmarks/cp/src/base/cenergy.c
deleted file mode 100644
index 7b9b0df..0000000
--- a/benchmarks/CUDA/CP/benchmarks/cp/src/base/cenergy.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/***************************************************************************
- *cr
- *cr (C) Copyright 2007 The Board of Trustees of the
- *cr University of Illinois
- *cr All Rights Reserved
- *cr
- ***************************************************************************/
-
-#include <stdlib.h>
-#include <math.h>
-
-#include "structs.h"
-#include "cenergy.h"
-
-void cpuenergy(voldim3i grid,
- int numatoms,
- float gridspacing,
- int k,
- const float *atoms,
- float *energygrid)
-{
- float energy; /* Energy of current grid point */
- float x,y,z; /* Coordinates of current grid point */
- int i,j,n; /* Loop counters */
- int atomarrdim = numatoms * 4;
-
- // printf("\tWorking on plane %i of %ld\n", k, grid.z);
- z = gridspacing * (float) k;
-
- /* For each x, y grid point in this plane */
- for (j=0; j<grid.y; j++) {
- y = gridspacing * (float) j;
-
- for (i=0; i<grid.x; i++) {
- x = gridspacing * (float) i;
- energy = 0.0f;
-
-/* help the vectorizer make the right decision */
-#if defined(__INTEL_COMPILER)
-#pragma vector always
-#endif
- /* Calculate the interaction with each atom */
- for (n=0; n<atomarrdim; n+=4) {
- float dx = x - atoms[n ];
- float dy = y - atoms[n+1];
- float dz = z - atoms[n+2];
- energy += atoms[n+3] / sqrtf(dx*dx + dy*dy + dz*dz);
- }
-
- energygrid[grid.x*grid.y*k + grid.x*j + i] = energy;
- }
- }
-}
diff --git a/benchmarks/CUDA/CP/benchmarks/cp/src/base/cenergy.h b/benchmarks/CUDA/CP/benchmarks/cp/src/base/cenergy.h
deleted file mode 100644
index 6c3b7eb..0000000
--- a/benchmarks/CUDA/CP/benchmarks/cp/src/base/cenergy.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/***************************************************************************
- *cr
- *cr (C) Copyright 2007 The Board of Trustees of the
- *cr University of Illinois
- *cr All Rights Reserved
- *cr
- ***************************************************************************/
-
-/* Size of the benchmark problem. The GPU can run larger problems in a
- * reasonable time.
- *
- * For VOLSIZEX, VOLSIZEY, size 1024 is suitable for a few seconds of
- * GPU computation and size 128 is suitable for a few seconds of
- * CPU computation.
- *
- * For ATOMCOUNT, 100000 is suitable for GPU computation and 10000 is
- * suitable for CPU computation.
- */
-#define VOLSIZEX 512
-#define VOLSIZEY 512
-#define ATOMCOUNT 40000
-
-/* The main compute kernel. */
-void cpuenergy(voldim3i grid,
- int numatoms,
- float gridspacing,
- int k,
- const float *atoms,
- float *energygrid);
diff --git a/benchmarks/CUDA/CP/benchmarks/cp/src/base/main.c b/benchmarks/CUDA/CP/benchmarks/cp/src/base/main.c
deleted file mode 100644
index 4e32f6f..0000000
--- a/benchmarks/CUDA/CP/benchmarks/cp/src/base/main.c
+++ /dev/null
@@ -1,176 +0,0 @@
-/***************************************************************************
- *cr
- *cr (C) Copyright 2007 The Board of Trustees of the
- *cr University of Illinois
- *cr All Rights Reserved
- *cr
- ***************************************************************************/
-/*
- * CUDA accelerated coulombic potential grid test code
- * John E. Stone <[email protected]>
- * http://www.ks.uiuc.edu/~johns/
- *
- * Coulombic potential grid calculation microbenchmark based on the time
- * consuming portions of the 'cionize' ion placement tool.
- */
-
-#include <parboil.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-
-#include "structs.h"
-#include "cenergy.h"
-
-/* initatoms()
- * Store a pseudorandom arrangement of point charges in *atombuf.
- */
-static int
-initatoms(float **atombuf, int count, voldim3i volsize, float gridspacing) {
- voldim3i size;
- int i;
- float *atoms;
-
- srand(54321); // Ensure that atom placement is repeatable
-
- atoms = (float *) malloc(count * 4 * sizeof(float));
- *atombuf = atoms;
-
- // compute grid dimensions in angstroms
- size.x = gridspacing * volsize.x;
- size.y = gridspacing * volsize.y;
- size.z = gridspacing * volsize.z;
-
- for (i=0; i<count; i++) {
- int addr = i * 4;
- atoms[addr ] = (rand() / (float) RAND_MAX) * size.x;
- atoms[addr + 1] = (rand() / (float) RAND_MAX) * size.y;
- atoms[addr + 2] = (rand() / (float) RAND_MAX) * size.z;
- atoms[addr + 3] = ((rand() / (float) RAND_MAX) * 2.0) - 1.0; // charge
- }
-
- return 0;
-}
-
-/* writeenergy()
- * Write part of the energy array to an output file for verification.
- */
-static int
-writeenergy(char *filename, float *energy, voldim3i volsize)
-{
- FILE *outfile;
- int x, y;
-
- outfile = fopen(filename, "w");
- if (outfile == NULL) {
- fputs("Cannot open output file\n", stderr);
- return -1;
- }
-
- /* Print the execution parameters */
- fprintf(outfile, "%d %d %d %d\n", volsize.x, volsize.y, volsize.z, ATOMCOUNT);
-
- /* Print a checksum */
- {
- double sum = 0.0;
-
- for (y = 0; y < volsize.y; y++) {
- for (x = 0; x < volsize.x; x++) {
- double t = energy[y*volsize.x+x];
- t = fmax(-20.0, fmin(20.0, t));
- sum += t;
- }
- }
- fprintf(outfile, "%.4g\n", sum);
- }
-
- /* Print several rows of the computed data */
- for (y = 0; y < 17; y++) {
- for (x = 0; x < volsize.x; x++) {
- int addr = y * volsize.x + x;
- fprintf(outfile, "%.4g ", energy[addr]);
- }
- fprintf(outfile, "\n");
- }
-
- fclose(outfile);
-
- return 0;
-}
-
-int main(int argc, char** argv) {
- struct pb_TimerSet timers;
- struct pb_Parameters *parameters;
-
- float *energy = NULL; // Output of calculation
- float *atoms = NULL;
- voldim3i volsize;
-
- // number of atoms to simulate
- int atomcount = ATOMCOUNT;
-
- // voxel spacing
- const float gridspacing = 0.1;
-
- // Size of buffer on GPU
- int volmemsz;
-
- printf("CUDA accelerated coulombic potential microbenchmark\n");
- printf("Original version by John E. Stone <[email protected]>\n");
- printf("This version maintained by Chris Rodrigues\n");
-
- parameters = pb_ReadParameters(&argc, argv);
- if (!parameters)
- return -1;
-
- if (parameters->inpFiles[0]) {
- fputs("No input files expected\n", stderr);
- return -1;
- }
-
- pb_InitializeTimerSet(&timers);
- pb_SwitchToTimer(&timers, pb_TimerID_COMPUTE);
-
- // setup energy grid size
- volsize.x = VOLSIZEX;
- volsize.y = VOLSIZEY;
- volsize.z = 1;
-
- // allocate and initialize atom coordinates and charges
- if (initatoms(&atoms, atomcount, volsize, gridspacing))
- return -1;
-
- // allocate the output array
- volmemsz = sizeof(float) * volsize.x * volsize.y * volsize.z;
- energy = (float *) malloc(volmemsz);
-
- // Main computation
- cpuenergy(volsize, atomcount, gridspacing, 0, atoms, energy);
-
-#if 0
- printf("Done\n");
-#endif
-
- pb_SwitchToTimer(&timers, pb_TimerID_IO);
-
- /* Print a subset of the results to a file */
- if (parameters->outFile) {
- if (writeenergy(parameters->outFile, energy, volsize) == -1)
- return -1;
- }
-
- pb_SwitchToTimer(&timers, pb_TimerID_COMPUTE);
-
- free(atoms);
- free(energy);
-
- pb_SwitchToTimer(&timers, pb_TimerID_NONE);
-
- pb_PrintTimerSet(&timers);
- pb_FreeParameters(parameters);
-
- return 0;
-}
-
-
-
diff --git a/benchmarks/CUDA/CP/benchmarks/cp/src/base/structs.h b/benchmarks/CUDA/CP/benchmarks/cp/src/base/structs.h
deleted file mode 100644
index 20e9ba8..0000000
--- a/benchmarks/CUDA/CP/benchmarks/cp/src/base/structs.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/***************************************************************************
- *cr
- *cr (C) Copyright 2007 The Board of Trustees of the
- *cr University of Illinois
- *cr All Rights Reserved
- *cr
- ***************************************************************************/
-
-typedef struct {
- int x;
- int y;
- int z;
-} voldim3i;
-
diff --git a/benchmarks/CUDA/CP/benchmarks/cp/src/cpu/Makefile b/benchmarks/CUDA/CP/benchmarks/cp/src/cpu/Makefile
deleted file mode 100644
index 997d23e..0000000
--- a/benchmarks/CUDA/CP/benchmarks/cp/src/cpu/Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
-# (c) 2007 The Board of Trustees of the University of Illinois.
-
-include $(PARBOIL_ROOT)/common/mk/common.mk
-
-SRCDIR_OBJS=main.o cenergy.o
-EXTRA_LIBS=-lm
-
-LINK_MODE=C
-
-all: $(BIN)
-
-include $(PARBOIL_ROOT)/common/mk/rules.mk
diff --git a/benchmarks/CUDA/CP/benchmarks/cp/src/cpu/cenergy.c b/benchmarks/CUDA/CP/benchmarks/cp/src/cpu/cenergy.c
deleted file mode 100644
index f2e5c41..0000000
--- a/benchmarks/CUDA/CP/benchmarks/cp/src/cpu/cenergy.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/***************************************************************************
- *cr
- *cr (C) Copyright 2007 The Board of Trustees of the
- *cr University of Illinois
- *cr All Rights Reserved
- *cr
- ***************************************************************************/
-
-#include <stdlib.h>
-#include <math.h>
-
-#include "structs.h"
-#include "cenergy.h"
-
-/* Less readable kernel, but it vectorizes with SSE3 and Intel C */
-/* This version precalculates (dy^2 + dz^2) for each atom, before */
-/* it proceeds with the innermost loop over X. */
-/* The loop structure and data are arranged to allow the use of */
-/* SSE SIMD instructions for better performance. */
-void cpuenergy(voldim3i grid,
- int numatoms,
- float gridspacing,
- int k,
- const float *atoms,
- float *energygrid)
-{
- float x,y,z; /* Coordinates of current grid point */
- int i,j,n; /* Loop counters */
- int atomarrdim = numatoms * 4;
-
- /* Holds atom x, dy**2+dz**2, and atom q as x/r/q/x/r/q... */
- float *xrq = (float *) malloc(3*numatoms * sizeof(float));
- int maxn = numatoms * 3;
-
- //printf("\tWorking on plane %i of %ld\n", k, grid.z);
- z = gridspacing * (float) k;
-
- for (j=0; j<grid.y; j++) {
- y = gridspacing * (float) j;
- long int voxaddr = grid.x*grid.y*k + grid.x*j;
-
- /* Prebuild a table of dy and dz values on a per atom basis */
- for (n=0; n<numatoms; n++) {
- int addr3 = n*3;
- int addr4 = n*4;
- float dy = y - atoms[addr4 + 1];
- float dz = z - atoms[addr4 + 2];
- xrq[addr3 ] = atoms[addr4];
- xrq[addr3 + 1] = dz*dz + dy*dy;
- xrq[addr3 + 2] = atoms[addr4 + 3];
- }
-
- x=0.0f;
-/* help the vectorizer make the right decision */
-#if defined(__INTEL_COMPILER)
-#pragma vector always
-#endif
- /* walk through more than one grid point at a time */
- for (i=0; i<grid.x; i+=8) {
- float energy1 = 0.0f; /* Energy of first grid point */
- float energy2 = 0.0f; /* Energy of second grid point */
- float energy3 = 0.0f; /* Energy of third grid point */
- float energy4 = 0.0f; /* Energy of fourth grid point */
- float energy5 = 0.0f; /* Energy of fourth grid point */
- float energy6 = 0.0f; /* Energy of fourth grid point */
- float energy7 = 0.0f; /* Energy of fourth grid point */
- float energy8 = 0.0f; /* Energy of fourth grid point */
- x = gridspacing * (float) i;
-
-/* help the vectorizer make the right decision */
-#if defined(__INTEL_COMPILER)
-#pragma vector always
-#endif
- /* Calculate the interaction with each atom */
- /* SSE allows simultaneous calculations of */
- /* multiple iterations */
- /* 6 flops per grid point */
- for (n=0; n<maxn; n+=3) {
- float dy2pdz2 = xrq[n + 1];
- float q = xrq[n + 2];
-
- float dx1 = x - xrq[n];
- energy1 += q / sqrtf(dx1*dx1 + dy2pdz2);
-
- float dx2 = dx1 + gridspacing;
- energy2 += q / sqrtf(dx2*dx2 + dy2pdz2);
-
- float dx3 = dx2 + gridspacing;
- energy3 += q / sqrtf(dx3*dx3 + dy2pdz2);
-
- float dx4 = dx3 + gridspacing;
- energy4 += q / sqrtf(dx4*dx4 + dy2pdz2);
-
- float dx5 = dx4 + gridspacing;
- energy5 += q / sqrtf(dx5*dx5 + dy2pdz2);
-
- float dx6 = dx5 + gridspacing;
- energy6 += q / sqrtf(dx6*dx6 + dy2pdz2);
-
- float dx7 = dx6 + gridspacing;
- energy7 += q / sqrtf(dx7*dx7 + dy2pdz2);
-
- float dx8 = dx7 + gridspacing;
- energy8 += q / sqrtf(dx8*dx8 + dy2pdz2);
- }
-
- energygrid[voxaddr + i] = energy1;
- if (i+1 < grid.x)
- energygrid[voxaddr + i + 1] = energy2;
- if (i+2 < grid.x)
- energygrid[voxaddr + i + 2] = energy3;
- if (i+3 < grid.x)
- energygrid[voxaddr + i + 3] = energy4;
- if (i+4 < grid.x)
- energygrid[voxaddr + i + 4] = energy5;
- if (i+5 < grid.x)
- energygrid[voxaddr + i + 5] = energy6;
- if (i+6 < grid.x)
- energygrid[voxaddr + i + 6] = energy7;
- if (i+7 < grid.x)
- energygrid[voxaddr + i + 7] = energy8;
- }
- }
-
- free(xrq);
-}
-
diff --git a/benchmarks/CUDA/CP/benchmarks/cp/src/cpu/cenergy.h b/benchmarks/CUDA/CP/benchmarks/cp/src/cpu/cenergy.h
deleted file mode 100644
index 6c3b7eb..0000000
--- a/benchmarks/CUDA/CP/benchmarks/cp/src/cpu/cenergy.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/***************************************************************************
- *cr
- *cr (C) Copyright 2007 The Board of Trustees of the
- *cr University of Illinois
- *cr All Rights Reserved
- *cr
- ***************************************************************************/
-
-/* Size of the benchmark problem. The GPU can run larger problems in a
- * reasonable time.
- *
- * For VOLSIZEX, VOLSIZEY, size 1024 is suitable for a few seconds of
- * GPU computation and size 128 is suitable for a few seconds of
- * CPU computation.
- *
- * For ATOMCOUNT, 100000 is suitable for GPU computation and 10000 is
- * suitable for CPU computation.
- */
-#define VOLSIZEX 512
-#define VOLSIZEY 512
-#define ATOMCOUNT 40000
-
-/* The main compute kernel. */
-void cpuenergy(voldim3i grid,
- int numatoms,
- float gridspacing,
- int k,
- const float *atoms,
- float *energygrid);
diff --git a/benchmarks/CUDA/CP/benchmarks/cp/src/cpu/main.c b/benchmarks/CUDA/CP/benchmarks/cp/src/cpu/main.c
deleted file mode 100644
index 4e32f6f..0000000
--- a/benchmarks/CUDA/CP/benchmarks/cp/src/cpu/main.c
+++ /dev/null
@@ -1,176 +0,0 @@
-/***************************************************************************
- *cr
- *cr (C) Copyright 2007 The Board of Trustees of the
- *cr University of Illinois
- *cr All Rights Reserved
- *cr
- ***************************************************************************/
-/*
- * CUDA accelerated coulombic potential grid test code
- * John E. Stone <[email protected]>
- * http://www.ks.uiuc.edu/~johns/
- *
- * Coulombic potential grid calculation microbenchmark based on the time
- * consuming portions of the 'cionize' ion placement tool.
- */
-
-#include <parboil.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-
-#include "structs.h"
-#include "cenergy.h"
-
-/* initatoms()
- * Store a pseudorandom arrangement of point charges in *atombuf.
- */
-static int
-initatoms(float **atombuf, int count, voldim3i volsize, float gridspacing) {
- voldim3i size;
- int i;
- float *atoms;
-
- srand(54321); // Ensure that atom placement is repeatable
-
- atoms = (float *) malloc(count * 4 * sizeof(float));
- *atombuf = atoms;
-
- // compute grid dimensions in angstroms
- size.x = gridspacing * volsize.x;
- size.y = gridspacing * volsize.y;
- size.z = gridspacing * volsize.z;
-
- for (i=0; i<count; i++) {
- int addr = i * 4;
- atoms[addr ] = (rand() / (float) RAND_MAX) * size.x;
- atoms[addr + 1] = (rand() / (float) RAND_MAX) * size.y;
- atoms[addr + 2] = (rand() / (float) RAND_MAX) * size.z;
- atoms[addr + 3] = ((rand() / (float) RAND_MAX) * 2.0) - 1.0; // charge
- }
-
- return 0;
-}
-
-/* writeenergy()
- * Write part of the energy array to an output file for verification.
- */
-static int
-writeenergy(char *filename, float *energy, voldim3i volsize)
-{
- FILE *outfile;
- int x, y;
-
- outfile = fopen(filename, "w");
- if (outfile == NULL) {
- fputs("Cannot open output file\n", stderr);
- return -1;
- }
-
- /* Print the execution parameters */
- fprintf(outfile, "%d %d %d %d\n", volsize.x, volsize.y, volsize.z, ATOMCOUNT);
-
- /* Print a checksum */
- {
- double sum = 0.0;
-
- for (y = 0; y < volsize.y; y++) {
- for (x = 0; x < volsize.x; x++) {
- double t = energy[y*volsize.x+x];
- t = fmax(-20.0, fmin(20.0, t));
- sum += t;
- }
- }
- fprintf(outfile, "%.4g\n", sum);
- }
-
- /* Print several rows of the computed data */
- for (y = 0; y < 17; y++) {
- for (x = 0; x < volsize.x; x++) {
- int addr = y * volsize.x + x;
- fprintf(outfile, "%.4g ", energy[addr]);
- }
- fprintf(outfile, "\n");
- }
-
- fclose(outfile);
-
- return 0;
-}
-
-int main(int argc, char** argv) {
- struct pb_TimerSet timers;
- struct pb_Parameters *parameters;
-
- float *energy = NULL; // Output of calculation
- float *atoms = NULL;
- voldim3i volsize;
-
- // number of atoms to simulate
- int atomcount = ATOMCOUNT;
-
- // voxel spacing
- const float gridspacing = 0.1;
-
- // Size of buffer on GPU
- int volmemsz;
-
- printf("CUDA accelerated coulombic potential microbenchmark\n");
- printf("Original version by John E. Stone <[email protected]>\n");
- printf("This version maintained by Chris Rodrigues\n");
-
- parameters = pb_ReadParameters(&argc, argv);
- if (!parameters)
- return -1;
-
- if (parameters->inpFiles[0]) {
- fputs("No input files expected\n", stderr);
- return -1;
- }
-
- pb_InitializeTimerSet(&timers);
- pb_SwitchToTimer(&timers, pb_TimerID_COMPUTE);
-
- // setup energy grid size
- volsize.x = VOLSIZEX;
- volsize.y = VOLSIZEY;
- volsize.z = 1;
-
- // allocate and initialize atom coordinates and charges
- if (initatoms(&atoms, atomcount, volsize, gridspacing))
- return -1;
-
- // allocate the output array
- volmemsz = sizeof(float) * volsize.x * volsize.y * volsize.z;
- energy = (float *) malloc(volmemsz);
-
- // Main computation
- cpuenergy(volsize, atomcount, gridspacing, 0, atoms, energy);
-
-#if 0
- printf("Done\n");
-#endif
-
- pb_SwitchToTimer(&timers, pb_TimerID_IO);
-
- /* Print a subset of the results to a file */
- if (parameters->outFile) {
- if (writeenergy(parameters->outFile, energy, volsize) == -1)
- return -1;
- }
-
- pb_SwitchToTimer(&timers, pb_TimerID_COMPUTE);
-
- free(atoms);
- free(energy);
-
- pb_SwitchToTimer(&timers, pb_TimerID_NONE);
-
- pb_PrintTimerSet(&timers);
- pb_FreeParameters(parameters);
-
- return 0;
-}
-
-
-
diff --git a/benchmarks/CUDA/CP/benchmarks/cp/src/cpu/structs.h b/benchmarks/CUDA/CP/benchmarks/cp/src/cpu/structs.h
deleted file mode 100644
index 20e9ba8..0000000
--- a/benchmarks/CUDA/CP/benchmarks/cp/src/cpu/structs.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/***************************************************************************
- *cr
- *cr (C) Copyright 2007 The Board of Trustees of the
- *cr University of Illinois
- *cr All Rights Reserved
- *cr
- ***************************************************************************/
-
-typedef struct {
- int x;
- int y;
- int z;
-} voldim3i;
-
diff --git a/benchmarks/CUDA/CP/benchmarks/cp/src/cuda/Makefile b/benchmarks/CUDA/CP/benchmarks/cp/src/cuda/Makefile
deleted file mode 100644
index 6991f9b..0000000
--- a/benchmarks/CUDA/CP/benchmarks/cp/src/cuda/Makefile
+++ /dev/null
@@ -1,15 +0,0 @@
-# (c) 2007 The Board of Trustees of the University of Illinois.
-
-include $(PARBOIL_ROOT)/common/mk/common.mk
-include $(PARBOIL_ROOT)/common/mk/cuda.mk
-
-SRCDIR_CUDAOBJS=main.o cuenergy_pre8_coalesce.o
-
-LINK_MODE=CUDA
-
-all: $(BIN)
-
-include $(PARBOIL_ROOT)/common/mk/rules.mk
-include $(PARBOIL_ROOT)/common/mk/cuda_rules.mk
-
-
diff --git a/benchmarks/CUDA/CP/benchmarks/cp/src/cuda/cuenergy.h b/benchmarks/CUDA/CP/benchmarks/cp/src/cuda/cuenergy.h
deleted file mode 100644
index d7aafa5..0000000
--- a/benchmarks/CUDA/CP/benchmarks/cp/src/cuda/cuenergy.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/***************************************************************************
- *cr
- *cr (C) Copyright 2007 The Board of Trustees of the
- *cr University of Illinois
- *cr All Rights Reserved
- *cr
- ***************************************************************************/
-
-/* Size of a thread block */
-#define BLOCKSIZEX 16
-#define BLOCKSIZEY 8
-
-/* Number of grid points processed by a thread */
-#define UNROLLX 2
-
-/* Number of atoms processed by a kernel */
-#define MAXATOMS 4000
-
-/* Size of the benchmark problem. The GPU can run larger problems in a
- * reasonable time.
- *
- * For VOLSIZEX, VOLSIZEY, size 1024 is suitable for a few seconds of
- * GPU computation and size 128 is suitable for a few seconds of
- * CPU computation.
- *
- * For ATOMCOUNT, 100000 is suitable for GPU computation and 10000 is
- * suitable for CPU computation.
- */
-#define VOLSIZEX 512
-#define VOLSIZEY 256
-#define ATOMCOUNT 100
-
-#define CUERR { cudaError_t err; \
- if ((err = cudaGetLastError()) != cudaSuccess) { \
- printf("CUDA error: %s, line %d\n", cudaGetErrorString(err), __LINE__); \
- return -1; }}
-
-__global__ void cenergy(int numatoms,
- float gridspacing,
- float * energygrid);
-
-int copyatomstoconstbuf(float *atoms,
- int count,
- float zplane);
diff --git a/benchmarks/CUDA/CP/benchmarks/cp/src/cuda/cuenergy_pre8_coalesce.cu b/benchmarks/CUDA/CP/benchmarks/cp/src/cuda/cuenergy_pre8_coalesce.cu
deleted file mode 100644
index bb79e3f..0000000
--- a/benchmarks/CUDA/CP/benchmarks/cp/src/cuda/cuenergy_pre8_coalesce.cu
+++ /dev/null
@@ -1,85 +0,0 @@
-/***************************************************************************
- *cr
- *cr (C) Copyright 2007 The Board of Trustees of the
- *cr University of Illinois
- *cr All Rights Reserved
- *cr
- ***************************************************************************/
-
-#include <stdio.h>
-
-#include "cuenergy.h"
-
-//#if UNROLLX != 8
-//# error "UNROLLX must be 8"
-//#endif
-
-#if BLOCKSIZEX != 16
-# error "BLOCKSIZEX must be 16"
-#endif
-
-// Max constant buffer size is 64KB, minus whatever
-// the CUDA runtime and compiler are using that we don't know about.
-// At 16 bytes for atom, for this program 4070 atoms is about the max
-// we can store in the constant buffer.
-__constant__ float4 atominfo[MAXATOMS];
-
-// This kernel calculates coulombic potential at each grid point and
-// stores the results in the output array.
-
-__global__ void cenergy(int numatoms, float gridspacing, float * energygrid) {
- unsigned int xindex = __umul24(blockIdx.x, blockDim.x) * UNROLLX
- + threadIdx.x;
- unsigned int yindex = __umul24(blockIdx.y, blockDim.y) + threadIdx.y;
- unsigned int outaddr = (__umul24(gridDim.x, blockDim.x) * UNROLLX) * yindex
- + xindex;
-
- float coory = gridspacing * yindex;
- float coorx = gridspacing * xindex;
-
- float energyvalx1=0.0f;
- float energyvalx2=0.0f;
-
- float gridspacing_u = gridspacing * BLOCKSIZEX;
-
- int atomid;
- for (atomid=0; atomid<numatoms; atomid++) {
- float dy = coory - atominfo[atomid].y;
- float dyz2 = (dy * dy) + atominfo[atomid].z;
-
- float dx1 = coorx - atominfo[atomid].x;
- float dx2 = dx1 + gridspacing_u;
-
- energyvalx1 += atominfo[atomid].w * (1.0f / sqrtf(dx1*dx1 + dyz2));
- energyvalx2 += atominfo[atomid].w * (1.0f / sqrtf(dx2*dx2 + dyz2));
- }
-
- energygrid[outaddr] += energyvalx1;
- energygrid[outaddr+1*BLOCKSIZEX] += energyvalx2;
-}
-
-// This function copies atoms from the CPU to the GPU and
-// precalculates (z^2) for each atom.
-
-int copyatomstoconstbuf(float *atoms, int count, float zplane) {
- if (count > MAXATOMS) {
- printf("Atom count exceeds constant buffer storage capacity\n");
- return -1;
- }
-
- float atompre[4*MAXATOMS];
- int i;
- for (i=0; i<count*4; i+=4) {
- atompre[i ] = atoms[i ];
- atompre[i + 1] = atoms[i + 1];
- float dz = zplane - atoms[i + 2];
- atompre[i + 2] = dz*dz;
- atompre[i + 3] = atoms[i + 3];
- }
-
- cudaMemcpyToSymbol(atominfo, atompre, count * 4 * sizeof(float), 0);
- CUERR // check and clear any existing errors
-
- return 0;
-}
-
diff --git a/benchmarks/CUDA/CP/benchmarks/cp/src/cuda/main.cu b/benchmarks/CUDA/CP/benchmarks/cp/src/cuda/main.cu
deleted file mode 100644
index cc369d2..0000000
--- a/benchmarks/CUDA/CP/benchmarks/cp/src/cuda/main.cu
+++ /dev/null
@@ -1,229 +0,0 @@
-/***************************************************************************
- *cr
- *cr (C) Copyright 2007 The Board of Trustees of the
- *cr University of Illinois
- *cr All Rights Reserved
- *cr
- ***************************************************************************/
-/*
- * CUDA accelerated coulombic potential grid test code
- * John E. Stone <[email protected]>
- * http://www.ks.uiuc.edu/~johns/
- *
- * Coulombic potential grid calculation microbenchmark based on the time
- * consuming portions of the 'cionize' ion placement tool.
- */
-
-#include <parboil.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "cuenergy.h"
-
-/* initatoms()
- * Store a pseudorandom arrangement of point charges in *atombuf.
- */
-static int
-initatoms(float **atombuf, int count, dim3 volsize, float gridspacing) {
- dim3 size;
- int i;
- float *atoms;
-
- srand(54321); // Ensure that atom placement is repeatable
-
- atoms = (float *) malloc(count * 4 * sizeof(float));
- *atombuf = atoms;
-
- // compute grid dimensions in angstroms
- size.x = gridspacing * volsize.x;
- size.y = gridspacing * volsize.y;
- size.z = gridspacing * volsize.z;
-
- for (i=0; i<count; i++) {
- int addr = i * 4;
- atoms[addr ] = (rand() / (float) RAND_MAX) * size.x;
- atoms[addr + 1] = (rand() / (float) RAND_MAX) * size.y;
- atoms[addr + 2] = (rand() / (float) RAND_MAX) * size.z;
- atoms[addr + 3] = ((rand() / (float) RAND_MAX) * 2.0) - 1.0; // charge
- }
-
- return 0;
-}
-
-/* writeenergy()
- * Write part of the energy array to an output file for verification.
- */
-static int
-writeenergy(char *filename, float *energy, dim3 volsize)
-{
- FILE *outfile;
- int x, y;
-
- outfile = fopen(filename, "w");
- if (outfile == NULL) {
- fputs("Cannot open output file\n", stderr);
- return -1;
- }
-
- /* Print the execution parameters */
- fprintf(outfile, "%d %d %d %d\n", volsize.x, volsize.y, volsize.z, ATOMCOUNT);
-
- /* Print a checksum */
- {
- double sum = 0.0;
-
- for (y = 0; y < volsize.y; y++) {
- for (x = 0; x < volsize.x; x++) {
- double t = energy[y*volsize.x+x];
- t = fmax(-20.0, fmin(20.0, t));
- sum += t;
- }
- }
- fprintf(outfile, "%.4g\n", sum);
- }
-
- /* Print several rows of the computed data */
- for (y = 0; y < 17; y++) {
- for (x = 0; x < volsize.x; x++) {
- int addr = y * volsize.x + x;
- fprintf(outfile, "%.4g ", energy[addr]);
- }
- fprintf(outfile, "\n");
- }
-
- fclose(outfile);
-
- return 0;
-}
-
-int main(int argc, char** argv) {
- struct pb_TimerSet timers;
- struct pb_Parameters *parameters;
-
- float *energy = NULL; // Output of device calculation
- float *atoms = NULL;
- dim3 volsize, Gsz, Bsz;
-
- // int final_iteration_count;
-
- // number of atoms to simulate
- int atomcount = ATOMCOUNT;
-
- // voxel spacing
- const float gridspacing = 0.1;
-
- // Size of buffer on GPU
- int volmemsz;
-
- printf("CUDA accelerated coulombic potential microbenchmark\n");
- printf("Original version by John E. Stone <[email protected]>\n");
- printf("This version maintained by Chris Rodrigues\n");
-
- parameters = pb_ReadParameters(&argc, argv);
- if (!parameters)
- return -1;
-
- if (parameters->inpFiles[0]) {
- fputs("No input files expected\n", stderr);
- return -1;
- }
-
- pb_InitializeTimerSet(&timers);
- pb_SwitchToTimer(&timers, pb_TimerID_COMPUTE);
-
- // setup energy grid size
- volsize.x = VOLSIZEX;
- volsize.y = VOLSIZEY;
- volsize.z = 1;
-
- // setup CUDA grid and block sizes
- Bsz.x = BLOCKSIZEX; // each thread does multiple Xs
- Bsz.y = BLOCKSIZEY;
- Bsz.z = 1;
- Gsz.x = volsize.x / (Bsz.x * UNROLLX); // each thread does multiple Xs
- Gsz.y = volsize.y / Bsz.y;
- Gsz.z = volsize.z / Bsz.z;
-
-#if 0
- printf("Grid size: %d x %d x %d\n", volsize.x, volsize.y, volsize.z);
- printf("Running kernel(atoms:%d, gridspacing %g, z %d)\n", atomcount, gridspacing, 0);
-#endif
-
- // allocate and initialize atom coordinates and charges
- if (initatoms(&atoms, atomcount, volsize, gridspacing))
- return -1;
-
- // allocate and initialize the GPU output array
- volmemsz = sizeof(float) * volsize.x * volsize.y * volsize.z;
-
- // Main computation
- {
- float *d_output = NULL; // Output on device
- int iterations=0;
- int atomstart;
-
- pb_SwitchToTimer(&timers, pb_TimerID_COPY);
- cudaMalloc((void**)&d_output, volmemsz);
- CUERR // check and clear any existing errors
- cudaMemset(d_output, 0, volmemsz);
- CUERR // check and clear any existing errors
- pb_SwitchToTimer(&timers, pb_TimerID_COMPUTE);
-
- for (atomstart=0; atomstart<atomcount; atomstart+=MAXATOMS) {
- int atomsremaining = atomcount - atomstart;
- int runatoms = (atomsremaining > MAXATOMS) ? MAXATOMS : atomsremaining;
- iterations++;
-
- // copy the atoms to the GPU
- pb_SwitchToTimer(&timers, pb_TimerID_COPY);
- if (copyatomstoconstbuf(atoms + 4*atomstart, runatoms, 0*gridspacing))
- return -1;
-
- if (parameters->synchronizeGpu) cudaThreadSynchronize();
- pb_SwitchToTimer(&timers, pb_TimerID_GPU);
-
- // RUN the kernel...
- cenergy<<<Gsz, Bsz, 0>>>(runatoms, 0.1, d_output);
- CUERR // check and clear any existing errors
-
- if (parameters->synchronizeGpu) cudaThreadSynchronize();
- pb_SwitchToTimer(&timers, pb_TimerID_COMPUTE);
-
- // final_iteration_count = iterations;
- }
-#if 0
- printf("Done\n");
-#endif
-
- // Copy the GPU output data back to the host and use/store it..
- energy = (float *) malloc(volmemsz);
- pb_SwitchToTimer(&timers, pb_TimerID_COPY);
- cudaMemcpy(energy, d_output, volmemsz, cudaMemcpyDeviceToHost);
- CUERR // check and clear any existing errors
-
- cudaFree(d_output);
-
- pb_SwitchToTimer(&timers, pb_TimerID_COMPUTE);
- }
-
- /* Print a subset of the results to a file */
- if (parameters->outFile) {
- pb_SwitchToTimer(&timers, pb_TimerID_IO);
- if (writeenergy(parameters->outFile, energy, volsize) == -1)
- return -1;
- pb_SwitchToTimer(&timers, pb_TimerID_COMPUTE);
- }
-
- free(atoms);
- free(energy);
-
- pb_SwitchToTimer(&timers, pb_TimerID_NONE);
-
- pb_PrintTimerSet(&timers);
- pb_FreeParameters(parameters);
-
- return 0;
-}
-
-
-
diff --git a/benchmarks/CUDA/CP/benchmarks/cp/src/cuda_base/Makefile b/benchmarks/CUDA/CP/benchmarks/cp/src/cuda_base/Makefile
deleted file mode 100644
index 1bef5e1..0000000
--- a/benchmarks/CUDA/CP/benchmarks/cp/src/cuda_base/Makefile
+++ /dev/null
@@ -1,15 +0,0 @@
-# (c) 2007 The Board of Trustees of the University of Illinois.
-
-include $(PARBOIL_ROOT)/common/mk/common.mk
-include $(PARBOIL_ROOT)/common/mk/cuda.mk
-
-SRCDIR_CUDAOBJS=main.o cuenergy_pre.o
-
-LINK_MODE=CUDA
-
-all: $(BIN)
-
-include $(PARBOIL_ROOT)/common/mk/rules.mk
-include $(PARBOIL_ROOT)/common/mk/cuda_rules.mk
-
-
diff --git a/benchmarks/CUDA/CP/benchmarks/cp/src/cuda_base/cuenergy.h b/benchmarks/CUDA/CP/benchmarks/cp/src/cuda_base/cuenergy.h
deleted file mode 100644
index 399d30b..0000000
--- a/benchmarks/CUDA/CP/benchmarks/cp/src/cuda_base/cuenergy.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/***************************************************************************
- *cr
- *cr (C) Copyright 2007 The Board of Trustees of the
- *cr University of Illinois
- *cr All Rights Reserved
- *cr
- ***************************************************************************/
-
-/* Size of a thread block */
-#define BLOCKSIZEX 16
-#define BLOCKSIZEY 8
-
-/* Number of grid points processed by a thread */
-#define UNROLLX 1
-
-/* Number of atoms processed by a kernel */
-#define MAXATOMS 4000
-
-/* Size of the benchmark problem. The GPU can run larger problems in a
- * reasonable time.
- *
- * For VOLSIZEX, VOLSIZEY, size 1024 is suitable for a few seconds of
- * GPU computation and size 128 is suitable for a few seconds of
- * CPU computation.
- *
- * For ATOMCOUNT, 100000 is suitable for GPU computation and 10000 is
- * suitable for CPU computation.
- */
-#define VOLSIZEX 512
-#define VOLSIZEY 512
-#define ATOMCOUNT 40000
-
-#define CUERR { cudaError_t err; \
- if ((err = cudaGetLastError()) != cudaSuccess) { \
- printf("CUDA error: %s, line %d\n", cudaGetErrorString(err), __LINE__); \
- return -1; }}
-
-__global__ void cenergy(int numatoms,
- float gridspacing,
- float * energygrid);
-
-int copyatomstoconstbuf(float *atoms,
- int count,
- float zplane);
diff --git a/benchmarks/CUDA/CP/benchmarks/cp/src/cuda_base/cuenergy_pre.cu b/benchmarks/CUDA/CP/benchmarks/cp/src/cuda_base/cuenergy_pre.cu
deleted file mode 100644
index b634266..0000000
--- a/benchmarks/CUDA/CP/benchmarks/cp/src/cuda_base/cuenergy_pre.cu
+++ /dev/null
@@ -1,69 +0,0 @@
-/***************************************************************************
- *cr
- *cr (C) Copyright 2007 The Board of Trustees of the
- *cr University of Illinois
- *cr All Rights Reserved
- *cr
- ***************************************************************************/
-
-#include <stdio.h>
-
-#include "cuenergy.h"
-
-#if UNROLLX != 1
-# error "UNROLLX must be 1"
-#endif
-
-__constant__ float4 atominfo[MAXATOMS];
-
-/* This is a reference version of the kernel. It is simpler and slower
- * than the optimzed version. */
-
-__global__ void cenergy(int numatoms, float gridspacing, float * energygrid) {
- unsigned int xindex = __umul24(blockIdx.x, blockDim.x) + threadIdx.x;
- unsigned int yindex = __umul24(blockIdx.y, blockDim.y) + threadIdx.y;
- unsigned int outaddr = __umul24(gridDim.x, blockDim.x) * yindex + xindex;
-
- float coorx = gridspacing * xindex;
- float coory = gridspacing * yindex;
-
- int atomid;
- float energyval=0.0f;
-
- /* For each atom, compute and accumulate its contribution to energyval
- * for this thread's grid point */
- for (atomid=0; atomid<numatoms; atomid++) {
- float dx = coorx - atominfo[atomid].x;
- float dy = coory - atominfo[atomid].y;
- float r_1 = 1.0f / sqrtf(dx*dx + dy*dy + atominfo[atomid].z);
- energyval += atominfo[atomid].w * r_1;
- }
-
- energygrid[outaddr] += energyval;
-}
-
-// This function copies atoms from the CPU to the GPU and
-// precalculates (z^2) for each atom.
-
-int copyatomstoconstbuf(float *atoms, int count, float zplane) {
- if (count > MAXATOMS) {
- printf("Atom count exceeds constant buffer storage capacity\n");
- return -1;
- }
-
- float atompre[4*MAXATOMS];
- int i;
- for (i=0; i<count*4; i+=4) {
- atompre[i ] = atoms[i ];
- atompre[i + 1] = atoms[i + 1];
- float dz = zplane - atoms[i + 2];
- atompre[i + 2] = dz*dz;
- atompre[i + 3] = atoms[i + 3];
- }
-
- cudaMemcpyToSymbol(atominfo, atompre, count * 4 * sizeof(float), 0);
- CUERR // check and clear any existing errors
-
- return 0;
-}
-
diff --git a/benchmarks/CUDA/CP/benchmarks/cp/src/cuda_base/main.cu b/benchmarks/CUDA/CP/benchmarks/cp/src/cuda_base/main.cu
deleted file mode 100644
index 00b0155..0000000
--- a/benchmarks/CUDA/CP/benchmarks/cp/src/cuda_base/main.cu
+++ /dev/null
@@ -1,230 +0,0 @@
-/***************************************************************************
- *cr
- *cr (C) Copyright 2007 The Board of Trustees of the
- *cr University of Illinois
- *cr All Rights Reserved
- *cr
- ***************************************************************************/
-/*
- * CUDA accelerated coulombic potential grid test code
- * John E. Stone <[email protected]>
- * http://www.ks.uiuc.edu/~johns/
- *
- * Coulombic potential grid calculation microbenchmark based on the time
- * consuming portions of the 'cionize' ion placement tool.
- */
-
-#include <parboil.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "cuenergy.h"
-
-/* initatoms()
- * Store a pseudorandom arrangement of point charges in *atombuf.
- */
-static int
-initatoms(float **atombuf, int count, dim3 volsize, float gridspacing) {
- dim3 size;
- int i;
- float *atoms;
-
- srand(54321); // Ensure that atom placement is repeatable
-
- atoms = (float *) malloc(count * 4 * sizeof(float));
- *atombuf = atoms;
-
- // compute grid dimensions in angstroms
- size.x = gridspacing * volsize.x;
- size.y = gridspacing * volsize.y;
- size.z = gridspacing * volsize.z;
-
- for (i=0; i<count; i++) {
- int addr = i * 4;
- atoms[addr ] = (rand() / (float) RAND_MAX) * size.x;
- atoms[addr + 1] = (rand() / (float) RAND_MAX) * size.y;
- atoms[addr + 2] = (rand() / (float) RAND_MAX) * size.z;
- atoms[addr + 3] = ((rand() / (float) RAND_MAX) * 2.0) - 1.0; // charge
- }
-
- return 0;
-}
-
-/* writeenergy()
- * Write part of the energy array to an output file for verification.
- */
-static int
-writeenergy(char *filename, float *energy, dim3 volsize)
-{
- FILE *outfile;
- int x, y;
-
- outfile = fopen(filename, "w");
- if (outfile == NULL) {
- fputs("Cannot open output file\n", stderr);
- return -1;
- }
-
- /* Print the execution parameters */
- fprintf(outfile, "%d %d %d %d\n", volsize.x, volsize.y, volsize.z, ATOMCOUNT);
-
- /* Print a checksum */
- {
- double sum = 0.0;
-
- for (y = 0; y < volsize.y; y++) {
- for (x = 0; x < volsize.x; x++) {
- double t = energy[y*volsize.x+x];
- t = fmax(-20.0, fmin(20.0, t));
- sum += t;
- }
- }
- fprintf(outfile, "%.4g\n", sum);
- }
-
- /* Print several rows of the computed data */
- for (y = 0; y < 17; y++) {
- for (x = 0; x < volsize.x; x++) {
- int addr = y * volsize.x + x;
- fprintf(outfile, "%.4g ", energy[addr]);
- }
- fprintf(outfile, "\n");
- }
-
- fclose(outfile);
-
- return 0;
-}
-
-int main(int argc, char** argv) {
- struct pb_TimerSet timers;
- struct pb_Parameters *parameters;
-
- float *energy = NULL; // Output of device calculation
- float *atoms = NULL;
- dim3 volsize, Gsz, Bsz;
-
- // int final_iteration_count;
-
- // number of atoms to simulate
- int atomcount = ATOMCOUNT;
-
- // voxel spacing
- const float gridspacing = 0.1;
-
- // Size of buffer on GPU
- int volmemsz;
-
- printf("CUDA accelerated coulombic potential microbenchmark\n");
- printf("Original version by John E. Stone <[email protected]>\n");
- printf("This version maintained by Chris Rodrigues\n");
-
- parameters = pb_ReadParameters(&argc, argv);
- if (!parameters)
- return -1;
-
- if (parameters->inpFiles[0]) {
- fputs("No input files expected\n", stderr);
- return -1;
- }
-
- pb_InitializeTimerSet(&timers);
- pb_SwitchToTimer(&timers, pb_TimerID_COMPUTE);
-
- // setup energy grid size
- volsize.x = VOLSIZEX;
- volsize.y = VOLSIZEY;
- volsize.z = 1;
-
- // setup CUDA grid and block sizes
- Bsz.x = BLOCKSIZEX; // each thread does multiple Xs
- Bsz.y = BLOCKSIZEY;
- Bsz.z = 1;
- Gsz.x = volsize.x / (Bsz.x * UNROLLX); // each thread does multiple Xs
- Gsz.y = volsize.y / Bsz.y;
- Gsz.z = volsize.z / Bsz.z;
-
-#if 0
- printf("Grid size: %d x %d x %d\n", volsize.x, volsize.y, volsize.z);
- printf("Running kernel(atoms:%d, gridspacing %g, z %d)\n", atomcount, gridspacing, 0);
-#endif
-
- // allocate and initialize atom coordinates and charges
- if (initatoms(&atoms, atomcount, volsize, gridspacing))
- return -1;
-
- // allocate and initialize the GPU output array
- volmemsz = sizeof(float) * volsize.x * volsize.y * volsize.z;
-
- // Main computation
- {
- float *d_output = NULL; // Output on device
- int iterations=0;
- int atomstart;
-
- pb_SwitchToTimer(&timers, pb_TimerID_COPY);
- cudaMalloc((void**)&d_output, volmemsz);
- CUERR // check and clear any existing errors
- cudaMemset(d_output, 0, volmemsz);
- CUERR // check and clear any existing errors
- pb_SwitchToTimer(&timers, pb_TimerID_COMPUTE);
-
- for (atomstart=0; atomstart<atomcount; atomstart+=MAXATOMS) {
- int atomsremaining = atomcount - atomstart;
- int runatoms = (atomsremaining > MAXATOMS) ? MAXATOMS : atomsremaining;
- iterations++;
-
- // copy the atoms to the GPU
- pb_SwitchToTimer(&timers, pb_TimerID_COPY);
- if (copyatomstoconstbuf(atoms + 4*atomstart, runatoms, 0*gridspacing))
- return -1;
-
- if (parameters->synchronizeGpu) cudaThreadSynchronize();
- pb_SwitchToTimer(&timers, pb_TimerID_GPU);
-
- // RUN the kernel...
- pb_StartTimer(&timers.gpu);
- cenergy<<<Gsz, Bsz, 0>>>(runatoms, 0.1, d_output);
- CUERR // check and clear any existing errors
-
- if (parameters->synchronizeGpu) cudaThreadSynchronize();
- pb_SwitchToTimer(&timers, pb_TimerID_COMPUTE);
-
- // final_iteration_count = iterations;
- }
-#if 0
- printf("Done\n");
-#endif
-
- // Copy the GPU output data back to the host and use/store it..
- energy = (float *) malloc(volmemsz);
- pb_SwitchToTimer(&timers, pb_TimerID_COPY);
- cudaMemcpy(energy, d_output, volmemsz, cudaMemcpyDeviceToHost);
- CUERR // check and clear any existing errors
-
- cudaFree(d_output);
-
- pb_SwitchToTimer(&timers, pb_TimerID_COMPUTE);
- }
-
- /* Print a subset of the results to a file */
- if (parameters->outFile) {
- pb_SwitchToTimer(&timers, pb_TimerID_IO);
- if (writeenergy(parameters->outFile, energy, volsize) == -1)
- return -1;
- pb_SwitchToTimer(&timers, pb_TimerID_COMPUTE);
- }
-
- free(atoms);
- free(energy);
-
- pb_SwitchToTimer(&timers, pb_TimerID_NONE);
-
- pb_PrintTimerSet(&timers);
- pb_FreeParameters(parameters);
-
- return 0;
-}
-
-
-
diff --git a/benchmarks/CUDA/CP/benchmarks/cp/src/cuda_short/Makefile b/benchmarks/CUDA/CP/benchmarks/cp/src/cuda_short/Makefile
deleted file mode 100644
index 6991f9b..0000000
--- a/benchmarks/CUDA/CP/benchmarks/cp/src/cuda_short/Makefile
+++ /dev/null
@@ -1,15 +0,0 @@
-# (c) 2007 The Board of Trustees of the University of Illinois.
-
-include $(PARBOIL_ROOT)/common/mk/common.mk
-include $(PARBOIL_ROOT)/common/mk/cuda.mk
-
-SRCDIR_CUDAOBJS=main.o cuenergy_pre8_coalesce.o
-
-LINK_MODE=CUDA
-
-all: $(BIN)
-
-include $(PARBOIL_ROOT)/common/mk/rules.mk
-include $(PARBOIL_ROOT)/common/mk/cuda_rules.mk
-
-
diff --git a/benchmarks/CUDA/CP/benchmarks/cp/src/cuda_short/cuenergy.h b/benchmarks/CUDA/CP/benchmarks/cp/src/cuda_short/cuenergy.h
deleted file mode 100644
index f763a4c..0000000
--- a/benchmarks/CUDA/CP/benchmarks/cp/src/cuda_short/cuenergy.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/***************************************************************************
- *cr
- *cr (C) Copyright 2007 The Board of Trustees of the
- *cr University of Illinois
- *cr All Rights Reserved
- *cr
- ***************************************************************************/
-
-/* Size of a thread block */
-#define BLOCKSIZEX 16
-#define BLOCKSIZEY 8
-
-/* Number of grid points processed by a thread */
-#define UNROLLX 2
-
-/* Number of atoms processed by a kernel */
-#define MAXATOMS 4000
-
-/* Size of the benchmark problem. The GPU can run larger problems in a
- * reasonable time.
- *
- * For VOLSIZEX, VOLSIZEY, size 1024 is suitable for a few seconds of
- * GPU computation and size 128 is suitable for a few seconds of
- * CPU computation.
- *
- * For ATOMCOUNT, 100000 is suitable for GPU computation and 10000 is
- * suitable for CPU computation.
- */
-#define VOLSIZEX 256
-#define VOLSIZEY 256
-#define ATOMCOUNT 200
-
-#define CUERR { cudaError_t err; \
- if ((err = cudaGetLastError()) != cudaSuccess) { \
- printf("CUDA error: %s, line %d\n", cudaGetErrorString(err), __LINE__); \
- return -1; }}
-
-__global__ void cenergy(int numatoms,
- float gridspacing,
- float * energygrid);
-
-int copyatomstoconstbuf(float *atoms,
- int count,
- float zplane);
diff --git a/benchmarks/CUDA/CP/benchmarks/cp/src/cuda_short/cuenergy_pre8_coalesce.cu b/benchmarks/CUDA/CP/benchmarks/cp/src/cuda_short/cuenergy_pre8_coalesce.cu
deleted file mode 100644
index bb79e3f..0000000
--- a/benchmarks/CUDA/CP/benchmarks/cp/src/cuda_short/cuenergy_pre8_coalesce.cu
+++ /dev/null
@@ -1,85 +0,0 @@
-/***************************************************************************
- *cr
- *cr (C) Copyright 2007 The Board of Trustees of the
- *cr University of Illinois
- *cr All Rights Reserved
- *cr
- ***************************************************************************/
-
-#include <stdio.h>
-
-#include "cuenergy.h"
-
-//#if UNROLLX != 8
-//# error "UNROLLX must be 8"
-//#endif
-
-#if BLOCKSIZEX != 16
-# error "BLOCKSIZEX must be 16"
-#endif
-
-// Max constant buffer size is 64KB, minus whatever
-// the CUDA runtime and compiler are using that we don't know about.
-// At 16 bytes for atom, for this program 4070 atoms is about the max
-// we can store in the constant buffer.
-__constant__ float4 atominfo[MAXATOMS];
-
-// This kernel calculates coulombic potential at each grid point and
-// stores the results in the output array.
-
-__global__ void cenergy(int numatoms, float gridspacing, float * energygrid) {
- unsigned int xindex = __umul24(blockIdx.x, blockDim.x) * UNROLLX
- + threadIdx.x;
- unsigned int yindex = __umul24(blockIdx.y, blockDim.y) + threadIdx.y;
- unsigned int outaddr = (__umul24(gridDim.x, blockDim.x) * UNROLLX) * yindex
- + xindex;
-
- float coory = gridspacing * yindex;
- float coorx = gridspacing * xindex;
-
- float energyvalx1=0.0f;
- float energyvalx2=0.0f;
-
- float gridspacing_u = gridspacing * BLOCKSIZEX;
-
- int atomid;
- for (atomid=0; atomid<numatoms; atomid++) {
- float dy = coory - atominfo[atomid].y;
- float dyz2 = (dy * dy) + atominfo[atomid].z;
-
- float dx1 = coorx - atominfo[atomid].x;
- float dx2 = dx1 + gridspacing_u;
-
- energyvalx1 += atominfo[atomid].w * (1.0f / sqrtf(dx1*dx1 + dyz2));
- energyvalx2 += atominfo[atomid].w * (1.0f / sqrtf(dx2*dx2 + dyz2));
- }
-
- energygrid[outaddr] += energyvalx1;
- energygrid[outaddr+1*BLOCKSIZEX] += energyvalx2;
-}
-
-// This function copies atoms from the CPU to the GPU and
-// precalculates (z^2) for each atom.
-
-int copyatomstoconstbuf(float *atoms, int count, float zplane) {
- if (count > MAXATOMS) {
- printf("Atom count exceeds constant buffer storage capacity\n");
- return -1;
- }
-
- float atompre[4*MAXATOMS];
- int i;
- for (i=0; i<count*4; i+=4) {
- atompre[i ] = atoms[i ];
- atompre[i + 1] = atoms[i + 1];
- float dz = zplane - atoms[i + 2];
- atompre[i + 2] = dz*dz;
- atompre[i + 3] = atoms[i + 3];
- }
-
- cudaMemcpyToSymbol(atominfo, atompre, count * 4 * sizeof(float), 0);
- CUERR // check and clear any existing errors
-
- return 0;
-}
-
diff --git a/benchmarks/CUDA/CP/benchmarks/cp/src/cuda_short/main.cu b/benchmarks/CUDA/CP/benchmarks/cp/src/cuda_short/main.cu
deleted file mode 100644
index cc369d2..0000000
--- a/benchmarks/CUDA/CP/benchmarks/cp/src/cuda_short/main.cu
+++ /dev/null
@@ -1,229 +0,0 @@
-/***************************************************************************
- *cr
- *cr (C) Copyright 2007 The Board of Trustees of the
- *cr University of Illinois
- *cr All Rights Reserved
- *cr
- ***************************************************************************/
-/*
- * CUDA accelerated coulombic potential grid test code
- * John E. Stone <[email protected]>
- * http://www.ks.uiuc.edu/~johns/
- *
- * Coulombic potential grid calculation microbenchmark based on the time
- * consuming portions of the 'cionize' ion placement tool.
- */
-
-#include <parboil.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "cuenergy.h"
-
-/* initatoms()
- * Store a pseudorandom arrangement of point charges in *atombuf.
- */
-static int
-initatoms(float **atombuf, int count, dim3 volsize, float gridspacing) {
- dim3 size;
- int i;
- float *atoms;
-
- srand(54321); // Ensure that atom placement is repeatable
-
- atoms = (float *) malloc(count * 4 * sizeof(float));
- *atombuf = atoms;
-
- // compute grid dimensions in angstroms
- size.x = gridspacing * volsize.x;
- size.y = gridspacing * volsize.y;
- size.z = gridspacing * volsize.z;
-
- for (i=0; i<count; i++) {
- int addr = i * 4;
- atoms[addr ] = (rand() / (float) RAND_MAX) * size.x;
- atoms[addr + 1] = (rand() / (float) RAND_MAX) * size.y;
- atoms[addr + 2] = (rand() / (float) RAND_MAX) * size.z;
- atoms[addr + 3] = ((rand() / (float) RAND_MAX) * 2.0) - 1.0; // charge
- }
-
- return 0;
-}
-
-/* writeenergy()
- * Write part of the energy array to an output file for verification.
- */
-static int
-writeenergy(char *filename, float *energy, dim3 volsize)
-{
- FILE *outfile;
- int x, y;
-
- outfile = fopen(filename, "w");
- if (outfile == NULL) {
- fputs("Cannot open output file\n", stderr);
- return -1;
- }
-
- /* Print the execution parameters */
- fprintf(outfile, "%d %d %d %d\n", volsize.x, volsize.y, volsize.z, ATOMCOUNT);
-
- /* Print a checksum */
- {
- double sum = 0.0;
-
- for (y = 0; y < volsize.y; y++) {
- for (x = 0; x < volsize.x; x++) {
- double t = energy[y*volsize.x+x];
- t = fmax(-20.0, fmin(20.0, t));
- sum += t;
- }
- }
- fprintf(outfile, "%.4g\n", sum);
- }
-
- /* Print several rows of the computed data */
- for (y = 0; y < 17; y++) {
- for (x = 0; x < volsize.x; x++) {
- int addr = y * volsize.x + x;
- fprintf(outfile, "%.4g ", energy[addr]);
- }
- fprintf(outfile, "\n");
- }
-
- fclose(outfile);
-
- return 0;
-}
-
-int main(int argc, char** argv) {
- struct pb_TimerSet timers;
- struct pb_Parameters *parameters;
-
- float *energy = NULL; // Output of device calculation
- float *atoms = NULL;
- dim3 volsize, Gsz, Bsz;
-
- // int final_iteration_count;
-
- // number of atoms to simulate
- int atomcount = ATOMCOUNT;
-
- // voxel spacing
- const float gridspacing = 0.1;
-
- // Size of buffer on GPU
- int volmemsz;
-
- printf("CUDA accelerated coulombic potential microbenchmark\n");
- printf("Original version by John E. Stone <[email protected]>\n");
- printf("This version maintained by Chris Rodrigues\n");
-
- parameters = pb_ReadParameters(&argc, argv);
- if (!parameters)
- return -1;
-
- if (parameters->inpFiles[0]) {
- fputs("No input files expected\n", stderr);
- return -1;
- }
-
- pb_InitializeTimerSet(&timers);
- pb_SwitchToTimer(&timers, pb_TimerID_COMPUTE);
-
- // setup energy grid size
- volsize.x = VOLSIZEX;
- volsize.y = VOLSIZEY;
- volsize.z = 1;
-
- // setup CUDA grid and block sizes
- Bsz.x = BLOCKSIZEX; // each thread does multiple Xs
- Bsz.y = BLOCKSIZEY;
- Bsz.z = 1;
- Gsz.x = volsize.x / (Bsz.x * UNROLLX); // each thread does multiple Xs
- Gsz.y = volsize.y / Bsz.y;
- Gsz.z = volsize.z / Bsz.z;
-
-#if 0
- printf("Grid size: %d x %d x %d\n", volsize.x, volsize.y, volsize.z);
- printf("Running kernel(atoms:%d, gridspacing %g, z %d)\n", atomcount, gridspacing, 0);
-#endif
-
- // allocate and initialize atom coordinates and charges
- if (initatoms(&atoms, atomcount, volsize, gridspacing))
- return -1;
-
- // allocate and initialize the GPU output array
- volmemsz = sizeof(float) * volsize.x * volsize.y * volsize.z;
-
- // Main computation
- {
- float *d_output = NULL; // Output on device
- int iterations=0;
- int atomstart;
-
- pb_SwitchToTimer(&timers, pb_TimerID_COPY);
- cudaMalloc((void**)&d_output, volmemsz);
- CUERR // check and clear any existing errors
- cudaMemset(d_output, 0, volmemsz);
- CUERR // check and clear any existing errors
- pb_SwitchToTimer(&timers, pb_TimerID_COMPUTE);
-
- for (atomstart=0; atomstart<atomcount; atomstart+=MAXATOMS) {
- int atomsremaining = atomcount - atomstart;
- int runatoms = (atomsremaining > MAXATOMS) ? MAXATOMS : atomsremaining;
- iterations++;
-
- // copy the atoms to the GPU
- pb_SwitchToTimer(&timers, pb_TimerID_COPY);
- if (copyatomstoconstbuf(atoms + 4*atomstart, runatoms, 0*gridspacing))
- return -1;
-
- if (parameters->synchronizeGpu) cudaThreadSynchronize();
- pb_SwitchToTimer(&timers, pb_TimerID_GPU);
-
- // RUN the kernel...
- cenergy<<<Gsz, Bsz, 0>>>(runatoms, 0.1, d_output);
- CUERR // check and clear any existing errors
-
- if (parameters->synchronizeGpu) cudaThreadSynchronize();
- pb_SwitchToTimer(&timers, pb_TimerID_COMPUTE);
-
- // final_iteration_count = iterations;
- }
-#if 0
- printf("Done\n");
-#endif
-
- // Copy the GPU output data back to the host and use/store it..
- energy = (float *) malloc(volmemsz);
- pb_SwitchToTimer(&timers, pb_TimerID_COPY);
- cudaMemcpy(energy, d_output, volmemsz, cudaMemcpyDeviceToHost);
- CUERR // check and clear any existing errors
-
- cudaFree(d_output);
-
- pb_SwitchToTimer(&timers, pb_TimerID_COMPUTE);
- }
-
- /* Print a subset of the results to a file */
- if (parameters->outFile) {
- pb_SwitchToTimer(&timers, pb_TimerID_IO);
- if (writeenergy(parameters->outFile, energy, volsize) == -1)
- return -1;
- pb_SwitchToTimer(&timers, pb_TimerID_COMPUTE);
- }
-
- free(atoms);
- free(energy);
-
- pb_SwitchToTimer(&timers, pb_TimerID_NONE);
-
- pb_PrintTimerSet(&timers);
- pb_FreeParameters(parameters);
-
- return 0;
-}
-
-
-
diff --git a/benchmarks/CUDA/CP/benchmarks/cp/tools/compare-output b/benchmarks/CUDA/CP/benchmarks/cp/tools/compare-output
deleted file mode 100644
index 775c577..0000000
--- a/benchmarks/CUDA/CP/benchmarks/cp/tools/compare-output
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/usr/bin/env python
-
-# (c) Copyright 2007 The Board of Trustees of the University of Illinois.
-
-import sys
-import itertools
-
-import filecompare as fc
-import textfilecompare as tfc
-
-def compare_checksums(ref_list, cmp_list):
- # Checksum should have one floating-point number
- if len(ref_list) != 1 or len(cmp_list) != 1: return False
-
- diff = abs(ref_list[0] - cmp_list[0])
- if diff > 0.005 * abs(ref_list[0]):
- # Checksum does not match
- return False
-
- # Checksum matches within tolerance
- return True
-
-def compare_floats(ref_list, cmp_list):
-
- # Lists should be the same length
- if len(ref_list) != len(cmp_list): return False
-
- # Numbers should be equal with a tolerance of 0.5%
- # or 0.005, whichever is greater.
- for (r, c) in zip(ref_list, cmp_list):
- diff = abs(r - c)
- if not (diff < 0.005 or diff < 0.005 * abs(r)):
- # Floats mismatch
- return False
-
- # All numbers are within tolerance
- return True
-
-charge_err = "Computed charge distribution does not match the expected values\n"
-checksum_err = "Checksums do not match\n"
-
-comparison = fc.Sequence_([
- fc.Compare(tfc.verbatim),
- fc.Compare(tfc.floats, equal=compare_checksums, message=checksum_err),
- fc.Sequence_(itertools.repeat(fc.Compare(tfc.floats, equal=compare_floats, message=charge_err), 17))
- ])
-
-fc.default_main(comparison)
diff --git a/benchmarks/CUDA/CP/common/include/parboil.h b/benchmarks/CUDA/CP/common/include/parboil.h
deleted file mode 100644
index 9885c9d..0000000
--- a/benchmarks/CUDA/CP/common/include/parboil.h
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * (c) 2007 The Board of Trustees of the University of Illinois.
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <unistd.h>
-
-/* Command line parameters for benchmarks */
-struct pb_Parameters {
- char *outFile; /* If not NULL, the raw output of the
- * computation should be saved to this
- * file. The string is owned. */
- char **inpFiles; /* A NULL-terminated array of strings
- * holding the input file(s) for the
- * computation. The array and strings
- * are owned. */
- int synchronizeGpu; /* Controls behavior of CUDA benchmarks.
- * If nonzero, a CUDA runtime
- * synchronization call should happen
- * after each data transfer to the GPU
- * and after each kernel call. This
- * is necessary for accurate timing
- * measurement. */
-};
-
-/* Read command-line parameters.
- *
- * The argc and argv parameters to main are read, and any parameters
- * interpreted by this function are removed from the argument list.
- *
- * A new instance of struct pb_Parameters is returned.
- * If there is an error, then an error message is printed on stderr
- * and NULL is returned.
- */
-struct pb_Parameters *
-pb_ReadParameters(int *_argc, char **argv);
-
-/* Free an instance of struct pb_Parameters.
- */
-void
-pb_FreeParameters(struct pb_Parameters *p);
-
-/* Count the number of input files in a pb_Parameters instance.
- */
-int
-pb_Parameters_CountInputs(struct pb_Parameters *p);
-
-/* A time or duration. */
-#if _POSIX_VERSION >= 200112L
-typedef unsigned long long pb_Timestamp; /* time in microseconds */
-#else
-# error "Timestamps not implemented"
-#endif
-
-enum pb_TimerState {
- pb_Timer_STOPPED,
- pb_Timer_RUNNING,
-};
-
-struct pb_Timer {
- enum pb_TimerState state;
- pb_Timestamp elapsed; /* Amount of time elapsed so far */
- pb_Timestamp init; /* Beginning of the current time interval,
- * if state is RUNNING. Undefined
- * otherwise. */
-};
-
-/* Reset a timer.
- * Use this to initialize a timer or to clear
- * its elapsed time. The reset timer is stopped.
- */
-void
-pb_ResetTimer(struct pb_Timer *timer);
-
-/* Start a timer. The timer is set to RUNNING mode and
- * time elapsed while the timer is running is added to
- * the timer.
- * The timer should not already be running.
- */
-void
-pb_StartTimer(struct pb_Timer *timer);
-
-/* Stop a timer.
- * This stops adding elapsed time to the timer.
- * The timer should not already be stopped.
- */
-void
-pb_StopTimer(struct pb_Timer *timer);
-
-/* Get the elapsed time in seconds. */
-double
-pb_GetElapsedTime(struct pb_Timer *timer);
-
-/* Execution time is assigned to one of these categories. */
-enum pb_TimerID {
- pb_TimerID_NONE = 0,
- pb_TimerID_IO, /* Time spent in input/output */
- pb_TimerID_GPU, /* Time spent computing on the GPU */
- pb_TimerID_COPY, /* Time spent moving data to/from GPU and
- * allocating/freeing memory on the GPU */
- pb_TimerID_COMPUTE, /* Time for all program execution other
- * than parsing command line arguments,
- * I/O, GPU, and copy */
- pb_TimerID_LAST /* Number of timer IDs */
-};
-
-/* A set of timers for recording execution times. */
-struct pb_TimerSet {
- enum pb_TimerID current;
- struct pb_Timer timers[pb_TimerID_LAST];
-};
-
-/* Reset all timers in the set. */
-void
-pb_InitializeTimerSet(struct pb_TimerSet *timers);
-
-/* Select which timer the next interval of time should be accounted
- * to. The selected timer is started and other timers are stopped.
- * Using pb_TimerID_NONE stops all timers. */
-void
-pb_SwitchToTimer(struct pb_TimerSet *timers, enum pb_TimerID timer);
-
-/* Print timer values to standard output. */
-void
-pb_PrintTimerSet(struct pb_TimerSet *timers);
-
-#ifdef __cplusplus
-}
-#endif
diff --git a/benchmarks/CUDA/CP/common/lib/.dummy.txt b/benchmarks/CUDA/CP/common/lib/.dummy.txt
deleted file mode 100644
index 241e4bb..0000000
--- a/benchmarks/CUDA/CP/common/lib/.dummy.txt
+++ /dev/null
@@ -1 +0,0 @@
-A dummy file so that perforce creates the empty lib directory.
diff --git a/benchmarks/CUDA/CP/common/mk/common.mk b/benchmarks/CUDA/CP/common/mk/common.mk
deleted file mode 100644
index 93c76c0..0000000
--- a/benchmarks/CUDA/CP/common/mk/common.mk
+++ /dev/null
@@ -1,51 +0,0 @@
-# (c) 2007 The Board of Trustees of the University of Illinois.
-
-# Definitions common to all makefiles
-
-########################################
-# Environment variable check
-#
-# The environment variables BUILDDIR, SRCDIR, and PARBOIL_ROOT
-# should be set on the command line to `make'.
-########################################
-
-ifeq ("$(SRCDIR)", "")
-$(error $$SRCDIR is not set)
-endif
-
-ifeq ("$(PARBOIL_ROOT)", "")
-$(error $$PARBOIL_ROOT is not set)
-endif
-
-########################################
-# Variables
-########################################
-
-# Programs
-CC=gcc
-CXX=g++
-AR=ar
-RANLIB=ranlib
-
-# Command line options
-INCLUDEFLAGS=-I$(CUDAHOME)/include -I$(PARBOIL_ROOT)/common/include
-CFLAGS=$(GCCSTD) $(INCLUDEFLAGS) -g $(EXTRA_CFLAGS)
-CXXFLAGS=$(INCLUDEFLAGS) -g $(EXTRA_CXXFLAGS)
-LDFLAGS=-L$(PARBOIL_ROOT)/common/lib $(EXTRA_LDFLAGS)
-LIBS=-lparboil $(EXTRA_LIBS)
-
-# Pass an extra source language option to GCC
-ifeq ("$(CC)","gcc")
-GCCSTD=-std=gnu99
-endif
-
-
-########################################
-# Functions
-########################################
-
-# Add BUILDDIR as a prefix to each element of $1
-INBUILDDIR=$(addprefix $(BUILDDIR)/,$(1))
-
-# Add SRCDIR as a prefix to each element of $1
-INSRCDIR=$(addprefix $(SRCDIR)/,$(1))
diff --git a/benchmarks/CUDA/CP/common/mk/cuda.mk b/benchmarks/CUDA/CP/common/mk/cuda.mk
deleted file mode 100644
index 38f0ba2..0000000
--- a/benchmarks/CUDA/CP/common/mk/cuda.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-# (c) 2007 The Board of Trustees of the University of Illinois.
-
-# Cuda-related definitions common to all benchmarks
-
-########################################
-# Variables
-########################################
-
-# Programs
-CUDACC=nvcc
-# Paths
-# Flags
-CUDACFLAGS=$(INCLUDEFLAGS) -g -Xcompiler "-m32" $(EXTRA_CUDACFLAGS)
-CUDALDFLAGS=$(LDFLAGS) -Xcompiler "-m32" \
- -L$(GPGPUSIM_ROOT)/lib/ \
- -L$(PARBOIL_ROOT)/common/src $(EXTRA_CUDALDFLAGS)
-CUDALIBS=-lcudart $(LIBS) -lm -lz -lGL
diff --git a/benchmarks/CUDA/CP/common/mk/cuda_rules.mk b/benchmarks/CUDA/CP/common/mk/cuda_rules.mk
deleted file mode 100644
index ce2f5da..0000000
--- a/benchmarks/CUDA/CP/common/mk/cuda_rules.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-# (c) 2007 The Board of Trustees of the University of Illinois.
-
-# Cuda-related rules common to all benchmarks
-
-########################################
-# Derived variables
-########################################
-
-CUDAOBJS = $(call INBUILDDIR,$(SRCDIR_CUDAOBJS))
-
-########################################
-# Rules
-########################################
-
-ifeq ("$(LINK_MODE)", "CUDA")
-$(BIN) : $(OBJS) $(CUDAOBJS)
- $(CUDACC) $(CUDALDFLAGS) $^ -o $@ $(CUDALIBS)
-endif
-
-$(BUILDDIR)/%.o : $(SRCDIR)/%.cu
- mkdir -p $(BUILDDIR)
- $(CUDACC) $(CUDACFLAGS) -c $< -o $@
-
-$(BUILDDIR)/%.ptx : $(SRCDIR)/%.cu
- mkdir -p $(BUILDDIR)
- $(CUDACC) $(CUDACFLAGS) -ptx $< -o $@
-
-$(BUILDDIR)/%.cubin : $(SRCDIR)/%.cu
- mkdir -p $(BUILDDIR)
- $(CUDACC) $(CUDACFLAGS) -cubin $< -o $@
diff --git a/benchmarks/CUDA/CP/common/mk/rules.mk b/benchmarks/CUDA/CP/common/mk/rules.mk
deleted file mode 100644
index 0e6304d..0000000
--- a/benchmarks/CUDA/CP/common/mk/rules.mk
+++ /dev/null
@@ -1,48 +0,0 @@
-# (c) 2007 The Board of Trustees of the University of Illinois.
-
-# Rules common to all makefiles
-
-########################################
-# Environment variable check
-########################################
-
-# The second-last directory in the $(BUILDDIR) path
-# must have the name "build". This reduces the risk of terrible
-# accidents if paths are not set up correctly.
-ifeq ("$(notdir $(BUILDDIR))", "")
-$(error $$BUILDDIR is not set correctly)
-endif
-
-ifneq ("$(notdir $(patsubst %/,%,$(dir $(BUILDDIR))))", "build")
-$(error $$BUILDDIR is not set correctly)
-endif
-
-########################################
-# Derived variables
-########################################
-
-OBJS = $(call INBUILDDIR,$(SRCDIR_OBJS))
-
-########################################
-# Rules
-########################################
-
-clean :
- rm -f $(BUILDDIR)/*
- if [ -d $(BUILDDIR) ]; then rmdir $(BUILDDIR); fi
-
-ifeq ("$(LINK_MODE)","C")
-$(BIN) : $(OBJS)
- $(CC) $(LDFLAGS) $^ -o $@ $(LIBS)
-endif
-
-$(BUILDDIR) :
- mkdir $(BUILDDIR)
-
-$(BUILDDIR)/%.o : $(SRCDIR)/%.c
- mkdir -p $(BUILDDIR)
- $(CC) $(CFLAGS) -c $< -o $@
-
-$(BUILDDIR)/%.o : $(SRCDIR)/%.cc
- mkdir -p $(BUILDDIR)
- $(CXX) $(CXXFLAGS) -c $< -o $@
diff --git a/benchmarks/CUDA/CP/common/python/binaryfilecompare.py b/benchmarks/CUDA/CP/common/python/binaryfilecompare.py
deleted file mode 100644
index b143b68..0000000
--- a/benchmarks/CUDA/CP/common/python/binaryfilecompare.py
+++ /dev/null
@@ -1,50 +0,0 @@
-# (c) Copyright 2007 The Board of Trustees of the University of Illinois.
-
-import struct
-
-def uint16(f):
- """Read a 16-bit unsigned integer from f."""
- [c, c2] = f.read(2)
- return ord(c) + (ord(c2) << 8)
-
-def uint32(f):
- """Read a 32-bit unsigned integer from f."""
- [c, c2, c3, c4] = f.read(4)
- return ord(c) + (ord(c2) << 8) + (ord(c3) << 16) + (ord(c4) << 24)
-
-def float(f):
- """Read a floating-point number from f."""
- s = f.read(4)
- (n,) = struct.unpack("<f", s)
- return n
-
-def many(reader, count):
- """Create a reader function that reads a fixed-size sequence of
- values from f."""
- return lambda f: [reader(f) for n in range(count)]
-
-def many_uint16(count):
- """Create a reader function that reads a fixed-size sequence of
- 16-bit unsigned integers from f."""
- def read(f):
- s = f.read(2*count)
- ns = struct.unpack("<%dH" % count, s)
- return ns
- return read
-
-def many_float(count):
- """Create a reader function that reads a fixed-size sequence of
- floats from f."""
- def read(f):
- s = f.read(4*count)
- floats = struct.unpack("<%df" % count, s)
- return floats
- return read
-
-def eof(f):
- """Read the end of file 'f'. A ValueError is raised if anything
- other than EOF is read from the file."""
- if f.readline() == "": return None
- else: raise ValueError, "Expecting end of file"
-
-
diff --git a/benchmarks/CUDA/CP/common/python/filecompare.py b/benchmarks/CUDA/CP/common/python/filecompare.py
deleted file mode 100644
index a9a5c57..0000000
--- a/benchmarks/CUDA/CP/common/python/filecompare.py
+++ /dev/null
@@ -1,154 +0,0 @@
-# (c) Copyright 2007 The Board of Trustees of the University of Illinois.
-
-import sys
-
-# A monad for comparing two files. Comparing proceeds until the first
-# mismatch occurs, at which point comparison stops and the error is
-# reported.
-class CompareMonad(object):
- def checkType(x):
- if not isinstance(x, CompareMonad):
- raise TypeError, "Not a CompareMonad instance"
- checkType = staticmethod(checkType)
-
- def run(self, ref_file, out_file):
- raise NotImplementedError
-
-# The >>= operator. Executes 'fst', then executes 'snd' with the result
-# of 'fst'.
-class Bind(CompareMonad):
-
- def __init__(self, fst, snd):
- CompareMonad.checkType(fst)
- self.fst = fst
- self.snd = snd
-
- def run(self, ref_file, out_file):
- (ok, value) = self.fst.run(ref_file, out_file)
- if ok:
- sndMonad = self.snd(value)
- CompareMonad.checkType(sndMonad)
- return sndMonad.run(ref_file, out_file)
- return (False, None)
-
-# The >> operator. Executes 'fst', then executes 'snd'.
-class Then(CompareMonad):
- def __init__(self, fst, snd):
- CompareMonad.checkType(fst)
- CompareMonad.checkType(snd)
- self.fst = fst
- self.snd = snd
-
- def run(self, ref_file, out_file):
- (ok, value) = self.fst.run(ref_file, out_file)
- if ok:
- return self.snd.run(ref_file, out_file)
- return (False, None)
-
-# The 'return' operator. Returns a value that is accessible
-# within the monad.
-class Return(CompareMonad):
- def __init__(self, value):
- self.value = value
-
- def run(self, ref_file, out_file):
- return (True, self.value)
-
-# Run a list of monad instances and return their results as
-# a list.
-class Sequence(CompareMonad):
- def __init__(self, ms):
- self.ms = ms
-
- def run(self, ref_file, out_file):
- values = []
- for m in self.ms:
- CompareMonad.checkType(m)
- (ok, value) = m.run(ref_file, out_file)
- if not ok: return (False, None)
- values.append(value)
-
- return (True, values)
-
-# Run a list of monad instances, ignoring their results.
-class Sequence_(CompareMonad):
- def __init__(self, ms):
- self.ms = ms
-
- def run(self, ref_file, out_file):
- for m in self.ms:
- CompareMonad.checkType(m)
- (ok, value) = m.run(ref_file, out_file)
- if not ok: return (False, None)
-
- return (True, None)
-
-# The basic CompareMonad routine. This reads a value from both input
-# files, compares the result, and, if the comparison was successful,
-# returns the value.
-class Compare(CompareMonad):
- """Read an item from both input files and compare it."""
-
- def __init__(self,
- read = file.read,
- equal = lambda x, y: x == y,
- message = "Output does not match the expected output"):
- self.read = read
- self.equal = equal
- self.message = message
-
- def run(self, ref_file, out_file):
- try:
- x = self.read(ref_file)
- except ValueError, e:
- sys.stderr.write("Malformed reference file!\n")
- return (False, None)
- except EOFError:
- sys.stderr.write("Unexpected end of reference file!\n")
- return (False, None)
- try:
- y = self.read(out_file)
- except ValueError, e:
- sys.stderr.write("Malformed output file;\n")
- sys.stderr.write(str(e))
- sys.stderr.write('\n')
- return (False, None)
- except EOFError:
- sys.stderr.write("Unexpected end of output file\n")
- return (False, None)
-
- # Compare reference data to result data
- if self.equal(x, y):
- return (True, x)
- else:
- sys.stderr.write(self.message)
- sys.stderr.write('\n')
- return (False, None)
-
-def open_or_abort(filename):
- try: f = file(filename, "r")
- except:
- sys.stderr.write("Cannot open file '" + filename + "'\n")
- sys.exit(-1)
- return f
-
-
-def default_main(comparison_routine):
- """Default main() routine. Read file names from sys.argv
- and compare the files."""
-
- if len(sys.argv) != 3:
- sys.stderr.write("Usage: compare-output <from-file> <to-file>\n")
- sys.exit(-1)
-
- ref = open_or_abort(sys.argv[1])
- out = open_or_abort(sys.argv[2])
-
- (ok, _) = comparison_routine.run(ref, out)
- if ok:
- sys.stdout.write("Pass\n")
- sys.exit(0)
- else:
- sys.stdout.write("Mismatch\n")
- sys.exit(-1)
-
diff --git a/benchmarks/CUDA/CP/common/python/textfilecompare.py b/benchmarks/CUDA/CP/common/python/textfilecompare.py
deleted file mode 100644
index 2f6ef68..0000000
--- a/benchmarks/CUDA/CP/common/python/textfilecompare.py
+++ /dev/null
@@ -1,27 +0,0 @@
-# (c) Copyright 2007 The Board of Trustees of the University of Illinois.
-
-from binaryfilecompare import eof, many
-
-# Rename the builtin 'float' variable to avoid name conflicts
-builtin_float = float
-
-def verbatim(f):
- """Read a line of text from file 'f'."""
- line = f.readline()
- return line
-
-def float(f):
- """Read a line of text from file 'f' as a single floating-point
- number."""
- words = f.readline().split()
- if len(words) != 1:
- raise ValueError, "Expecting line to contain a single number"
- return builtin_float(words[0])
-
-def floats(f):
- """Read a line of text from file 'f' as a list of floating-point
- numbers."""
- words = f.readline().split()
- return [builtin_float(x) for x in words]
-
-
diff --git a/benchmarks/CUDA/CP/common/src/Makefile b/benchmarks/CUDA/CP/common/src/Makefile
deleted file mode 100644
index 74822e2..0000000
--- a/benchmarks/CUDA/CP/common/src/Makefile
+++ /dev/null
@@ -1,23 +0,0 @@
-# (c) 2007 The Board of Trustees of the University of Illinois.
-
-SRCDIR=$(shell pwd)
-BUILDDIR=$(shell pwd)/../lib
-
-include $(PARBOIL_ROOT)/common/mk/common.mk
-include $(PARBOIL_ROOT)/common/mk/cuda.mk
-
-OBJS=$(BUILDDIR)/parboil.o
-TARGET=$(BUILDDIR)/libparboil.a
-
-all : $(TARGET)
-
-clean:
- rm -f $(OBJS) $(TARGET)
-
-$(BUILDDIR)/%.o : $(SRCDIR)/%.c
- $(CC) -c $(CFLAGS) $^ -o $@
-
-$(TARGET) : $(OBJS)
- $(AR) rc $@ $?
- $(RANLIB) $@
-
diff --git a/benchmarks/CUDA/CP/common/src/parboil.c b/benchmarks/CUDA/CP/common/src/parboil.c
deleted file mode 100644
index f5ddfc6..0000000
--- a/benchmarks/CUDA/CP/common/src/parboil.c
+++ /dev/null
@@ -1,349 +0,0 @@
-/*
- * (c) 2007 The Board of Trustees of the University of Illinois.
- */
-
-#include <parboil.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-
-#if _POSIX_VERSION >= 200112L
-# include <sys/time.h>
-#endif
-
-/* Free an array of owned strings. */
-static void
-free_string_array(char **string_array)
-{
- char **p;
-
- if (!string_array) return;
- for (p = string_array; *p; p++) free(*p);
- free(string_array);
-}
-
-/* Parse a comma-delimited list of strings into an
- * array of strings. */
-static char **
-read_string_array(char *in)
-{
- char **ret;
- int i;
- int count; /* Number of items in the input */
- char *substring; /* Current substring within 'in' */
-
- /* Count the number of items in the string */
- count = 1;
- for (i = 0; in[i]; i++) if (in[i] == ',') count++;
-
- /* Allocate storage */
- ret = malloc((count + 1) * sizeof(char *));
-
- /* Create copies of the strings from the list */
- substring = in;
- for (i = 0; i < count; i++) {
- char *substring_end;
- int substring_length;
-
- /* Find length of substring */
- for (substring_end = substring;
- (*substring_end != ',') && (*substring_end != 0);
- substring_end++);
-
- substring_length = substring_end - substring;
-
- /* Allocate memory and copy the substring */
- ret[i] = malloc(substring_length + 1);
- memcpy(ret[i], substring, substring_length);
- ret[i][substring_length] = 0;
-
- /* go to next substring */
- substring = substring_end + 1;
- }
- ret[i] = NULL; /* Write the sentinel value */
-
- return ret;
-}
-
-struct argparse {
- int argc; /* Number of arguments. Mutable. */
- char **argv; /* Argument values. Immutable. */
-
- int argn; /* Current argument number. */
- char **argv_get; /* Argument value being read. */
- char **argv_put; /* Argument value being written.
- * argv_put <= argv_get. */
-};
-
-static void
-initialize_argparse(struct argparse *ap, int argc, char **argv)
-{
- ap->argc = argc;
- ap->argn = 0;
- ap->argv_get = ap->argv_put = ap->argv = argv;
-}
-
-static void
-finalize_argparse(struct argparse *ap)
-{
- /* Move the remaining arguments */
- for(; ap->argn < ap->argc; ap->argn++)
- *ap->argv_put++ = *ap->argv_get++;
-}
-
-/* Delete the current argument. */
-static void
-delete_argument(struct argparse *ap)
-{
- if (ap->argn >= ap->argc) {
- fprintf(stderr, "delete_argument\n");
- }
- ap->argc--;
- ap->argv_get++;
-}
-
-/* Go to the next argument. Also, move the current argument to its
- * final location in argv. */
-static void
-next_argument(struct argparse *ap)
-{
- if (ap->argn >= ap->argc) {
- fprintf(stderr, "next_argument\n");
- }
- /* Move argument to its new location. */
- *ap->argv_put++ = *ap->argv_get++;
- ap->argn++;
-}
-
-static int
-is_end_of_arguments(struct argparse *ap)
-{
- return ap->argn == ap->argc;
-}
-
-static char *
-get_argument(struct argparse *ap)
-{
- return *ap->argv_get;
-}
-
-static char *
-consume_argument(struct argparse *ap)
-{
- char *ret = get_argument(ap);
- delete_argument(ap);
- return ret;
-}
-
-struct pb_Parameters *
-pb_ReadParameters(int *_argc, char **argv)
-{
- char *err_message;
- struct argparse ap;
- struct pb_Parameters *ret = malloc(sizeof(struct pb_Parameters));
-
- /* Initialize the parameters structure */
- ret->outFile = NULL;
- ret->inpFiles = malloc(sizeof(char *));
- ret->inpFiles[0] = NULL;
- ret->synchronizeGpu = 0;
-
- /* Each argument */
- initialize_argparse(&ap, *_argc, argv);
- while(!is_end_of_arguments(&ap)) {
- char *arg = get_argument(&ap);
-
- /* Single-character flag */
- if ((arg[0] == '-') && (arg[1] != 0) && (arg[2] == 0)) {
- delete_argument(&ap); /* This argument is consumed here */
-
- switch(arg[1]) {
- case 'o': /* Output file name */
- if (is_end_of_arguments(&ap))
- {
- err_message = "Expecting file name after '-o'\n";
- goto error;
- }
- free(ret->outFile);
- ret->outFile = strdup(consume_argument(&ap));
- break;
- case 'i': /* Input file name */
- if (is_end_of_arguments(&ap))
- {
- err_message = "Expecting file name after '-i'\n";
- goto error;
- }
- ret->inpFiles = read_string_array(consume_argument(&ap));
- break;
- case 'S': /* Synchronize */
- ret->synchronizeGpu = 1;
- break;
- case '-': /* End of options */
- goto end_of_options;
- default:
- err_message = "Unexpected command-line parameter\n";
- goto error;
- }
- }
- else {
- /* Other parameters are ignored */
- next_argument(&ap);
- }
- } /* end for each argument */
-
- end_of_options:
- *_argc = ap.argc; /* Save the modified argc value */
- finalize_argparse(&ap);
-
- return ret;
-
- error:
- fputs(err_message, stderr);
- pb_FreeParameters(ret);
- return NULL;
-}
-
-void
-pb_FreeParameters(struct pb_Parameters *p)
-{
- char **cpp;
-
- free(p->outFile);
- free_string_array(p->inpFiles);
- free(p);
-}
-
-int
-pb_Parameters_CountInputs(struct pb_Parameters *p)
-{
- int n;
-
- for (n = 0; p->inpFiles[n]; n++);
- return n;
-}
-
-/*****************************************************************************/
-/* Timer routines */
-
-static void
-accumulate_time(pb_Timestamp *accum,
- pb_Timestamp start,
- pb_Timestamp end)
-{
-#if _POSIX_VERSION >= 200112L
- *accum += end - start;
-#else
-# error "Timestamps not implemented for this system"
-#endif
-}
-
-void
-pb_ResetTimer(struct pb_Timer *timer)
-{
- timer->state = pb_Timer_STOPPED;
-
-#if _POSIX_VERSION >= 200112L
- timer->elapsed = 0;
-#else
-# error "pb_ResetTimer: not implemented for this system"
-#endif
-}
-
-void
-pb_StartTimer(struct pb_Timer *timer)
-{
- if (timer->state != pb_Timer_STOPPED) {
- fputs("Ignoring attempt to start a running timer\n", stderr);
- return;
- }
-
- timer->state = pb_Timer_RUNNING;
-
-#if _POSIX_VERSION >= 200112L
- {
- struct timeval tv;
- gettimeofday(&tv, NULL);
- timer->init = tv.tv_sec * 1000000LL + tv.tv_usec;
- }
-#else
-# error "pb_StartTimer: not implemented for this system"
-#endif
-}
-
-void
-pb_StopTimer(struct pb_Timer *timer)
-{
- pb_Timestamp fini;
-
- if (timer->state != pb_Timer_RUNNING) {
- fputs("Ignoring attempt to stop a stopped timer\n", stderr);
- return;
- }
-
- timer->state = pb_Timer_STOPPED;
-
-#if _POSIX_VERSION >= 200112L
- {
- struct timeval tv;
- gettimeofday(&tv, NULL);
- fini = tv.tv_sec * 1000000LL + tv.tv_usec;
- }
-#else
-# error "pb_StopTimer: not implemented for this system"
-#endif
-
- accumulate_time(&timer->elapsed, timer->init, fini);
-}
-
-/* Get the elapsed time in seconds. */
-double
-pb_GetElapsedTime(struct pb_Timer *timer)
-{
- double ret;
-
- if (timer->state != pb_Timer_STOPPED) {
- fputs("Elapsed time from a running timer is inaccurate\n", stderr);
- }
-
-#if _POSIX_VERSION >= 200112L
- ret = timer->elapsed / 1e6;
-#else
-# error "pb_GetElapsedTime: not implemented for this system"
-#endif
- return ret;
-}
-
-void
-pb_InitializeTimerSet(struct pb_TimerSet *timers)
-{
- int n;
-
- timers->current = pb_TimerID_NONE;
-
- for (n = 0; n < pb_TimerID_LAST; n++)
- pb_ResetTimer(&timers->timers[n]);
-}
-
-void
-pb_SwitchToTimer(struct pb_TimerSet *timers, enum pb_TimerID timer)
-{
- /* Stop the currently running timer */
- if (timers->current != pb_TimerID_NONE)
- pb_StopTimer(&timers->timers[timers->current]);
-
- timers->current = timer;
-
- /* Start the new timer */
- if (timer != pb_TimerID_NONE)
- pb_StartTimer(&timers->timers[timer]);
-}
-
-void
-pb_PrintTimerSet(struct pb_TimerSet *timers)
-{
- struct pb_Timer *t = timers->timers;
- printf("IO: %f\n", pb_GetElapsedTime(&t[pb_TimerID_IO]));
- printf("GPU: %f\n", pb_GetElapsedTime(&t[pb_TimerID_GPU]));
- printf("Copy: %f\n", pb_GetElapsedTime(&t[pb_TimerID_COPY]));
- printf("Compute: %f\n", pb_GetElapsedTime(&t[pb_TimerID_COMPUTE]));
-}
diff --git a/benchmarks/CUDA/CP/driver/__init__.py b/benchmarks/CUDA/CP/driver/__init__.py
deleted file mode 100644
index 3b6c38a..0000000
--- a/benchmarks/CUDA/CP/driver/__init__.py
+++ /dev/null
@@ -1,33 +0,0 @@
-# (c) 2007 The Board of Trustees of the University of Illinois.
-
-import sys
-import os
-from itertools import imap
-
-import globals
-import actions
-import options
-
-def run():
- # Print a banner message
- print "Parboil parallel benchmark suite, version 0.1"
- print
-
- # Global variable setup
- root_path = os.getcwd()
- python_path = (os.path.join(root_path,'common','python') +
- ":" +
- os.environ.get('PYTHONPATH',""))
-
- globals.root = root_path
- globals.benchmarks = benchmark.find_benchmarks()
- globals.program_env = {'PARBOIL_ROOT':root_path,
- 'PYTHONPATH':python_path,
- }
-
- # Parse options
- act = options.parse_options(sys.argv)
-
- # Perform the specified action
- if act: act()
-
diff --git a/benchmarks/CUDA/CP/driver/actions.py b/benchmarks/CUDA/CP/driver/actions.py
deleted file mode 100644
index 8525028..0000000
--- a/benchmarks/CUDA/CP/driver/actions.py
+++ /dev/null
@@ -1,109 +0,0 @@
-# (c) 2007 The Board of Trustees of the University of Illinois.
-
-# These are the main actions that the driver may take. The actions
-# call lower-level routines from the process or benchmark modules.
-
-import os
-from itertools import imap
-
-import process
-import benchmark
-import globals
-from text import format_columns
-
-def benchmark_iter():
- """Iterate over the benchmarks in 'bmks'."""
- # bmks is a dictionary from str to Future(Benchmark)
- return imap(lambda x: x.get(), globals.benchmarks.itervalues())
-
-def list_benchmarks():
- """List all benchmarks on standard output."""
- print "Benchmarks:"
- for bmk in benchmark_iter(): print " " + bmk.name
-
-def describe_benchmarks():
- """Print descriptions of all benchmarks to standard output."""
- for bmk in benchmark_iter(): describe_benchmark(bmk)
-
-def describe_benchmark(bmk):
- """Print a description of one benchmark to standard output."""
-
- print " " + bmk.name
- print format_columns(bmk.describe(), 4)
-
-def lookup_benchmark(name):
- """Find a benchmark, given its name. Returns None if no benchmark
- is found with the given name or if the benchmark is invalid.
- If the benchmark cannot be found, an error is printed."""
- b = globals.benchmarks.get(name)
- if b is not None:
- bmk = b.get()
- if bmk.invalid is None:
- return bmk
- else:
- print "Error in benchmark:"
- print str(bmk.invalid)
- return None
- else:
- print "Cannot find benchmark"
- return None
-
-def with_benchmark_named(name, action):
- """Look up the benchmark named 'name'. If found, apply the action
- to it. Otherwise, print an error message and return None."""
-
- bmk = lookup_benchmark(name)
- if bmk is not None: action(bmk)
-
-def compile_benchmark(bmk, version_name):
- """Compile the benchmark 'bmk'."""
- try: impl = bmk.impls[version_name]
- except KeyError:
- print "Cannot find benchmark version"
- return
-
- impl.build(bmk)
-
-def clean_benchmark(bmk, version_name=None):
- """Remove the compiled code for one implementation of 'bmk'. If
- no version is given, clean all versions."""
-
- if version_name:
- try: impl = bmk.impls[version_name]
- except KeyError:
- print "Cannot find benchmark version"
- return
-
- impl.clean(bmk)
- else:
- # Clean all versions
- for impl in bmk.impls.itervalues():
- impl.clean(bmk)
-
-def run_benchmark(bmk, version_name, input_name, check=True, extra_opts=[]):
- """Run the benchmark 'bmk'."""
- try: impl = bmk.impls[version_name]
- except KeyError:
- print "Cannot find benchmark version"
- return
-
- try: data = bmk.datas[input_name]
- except KeyError:
- print "Cannot find data set"
- return
-
- # Run the benchmark
- success = impl.run(bmk, data, check, extra_opts=extra_opts)
-
- if not success:
- print "Run failed!"
- return
-
- # Verify the output
- if check:
- success = impl.check(bmk, data)
-
- if not success:
- print "Output checking tool detected a mismatch"
- else:
- print "Output was not checked for correctness"
diff --git a/benchmarks/CUDA/CP/driver/benchmark.py b/benchmarks/CUDA/CP/driver/benchmark.py
deleted file mode 100644
index 43d7852..0000000
--- a/benchmarks/CUDA/CP/driver/benchmark.py
+++ /dev/null
@@ -1,374 +0,0 @@
-# (c) 2007 The Board of Trustees of the University of Illinois.
-
-import sys
-import os
-from os import path
-import re
-from itertools import imap, repeat, chain
-
-import globals
-import process
-from futures import Future
-
-class Benchmark(object):
- """A benchmark.
-
- If the benchmark is malformed or otherwise invalid, only the 'name' and
- 'invalid' fields will be set. Otherwise all fields will be set.
-
- Fields:
- name The name of the benchmark. This is also the benchmark
- directory name.
- invalid None if the benchmark is valid; otherwise, an exception
- describing why the benchmark is invalid.
- path Full path of the benchmark directory.
- descr A description of the benchmark.
- impls A dictionary of benchmark source implementations.
- datas A dictionary of data sets used to run the benchmark."""
-
- def __init__(self, name, path = None, impls = [], datasets = [],
- description=None, invalid=None):
- self.name = name
- self.invalid = invalid
-
- if invalid is None:
- self.path = path
- self.impls = dict(imap(lambda i: (i.name, i), impls))
- self.datas = dict(imap(lambda i: (i.name, i), datasets))
- self.descr = description
-
- def createFromName(name):
- """Scan the benchmark directory for the benchmark named 'name'
- and create a benchmark object for it."""
- bmkpath = path.join(globals.root, 'benchmarks', name)
- descr = process.read_description_file(bmkpath)
-
- try:
- # Scan implementations of the benchmark
- impls = [BenchImpl.createFromName(name, impl)
- for impl in process.scan_for_benchmark_versions(bmkpath)]
-
- # Scan data sets of the benchmark
- datas = [BenchDataset.createFromName(name, data)
- for data in process.scan_for_benchmark_datasets(bmkpath)]
-
- # If no exception occurred, the benchmark is valid
- return Benchmark(name, bmkpath, impls, datas, descr)
- except Exception, e:
- return Benchmark(name, invalid=e)
-
- createFromName = staticmethod(createFromName)
-
- def describe(self):
- """Return a string describing this benchmark."""
-
- if self.invalid:
- return "Error in benchmark:\n" + str(self.invalid)
-
- if self.descr is None:
- header = "Benchmark '" + self.name + "'"
- else:
- header = self.descr
-
- impls = " ".join([impl.name for impl in self.impls.itervalues()])
- datas = " ".join([data.name for data in self.datas.itervalues()])
-
- return header + "\nVersions: " + impls + "\nData sets: " + datas
-
- def instance_check(x):
- if not isinstance(x, Benchmark):
- raise TypeError, "argument must be an instance of Benchmark"
-
- instance_check = staticmethod(instance_check)
-
-class BenchImpl(object):
- """An implementation of a benchmark."""
-
- def __init__(self, name, description=None):
- if not isinstance(name, str):
- raise TypeError, "name must be a string"
-
- self.name = name
- self.descr = description
-
- def createFromName(name, impl):
- """Scan the directory containing a benchmark implementation
- and create a BenchImpl object from it."""
-
- # Path to the implementation
- impl_path = path.join(globals.root, 'benchmarks', name, 'src', impl)
-
- # Get the description from a file, if provided
- descr = process.read_description_file(impl_path)
-
- return BenchImpl(impl, descr)
-
- createFromName = staticmethod(createFromName)
-
- def makefile(self, benchmark, target=None, action=None):
- """Run this implementation's makefile."""
-
- Benchmark.instance_check(benchmark)
-
- def perform():
- srcdir = path.join('src', self.name)
- builddir = path.join('build', self.name)
-
- env={'SRCDIR':srcdir,
- 'BUILDDIR':builddir,
- 'BIN':path.join(builddir,benchmark.name),
- 'PARBOIL_ROOT':globals.root}
-
- # Run the makefile to build the benchmark
- return process.makefile(target=target,
- action=action,
- filepath=path.join(srcdir, "Makefile"),
- env=env)
-
- # Go to the benchmark directory before building
- return process.with_path(benchmark.path, perform)
-
- def build(self, benchmark):
- """Build an executable of this benchmark implementation."""
- return self.makefile(benchmark)
-
- def isBuilt(self, benchmark):
- """Determine whether the executable is up to date."""
- return self.makefile(benchmark, action='q')
-
- def clean(self, benchmark):
- """Remove build files for this benchmark implementation."""
- return self.makefile(benchmark, 'clean')
-
- def run(self, benchmark, dataset, do_output=True, extra_opts=[]):
- """Run this benchmark implementation.
-
- Return True if the benchmark terminated normally or False
- if there was an error."""
-
- # Ensure that the benchmark has been built
- if not self.isBuilt(benchmark):
- rc = self.build(benchmark)
-
- # Stop if 'make' failed
- if not rc: return False
-
- def perform():
- # Run the program
- exename = path.join('build', self.name, benchmark.name)
- args = [exename] + extra_opts + dataset.getCommandLineArguments(do_output)
- rc = process.spawnwaitv(exename, args)
-
- # Program exited with error?
- if rc != 0: return False
- return True
-
- return process.with_path(benchmark.path, perform)
-
- def check(self, benchmark, dataset):
- """Check the output from the last run of this benchmark
- implementation.
-
- Return True if the output checks successfully or False
- otherwise."""
-
- def perform():
- output_file = dataset.getTemporaryOutputPath()
- reference_file = dataset.getReferenceOutputPath()
-
- compare = os.path.join('tools', 'compare-output')
- rc = process.spawnwaitl(compare,
- compare, reference_file, output_file)
-
- # Program exited with error, or mismatch in output?
- if rc != 0: return False
- return True
-
- return process.with_path(benchmark.path, perform)
-
- def __str__(self):
- return "<BenchImpl '" + self.name + "'>"
-
-class BenchDataset(object):
- """Data sets for running a benchmark."""
-
- def __init__(self, name, in_files=[], out_files=[], parameters=[],
- description=None):
- if not isinstance(name, str):
- raise TypeError, "name must be a string"
-
- self.name = name
- self.inFiles = in_files
- self.outFiles = out_files
- self.parameters = parameters
- self.descr = description
-
- def createFromName(name, dset):
- """Scan the directory containing a dataset
- and create a BenchDataset object from it."""
-
- # Identify the paths where files may be found
- benchmark_path = path.join(globals.root, 'benchmarks', name)
-
- if path.exists(path.join(benchmark_path, 'input')):
- input_path = path.join(benchmark_path, 'input', dset)
- else:
- input_path = None
-
- output_path = path.join(benchmark_path, 'output', dset)
-
- # Look for input files
-
- def check_default_input_files():
- # This function is called to see if the input file set
- # guessed by scanning the input directory can be used
- if invalid_default_input_files:
- raise ValueError, "Cannot infer command line when there are multiple input files in a data set\n(Fix by adding an input DESCRIPTION file)"
-
- if input_path:
- input_descr = process.read_description_file(input_path)
- input_files = list(process.scan_for_files(input_path,
- boring=['DESCRIPTION','.svn']))
-
- # If more than one input file was found, cannot use the default
- # input file list produced by scanning the directory
- invalid_default_input_files = len(input_files) > 1
- else:
- # If there's no input directory, assume the benchmark
- # takes no input
- input_descr = None
- input_files = []
- invalid_default_input_files = False
-
- # Read the text of the input description file
- if input_descr is not None:
- (parameters, input_files1, input_descr) = \
- unpack_dataset_description(input_descr, input_files=None)
-
- if input_files1 is None:
- # No override vaule given; use the default
- check_default_input_files()
- else:
- input_files = input_files1
- else:
- check_default_input_files()
- parameters = []
-
- # Look for output files
- output_descr = process.read_description_file(output_path)
- output_files = list(process.scan_for_files(output_path,
- boring=['DESCRIPTION','.svn']))
- if len(output_files) > 1:
- raise ValueError, "Multiple output files not supported"
-
- # Concatenate input and output descriptions
- if input_descr and output_descr:
- descr = input_descr + "\n\n" + output_descr
- else:
- descr = input_descr or output_descr
-
- return BenchDataset(dset, input_files, output_files, parameters, descr)
-
- createFromName = staticmethod(createFromName)
-
- def getTemporaryOutputPath(self):
- """Get the name of a file used to hold the output of a benchmark run.
- This function should always return the same name if its parameters
- are the same. The output path is not the path where the reference
- output is stored."""
-
- return path.join('run', self.name, self.outFiles[0])
-
- def getReferenceOutputPath(self):
- """Get the name of the reference file, to which the output of a
- benchmark run should be compared."""
-
- return path.join('output', self.name, self.outFiles[0])
-
- def getCommandLineArguments(self, do_output=True):
- """Get the command line arguments that should be passed to the
- executable to run this data set. If 'output' is True, then
- the executable will be passed flags to save its output to a file.
-
- Directories to hold ouptut files are created if they do not exist."""
- args = []
-
- # Add arguments to pass input files to the benchmark
- if self.inFiles:
- in_files = ",".join([path.join('input', self.name, x)
- for x in self.inFiles])
- args.append("-i")
- args.append(in_files)
-
- # Add arguments to store the output somewhere, if output is
- # desired
- if do_output and self.outFiles:
- if len(self.outFiles) != 1:
- raise ValueError, "only one output file is supported"
-
- out_path = self.getTemporaryOutputPath()
- args.append("-o")
- args.append(out_path)
-
- # Ensure that a directory exists for the output
- process.touch_directory(path.dirname(out_path))
-
- args += self.parameters
- return args
-
- def __str__(self):
- return "<BenchData '" + self.name + "'>"
-
-def unpack_dataset_description(descr, parameters=[], input_files=[]):
- """Read information from the raw contents of a data set description
- file. Optional 'parameters' and 'input_files' arguments may be
- given, which will be retained unless overridden by the description
- file."""
- leftover = []
- split_at_colon = re.compile(r"^\s*([a-zA-Z]+)\s*:(.*)$")
-
- # Initialize these to default empty strings
- parameter_text = None
- input_file_text = None
-
- # Scan the description line by line
- for line in descr.split('\n'):
- m = split_at_colon.match(line)
- if m is None: continue
-
- # This line appears to declare something that should be
- # interpreted
- keyword = m.group(1)
- if keyword == "Parameters":
- parameter_text = m.group(2)
- elif keyword == "Inputs":
- input_file_text = m.group(2)
- # else, ignore the line
-
- # Split the strings into (possibly) multiple arguments, discarding
- # whitespace
- if parameter_text is not None: parameters = parameter_text.split()
- if input_file_text is not None: input_files = input_file_text.split()
- return (parameters, input_files, descr)
-
-def find_benchmarks():
- """Find benchmarks in the repository. The benchmarks are
- identified, but their contents are not scanned immediately. A
- dictionary is returned mapping benchmark names to futures
- containing the benchmarks."""
-
- if not globals.root:
- raise ValueError, "root directory has not been set"
-
- # Scan all benchmarks in the 'benchmarks' directory and
- # lazily create benchmark objects.
- db = {}
- try:
- for bmkname in process.scan_for_benchmarks(globals.root):
- bmk = Future(lambda bmkname=bmkname: Benchmark.createFromName(bmkname))
- db[bmkname] = bmk
- except OSError, e:
- sys.stdout.write("Benchmark directory not found!\n\n")
- return {}
-
- return db
diff --git a/benchmarks/CUDA/CP/driver/futures.py b/benchmarks/CUDA/CP/driver/futures.py
deleted file mode 100644
index 2e0b94b..0000000
--- a/benchmarks/CUDA/CP/driver/futures.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# (c) 2007 The Board of Trustees of the University of Illinois.
-
-class Future:
- def __init__(self, thunk):
- self.evaluated = 0
- self.value = thunk
-
- def get(self):
- if self.evaluated:
- return self.value
- else:
- self.value = self.value()
- self.evaluated = 1
- return self.value
diff --git a/benchmarks/CUDA/CP/driver/globals.py b/benchmarks/CUDA/CP/driver/globals.py
deleted file mode 100644
index 9e14c23..0000000
--- a/benchmarks/CUDA/CP/driver/globals.py
+++ /dev/null
@@ -1,16 +0,0 @@
-# (c) 2007 The Board of Trustees of the University of Illinois.
-
-# This file holds global variables used by the driver.
-
-# Root directory of the repository (str)
-root = None
-
-# Benchmarks in the repository ({str:Future(Benchmark)})
-benchmarks = None
-
-# Environment variables to use when spawning subprograms ({str:str})
-program_env = None
-
-# True if verbose output is desired. This may be set during
-# option parsing.
-verbose = False
diff --git a/benchmarks/CUDA/CP/driver/options.py b/benchmarks/CUDA/CP/driver/options.py
deleted file mode 100644
index c044ef8..0000000
--- a/benchmarks/CUDA/CP/driver/options.py
+++ /dev/null
@@ -1,208 +0,0 @@
-# (c) 2007 The Board of Trustees of the University of Illinois.
-
-# This module takes care of parsing options for the Parboil driver.
-#
-# The main option parsing routine is parse_options(). Option parsing
-# may print messages and terminate the program, but should not cause
-# any other action to be taken.
-
-from sys import stdout
-from optparse import OptionParser
-
-import actions
-import globals
-
-def invalid_option_message(progname, cmd, args):
- print "Unrecognized command '" + cmd + "'"
- print "'" + progname + " help' for options"
-
-# Parsers for each mode. These take the command line as parameters
-# and return an OptionGetter.
-#
-# The 'help' field prints a help message.
-#
-# The 'run' field does the actual parsing. If there is an error in
-# the command line, it prints an error message and returns None;
-# otherwise, it returns an action which will carry out the commands.
-
-class OptionGetter:
- def __init__(self, help, run):
- self.help = help
- self.run = run
-
-def help_options(progname, cmd, args):
- help_string = "usage: " + progname + " help [COMMAND]\nWithout parameters: list commands\nWith a parameter: Get help on COMMAND\n"
- get_help = lambda: stdout.write(help_string)
-
- def run():
- if args:
- try: helpcmd = parse_mode_options[args[0]]
- except KeyError:
- print "No help available for unrecognized command '" + args[0] + "'"
- return None
-
- helpcmd(progname, cmd, args).help()
- else:
- print "Commands: "
- print " help Display this help message"
- print " list List benchmarks"
- print " describe Show details on a benchmark"
- print " clean Clean up generated files in a benchmark"
- print " compile Compile a benchmark"
- print " run Run a benchmark"
- print ""
- print "To get help on a command: " + progname + " help COMMAND"
-
- return None
-
- return OptionGetter(get_help, run)
-
-def list_options(progname, cmd, args):
- help_string = "usage: " + progname + " list\nList available benchmarks\n"
- get_help = lambda: stdout.write(help_string)
-
- def run():
- if args:
- print "Unexpected parameter or option after 'list'"
- return None
- else:
- return actions.list_benchmarks
-
- return OptionGetter(get_help, run)
-
-def describe_options(progname, cmd, args):
- usage_string = progname + " describe [BENCHMARK]\nWithout parameters: describe all benchmarks in detail\nWith a parameter: describe BENCHMARK in detail"
- parser = OptionParser(usage=usage_string)
-
- def run():
- (opts, pos) = parser.parse_args(args)
- if len(pos) > 1:
- print "Too many parameters after 'describe'"
- return None
- elif len(pos) == 0:
- return actions.describe_benchmarks
- else:
- bmkname = pos[0]
- return lambda: actions.with_benchmark_named(bmkname,
- actions.describe_benchmark)
-
- return OptionGetter(parser.print_help, run)
-
-def clean_options(progname, cmd, args):
- usage_string = progname + " clean BENCHMARK [VERSION]\nDelete the object code and executable of BENCHMARK version VERSION;\nif no version is given, remove the object code and executable of all versions"
- parser = OptionParser(usage=usage_string)
- parser.add_option('-v', "--verbose",
- action="store_true", dest="verbose", default=False,
- help="Produce verbose status messages")
-
- def run():
- (opts, pos) = parser.parse_args(args)
- globals.verbose = opts.verbose
-
- if len(pos) == 0:
- print "Expecting one or two parameters after 'clean'"
- return None
- elif len(pos) == 1:
- bmkname = pos[0]
- return lambda: actions.with_benchmark_named(bmkname, actions.clean_benchmark)
- elif len(pos) == 2:
- bmkname = pos[0]
- ver = pos[1]
- return lambda: actions.with_benchmark_named(bmkname, lambda b: actions.clean_benchmark(b, ver))
- else:
- print "Too many parameters after 'clean'"
- return None
-
- return OptionGetter(parser.print_help, run)
-
-def compile_options(progname, cmd, args):
- help_string = "usage :" + progname + " compile BENCHMARK VERSION\nCompile version VERSION of BENCHMARK"
- parser = OptionParser(usage = help_string)
- parser.add_option('-v', "--verbose",
- action="store_true", dest="verbose", default=False,
- help="Produce verbose status messages")
-
- def run():
- (opts, pos) = parser.parse_args(args)
- globals.verbose = opts.verbose
-
- if len(pos) != 2:
- print "Expecting two parameters after 'compile'"
- return None
- else:
- bmkname = pos[0]
- ver = pos[1]
- return lambda: actions.with_benchmark_named(bmkname, lambda b: actions.compile_benchmark(b, ver))
-
- return OptionGetter(parser.print_help, run)
-
-def run_options(progname, cmd, args):
- usage_string = progname + " run BENCHMARK VERSION INPUT\nRun version VERSION of BENCHMARK with data set INPUT"
- parser = OptionParser(usage=usage_string)
- parser.add_option('-C', "--no-check",
- action="store_false", dest="check", default=True,
- help="Skip the output check for this benchmark")
- parser.add_option('-S', "--synchronize",
- action="store_true", dest="synchronize", default=False,
- help="Synchronize after GPU calls; necessary for accurate run time accounting on CUDA benchmarks")
- parser.add_option('-v', "--verbose",
- action="store_true", dest="verbose", default=False,
- help="Produce verbose status messages")
-
- def run():
- (opts, pos) = parser.parse_args(args)
- globals.verbose = opts.verbose
- if len(pos) != 3:
- print "Expecting three parameters after 'run'"
- return None
- else:
- bmkname = pos[0]
- ver = pos[1]
- inp = pos[2]
- ck=opts.check
- extra_opts = []
- if opts.synchronize:
- extra_opts.append('-S')
- return lambda: actions.with_benchmark_named(bmkname, lambda b: actions.run_benchmark(b, ver, inp, check=ck, extra_opts=extra_opts))
-
- return OptionGetter(parser.print_help, run)
-
-# Dictionary from option name to function from command-line parameters
-# to pair of help thunk and option processor thunk
-parse_mode_options = {
- 'help' : help_options,
- '-h' : help_options,
- '--help' : help_options,
- 'list' : list_options,
- 'describe' : describe_options,
- 'clean' : clean_options,
- 'compile' : compile_options,
- 'run' : run_options
- }
-
-def parse_options(args):
- """Parse a list of command-line options. If there is an error in
- the options, then the function will print a message and either call
- sys.exit() or return None. If options were parsed successfully
- then it will return a thunk which represents the action to take,
- or None if no action need be taken.
-
- Generally, the caller should call the return value, unless None is
- returned."""
- # Parse arguments; skip the program name
- prog_name = args[0]
-
- # Get the command name
- try: cmd = args[1]
- except IndexError: cmd = 'help'
-
- # Dispatch
- try: mode = parse_mode_options[cmd]
- except KeyError:
- invalid_option_message(prog_name, cmd, args[2:])
- return
-
- # Set up and run the option parser
- return mode(prog_name, cmd, args[2:]).run()
-
-
diff --git a/benchmarks/CUDA/CP/driver/process.py b/benchmarks/CUDA/CP/driver/process.py
deleted file mode 100644
index 56e7e98..0000000
--- a/benchmarks/CUDA/CP/driver/process.py
+++ /dev/null
@@ -1,181 +0,0 @@
-# (c) 2007 The Board of Trustees of the University of Illinois.
-
-# Process-management and directory management routines are collected here.
-
-import os
-import os.path as path
-import stat
-from itertools import imap, ifilter, chain
-
-import globals
-
-def scan_for_files(topdir, directory=False, boring=[]):
- """Scan the contents of the directory 'topdir'. If 'directory' is
- True, return a sequence of all directories found in that directory;
- otherwise, return a sequence of all files found in that directory.
- Directories whose names are found in the 'boring' list are excluded."""
-
- # Look for directories or regular files, depending on the 'directory'
- # parameter
- if directory: valid_test = path.isdir
- else: valid_test = path.isfile
-
- def interesting(fname):
- # True if 'dirname' is not a boring name, and it is a directory
- if fname in boring: return False
-
- fpath = path.join(topdir, fname)
- try: return valid_test(fpath)
- except OSError: return False # Ignore file-not-found errors
-
- if not path.isdir(topdir):
- raise OSError, "Cannot access '" + str(topdir) + "' as a directory"
-
- # Return names of all directories found
- return ifilter(interesting, os.listdir(topdir))
-
-def scan_for_benchmarks(topdir):
- """Scan subdirectories of the benchmark repository to find
- benchmarks. Return a sequence containing all benchmark
- directory names."""
-
- return scan_for_files(path.join(topdir, "benchmarks"), True, boring=['_darcs','.svn'])
-
-def scan_for_benchmark_versions(bmkdir):
- """Scan subdirectories of a benchmark directory 'bmkdir' to find
- benchmark versions. Return a sequence containing all benchmark
- version names."""
-
- return scan_for_files(path.join(bmkdir, "src"), True, boring=['.svn'])
-
-def scan_for_benchmark_datasets(bmkdir):
- """Scan subdirectories of a benchmark directory 'bmkdir' to find
- data sets. Return a sequence containing all data set names."""
-
- # Get input and output subdirectories
- inp_dir = path.join(bmkdir, "input")
- if path.exists(inp_dir):
- inp_dirs = scan_for_files(path.join(bmkdir, "input"), True, boring=['.svn'])
- else:
- # Assume no input files are found because the benchmark
- # doesn't need input
- inp_dirs = []
-
- out_dirs = scan_for_files(path.join(bmkdir, "output"), True, boring=['.svn'])
-
- # Return the union of the dataset directories
- return dict(imap(lambda x: (x, None), chain(inp_dirs, out_dirs))).keys()
-
-def read_description_file(dirpath):
- """Read the contents of a file in 'dirpath' called DESCRIPTION,
- if one exists. This returns the file text as a string, or None
- if no description was found."""
-
- descr_path = os.path.join(dirpath, 'DESCRIPTION')
- if os.access(descr_path, os.R_OK):
- descr_file = file(descr_path, 'r')
- descr = descr_file.read()
- descr_file.close()
- return descr
-
- # else, return None
-
-def touch_directory(dirpath):
- """Ensures that the directory 'dirpath' and its parent directories
- exist. If they do not exist, they will be created. It is an
- error if the path exists but is not a directory."""
- if path.isdir(dirpath):
- return
- elif path.exists(dirpath):
- raise OSError, "Path exists but is not a directory"
- else:
- (head, tail) = path.split(dirpath)
- if head: touch_directory(head)
- os.mkdir(dirpath)
-
-def with_path(wd, action):
- """Executes an action in a separate working directory. The action
- should be a callable object."""
- cwd = os.getcwd()
- os.chdir(wd)
- try: result = action()
- finally: os.chdir(cwd)
- return result
-
-def makefile(target=None, action=None, filepath=None, env={}):
- """Run a makefile. An optional command, makefile path, and dictionary of
- variables to define on the command line may be defined. The return code
- value is the return code returned by the makefile.
-
- If no action is given, 'make' is invoked. Returns True if make was
- successful and False otherwise.
-
- A 'q' action queries whether the target needs to be rebuilt. True is
- returned if the target is up to date."""
-
- args = ["make"]
-
- if action is None:
- def run():
- rc = os.spawnvp(os.P_WAIT, "make", args)
- return rc == 0
- elif action in ['q']:
- args.append('-q')
-
- def run():
- rc = os.spawnvp(os.P_WAIT, "make", args)
- if rc == 0:
- # Up-to-date
- return True
- elif rc == 1:
- # Needs remake
- return False
- else:
- # Error
- return False
- else:
- raise ValueError, "invalid action"
-
- # Pass the target as the second argument
- if target: args.append(target)
-
- # Pass the path the the makefile
- if filepath:
- args.append('-f')
- args.append(filepath)
-
- # Pass variables
- for (k,v) in env.iteritems():
- args.append(k + "=" + v)
-
- # Print a status message, if running in verbose mode
- if globals.verbose:
-
- print "Running '" + " ".join(args) + "' in " + os.getcwd()
-
- # Run the makefile and return result info
- return run()
-
-def spawnwaitv(prog, args):
- """Spawn a program and wait for it to complete. The program is
- spawned in a modified environment."""
-
- env = dict(os.environ)
- env.update(globals.program_env)
-
- # Print a status message if running in verbose mode
- if globals.verbose:
- print "Running '" + " ".join(args) + "' in " + os.getcwd()
-
- # Check that the program is runnable
- if not os.access(prog, os.X_OK):
- raise OSError, "Cannot execute '" + prog + "'"
-
- # Run the program
- return os.spawnve(os.P_WAIT, prog, args, env)
-
-def spawnwaitl(prog, *argl):
- """Spawn a program and wait for it to complete. The program is
- spawned in a modified environment."""
-
- return spawnwaitv(prog, argl)
diff --git a/benchmarks/CUDA/CP/driver/text.py b/benchmarks/CUDA/CP/driver/text.py
deleted file mode 100644
index b8e1097..0000000
--- a/benchmarks/CUDA/CP/driver/text.py
+++ /dev/null
@@ -1,75 +0,0 @@
-#! /usr/bin/env python
-
-from itertools import imap
-import re
-
-TOKEN = re.compile(r"(?:^|(?<=\s))[^\s]+|(?:^|(?<!\s))[\s]+")
-
-COLUMNS=80
-
-class iscan:
- """A scan iterator."""
- def __init__(self, f, init, s):
- self.f = f
- self.s = s.__iter__()
- self.current = init
- self.begin = True
-
- def next(self):
- if self.begin:
- self.begin = False
- return self.current
- else:
- cur = self.f(self.current, self.s.next()) # raises StopIteration
- self.current = cur
- return cur
-
- def __iter__(self): return self
-
-def format_columns(text, indent=0):
- """Format the text to fit in 80 columns by inserting newlines. Spaces
- are inserted at the beginning of each line to indent by 'indent'
- columns."""
-
- outls = []
- for inl in text.split('\n'):
- # Split the line into alternating space and non-space tokens
- tokens = TOKEN.findall(inl)
-
- # Empty line?
- if not tokens:
- outls.append("")
- continue
-
- # Use the spaces at the beginning of the line to determine
- # the line's indentation
- if tokens[0].isspace():
- inl_indent = indent + len(tokens[0])
- del tokens[0]
- else:
- inl_indent = indent
-
- # Write tokens into the output
- while tokens:
- # Ignore whitespace at the beginning of the line
- if tokens[0].isspace(): del tokens[0]
-
- # Take as many tokens as possible without exceeding the line
- # length; however, must take at least one token
- n = 0
- lengths = iscan(lambda n, t: n + len(t), inl_indent, tokens)
- lengths.next()
- for c in lengths:
- if c > COLUMNS: break
- n += 1
- n = max(n, 1)
-
- # Concatenate the tokens and prepend spaces for indentation
- outls.append(' ' * inl_indent + "".join(tokens[:n]))
-
- # Continue with tokens
- tokens = tokens[n:]
-
- return "\n".join(outls)
-
-
diff --git a/benchmarks/CUDA/CP/parboil b/benchmarks/CUDA/CP/parboil
deleted file mode 100755
index 3371fc9..0000000
--- a/benchmarks/CUDA/CP/parboil
+++ /dev/null
@@ -1,13 +0,0 @@
-#! /usr/bin/env python
-
-# (c) 2007 The Board of Trustees of the University of Illinois.
-
-import sys
-
-try:
- import driver
-except ImportError:
- sys.stderr.write("Cannot run driver. Are you running it from the parboil root directory?")
- sys.exit(-1)
-
-driver.run()