diff --git a/benchmarks/ray_pool_scheduling_2026-09-06.md b/benchmarks/ray_pool_scheduling_2026-09-06.md new file mode 100644 index 0000000..814c950 --- /dev/null +++ b/benchmarks/ray_pool_scheduling_2026-09-06.md @@ -0,0 +1,140 @@ +# Movie ray-pool scheduling benchmark (2026-09-06) + +## Change and scope + +Movie samples are appended in frame order. `schedule(static)` without a chunk +size assigns each worker one contiguous range of the entire pool, including +pending and terminated rays. A slab can therefore leave most workers with no +active rays even though there is substantial tracing work. + +The production change is `schedule(dynamic, 32)` in +`ray_pool_advance_active()`. Each worker advances a chunk of up to 32 pool slots +and then takes another chunk. Pool slots and frame/sample IDs remain stable; +there are no new allocations, caches, tasks, or changes to the geodesic solver. +The parallel-region barrier still completes the slab before results are read. +Activation, status scans, and mesh analysis remain serial. The full pool is +still scanned; active-index compaction is not part of this change. + +The 32-slot chunk is an empirical choice for this workload, not a universal +optimum. Cyclic static chunks perform similarly here. Dynamic chunks retain +load balancing when strong-field integration costs differ, while avoiding +per-ray scheduling. + +## Dataset and build + +- Baseline: `8cf6106127fc19732cee123e9890d401a6838a51`, including the fix for + frames with empty refinement generations. +- CPU: Intel Core i7-12700K; 16 online logical CPUs, 16 OpenMP workers. +- C compiler and full CPU details are saved in each `*-environment.json`. +- CPU PSF backend, event sink enabled, PNG output; C11, `-march=native -O2`, + `-DNDEBUG`, OpenMP. Both versions are built from baseline sources, with the + candidate substituting only the current `src/ray.c`. +- Input: all 393 samples of the reported inward free-fall trajectory, preserved + verbatim in [camera.csv](ray_pool_scheduling_2026-09-06/camera.csv). +- `assets/sky_grid_5deg.csv`: 5654 catalog stars. Input hashes are recorded. +- 64x36, 60-degree horizontal FOV, coarse cell 16 pixels, refinement level 3, + exposure 0.2. The temporal span and original 16:9 aspect ratio are retained. +- Every run writes all 393 PNGs and a complete movie lens map. This is a + reduced-resolution benchmark, not the original 640x360 run. Do not extrapolate + its speedup to the full-resolution movie or numerical backends. +- Runs were sequential; build/test jobs were not run concurrently with timing. + `OMP_NUM_THREADS=16`, `OMP_DYNAMIC=FALSE`. PSF cache build and image output are + included in end-to-end wall time. No cache files are reused by these commands. + Filesystem caches were not flushed; this is not a cold-I/O benchmark. + +## Schedule selection + +A temporary baseline source copy uses `schedule(runtime)` so `OMP_SCHEDULE` +selects the experiment. Each worker records active-ray visits, integrator +steps, and loop elapsed time without the final barrier; batch wall time includes +the barrier. Counters are collected in worker-owned slots outside solver state. +These counters and the runtime schedule override are **not in production**. + +| Schedule | First run wall (s) | Reverse-order repeat wall (s) | First run ray-batch time (s) | +| --- | ---: | ---: | ---: | +| contiguous static | 61.040 | 61.093 | 55.688 | +| cyclic static,32 | 39.540 | 40.119 | 34.101 | +| dynamic,32 | 39.292 | 38.679 | 33.808 | +| dynamic,128 | 39.792 | not repeated | 34.316 | + +Every instrumented run executes 47 slab advances, 402534 active-ray visits and +206670193 integrator steps. The first slab has 1856 active rays: contiguous +static assigns them to only 3 workers, while all chunked schedules use 16. +The small difference between static,32 and dynamic,32 is not evidence that one +is universally faster. The major improvement is removing large contiguous +frame ranges from each worker's assignment. + +User/system CPU seconds are preserved in `*-results.json`. These include OpenMP +waiting and should not be interpreted as useful solver work alone. Exact +per-worker counts and times remain in the raw logs, and aggregate counters are +in [instrumentation-summary.json](ray_pool_scheduling_2026-09-06/instrumentation-summary.json). + +## Reproduction and original output + +Run from the repository root: + +```sh +python3 benchmarks/ray_pool_scheduling_2026-09-06/run.py +python3 benchmarks/ray_pool_scheduling_2026-09-06/run.py \ + --tag repeat --schedules dynamic,32 static,32 static +python3 benchmarks/ray_pool_scheduling_2026-09-06/run.py \ + --production --tag production-before --schedules static +python3 benchmarks/ray_pool_scheduling_2026-09-06/run.py \ + --production --tag production-after --schedules dynamic,32 +``` + +[run.py](ray_pool_scheduling_2026-09-06/run.py) builds temporary executables under +`/tmp/gr-ray-schedules`, and stores original output and metadata beside the +script. Use a fresh `--tag` and `--work-dir` to preserve an existing run. The +production comparisons compile literal scheduling directives and have no +instrumentation; their logged `OMP_SCHEDULE` value does not override those +compiled directives. Production-after requires the candidate `src/ray.c`. + +Every run has a `*-command.txt` containing the complete, shell-copyable renderer +command, `*-results.json` with exit status, wall/user/system time and artifact +hash, and an unfiltered `*.log.gz` preserving all stdout/stderr bytes, including +PSF build/cache, worker, processed-image and fallback statistics. Build command +files and build stdout/stderr logs are also preserved; successful silent +compiler output can produce an empty build log. For example: + +```sh +gzip -dc benchmarks/ray_pool_scheduling_2026-09-06/sweep-0-static.log.gz +gzip -dc benchmarks/ray_pool_scheduling_2026-09-06/sweep-2-dynamic-32.log.gz +``` + +Output PNGs and lens maps remain under the run's work directory; they are not +stored in Git. The reference lens-map SHA-256 is +`708a218eca26b9eac42cb4954b0dbd4dfe316cc55d4315d650cbc8ab7e616080`. +All schedule-selection runs match it byte-for-byte, including the geometry, +endpoint statuses, frequency shifts, frame metadata and mesh topology. + +## Uninstrumented production-source comparison + +| Source | Wall (s) | User CPU (s) | System CPU (s) | +| --- | ---: | ---: | ---: | +| Baseline contiguous static | 62.126 | 411.940 | 1.964 | +| Candidate dynamic,32 | 38.686 | 554.787 | 2.748 | + +The end-to-end speedup is 1.606x (37.7% less wall time). The CPU-seconds / wall +ratio increases from 6.66 to 14.41, including runtime waiting. This comparison +has no per-worker diagnostic counters and no runtime-selected schedule. It is +one pair of runs, supported by the reverse-order instrumented checks above; +there is no statistical confidence interval or claim about all workloads. + +Both runs exit 0 and write 393 PNGs. Every PNG is byte-identical before/after; +all candidate PNGs passed signature, dimension, chunk CRC and IDAT decompression +checks. All nine measured runs have the same complete lens-map hash. +See [artifact-validation.json](ray_pool_scheduling_2026-09-06/artifact-validation.json), +[baseline results](ray_pool_scheduling_2026-09-06/production-before-results.json), +[candidate results](ray_pool_scheduling_2026-09-06/production-after-results.json), +and their corresponding unfiltered compressed logs in the same directory. + +## Regression verification + +`make -j8 BUILD_TYPE=Release all` and `make -j8 BUILD_TYPE=Debug all` rebuilt the +actual production binaries. Both corresponding `make test` suites passed, +including a Schwarzschild movie regression that compares complete lens maps +with 1, 4 and 16 requested OpenMP threads. `git diff --check` passed. Exact +commands and compressed original build/test output are preserved in +`verification-commands.txt`, `release-build.log.gz`, `release-tests.log.gz`, +`debug-build.log.gz` and `debug-tests.log.gz` beside the benchmark data. diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/.gitattributes b/benchmarks/ray_pool_scheduling_2026-09-06/.gitattributes new file mode 100644 index 0000000..1b2dfa3 --- /dev/null +++ b/benchmarks/ray_pool_scheduling_2026-09-06/.gitattributes @@ -0,0 +1,2 @@ +# Preserve the benchmark input bytes and recognize its original CRLF endings. +camera.csv -text whitespace=cr-at-eol diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/artifact-validation.json b/benchmarks/ray_pool_scheduling_2026-09-06/artifact-validation.json new file mode 100644 index 0000000..a30a809 --- /dev/null +++ b/benchmarks/ray_pool_scheduling_2026-09-06/artifact-validation.json @@ -0,0 +1,6 @@ +{ + "successful_runs": 9, + "lens_map_sha256": "708a218eca26b9eac42cb4954b0dbd4dfe316cc55d4315d650cbc8ab7e616080", + "pngs_validated": 393, + "pngs_identical_before_after": 393 +} \ No newline at end of file diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/camera.csv b/benchmarks/ray_pool_scheduling_2026-09-06/camera.csv new file mode 100644 index 0000000..c531bca --- /dev/null +++ b/benchmarks/ray_pool_scheduling_2026-09-06/camera.csv @@ -0,0 +1,394 @@ +t,tau,x,y,z,e0t,e0x,e0y,e0z,e1t,e1x,e1y,e1z,e2t,e2x,e2y,e2z,e3t,e3x,e3y,e3z +0,0,50,0,0,1.0206207261596576,0,0,0,-0.040824829046386304,-0.9797958971132712,1.1999039092174769e-16,0,0,0,0,1,4.8985871965894143e-18,1.1756609271814592e-16,1,0 +1.0206124494991897,1,49.999799999733334,0,0,1.0206042294834912,-0.00040000106667135895,0,0,-0.040408331303548567,-0.9797958971132712,1.1999039092174769e-16,0,0,0,0,1,4.8486114696082873e-18,1.1756609271814592e-16,1,0 +2.0412085721456168,2,49.999199995733285,0,0,1.0205880723439757,-0.00080000853348352217,0,0,-0.039992166697220832,-0.9797958971132712,1.1999039092174769e-16,0,0,0,0,1,4.7986757158072274e-18,1.1756609271814592e-16,1,0 +3.0617887071491885,3,49.998199978399427,0,0,1.0205722540913467,-0.0012000288011405308,0,0,-0.03957632817693478,-0.9797958971132712,1.1999039092174769e-16,0,0,0,0,1,4.7487790891977829e-18,1.1756609271814592e-16,1,0 +4.0823531930811932,4,49.996799931730131,0,0,1.020556774098119,-0.0016000682714730268,0,0,-0.039160808713374642,-0.9797958971132712,1.1999039092174769e-16,0,0,0,0,1,4.6989207463296074e-18,1.1756609271814592e-16,1,0 +5.1029023678965455,5,49.99499983332111,0,0,1.0205416317590053,-0.0020001333480018516,0,0,-0.038745601297731934,-0.9797958971132712,1.1999039092174769e-16,0,0,0,0,1,4.6490998462130296e-18,1.1756609271814592e-16,1,0 +6.1234365689559311,6,49.992799654363495,0,0,1.0205268264908371,-0.0024002304365020018,0,0,-0.038330698941063696,-0.9797958971132712,1.1999039092174769e-16,0,0,0,0,1,4.5993155502420526e-18,1.1756609271814592e-16,1,0 +7.1439561330479027,7,49.990199359641281,0,0,1.0205123577324926,-0.0028003659455670673,0,0,-0.037916094673654137,-0.9797958971132712,1.1999039092174769e-16,0,0,0,0,1,4.5495670221177546e-18,1.1756609271814592e-16,1,0 +8.1644613964108856,8,49.987198907528217,0,0,1.0204982249448251,-0.003200546287174266,0,0,-0.037501781544379546,-0.9797958971132712,1.1999039092174769e-16,0,0,0,0,1,4.4998534277720841e-18,1.1756609271814592e-16,1,0 +9.1849526947551166,9,49.983798249984162,0,0,1.020484427610598,-0.003600777877250199,0,0,-0.037087752620076304,-0.9797958971132712,1.1999039092174769e-16,0,0,0,0,1,4.4501739352920279e-18,1.1756609271814592e-16,1,0 +10.205430363284522,10,49.979997332550816,0,0,1.0204709652344208,-0.0040010671362374454,0,0,-0.0366740009849119,-0.9797958971132712,1.1999039092174769e-16,0,0,0,0,1,4.4005277148441385e-18,1.1756609271814592e-16,1,0 +11.225894736718539,11,49.975796094346954,0,0,1.0204578373426922,-0.0044014204896621178,0,0,-0.036260519739758745,-0.9797958971132712,1.1999039092174769e-16,0,0,0,0,1,4.3509139385994011e-18,1.1756609271814592e-16,1,0 +12.246346149313872,12,49.97119446806304,0,0,1.0204450434835448,-0.0048018443687025082,0,0,-0.035847302001570769,-0.9797958971132712,1.1999039092174769e-16,0,0,0,0,1,4.3013317806584249e-18,1.1756609271814592e-16,1,0 +13.266784934886202,13,49.966192379955281,0,0,1.0204325832267929,-0.0052023452107589222,0,0,-0.035434340902762484,-0.9797958971132712,1.1999039092174769e-16,0,0,0,0,1,4.2517804169769452e-18,1.1756609271814592e-16,1,0 +14.287211426831847,14,49.960789749839151,0,0,1.020420456163887,-0.005602929460024832,0,0,-0.035021629590590589,-0.9797958971132712,1.1999039092174769e-16,0,0,0,0,1,4.202259025291612e-18,1.1756609271814592e-16,1,0 +15.307625958151856,15,49.954986491060502,0,0,1.0204086619078603,-0.0060036035680495134,0,0,-0.034609161226540439,-0.97979589711327009,1.1999039092174769e-16,0,0,0,0,1,4.152766785046381e-18,1.175660927181458e-16,1,0 +16.328028861468923,16,49.948782510528737,0,0,1.0203972000933099,-0.0064043739943330218,0,0,-0.034196928985708822,-0.97979589711326776,1.1999039092174769e-16,0,0,0,0,1,4.1033028773184479e-18,1.175660927181455e-16,1,0 +17.348420469048744,17,49.942177708710261,0,0,1.0203860703763552,-0.0068052472068996428,0,0,-0.033784926056190205,-0.97979589711326498,1.1999039092174769e-16,0,0,0,0,1,4.0538664847446032e-18,1.1756609271814518e-16,1,0 +18.368801112824581,18,49.935171979592774,0,0,1.0203752724345945,-0.0072062296828626429,0,0,-0.033373145638469069,-0.97979589711326254,1.1999039092174769e-16,0,0,0,0,1,4.004456791448324e-18,1.1756609271814488e-16,1,0 +19.389171124418603,19,49.927765210677016,0,0,1.020364805967078,-0.0076073279090054045,0,0,-0.032961580944811671,-0.97979589711326065,1.1999039092174769e-16,0,0,0,0,1,3.9550729829667828e-18,1.1756609271814464e-16,1,0 +20.40953083516321,20,49.919957282967829,0,0,1.0203546706942834,-0.0080085483823643406,0,0,-0.032550225198659383,-0.97979589711325943,1.1999039092174769e-16,0,0,0,0,1,3.9057142461780632e-18,1.1756609271814451e-16,1,0 +21.429880576122336,21,49.911748070964535,0,0,1.0203448663580965,-0.008409897610813755,0,0,-0.032139071634023693,-0.97979589711325887,1.1999039092174769e-16,0,0,0,0,1,3.8563797692285562e-18,1.1756609271814444e-16,1,0 +22.450220678112768,22,49.903137442650625,0,0,1.0203353927217944,-0.0088113821136527933,0,0,-0.031728113494882471,-0.97979589711325898,1.1999039092174769e-16,0,0,0,0,1,3.8070687414605273e-18,1.1756609271814444e-16,1,0 +23.470551471725436,23,49.894125259482777,0,0,1.020326249570032,-0.0092130084221946507,0,0,-0.031317344034577657,-0.97979589711325932,1.1999039092174769e-16,0,0,0,0,1,3.7577803533398366e-18,1.1756609271814449e-16,1,0 +24.490873287346723,24,49.884711376379208,0,0,1.0203174367088323,-0.0096147830803581837,0,0,-0.030906756515213952,-0.97979589711325987,1.1999039092174769e-16,0,0,0,0,1,3.7085137963837954e-18,1.1756609271814456e-16,1,0 +25.511186455179747,25,49.874895641707298,0,0,1.0203089539655812,-0.010016712645262087,0,0,-0.030496344207058653,-0.97979589711326021,1.1999039092174769e-16,0,0,0,0,1,3.6592682630891445e-18,1.1756609271814461e-16,1,0 +26.531491305265675,26,49.86467789727056,0,0,1.0203008011890244,-0.0104188036878218,0,0,-0.030086100387942266,-0.97979589711326021,1.1999039092174769e-16,0,0,0,0,1,3.6100429468601383e-18,1.1756609271814459e-16,1,0 +27.551788167505059,27,49.854057978294975,0,0,1.0202929782492689,-0.010821062793349268,0,0,-0.029676018342659927,-0.97979589711325943,1.1999039092174769e-16,0,0,0,0,1,3.5608370419367201e-18,1.1756609271814451e-16,1,0 +28.572077371679125,28,49.843035713414551,0,0,1.0202854850377874,-0.011223496562155766,0,0,-0.029266091362373414,-0.97979589711325799,1.1999039092174769e-16,0,0,0,0,1,3.5116497433227699e-18,1.1756609271814432e-16,1,0 +29.592359247471144,29,49.831610924656303,0,0,1.0202783214674271,-0.011626111610157881,0,0,-0.028856312744013655,-0.97979589711325543,1.1999039092174769e-16,0,0,0,0,1,3.4624802467144089e-18,1.1756609271814402e-16,1,0 +30.612634124487784,30,49.819783427424504,0,0,1.0202714874724226,-0.012028914569486873,0,0,-0.02844667578968359,-0.97979589711325177,1.1999039092174769e-16,0,0,0,0,1,3.4133277484283504e-18,1.1756609271814358e-16,1,0 +31.632902332280473,31,49.807553030484264,0,0,1.0202649830084101,-0.012431912089101497,0,0,-0.028037173806061258,-0.97979589711324699,1.1999039092174769e-16,0,0,0,0,1,3.364191445330275e-18,1.1756609271814301e-16,1,0 +32.653164200366838,32,49.794919535944437,0,0,1.0202588080524491,-0.012835110835404517,0,0,-0.027627800103802946,-0.97979589711324122,1.1999039092174769e-16,0,0,0,0,1,3.3150705347632172e-18,1.1756609271814232e-16,1,0 +33.67342005825212,33,49.78188273923989,0,0,1.0202529626030441,-0.013238517492863023,0,0,-0.027218547996946341,-0.97979589711323445,1.1999039092174769e-16,0,0,0,0,1,3.2659642144759444e-18,1.1756609271814151e-16,1,0 +34.693670235450632,34,49.768442429113016,0,0,1.0202474466801734,-0.013642138764632702,0,0,-0.026809410802313492,-0.9797958971132269,1.1999039092174769e-16,0,0,0,0,1,3.2168716825513215e-18,1.1756609271814059e-16,1,0 +35.713915061507286,35,49.754598387594669,0,0,1.0202422603253187,-0.014045981373186262,0,0,-0.026400381838913439,-0.97979589711321868,1.1999039092174769e-16,0,0,0,0,1,3.1677921373346318e-18,1.1756609271813961e-16,1,0 +36.734154866019111,36,49.740350389984371,0,0,1.0202374036015009,-0.014450052060946107,0,0,-0.025991454427344449,-0.97979589711321013,1.1999039092174769e-16,0,0,0,0,1,3.1187247773618501e-18,1.175660927181386e-16,1,0 +37.754389978656832,37,49.725698204829847,0,0,1.0202328765933188,-0.014854357590921487,0,0,-0.025582621889195654,-0.97979589711320147,1.1999039092174769e-16,0,0,0,0,1,3.0696688012878458e-18,1.1756609271813756e-16,1,0 +38.774620729186495,38,49.710641593905912,0,0,1.0202286794069917,-0.015258904747350199,0,0,-0.025173877546448013,-0.97979589711319315,1.1999039092174769e-16,0,0,0,0,1,3.0206234078145035e-18,1.1756609271813655e-16,1,0 +39.794847447491172,39,49.695180312192704,0,0,1.0202248121704052,-0.015663700336345083,0,0,-0.024765214720874403,-0.97979589711318549,1.1999039092174769e-16,0,0,0,0,1,2.9715877956187398e-18,1.1756609271813564e-16,1,0 +40.815070463592633,40,49.679314107853187,0,0,1.0202212750331632,-0.016068751186545389,0,0,-0.024356626733438795,-0.97979589711317872,1.1999039092174769e-16,0,0,0,0,1,2.9225611632804107e-18,1.1756609271813483e-16,1,0 +41.835290107673146,41,49.663042722210051,0,0,1.0202180681666411,-0.016474064149773215,0,0,-0.023948106903694311,-0.97979589711317328,1.1999039092174769e-16,0,0,0,0,1,2.8735427092100842e-18,1.1756609271813418e-16,1,0 +42.855506710097316,42,49.646365889721899,0,0,1.0202151917640452,-0.016879646101695182,0,0,-0.023539648549180038,-0.9797958971131695,1.1999039092174769e-16,0,0,0,0,1,2.8245316315766629e-18,1.1756609271813372e-16,1,0 +43.875720601433983,43,49.62928333795881,0,0,1.0202126460404739,-0.017285503942489466,0,0,-0.023131244984816519,-0.97979589711316772,1.1999039092174769e-16,0,0,0,0,1,2.7755271282348494e-18,1.1756609271813349e-16,1,0 +44.895932112478178,44,49.611794787577203,0,0,1.0202104312329865,-0.017691644597518354,0,0,-0.022722889522299727,-0.97979589711316806,1.1999039092174769e-16,0,0,0,0,1,2.7265283966524279e-18,1.1756609271813354e-16,1,0 +45.916141574273141,45,49.593899952294038,0,0,1.020208547600671,-0.018098075018006518,0,0,-0.02231457546949342,-0.97979589711317083,1.1999039092174769e-16,0,0,0,0,1,2.6775346338373561e-18,1.1756609271813386e-16,1,0 +46.936349318132429,46,49.575598538860376,0,0,1.0202069954247213,-0.018504802181725091,0,0,-0.021906296129819758,-0.97979589711317616,1.1999039092174769e-16,0,0,0,0,1,2.6285450362646406e-18,1.175660927181345e-16,1,0 +47.956555675662067,47,49.556890247034268,0,0,1.0202057750085141,-0.018911833093681777,0,0,-0.021498044801648034,-0.97979589711318404,1.1999039092174769e-16,0,0,0,0,1,2.5795587998029924e-18,1.1756609271813547e-16,1,0 +48.976760978782856,48,49.537774769552968,0,0,1.0202048866776934,-0.019319174786817103,0,0,-0.021089814777681334,-0.97979589711319459,1.1999039092174769e-16,0,0,0,0,1,2.5305751196412334e-18,1.1756609271813672e-16,1,0 +49.99696555975261,49,49.518251792104486,0,0,1.020204330780256,-0.019726834322706971,0,0,-0.020681599344341148,-0.97979589711320758,1.1999039092174769e-16,0,0,0,0,1,2.4815931902144547e-18,1.175660927181383e-16,1,0 +51.017169751188653,50,49.498320993298506,0,0,1.0202041076866446,-0.020134818792271698,0,0,-0.020273391781149619,-0.97979589711322301,1.1999039092174769e-16,0,0,0,0,1,2.4326122051298889e-18,1.1756609271814015e-16,1,0 +52.037373886090286,51,49.477982044636619,0,0,1.0202042177898418,-0.020543135316491688,0,0,-0.019865185360109387,-0.97979589711324044,1.1999039092174769e-16,0,0,0,0,1,2.3836313570925039e-18,1.1756609271814225e-16,1,0 +53.057578297861347,52,49.457234610481912,0,0,1.0202046615054707,-0.020951791047129818,0,0,-0.019456973345080945,-0.97979589711325965,1.1999039092174769e-16,0,0,0,0,1,2.334649837830287e-18,1.1756609271814454e-16,1,0 +54.077783320332962,53,49.436078348027863,0,0,1.0202054392718987,-0.021360793167460868,0,0,-0.019048748991157251,-0.97979589711328008,1.1999039092174769e-16,0,0,0,0,1,2.2856668380192052e-18,1.1756609271814698e-16,1,0 +55.097989287786248,54,49.414512907266655,0,0,1.0202065515503451,-0.021770148893007935,0,0,-0.018640505544035582,-0.97979589711330128,1.1999039092174769e-16,0,0,0,0,1,2.2366815472078343e-18,1.1756609271814954e-16,1,0 +56.118196534975247,55,49.392537930956749,0,0,1.0202079988249957,-0.022179865472286179,0,0,-0.018232236239386423,-0.97979589711332271,1.1999039092174769e-16,0,0,0,0,1,2.1876931537416317e-18,1.1756609271815211e-16,1,0 +57.13840539714991,56,49.370153054589849,0,0,1.020209781603117,-0.022589950187553914,0,0,-0.017823934302219277,-0.97979589711334358,1.1999039092174769e-16,0,0,0,0,1,2.1387008446868393e-18,1.175660927181546e-16,1,0 +58.15861621007916,57,49.34735790635721,0,0,1.0202119004151802,-0.023000410355571307,0,0,-0.017415592946245326,-0.97979589711336323,1.1999039092174769e-16,0,0,0,0,1,2.0897038057540085e-18,1.1756609271815696e-16,1,0 +59.178829310074079,58,49.324152107115275,0,0,1.0202143558149848,-0.023411253328366754,0,0,-0.017007205373236675,-0.979795897113381,1.1999039092174769e-16,0,0,0,0,1,2.040701221221117e-18,1.1756609271815908e-16,1,0 +60.199045034011284,59,49.300535270350665,0,0,1.0202171483797899,-0.023822486494011152,0,0,-0.016598764772382202,-0.97979589711339621,1.1999039092174769e-16,0,0,0,0,1,1.9916922738562753e-18,1.1756609271816091e-16,1,0 +61.219263719356292,60,49.276507002144534,0,0,1.0202202787104484,-0.024234117277400193,0,0,-0.016190264319639776,-0.97979589711340809,1.1999039092174769e-16,0,0,0,0,1,1.9426761448400004e-18,1.1756609271816234e-16,1,0 +62.239485704187096,61,49.252066901136232,0,0,1.0202237474315461,-0.024646153141044843,0,0,-0.01578169717708474,-0.97979589711341619,1.1999039092174769e-16,0,0,0,0,1,1.8936520136870407e-18,1.1756609271816332e-16,1,0 +63.25971132721785,62,49.227214558486367,0,0,1.020227555191545,-0.025058601585870175,0,0,-0.015373056492254563,-0.97979589711341986,1.1999039092174769e-16,0,0,0,0,1,1.8446190581677367e-18,1.1756609271816377e-16,1,0 +64.279940927822636,63,49.201949557839178,0,0,1.0202317026629313,-0.025471470152022672,0,0,-0.01496433539748946,-0.97979589711341886,1.1999039092174769e-16,0,0,0,0,1,1.7955764542289077e-18,1.1756609271816364e-16,1,0 +65.300174846059406,64,49.176271475284281,0,0,1.0202361905423687,-0.025884766419686199,0,0,-0.014555527009268935,-0.97979589711341308,1.1999039092174769e-16,0,0,0,0,1,1.7465233759142373e-18,1.1756609271816295e-16,1,0 +66.320413422694045,65,49.150179879317754,0,0,1.020241019550854,-0.026298498009906805,0,0,-0.014146624427544007,-0.97979589711340276,1.1999039092174769e-16,0,0,0,0,1,1.6974589952841514e-18,1.175660927181617e-16,1,0 +67.340656999224578,66,49.123674330802579,0,0,1.02024619043388,-0.026712672585426447,0,0,-0.013737620735065105,-0.9797958971133881,1.1999039092174769e-16,0,0,0,0,1,1.6483824823351696e-18,1.1756609271815995e-16,1,0 +68.36090591790547,67,49.096754382928438,0,0,1.0202517039616019,-0.027127297851525872,0,0,-0.013328508996705409,-0.97979589711337023,1.1999039092174769e-16,0,0,0,0,1,1.5992930049187137e-18,1.175660927181578e-16,1,0 +69.381160521772145,68,49.069419581170855,0,0,1.020257560929007,-0.027542381556876765,0,0,-0.012919282258779551,-0.97979589711335036,1.1999039092174769e-16,0,0,0,0,1,1.5501897286593585e-18,1.1756609271815541e-16,1,0 +70.401421154665556,69,49.041669463249718,0,0,1.0202637621560917,-0.027957931494403322,0,0,-0.012509933548357541,-0.97979589711333037,1.1999039092174769e-16,0,0,0,0,1,1.5010718168725081e-18,1.1756609271815302e-16,1,0 +71.421688161257038,70,49.01350355908712,0,0,1.0202703084880405,-0.028373955502153433,0,0,-0.012100455872573745,-0.97979589711331294,1.1999039092174769e-16,0,0,0,0,1,1.4519384304814818e-18,1.1756609271815092e-16,1,0 +72.441961887073148,71,48.984921390764576,0,0,1.020277200795412,-0.02879046146417959,0,0,-0.011690842217930864,-0.97979589711330117,1.1999039092174769e-16,0,0,0,0,1,1.4027887279339967e-18,1.1756609271814952e-16,1,0 +73.462242678524021,72,48.955922472456791,0,0,1.020284439974352,-0.029207457311480372,0,0,-0.011281085549573052,-0.97979589711329829,1.1999039092174769e-16,0,0,0,0,1,1.35362186511495e-18,1.1756609271814917e-16,1,0 +74.482530882968049,73,48.926506310097459,0,0,1.020292026947117,-0.029624951023579631,0,0,-0.01087117881024054,-0.97979589711329629,1.1999039092174769e-16,0,0,0,0,1,1.3044369952209828e-18,1.1756609271814893e-16,1,0 +75.502826848677927,74,48.89667240174434,0,0,1.0202999626618667,-0.030042950628571614,0,0,-0.010461114920001275,-0.97979589711329351,1.1999039092174769e-16,0,0,0,0,1,1.2552332687282807e-18,1.1756609271814861e-16,1,0 +76.523130924877606,75,48.866420237477932,0,0,1.0203082480928953,-0.030461464204115211,0,0,-0.010050886775488904,-0.97979589711329085,1.1999039092174769e-16,0,0,0,0,1,1.2060098333011382e-18,1.1756609271814829e-16,1,0 +77.543443461780029,76,48.835749299271818,0,0,1.0203168842409291,-0.030880499878556712,0,0,-0.0096404872490831479,-0.97979589711328896,1.1999039092174769e-16,0,0,0,0,1,1.1567658336936113e-18,1.1756609271814806e-16,1,0 +78.563764810613364,77,48.804659060942484,0,0,1.0203258721333537,-0.03130006583189416,0,0,-0.0092299091881711016,-0.97979589711328796,1.1999039092174769e-16,0,0,0,0,1,1.1075004116608816e-18,1.1756609271814794e-16,1,0 +79.584095323647333,78,48.773148988098107,0,0,1.0203352128244438,-0.03172017029675394,0,0,-0.008819145414401831,-0.97979589711328785,1.1999039092174769e-16,0,0,0,0,1,1.0582127058698144e-18,1.1756609271814792e-16,1,0 +80.60443535422003,79,48.741218538086123,0,0,1.0203449073956026,-0.03214082155937998,0,0,-0.0084081887229340603,-0.97979589711328807,1.1999039092174769e-16,0,0,0,0,1,1.0089018518086884e-18,1.1756609271814794e-16,1,0 +81.624785256764852,80,48.708867159939807,0,0,1.0203549569556014,-0.032562027960636043,0,0,-0.0079970318816766466,-0.97979589711328841,1.1999039092174769e-16,0,0,0,0,1,9.5956698169606004e-19,1.1756609271814799e-16,1,0 +82.645145386837783,81,48.676094294323654,0,0,1.0203653626408318,-0.032983797897021411,0,0,-0.0075856676305216088,-0.97979589711328841,1.1999039092174769e-16,0,0,0,0,1,9.1020722438873506e-19,1.1756609271814799e-16,1,0 +83.665516101145059,82,48.642899373477654,0,0,1.0203761256155579,-0.033406139821700452,0,0,-0.007174088680569464,-0.97979589711328763,1.1999039092174769e-16,0,0,0,0,1,8.6082170528881455e-19,1.1756609271814789e-16,1,0 +84.685897757570956,83,48.609281821160465,0,0,1.0203872470721791,-0.033829062245546417,0,0,-0.0067622877133465785,-0.97979589711328574,1.1999039092174769e-16,0,0,0,0,1,8.1140954624978643e-19,1.1756609271814767e-16,1,0 +85.706290715205981,84,48.575241052591409,0,0,1.0203987282314972,-0.034252573738199947,0,0,-0.0063502573800143149,-0.97979589711328252,1.1999039092174769e-16,0,0,0,0,1,7.6196986548162988e-19,1.1756609271814727e-16,1,0 +86.726695334375407,85,48.540776474391308,0,0,1.0204105703429907,-0.03467668292914261,0,0,-0.0059379903005696982,-0.97979589711327797,1.1999039092174769e-16,0,0,0,0,1,7.1250177745490277e-19,1.1756609271814673e-16,1,0 +87.747111976667995,86,48.505887484522198,0,0,1.0204227746850958,-0.035101398508785908,0,0,-0.0055254790630373486,-0.97979589711327209,1.1999039092174769e-16,0,0,0,0,1,6.6300439280378197e-19,1.1756609271814602e-16,1,0 +88.767541004965153,87,48.470573472225823,0,0,1.020435342565494,-0.035526729229576198,0,0,-0.0051127162226524206,-0.97979589711326498,1.1999039092174769e-16,0,0,0,0,1,6.1347681822802323e-19,1.1756609271814518e-16,1,0 +89.787982783470341,88,48.434833817961007,0,0,1.0204482753214075,-0.035952683907115868,0,0,-0.0046996943010343016,-0.97979589711325699,1.1999039092174769e-16,0,0,0,0,1,5.639181563938136e-19,1.1756609271814422e-16,1,0 +90.808437677738738,89,48.398667893339777,0,0,1.020461574319901,-0.036379271421301235,0,0,-0.0042864057853508001,-0.97979589711324855,1.1999039092174769e-16,0,0,0,0,1,5.1432750583348117e-19,1.1756609271814321e-16,1,0 +91.828906054707431,90,48.362075061062349,0,0,1.0204752409581905,-0.036806500717477493,0,0,-0.003872843127472581,-0.97979589711324011,1.1999039092174769e-16,0,0,0,0,1,4.6470396084403645e-19,1.175660927181422e-16,1,0 +92.849388282725755,91,48.325054674850861,0,0,1.0204892766639613,-0.037234380807611225,0,0,-0.0034589987431175705,-0.97979589711323201,1.1999039092174769e-16,0,0,0,0,1,4.1504661138450832e-19,1.1756609271814123e-16,1,0 +93.869884731585955,92,48.287606079381945,0,0,1.0205036828956913,-0.037662920771480771,0,0,-0.003044865010985099,-0.97979589711322512,1.1999039092174769e-16,0,0,0,0,1,3.6535454297205098e-19,1.175660927181404e-16,1,0 +94.890395772554342,93,48.249728610217986,0,0,1.0205184611429845,-0.038092129757884959,0,0,-0.0026304342718795216,-0.97979589711321968,1.1999039092174769e-16,0,0,0,0,1,3.1562683657678362e-19,1.1756609271813976e-16,1,0 +95.910921778402667,94,48.211421593737278,0,0,1.0205336129269102,-0.038522016985870489,0,0,-0.0022156988278230136,-0.97979589711321646,1.1999039092174769e-16,0,0,0,0,1,2.658625685153386e-19,1.1756609271813936e-16,1,0 +96.931463123439855,95,48.17268434706282,0,0,1.0205491398003521,-0.038952591745978531,0,0,-0.0018006509411573682,-0.9797958971132158,1.1999039092174769e-16,0,0,0,0,1,2.160608103430828e-19,1.1756609271813926e-16,1,0 +97.952020183544107,96,48.133516177989932,0,0,1.0205650433483635,-0.03938386340151076,0,0,-0.0013852828336344651,-0.97979589711321802,1.1999039092174769e-16,0,0,0,0,1,1.6622062874498317e-19,1.1756609271813953e-16,1,0 +98.972593336195345,97,48.093916384912596,0,0,1.0205813251885343,-0.039815841389815421,0,0,-0.00096958668549518116,-0.97979589711322335,1.1999039092174769e-16,0,0,0,0,1,1.1634108542508618e-19,1.1756609271814017e-16,1,0 +99.993182960508079,98,48.053884256748532,0,0,1.0205979869713624,-0.040248535223593659,0,0,-0.0005535546345364975,-0.9797958971132319,1.1999039092174769e-16,0,0,0,0,1,6.6421236994577302e-20,1.1756609271814121e-16,1,0 +101.01378943726446,99,48.013419072863009,0,0,1.0206150303806372,-0.040681954492226668,0,0,-0.00013717877516653681,-0.97979589711324366,1.1999039092174769e-16,0,0,0,0,1,1.646013485839751e-20,1.1756609271814262e-16,1,0 +102.03441314894798,100,47.972520102991311,0,0,1.0206324571338297,-0.041116108863123911,0,0,0.00027954884255275252,-0.97979589711325821,1.1999039092174769e-16,0,0,0,0,1,-3.3543174899628241e-20,1.1756609271814437e-16,1,0 +103.05505447977717,101,47.931186607160043,0,0,1.020650268982493,-0.041551008083092984,0,0,0.00069663621387545949,-0.97979589711327508,1.1999039092174769e-16,0,0,0,0,1,-8.3589651633163988e-20,1.1756609271814639e-16,1,0 +104.0757138157401,102,47.889417835606977,0,0,1.0206684677126712,-0.041986661979731409,0,0,0.0011140913803544539,-0.97979589711329385,1.1999039092174769e-16,0,0,0,0,1,-1.3368026025128148e-19,1.1756609271814863e-16,1,0 +105.09639154462886,103,47.847213028699706,0,0,1.0206870551453175,-0.042423080462840775,0,0,0.0015319224308371956,-0.9797958971133135,1.1999039092174769e-16,0,0,0,0,1,-1.8381597133794967e-19,1.17566092718151e-16,1,0 +106.11708805607465,104,47.80457141685293,0,0,1.0207060331367226,-0.042860273525863711,0,0,0.0019501375024749152,-0.97979589711333326,1.1999039092174769e-16,0,0,0,0,1,-2.3399776127312587e-19,1.1756609271815336e-16,1,0 +107.13780374158327,105,47.761492220444424,0,0,1.020725403578951,-0.043298251247343982,0,0,0.0023687447817454157,-0.97979589711335202,1.1999039092174769e-16,0,0,0,0,1,-2.8422661235548211e-19,1.1756609271815561e-16,1,0 +108.15853899457083,106,47.717974649729655,0,0,1.0207451684002895,-0.043737023792410241,0,0,0.002787752505489724,-0.97979589711336856,1.1999039092174769e-16,0,0,0,0,1,-3.3450351292679254e-19,1.175660927181576e-16,1,0 +109.17929421040003,107,47.674017904755104,0,0,1.0207653295657031,-0.044176601414283714,0,0,0.0032071689619628772,-0.97979589711338189,1.1999039092174769e-16,0,0,0,0,1,-3.8482945749802015e-19,1.1756609271815921e-16,1,0 +110.20006978641675,108,47.629621175270145,0,0,1.0207858890773027,-0.04461699445581032,0,0,0.0036270024918991003,-0.97979589711339099,1.1999039092174769e-16,0,0,0,0,1,-4.3520544687712463e-19,1.1756609271816029e-16,1,0 +111.22086612198696,109,47.584783640637667,0,0,1.0208068489748214,-0.045058213351017576,0,0,0.0040472614895915998,-0.97979589711339499,1.1999039092174769e-16,0,0,0,0,1,-4.8563248829862923e-19,1.1756609271816078e-16,1,0 +112.24168361853432,110,47.539504469743243,0,0,1.0208282113361034,-0.045500268626696747,0,0,0.0044679544039872808,-0.97979589711339332,1.1999039092174769e-16,0,0,0,0,1,-5.3611159555497601e-19,1.1756609271816059e-16,1,0 +113.26252267957784,111,47.49378282090295,0,0,1.0208499782776004,-0.045943170904010587,0,0,0.0048890897397965982,-0.97979589711338588,1.1999039092174769e-16,0,0,0,0,1,-5.8664378912969708e-19,1.1756609271815967e-16,1,0 +114.28338371077017,112,47.447617841769819,0,0,1.0208721519548818,-0.046386930900127091,0,0,0.0053106760586188219,-0.97979589711337312,1.1999039092174769e-16,0,0,0,0,1,-6.3723009633243542e-19,1.1756609271815815e-16,1,0 +115.30426711993627,113,47.401008669238848,0,0,1.0208947345631534,-0.046831559429879717,0,0,0.0057327219800829728,-0.97979589711335624,1.1999039092174769e-16,0,0,0,0,1,-6.8787155143584883e-19,1.1756609271815612e-16,1,0 +116.32517331711247,114,47.353954429350644,0,0,1.0209177283377875,-0.047277067407454409,0,0,0.0061552361830046858,-0.97979589711333726,1.1999039092174769e-16,0,0,0,0,1,-7.385691958144152e-19,1.1756609271815386e-16,1,0 +117.34610271458594,115,47.306454237193613,0,0,1.0209411355548648,-0.047723465848103878,0,0,0.0065782274065592332,-0.97979589711331971,1.1999039092174769e-16,0,0,0,0,1,-7.8932407808519404e-19,1.1756609271815174e-16,1,0 +118.36705572693471,116,47.258507196804793,0,0,1.0209649585317271,-0.048170765869889512,0,0,0.0070017044514710074,-0.97979589711330817,1.1999039092174769e-16,0,0,0,0,1,-8.4013725425054412e-19,1.1756609271815036e-16,1,0 +119.38803277108239,117,47.210112401033271,0,0,1.0209891996275713,-0.048618978695585804,0,0,0.0074256761813198662,-0.97979589711330495,1.1999039092174769e-16,0,0,0,0,1,-8.9100978785487834e-19,1.1756609271814996e-16,1,0 +120.40903426639437,118,47.161268931297094,0,0,1.0210138612442161,-0.049068115655182647,0,0,0.0078501515242634986,-0.9797958971132964,1.1999039092174769e-16,0,0,0,0,1,-9.4194275019132756e-19,1.1756609271814895e-16,1,0 +121.43006063460541,119,47.111975857759965,0,0,1.021038945826481,-0.049518188186733099,0,0,0.0082751394735381921,-0.97979589711328563,1.1999039092174769e-16,0,0,0,0,1,-9.9293722036183023e-19,1.1756609271814767e-16,1,0 +122.45111229991258,120,47.062232239105271,0,0,1.0210644558627993,-0.049969207838444919,0,0,0.0087006490889223239,-0.97979589711327619,1.1999039092174769e-16,0,0,0,0,1,-1.0439942854527346e-18,1.1756609271814654e-16,1,0 +123.47218968902835,121,47.012037122401878,0,0,1.0210903938858655,-0.050421186270699893,0,0,0.0091266894981047505,-0.97979589711326986,1.1999039092174769e-16,0,0,0,0,1,-1.0951150406989953e-18,1.1756609271814577e-16,1,0 +124.49329323122394,122,46.961389542993572,0,0,1.0211167624732818,-0.050874135258024984,0,0,0.0095532698980106134,-0.97979589711326687,1.1999039092174769e-16,0,0,0,0,1,-1.1463005896432551e-18,1.175660927181454e-16,1,0 +125.51442335837341,123,46.910288524386246,0,0,1.0211435642482165,-0.051328066691096852,0,0,0.0099803995561475664,-0.97979589711326665,1.1999039092174769e-16,0,0,0,0,1,-1.1975520442973808e-18,1.1756609271814538e-16,1,0 +126.53558050499856,124,46.858733078132708,0,0,1.021170801880076,-0.05178299257878094,0,0,0.010408087811973167,-0.97979589711326787,1.1999039092174769e-16,0,0,0,0,1,-1.2488705253065351e-18,1.1756609271814552e-16,1,0 +127.55676510831486,125,46.806722203715211,0,0,1.0211984780851917,-0.052238925050206469,0,0,0.0108363440782842,-0.97979589711326898,1.1999039092174769e-16,0,0,0,0,1,-1.3002571621158839e-18,1.1756609271814565e-16,1,0 +128.57797760827785,126,46.754254888425528,0,0,1.0212265956275188,-0.052695876356878613,0,0,0.011265177842628673,-0.97979589711326842,1.1999039092174769e-16,0,0,0,0,1,-1.3517130931400218e-18,1.175660927181456e-16,1,0 +129.5992184476307,127,46.701330107242633,0,0,1.0212551573193531,-0.053153858874829152,0,0,0.011694598668741247,-0.97979589711326476,1.1999039092174769e-16,0,0,0,0,1,-1.4032394659352094e-18,1.1756609271814515e-16,1,0 +130.62048807195251,128,46.647946822708001,0,0,1.0212841660220613,-0.053612885106806882,0,0,0.012124616198002858,-0.97979589711325688,1.1999039092174769e-16,0,0,0,0,1,-1.4548374373745144e-18,1.1756609271814422e-16,1,0 +131.64178692970739,129,46.594103984798394,0,0,1.0213136246468282,-0.054072967684509053,0,0,0.012555240150925275,-0.979795897113244,1.1999039092174769e-16,0,0,0,0,1,-1.506508173825943e-18,1.1756609271814266e-16,1,0 +132.66311547229458,130,46.539800530796185,0,0,1.0213435361554202,-0.054534119370855158,0,0,0.012986480328661327,-0.97979589711322601,1.1999039092174769e-16,0,0,0,0,1,-1.558252851333656e-18,1.175660927181405e-16,1,0 +133.68447415409926,131,46.485035385157154,0,0,1.0213739035609661,-0.054996353062304354,0,0,0.013418346614541624,-0.97979589711320292,1.1999039092174769e-16,0,0,0,0,1,-1.6100726558023562e-18,1.1756609271813773e-16,1,0 +134.70586343254439,132,46.429807459375795,0,0,1.0214047299287554,-0.055459681791217776,0,0,0.01385084897563842,-0.9797958971131755,1.1999039092174769e-16,0,0,0,0,1,-1.6619687831849396e-18,1.1756609271813446e-16,1,0 +135.72728376814331,133,46.374115651847958,0,0,1.021436018377055,-0.05592411872826706,0,0,0.014283997464357465,-0.97979589711314496,1.1999039092174769e-16,0,0,0,0,1,-1.713942439673502e-18,1.1756609271813078e-16,1,0 +136.74873562455338,134,46.317958847731056,0,0,1.021467772077945,-0.056389677184890338,0,0,0.014717802220058553,-0.97979589711311266,1.1999039092174769e-16,0,0,0,0,1,-1.7659948418937886e-18,1.1756609271812691e-16,1,0 +137.77021946863047,135,46.261335918801478,0,0,1.0214999942581726,-0.056856370615797042,0,0,0.015152273470705515,-0.97979589711308057,1.1999039092174769e-16,0,0,0,0,1,-1.8181272171031781e-18,1.1756609271812304e-16,1,0 +138.79173577048425,136,46.204245723309512,0,0,1.0215326882000273,-0.057324212621522708,0,0,0.015587421534546436,-0.97979589711305048,1.1999039092174769e-16,0,0,0,0,1,-1.8703408033922921e-18,1.1756609271811944e-16,1,0 +139.81328500353465,137,46.146687105831496,0,0,1.0215658572422355,-0.057793216951035231,0,0,0.016023256821824837,-0.97979589711302462,1.1999039092174769e-16,0,0,0,0,1,-1.9226368498903193e-18,1.1756609271811634e-16,1,0 +140.83486764456899,138,46.088658897119345,0,0,1.0215995047808764,-0.05826339750439366,0,0,0.016459789836522555,-0.97979589711300485,1.1999039092174769e-16,0,0,0,0,1,-1.9750166169741477e-18,1.1756609271811397e-16,1,0 +141.85648417380025,139,46.030159913947308,0,0,1.0216336342703194,-0.058734768335460937,0,0,0.016897031178135125,-0.9797958971129932,1.1999039092174769e-16,0,0,0,0,1,-2.0274813764813893e-18,1.1756609271811256e-16,1,0 +142.87813507492626,140,45.971188958955985,0,0,1.0216682492241833,-0.059207343654671951,0,0,0.017334991543480359,-0.97979589711299131,1.1999039092174769e-16,0,0,0,0,1,-2.0800324119273955e-18,1.1756609271811234e-16,1,0 +143.89982083518956,141,45.911744820493631,0,0,1.0217033532163178,-0.059681137831857932,0,0,0.017773681728540908,-0.9797958971130003,1.1999039092174769e-16,0,0,0,0,1,-2.1326710187263451e-18,1.1756609271811343e-16,1,0 +144.92154194543878,142,45.851826272454545,0,0,1.0217389498818088,-0.06015616539912879,0,0,0.018213112630341557,-0.97979589711302095,1.1999039092174769e-16,0,0,0,0,1,-2.1853985044165009e-18,1.1756609271811592e-16,1,0 +145.94329890019048,143,45.791432074114752,0,0,1.0217750429180066,-0.060632441053814427,0,0,0.018653295248862011,-0.9797958971130537,1.1999039092174769e-16,0,0,0,0,1,-2.238216188889729e-18,1.1756609271811984e-16,1,0 +146.96509219769217,144,45.730560969964756,0,0,1.0218116360855789,-0.061109979661466467,0,0,0.019094240688985901,-0.97979589711309789,1.1999039092174769e-16,0,0,0,0,1,-2.2911254046253568e-18,1.1756609271812514e-16,1,0 +147.98692233998651,145,45.669211689539473,0,0,1.021848733209588,-0.061588796258921635,0,0,0.019535960162486786,-0.97979589711315263,1.1999039092174769e-16,0,0,0,0,1,-2.3441274969284762e-18,1.1756609271813169e-16,1,0 +149.00878983297602,146,45.607382947245171,0,0,1.0218863381805927,-0.062068906057428069,0,0,0.01997846499005191,-0.97979589711321613,1.1999039092174769e-16,0,0,0,0,1,-2.3972238241727762e-18,1.1756609271813931e-16,1,0 +150.03069518648937,147,45.545073442183586,0,0,1.0219244549557778,-0.062550324445835873,0,0,0.020421766603344424,-0.97979589711328585,1.1999039092174769e-16,0,0,0,0,1,-2.4504157580479868e-18,1.1756609271814769e-16,1,0 +151.05263891434817,148,45.482281857973028,0,0,1.0219630875601076,-0.063033066993853193,0,0,0.020865876547104905,-0.9797958971133589,1.1999039092174769e-16,0,0,0,0,1,-2.5037046838120425e-18,1.1756609271815645e-16,1,0 +152.07462153443524,149,45.419006862566476,0,0,1.0220022400875084,-0.063517149455369043,0,0,0.021310806481292823,-0.97979589711343174,1.1999039092174769e-16,0,0,0,0,1,-2.5570920005480381e-18,1.175660927181652e-16,1,0 +153.09664356876357,150,45.355247108066735,0,0,1.0220419167020764,-0.064002587771844394,0,0,0.021756568183268807,-0.97979589711350046,1.1999039092174769e-16,0,0,0,0,1,-2.6105791214260801e-18,1.1756609271817343e-16,1,0 +154.11870554354644,151,45.291001230538484,0,0,1.0220821216393152,-0.064489398075772364,0,0,0.022203173550018392,-0.97979589711356085,1.1999039092174769e-16,0,0,0,0,1,-2.6641674739701136e-18,1.1756609271818068e-16,1,0 +155.14080798926861,152,45.226267849817347,0,0,1.0221228592074008,-0.064977596694209411,0,0,0.022650634600418051,-0.97979589711360893,1.1999039092174769e-16,0,0,0,0,1,-2.7178585003298246e-18,1.1756609271818647e-16,1,0 +156.16295144075855,153,45.161045569315768,0,0,1.0221641337884757,-0.065467200152378224,0,0,0.02309896347754422,-0.97979589711364112,1.1999039092174769e-16,0,0,0,0,1,-2.7716536575577014e-18,1.1756609271819032e-16,1,0 +157.18513643726172,154,45.09533297582589,0,0,1.0222059498399727,-0.065958225177343968,0,0,0.023548172451026094,-0.97979589711365433,1.1999039092174769e-16,0,0,0,0,1,-2.8255544178913484e-18,1.1756609271819189e-16,1,0 +158.20736352251495,155,45.02912863931919,0,0,1.0222483118959693,-0.06645068870176507,0,0,0.023998273919442967,-0.97979589711364667,1.1999039092174769e-16,0,0,0,0,1,-2.8795622690411421e-18,1.1756609271819098e-16,1,0 +159.2296332448218,156,44.962431112743026,0,0,1.0222912245685714,-0.066944607867719816,0,0,0.024449280412766831,-0.97979589711361803,1.1999039092174769e-16,0,0,0,0,1,-2.9336787144833185e-18,1.1756609271818756e-16,1,0 +160.25194615712917,157,44.895238931813957,0,0,1.02233469254933,-0.06744000003061007,0,0,0.024901204594850984,-0.97979589711357029,1.1999039092174769e-16,0,0,0,0,1,-2.9879052737585867e-18,1.1756609271818184e-16,1,0 +161.27430281710494,158,44.827550614807841,0,0,1.0223787206106869,-0.067936882763143358,0,0,0.025354059265965456,-0.97979589711350856,1.1999039092174769e-16,0,0,0,0,1,-3.0422434827763521e-18,1.1756609271817442e-16,1,0 +162.29670378721653,159,44.759364662346684,0,0,1.0224233136074563,-0.068435273859394685,0,0,0.025807857365379949,-0.97979589711344106,1.1999039092174769e-16,0,0,0,0,1,-3.0966948941246429e-18,1.1756609271816631e-16,1,0 +163.319149634811,160,44.690679557182278,0,0,1.0224684764783354,-0.068935191338949264,0,0,0.02626261197399506,-0.97979589711338078,1.1999039092174769e-16,0,0,0,0,1,-3.1512610773858363e-18,1.1756609271815908e-16,1,0 +164.34164093219573,161,44.621493763976439,0,0,1.0225142142474515,-0.069436653451127622,0,0,0.026718336317022556,-0.97979589711334603,1.1999039092174769e-16,0,0,0,0,1,-3.2059436194582623e-18,1.1756609271815492e-16,1,0 +165.36417825679754,162,44.551805728917032,0,0,1.022560532026203,-0.069939678680264766,0,0,0.027175043767403064,-0.97979589711334092,1.1999039092174769e-16,0,0,0,0,1,-3.2607441249662941e-18,1.175660927181543e-16,1,0 +166.38676219135098,163,44.481613879267272,0,0,1.0226074350154075,-0.070444285751842889,0,0,0.02763274784976763,-0.97979589711333193,1.1999039092174769e-16,0,0,0,0,1,-3.3156642167356983e-18,1.1756609271815322e-16,1,0 +167.40939332369877,164,44.41091662373185,0,0,1.0226549285059829,-0.070950493633374426,0,0,0.02809146224071507,-0.97979589711332304,1.1999039092174769e-16,0,0,0,0,1,-3.3707055358269131e-18,1.1756609271815216e-16,1,0 +168.43207224701945,165,44.339712351927666,0,0,1.0227030178810013,-0.071458321540478251,0,0,0.028551200772794674,-0.97979589711331727,1.1999039092174769e-16,0,0,0,0,1,-3.4258697420129348e-18,1.1756609271815147e-16,1,0 +169.45479955992721,166,44.267999434118707,0,0,1.0227517086175106,-0.071967788941821945,0,0,0.029011977437626936,-0.97979589711331527,1.1999039092174769e-16,0,0,0,0,1,-3.4811585141537769e-18,1.1756609271815122e-16,1,0 +170.47757586656476,167,44.195776220964447,0,0,1.0228010062883666,-0.072478915564060595,0,0,0.029473806389010117,-0.97979589711331561,1.1999039092174769e-16,0,0,0,0,1,-3.5365735505692257e-18,1.1756609271815127e-16,1,0 +171.50040177669823,168,44.123041043262667,0,0,1.022850916564108,-0.072991721396882134,0,0,0.029936701946091326,-0.97979589711331661,1.1999039092174769e-16,0,0,0,0,1,-3.5921165694193405e-18,1.1756609271815139e-16,1,0 +172.52327790581435,169,44.049792211686544,0,0,1.0229014452148755,-0.073506226698163854,0,0,0.030400678596604738,-0.97979589711331594,1.1999039092174769e-16,0,0,0,0,1,-3.6477893090930075e-18,1.1756609271815132e-16,1,0 +173.54620487522018,170,43.976028016515905,0,0,1.0229525981123777,-0.074022451999244898,0,0,0.030865751000179492,-0.97979589711331172,1.1999039092174769e-16,0,0,0,0,1,-3.7035935286048593e-18,1.175660927181508e-16,1,0 +174.56918331214467,171,43.901746727362656,0,0,1.0230043812319021,-0.074540418110319057,0,0,0.031331933991719935,-0.97979589711330251,1.1999039092174769e-16,0,0,0,0,1,-3.7595310080008663e-18,1.1756609271814969e-16,1,0 +175.59221384984292,172,43.826946592890145,0,0,1.0230568006543799,-0.07506014612595259,0,0,0.031799242584860707,-0.97979589711328752,1.1999039092174769e-16,0,0,0,0,1,-3.8156035487729199e-18,1.1756609271814789e-16,1,0 +176.61529712770255,173,43.751625840526536,0,0,1.0231098625684998,-0.075581657430731711,0,0,0.032267691975499363,-0.97979589711326698,1.1999039092174769e-16,0,0,0,0,1,-3.8718129742827072e-18,1.1756609271814543e-16,1,0 +177.63843379135258,174,43.675782676171977,0,0,1.0231635732728774,-0.076104973705044182,0,0,0.032737297545409008,-0.97979589711324167,1.1999039092174769e-16,0,0,0,0,1,-3.9281611301951963e-18,1.1756609271814239e-16,1,0 +178.66162449277456,175,43.599415283899553,0,0,1.0232179391782799,-0.076630116930999803,0,0,0.033208074865933641,-0.97979589711321324,1.1999039092174769e-16,0,0,0,0,1,-3.9846498849220387e-18,1.1756609271813899e-16,1,0 +179.68486989041639,176,43.522521825649903,0,0,1.0232729668099101,-0.077157109398494184,0,0,0.033680039701768694,-0.97979589711318416,1.1999039092174769e-16,0,0,0,0,1,-4.0412811300752063e-18,1.1756609271813549e-16,1,0 +180.70817064930827,177,43.445100440919447,0,0,1.0233286628097482,-0.077685973711420539,0,0,0.034153208014829503,-0.97979589711315673,1.1999039092174769e-16,0,0,0,0,1,-4.0980567809311565e-18,1.1756609271813221e-16,1,0 +181.73152744118127,178,43.367149246442047,0,0,1.0233850339389585,-0.078216732794034072,0,0,0.034627595968210099,-0.97979589711313408,1.1999039092174769e-16,0,0,0,0,1,-4.1549787769058621e-18,1.1756609271812948e-16,1,0 +182.75494094458855,179,43.288666335864164,0,0,1.0234420870803578,-0.078749409897473449,0,0,0.035103219930235102,-0.97979589711311876,1.1999039092174769e-16,0,0,0,0,1,-4.2120490820409929e-18,1.1756609271812765e-16,1,0 +183.77841184502893,180,43.209649779413269,0,0,1.023499829240951,-0.079284028606444165,0,0,0.035580096478607194,-0.97979589711311343,1.1999039092174769e-16,0,0,0,0,1,-4.2692696855015743e-18,1.1756609271812701e-16,1,0 +184.80194083507288,181,43.130097623559536,0,0,1.0235582675545354,-0.079820612846068006,0,0,0.036058242404652802,-0.97979589711311976,1.1999039092174769e-16,0,0,0,0,1,-4.326642602085428e-18,1.1756609271812775e-16,1,0 +185.82552861449165,182,43.05000789067067,0,0,1.0236174092843746,-0.080359186888903783,0,0,0.036537674717668542,-0.97979589711313886,1.1999039092174769e-16,0,0,0,0,1,-4.3841698727447052e-18,1.1756609271813007e-16,1,0 +186.8491758903883,183,42.969378578659793,0,0,1.0236772618259438,-0.080899775362143295,0,0,0.037018410649371107,-0.97979589711317117,1.1999039092174769e-16,0,0,0,0,1,-4.4418535651198266e-18,1.1756609271813394e-16,1,0 +187.87288337733193,184,42.888207660626321,0,0,1.0237378327097506,-0.081442403254987597,0,0,0.037500467658453059,-0.97979589711321546,1.1999039092174769e-16,0,0,0,0,1,-4.4996957740861384e-18,1.1756609271813926e-16,1,0 +188.89665179749429,185,42.806493084489716,0,0,1.023799129604231,-0.081987095926207898,0,0,0.037983863435247206,-0.97979589711326986,1.1999039092174769e-16,0,0,0,0,1,-4.5576986223135898e-18,1.1756609271814577e-16,1,0 +189.92048188078917,186,42.724232772616048,0,0,1.0238611603187253,-0.082533879111895858,0,0,0.038468615906502156,-0.97979589711333104,1.1999039092174769e-16,0,0,0,0,1,-4.6158642608397542e-18,1.1756609271815312e-16,1,0 +190.94437436501451,187,42.641424621437267,0,0,1.0239239328065315,-0.08308277893340768,0,0,0.038954743240271573,-0.97979589711339488,1.1999039092174769e-16,0,0,0,0,1,-4.6741948696564944e-18,1.1756609271816078e-16,1,0 +191.96832999599729,188,42.558066501063138,0,0,1.0239874551680437,-0.08363382190550675,0,0,0.039442263850919805,-0.97979589711345616,1.1999039092174769e-16,0,0,0,0,1,-4.7326926583105841e-18,1.1756609271816813e-16,1,0 +192.99234952774111,189,42.474156254885635,0,0,1.0240517356539731,-0.084187034944709388,0,0,0.039931196404246347,-0.97979589711350967,1.1999039092174769e-16,0,0,0,0,1,-4.7913598665186043e-18,1.1756609271817456e-16,1,0 +194.01643372257658,190,42.389691699175913,0,0,1.0241167826686566,-0.08474244537783826,0,0,0.040421559822731962,-0.97979589711354964,1.1999039092174769e-16,0,0,0,0,1,-4.8501987647964175e-18,1.1756609271817935e-16,1,0 +195.04058335131469,191,42.304670622673513,0,0,1.0241826047734512,-0.085300080950788004,0,0,0.040913373290908737,-0.9797958971135714,1.1999039092174769e-16,0,0,0,0,1,-4.9092116551035291e-18,1.1756609271818196e-16,1,0 +196.06479919340293,192,42.219090786167953,0,0,1.0242492106902228,-0.085859969837507849,0,0,0.041406656260856961,-0.9797958971135714,1.1999039092174769e-16,0,0,0,0,1,-4.9684008715026567e-18,1.1756609271818196e-16,1,0 +197.0890820370841,193,42.132949922072463,0,0,1.0243166093049236,-0.086422140649205559,0,0,0.041901428457831201,-0.97979589711354875,1.1999039092174769e-16,0,0,0,0,1,-5.0277687808348084e-18,1.1756609271817925e-16,1,0 +198.11343267955846,194,42.046245733989849,0,0,1.0243848096712656,-0.0869866224437775,0,0,0.042397709886018306,-0.9797958971135059,1.1999039092174769e-16,0,0,0,0,1,-5.0873177834101815e-18,1.175660927181741e-16,1,0 +199.13785192714846,195,41.958975896270339,0,0,1.0244538210144905,-0.087553444735469402,0,0,0.042895520834429823,-0.97979589711345039,1.1999039092174769e-16,0,0,0,0,1,-5.1470503137152054e-18,1.1756609271816744e-16,1,0 +200.16234059546659,196,41.871138053561403,0,0,1.0245236527352373,-0.088122637504772186,0,0,0.043394881882931474,-0.9797958971133961,1.1999039092174769e-16,0,0,0,0,1,-5.206968841136013e-18,1.1756609271816093e-16,1,0 +201.18689950958608,197,41.782729820349424,0,0,1.0245943144135115,-0.088694231208557822,0,0,0.043895813908412351,-0.97979589711336557,1.1999039092174769e-16,0,0,0,0,1,-5.2670758706986861e-18,1.1756609271815726e-16,1,0 +202.21152950432537,198,41.693748780280025,0,0,1.0246658158131701,-0.089268256791861261,0,0,0.04439833809204987,-0.97979589711335824,1.1999039092174769e-16,0,0,0,0,1,-5.3273739439409836e-18,1.175660927181564e-16,1,0 +203.23623142447565,199,41.604192485581635,0,0,1.0247381668866455,-0.089844745699974235,0,0,0.044902475926673333,-0.97979589711334403,1.1999039092174769e-16,0,0,0,0,1,-5.3878656397958964e-18,1.1756609271815467e-16,1,0 +204.26100612474889,200,41.514058457029883,0,0,1.0248113777782772,-0.090423729886180207,0,0,0.045408249221236235,-0.9797958971133327,1.1999039092174769e-16,0,0,0,0,1,-5.4485535751282792e-18,1.1756609271815331e-16,1,0 +205.28585447011079,201,41.42334418316694,0,0,1.0248854588291252,-0.091005241824449648,0,0,0.045915680108652671,-0.9797958971133276,1.1999039092174769e-16,0,0,0,0,1,-5.509440405675147e-18,1.1756609271815272e-16,1,0 +206.3107773359776,202,41.332047119778778,0,0,1.0249604205816556,-0.091589314521290779,0,0,0.046424791052963349,-0.9797958971133276,1.1999039092174769e-16,0,0,0,0,1,-5.570528826905525e-18,1.1756609271815272e-16,1,0 +207.33577560841539,203,41.24016468936432,0,0,1.025036273784542,-0.092175981527869544,0,0,0.04693560485665705,-0.97979589711332904,1.1999039092174769e-16,0,0,0,0,1,-5.631821574898957e-18,1.175660927181529e-16,1,0 +208.36085018434559,204,41.14769428059067,0,0,1.0251130293975961,-0.092765276952445214,0,0,0.047448144668177365,-0.9797958971133276,1.1999039092174769e-16,0,0,0,0,1,-5.6933214272462382e-18,1.1756609271815272e-16,1,0 +209.38600197175597,205,41.054633247734358,0,0,1.0251906985968342,-0.093357235473137512,0,0,0.047962433989623333,-0.97979589711331949,1.1999039092174769e-16,0,0,0,0,1,-5.7550312039734201e-18,1.1756609271815174e-16,1,0 +210.41123188991773,206,40.960978910108139,0,0,1.0252692927796909,-0.093951892351041233,0,0,0.048478496684652837,-0.97979589711330206,1.1999039092174769e-16,0,0,0,0,1,-5.8169537684901398e-18,1.1756609271814964e-16,1,0 +211.43654086960865,207,40.866728551473329,0,0,1.025348823570382,-0.09454928344370446,0,0,0.048996356986597461,-0.97979589711327453,1.1999039092174769e-16,0,0,0,0,1,-5.8790920285633297e-18,1.1756609271814634e-16,1,0 +212.46192985334221,208,40.771879419437205,0,0,1.0254293028254275,-0.095149445218986467,0,0,0.04951603950679756,-0.979795897113238,1.1999039092174769e-16,0,0,0,0,1,-5.9414489373173388e-18,1.1756609271814197e-16,1,0 +213.48739979560301,209,40.676428724835311,0,0,1.0255107426393408,-0.095752414769311206,0,0,0.050037569243166366,-0.97979589711319548,1.1999039092174769e-16,0,0,0,0,1,-6.0040274942615471e-18,1.1756609271813685e-16,1,0 +214.51295166308827,210,40.580373641098483,0,0,1.0255931553504924,-0.096358229826332589,0,0,0.050560971588991754,-0.97979589711315107,1.1999039092174769e-16,0,0,0,0,1,-6.0668307463464947e-18,1.1756609271813152e-16,1,0 +215.53858643495599,211,40.48371130360416,0,0,1.0256765535471533,-0.096966928776027306,0,0,0.051086272341984547,-0.97979589711310999,1.1999039092174769e-16,0,0,0,0,1,-6.1298617890495884e-18,1.1756609271812659e-16,1,0 +216.56430510307911,212,40.386438809011935,0,0,1.0257609500737281,-0.097578550674231587,0,0,0.051613497713582104,-0.97979589711307802,1.1999039092174769e-16,0,0,0,0,1,-6.1931237674914431e-18,1.1756609271812277e-16,1,0 +217.59010867230651,213,40.288553214582862,0,0,1.0258463580371828,-0.098193135262637704,0,0,0.052142674338515847,-0.97979589711306048,1.1999039092174769e-16,0,0,0,0,1,-6.2566198775838935e-18,1.1756609271812068e-16,1,0 +218.61599816073058,214,40.190051537482525,0,0,1.0259327908136771,-0.098810722985266219,0,0,0.052673829284651544,-0.97979589711306181,1.1999039092174769e-16,0,0,0,0,1,-6.3203533672107359e-18,1.1756609271812082e-16,1,0 +219.64197459996115,215,40.090930754067358,0,0,1.0260202620554042,-0.099431355005430169,0,0,0.053206990063111206,-0.97979589711308479,1.1999039092174769e-16,0,0,0,0,1,-6.3843275374422541e-18,1.1756609271812358e-16,1,0 +220.66803903540651,216,39.991187799154133,0,0,1.026108785697653,-0.10005507322320709,0,0,0.053742184638685117,-0.97979589711313042,1.1999039092174769e-16,0,0,0,0,1,-6.4485457437845669e-18,1.1756609271812906e-16,1,0 +221.69419252656115,217,39.890819565272302,0,0,1.0261983759660895,-0.10068192029343503,0,0,0.054279441440542989,-0.97979589711319692,1.1999039092174769e-16,0,0,0,0,1,-6.5130113974648607e-18,1.1756609271813704e-16,1,0 +222.72043614730032,218,39.789822901898916,0,0,1.0262890473842763,-0.10131193964424846,0,0,0.054818789373252831,-0.97979589711328019,1.1999039092174769e-16,0,0,0,0,1,-6.5777279667535514e-18,1.1756609271814703e-16,1,0 +223.74677098618173,219,39.688194614675922,0,0,1.0263808147814275,-0.10194517549617015,0,0,0.055360257828116405,-0.97979589711337334,1.1999039092174769e-16,0,0,0,0,1,-6.6426989783244271e-18,1.175660927181582e-16,1,0 +224.77319814675423,220,39.585931464609537,0,0,1.0264736933004133,-0.10258167288177515,0,0,0.055903876694829942,-0.97979589711346748,1.1999039092174769e-16,0,0,0,0,1,-6.7079280186538223e-18,1.1756609271816951e-16,1,0 +225.79971874787373,221,39.483030167251428,0,0,1.0265676984060166,-0.10322147766594278,0,0,0.056449676373478891,-0.97979589711355208,1.1999039092174769e-16,0,0,0,0,1,-6.7734187354598739e-18,1.1756609271817964e-16,1,0 +226.82633392402616,222,39.379487391861524,0,0,1.0266628458934539,-0.10386463656671269,0,0,0.056997687786875473,-0.97979589711361614,1.1999039092174769e-16,0,0,0,0,1,-6.8391748391829103e-18,1.1756609271818733e-16,1,0 +227.85304482565815,223,39.275299760552123,0,0,1.0267591518971635,-0.10451119717676108,0,0,0.057547942393247835,-0.97979589711364989,1.1999039092174769e-16,0,0,0,0,1,-6.9052001045080224e-18,1.1756609271819138e-16,1,0 +228.87985261951462,224,39.170463847413046,0,0,1.0268566328998705,-0.10516120798551305,0,0,0.058100472199289439,-0.97979589711364645,1.1999039092174769e-16,0,0,0,0,1,-6.9714983719308728e-18,1.1756609271819098e-16,1,0 +229.90675848898425,225,39.064976177617645,0,0,1.0269553057419349,-0.10581471840190715,0,0,0.058655309773577552,-0.97979589711360482,1.1999039092174769e-16,0,0,0,0,1,-7.0380735493677777e-18,1.1756609271818598e-16,1,0 +230.93376363445239,226,38.958833226509363,0,0,1.0270551876309919,-0.10647177877782812,0,0,0.05921248826036956,-0.97979589711353277,1.1999039092174769e-16,0,0,0,0,1,-7.1049296138111384e-18,1.1756609271817733e-16,1,0 +231.9608692736615,227,38.85203141866856,0,0,1.0271562961518892,-0.10713244043222399,0,0,0.059772041393785863,-0.97979589711345072,1.1999039092174769e-16,0,0,0,0,1,-7.1720706130312495e-18,1.1756609271816749e-16,1,0 +232.98807664207945,228,38.744567126959417,0,0,1.0272586492769316,-0.10779675567592327,0,0,0.060334003512388046,-0.97979589711339599,1.1999039092174769e-16,0,0,0,0,1,-7.2395006673255389e-18,1.1756609271816091e-16,1,0 +234.01538699340534,229,38.636436671318748,0,0,1.0273622653770156,-0.10846477783893804,0,0,0.060898409575307129,-0.97979589711338422,1.1999039092174769e-16,0,0,0,0,1,-7.3072239714538045e-18,1.175660927181595e-16,1,0 +235.04280160013658,230,38.527636317421255,0,0,1.0274671632339849,-0.10913656130066988,0,0,0.061465295180049014,-0.97979589711336368,1.1999039092174769e-16,0,0,0,0,1,-7.3752447967746954e-18,1.1756609271815704e-16,1,0 +236.07032175357503,231,38.418162276371746,0,0,1.0275733620501206,-0.10981216151163084,0,0,0.062034696574860208,-0.97979589711334969,1.1999039092174769e-16,0,0,0,0,1,-7.443567492729478e-18,1.1756609271815536e-16,1,0 +237.09794876445471,232,38.308010703251412,0,0,1.0276808814604328,-0.1104916350236954,0,0,0.06260665067660888,-0.97979589711334591,1.1999039092174769e-16,0,0,0,0,1,-7.512196488987599e-18,1.1756609271815492e-16,1,0 +238.12568396338077,233,38.197177696000018,0,0,1.0277897415450821,-0.11117503951990994,0,0,0.06318119508817599,-0.9797958971133478,1.1999039092174769e-16,0,0,0,0,1,-7.581136297533441e-18,1.1756609271815514e-16,1,0 +239.15352870127234,234,38.085659294284746,0,0,1.0278999628421497,-0.11186243384507624,0,0,0.063758368116273861,-0.97979589711334691,1.1999039092174769e-16,0,0,0,0,1,-7.6503915148043947e-18,1.1756609271815504e-16,1,0 +240.18148434982024,235,37.973451478334262,0,0,1.0280115663608218,-0.11255387803729362,0,0,0.064338208789807769,-0.97979589711333548,1.1999039092174769e-16,0,0,0,0,1,-7.7199668238940595e-18,1.1756609271815366e-16,1,0 +241.20955230196077,236,37.86055016773701,0,0,1.0281245735950153,-0.11324943336051753,0,0,0.064920756878810881,-0.97979589711330839,1.1999039092174769e-16,0,0,0,0,1,-7.7898669968242598e-18,1.1756609271815041e-16,1,0 +242.23773397236479,237,37.746951220203151,0,0,1.0282390065374736,-0.11394916233819198,0,0,0.065506052913983009,-0.9797958971132642,1.1999039092174769e-16,0,0,0,0,1,-7.860096896889512e-18,1.1756609271814511e-16,1,0 +243.26603079794333,238,37.632650430289239,0,0,1.0283548876943569,-0.11465312878801401,0,0,0.06609413820686369,-0.97979589711320625,1.1999039092174769e-16,0,0,0,0,1,-7.9306614810775966e-18,1.1756609271813815e-16,1,0 +244.29444423836927,239,37.51764352808501,0,0,1.028472240100359,-0.11536139785788721,0,0,0.066685054870670002,-0.97979589711314141,1.1999039092174769e-16,0,0,0,0,1,-8.0015658025698895e-18,1.1756609271813036e-16,1,0 +245.32297577661564,240,37.401926177861355,0,0,1.0285910873343729,-0.11607403606312255,0,0,0.067278845841829485,-0.97979589711307935,1.1999039092174769e-16,0,0,0,0,1,-8.0728150133251205e-18,1.1756609271812292e-16,1,0 +246.35162691951089,241,37.285493976678879,0,0,1.0287114535357367,-0.11679111132494399,0,0,0.067875554902238774,-0.97979589711303106,1.1999039092174769e-16,0,0,0,0,1,-8.1444143667501806e-18,1.1756609271811713e-16,1,0 +247.38039919831112,242,37.168342452956146,0,0,1.0288333634210856,-0.11751269301035626,0,0,0.068475226702278208,-0.97979589711300707,1.1999039092174769e-16,0,0,0,0,1,-8.21636922046166e-18,1.1756609271811424e-16,1,0 +248.40929416928981,243,37.050467064996909,0,0,1.0289568423018365,-0.11823885197343316,0,0,0.069077906784613036,-0.97979589711301596,1.1999039092174769e-16,0,0,0,0,1,-8.2886850391417675e-18,1.175660927181153e-16,1,0 +249.43831341434503,244,36.931863199475593,0,0,1.0290819161023343,-0.1189696605980833,0,0,0.06968364160881152,-0.97979589711306225,1.1999039092174769e-16,0,0,0,0,1,-8.3613673974922606e-18,1.1756609271812087e-16,1,0 +250.46745854162469,245,36.812526169880151,0,0,1.0292086113786871,-0.11970519284235161,0,0,0.07029247857681048,-0.97979589711314574,1.1999039092174769e-16,0,0,0,0,1,-8.4344219832900668e-18,1.1756609271813088e-16,1,0 +251.4967311861698,246,36.692451214911671,0,0,1.0293369553383156,-0.12044552428431382,0,0,0.070904466059258653,-0.97979589711326021,1.1999039092174769e-16,0,0,0,0,1,-8.5078546005482394e-18,1.1756609271814461e-16,1,0 +252.52613301057613,247,36.571633496839844,0,0,1.0294669758602473,-0.12119073216962191,0,0,0.071519653422768364,-0.97979589711339343,1.1999039092174769e-16,0,0,0,0,1,-8.5816711727858895e-18,1.1756609271816061e-16,1,0 +253.5556657056747,248,36.450068099813635,0,0,1.0295987015161805,-0.12194089546075801,0,0,0.072138091058106008,-0.9797958971135281,1.1999039092174769e-16,0,0,0,0,1,-8.6558777464107722e-18,1.1756609271817676e-16,1,0 +254.58533099123085,249,36.327750028126253,0,0,1.0297321615923469,-0.12269609488805455,0,0,0.072759830409351564,-0.97979589711364357,1.1999039092174769e-16,0,0,0,0,1,-8.7304804942181605e-18,1.1756609271819061e-16,1,0 +255.61513061666284,250,36.204674204433857,0,0,1.0298673861121994,-0.12345641300253835,0,0,0.073384924004057911,-0.97979589711371873,1.1999039092174769e-16,0,0,0,0,1,-8.8054857190096566e-18,1.1756609271819964e-16,1,0 +256.64506636177964,251,36.080835467927002,0,0,1.0300044058599531,-0.12422193423065615,0,0,0.074013425484440135,-0.9797958971137366,1.1999039092174769e-16,0,0,0,0,1,-8.8808998573356164e-18,1.175660927182018e-16,1,0 +257.67514003753843,252,35.956228572454265,0,0,1.0301432524050051,-0.12499274493093959,0,0,0.074645389639625373,-0.97979589711369053,1.1999039092174769e-16,0,0,0,0,1,-8.9567294833648245e-18,1.1756609271819626e-16,1,0 +258.70535348682216,253,35.830848184597123,0,0,1.0302839581272649,-0.12576893345266688,0,0,0.075280872438993618,-0.97979589711359139,1.1999039092174769e-16,0,0,0,0,1,-9.0329813128850669e-18,1.1756609271818435e-16,1,0 +259.73570858523726,254,35.704688881695439,0,0,1.0304265562434178,-0.12655059019657933,0,0,0.075919931066640009,-0.97979589711347814,1.1999039092174769e-16,0,0,0,0,1,-9.1096622074382722e-18,1.1756609271817077e-16,1,0 +260.76620724193646,255,35.577745149814319,0,0,1.0305710808341724,-0.12733780767777289,0,0,0.076562623957028314,-0.97979589711342729,1.1999039092174769e-16,0,0,0,0,1,-9.1867791785985933e-18,1.1756609271816468e-16,1,0 +261.79685140088799,256,35.450011380908343,0,0,1.0307175668750475,-0.12813068059767949,0,0,0.077209010836035236,-0.97979589711340287,1.1999039092174769e-16,0,0,0,0,1,-9.2643393928973218e-18,1.1756609271816175e-16,1,0 +262.8276430415242,257,35.321481871057088,0,0,1.030866050266056,-0.12892930591140028,0,0,0.077859152758722752,-0.97979589711337822,1.1999039092174769e-16,0,0,0,0,1,-9.3423501763552143e-18,1.1756609271815879e-16,1,0 +263.85858417951732,258,35.192150818470445,0,0,1.0310165678606302,-0.12973378289387141,0,0,0.078513112146611955,-0.97979589711337045,1.1999039092174769e-16,0,0,0,0,1,-9.4208190189549855e-18,1.1756609271815785e-16,1,0 +264.88967686791779,259,35.06201232083248,0,0,1.031169157498828,-0.13054421321636153,0,0,0.079170952830906791,-0.97979589711337278,1.1999039092174769e-16,0,0,0,0,1,-9.4997535798277544e-18,1.1756609271815815e-16,1,0 +265.92092319813628,260,34.931060372901939,0,0,1.0313238580412647,-0.1313607010239223,0,0,0.079832740096027199,-0.97979589711336923,1.1999039092174769e-16,0,0,0,0,1,-9.5791616924765852e-18,1.175660927181577e-16,1,0 +266.95232530096717,261,34.799288864023914,0,0,1.031480709404353,-0.13218335301572615,0,0,0.080498540724718626,-0.97979589711334514,1.1999039092174769e-16,0,0,0,0,1,-9.6590513701892166e-18,1.1756609271815482e-16,1,0 +267.98388534765303,262,34.666691575550296,0,0,1.0316397525969505,-0.13301227852850359,0,0,0.081168423044846338,-0.97979589711329285,1.1999039092174769e-16,0,0,0,0,1,-9.7394308116529071e-18,1.1756609271814853e-16,1,0 +269.01560555099206,263,34.533262178166666,0,0,1.0318010297585249,-0.13384758962329221,0,0,0.081842456977982078,-0.97979589711321446,1.1999039092174769e-16,0,0,0,0,1,-9.820308406784388e-18,1.1756609271813914e-16,1,0 +270.04748816648873,264,34.398994229123339,0,0,1.0319645841989404,-0.13468940117570977,0,0,0.082520714089891464,-0.97979589711312165,1.1999039092174769e-16,0,0,0,0,1,-9.9016927427878518e-18,1.17566092718128e-16,1,0 +271.07953549354863,265,34.263881169368226,0,0,1.0321304604399664,-0.13553783096996316,0,0,0.083203267643029863,-0.97979589711303283,1.1999039092174769e-16,0,0,0,0,1,-9.983592610453957e-18,1.1756609271811735e-16,1,0 +272.11174987671836,266,34.127916320579068,0,0,1.0322987042586209,-0.13639299979680591,0,0,0.083890192651154799,-0.97979589711296944,1.1999039092174769e-16,0,0,0,0,1,-1.0066017010712794e-17,1.1756609271810975e-16,1,0 +273.14413370697133,267,33.991092882092943,0,0,1.0324693627324451,-0.13725503155565591,0,0,0.08458156593616302,-0.97979589711295179,1.1999039092174769e-16,0,0,0,0,1,-1.0148975161453784e-17,1.1756609271810763e-16,1,0 +274.17668942303987,268,33.853403927730433,0,0,1.03264248428682,-0.13812405336108605,0,0,0.085277466187260023,-0.97979589711299364,1.1999039092174769e-16,0,0,0,0,1,-1.0232476504625457e-17,1.1756609271811264e-16,1,0 +275.20941951279531,269,33.714842402512339,0,0,1.0328181187444285,-0.13900019565389962,0,0,0.085977974022570208,-0.97979589711309878,1.1999039092174769e-16,0,0,0,0,1,-1.0316530713628072e-17,1.1756609271812526e-16,1,0 +276.24232651467628,270,33.575401119266502,0,0,1.0329963173769654,-0.13988359231700259,0,0,0.086683172053295482,-0.97979589711325787,1.1999039092174769e-16,0,0,0,0,1,-1.0401147701012045e-17,1.1756609271814434e-16,1,0 +277.27541301916591,271,33.435072755122448,0,0,1.0331771329592032,-0.14077438079628535,0,0,0.087393144950530577,-0.97979589711344794,1.1999039092174769e-16,0,0,0,0,1,-1.048633762649513e-17,1.1756609271816717e-16,1,0 +278.30868167031912,272,33.293849847891465,0,0,1.0333606198255176,-0.14167270222672573,0,0,0.088107979514842755,-0.97979589711363424,1.1999039092174769e-16,0,0,0,0,1,-1.0572110905311326e-17,1.175660927181895e-16,1,0 +279.3421351673411,273,33.151724792329851,0,0,1.0335468339289775,-0.14257870156392571,0,0,0.088827764748724114,-0.97979589711377557,1.1999039092174769e-16,0,0,0,0,1,-1.0658478216904453e-17,1.1756609271820646e-16,1,0 +280.37577626621675,274,33.008689836282926,0,0,1.033735832903103,-0.14349252772129373,0,0,0.089552591932024514,-0.97979589711383341,1.1999039092174769e-16,0,0,0,0,1,-1.0745450513979375e-17,1.1756609271821342e-16,1,0 +281.40960778139339,275,32.86473707670757,0,0,1.0339276761263989,-0.14441433371308504,0,0,0.090282554700472917,-0.97979589711378645,1.1999039092174769e-16,0,0,0,0,1,-1.0833039031923819e-17,1.1756609271820777e-16,1,0 +282.44363258751594,276,32.719858455570865,0,0,1.0341224247897671,-0.14534427680351245,0,0,0.091017749127395312,-0.97979589711364967,1.1999039092174769e-16,0,0,0,0,1,-1.0921255298613727e-17,1.1756609271819135e-16,1,0 +283.47785362121698,277,32.574045755622528,0,0,1.0343201419669024,-0.14628251866213896,0,0,0.091758273808737287,-0.97979589711350035,1.1999039092174769e-16,0,0,0,0,1,-1.1010111144615154e-17,1.1756609271817343e-16,1,0 +284.512273883072,278,32.427290595850572,0,0,1.0345208926884661,-0.14722922552755288,0,0,0.092504229952545744,-0.97979589711345871,1.1999039092174769e-16,0,0,0,0,1,-1.109961871392121e-17,1.1756609271816845e-16,1,0 +285.5468964402391,279,32.279584425729411,0,0,1.034724744025356,-0.14818456839185248,0,0,0.093255721479915454,-0.97979589711341852,1.1999039092174769e-16,0,0,0,0,1,-1.1189790476064682e-17,1.1756609271816362e-16,1,0 +286.58172442776197,280,32.130918521699535,0,0,1.0349317651662842,-0.14914872316877417,0,0,0.09401285511589122,-0.97979589711340087,1.1999039092174769e-16,0,0,0,0,1,-1.1280639237025418e-17,1.1756609271816152e-16,1,0 +287.61676105095694,281,31.981283981770066,0,0,1.0351420275030752,-0.15012187088125495,0,0,0.094775740491583313,-0.9797958971134032,1.1999039092174769e-16,0,0,0,0,1,-1.1372178151483197e-17,1.1756609271816179e-16,1,0 +288.65200958770441,282,31.830671720233266,0,0,1.0353556047219612,-0.15110419786076901,0,0,0.095544490252203712,-0.97979589711339554,1.1999039092174769e-16,0,0,0,0,1,-1.1464420735781039e-17,1.1756609271816088e-16,1,0 +289.68747339075441,283,31.679072462311819,0,0,1.035572572898682,-0.15209589595439979,0,0,0.096319220169068395,-0.97979589711335024,1.1999039092174769e-16,0,0,0,0,1,-1.1557380881364405e-17,1.1756609271815543e-16,1,0 +290.72315589014516,284,31.526476738569773,0,0,1.0357930105981419,-0.15309716274148827,0,0,0.097100049256604204,-0.97979589711325743,1.1999039092174769e-16,0,0,0,0,1,-1.1651072868820898e-17,1.1756609271814429e-16,1,0 +291.75906059573805,285,31.372874879079912,0,0,1.0360169989790333,-0.15410820176065212,0,0,0.097887099894749197,-0.97979589711313009,1.1999039092174769e-16,0,0,0,0,1,-1.1745511382567127e-17,1.1756609271812901e-16,1,0 +292.79519109986995,286,31.21825700734038,0,0,1.0362446219038348,-0.15512922274796995,0,0,0.098680497957135682,-0.97979589711300019,1.1999039092174769e-16,0,0,0,0,1,-1.1840711526229439e-17,1.1756609271811343e-16,1,0 +293.83155108012755,287,31.062613033933307,0,0,1.0364759660545908,-0.15616044188712566,0,0,0.099480372945444748,-0.9797958971129096,1.1999039092174769e-16,0,0,0,0,1,-1.1936688838765172e-17,1.1756609271810256e-16,1,0 +294.8681443022449,288,30.905932649918213,0,0,1.0367111210548834,-0.15720208207230699,0,0,0.10028685813032154,-0.97979589711289761,1.1999039092174769e-16,0,0,0,0,1,-1.2033459311371135e-17,1.1756609271810113e-16,1,0 +295.904974623128,289,30.748205319953037,0,0,1.036950179598402,-0.15825437318465327,0,0,0.10110009069923999,-0.97979589711298831,1.1999039092174769e-16,0,0,0,0,1,-1.2131039405225959e-17,1.17566092718112e-16,1,0 +296.94204599400837,290,30.589420275135488,0,0,1.0371932375845205,-0.15931755238304668,0,0,0.10192021191170644,-0.97979589711317994,1.1999039092174769e-16,0,0,0,0,1,-1.2229446070113025e-17,1.17566092718135e-16,1,0 +297.97936246372853,291,30.429566505557542,0,0,1.0374403942612904,-0.1603918644100415,0,0,0.10274736726219069,-0.97979589711343917,1.1999039092174769e-16,0,0,0,0,1,-1.2328696763970646e-17,1.1756609271816611e-16,1,0 +299.01692818216242,292,30.268632752565892,0,0,1.0376917523762563,-0.16147756191372614,0,0,0.10358170665117396,-0.97979589711370363,1.1999039092174769e-16,0,0,0,0,1,-1.242880947341616e-17,1.1756609271819784e-16,1,0 +300.05474740377275,293,30.106607500721086,0,0,1.037947418335504,-0.16257490578631262,0,0,0.10442338456470236,-0.97979589711389325,1.1999039092174769e-16,0,0,0,0,1,-1.2529802735290635e-17,1.1756609271822059e-16,1,0 +301.09282449130893,294,29.943478969448172,0,0,1.0382075023713482,-0.16368416552024737,0,0,0.10527256026283528,-0.97979589711393567,1.1999039092174769e-16,0,0,0,0,1,-1.2631695659270852e-17,1.1756609271822567e-16,1,0 +302.13116391964746,295,29.779235104371605,0,0,1.0384721187190691,-0.16480561958263892,0,0,0.10612939797737739,-0.9797958971138071,1.1999039092174769e-16,0,0,0,0,1,-1.2734507951595256e-17,1.1756609271821024e-16,1,0 +303.16977027977805,296,29.613863568327218,0,0,1.0387413858031034,-0.16593955580879621,0,0,0.10699406711928346,-0.97979589711359016,1.1999039092174769e-16,0,0,0,0,1,-1.2838259939950538e-17,1.175660927181842e-16,1,0 +304.20864828302126,297,29.447351731906494,0,0,1.0390154264337124,-0.16708627181715216,0,0,0.10786674249694812,-0.9797958971135079,1.1999039092174769e-16,0,0,0,0,1,-1.2942972599664306e-17,1.1756609271817434e-16,1,0 +305.24780276645345,298,29.279686661917236,0,0,1.039294368025014,-0.16824607547003678,0,0,0.10874760455847582,-0.97979589711345272,1.1999039092174769e-16,0,0,0,0,1,-1.304866758277515e-17,1.1756609271816771e-16,1,0 +306.2872386968109,299,29.110855112235967,0,0,1.0395783428129959,-0.16941928532891168,0,0,0.10963683962935204,-0.97979589711343595,1.1999039092174769e-16,0,0,0,0,1,-1.3155367246550916e-17,1.1756609271816571e-16,1,0 +307.32696117552405,300,28.940843512711943,0,0,1.0398674880876431,-0.17060623114098575,0,0,0.11053464016678105,-0.97979589711343795,1.1999039092174769e-16,0,0,0,0,1,-1.3263094684006778e-17,1.1756609271816596e-16,1,0 +308.3669754439855,301,28.769637957566118,0,0,1.0401619464449208,-0.17180725436521649,0,0,0.11144120503369409,-0.97979589711339798,1.1999039092174769e-16,0,0,0,0,1,-1.3371873756783597e-17,1.1756609271816115e-16,1,0 +309.40728688891886,302,28.59722419351456,0,0,1.0404618660520821,-0.17302270872456871,0,0,0.11235673978576748,-0.97979589711328052,1.1999039092174769e-16,0,0,0,0,1,-1.3481729129587328e-17,1.1756609271814708e-16,1,0 +310.44790104806151,303,28.423587607262398,0,0,1.0407674009285761,-0.17425296078956945,0,0,0.1132814569740952,-0.97979589711310133,1.1999039092174769e-16,0,0,0,0,1,-1.359268630650683e-17,1.1756609271812556e-16,1,0 +311.48882361616927,304,28.248713212345717,0,0,1.041078711244166,-0.17549839059617828,0,0,0.11421557646493502,-0.97979589711292214,1.1999039092174769e-16,0,0,0,0,1,-1.3704771669380325e-17,1.1756609271810406e-16,1,0 +312.53006045135203,305,28.072585635298768,0,0,1.0413959636358721,-0.17675939230099227,0,0,0.11515932577794655,-0.97979589711282589,1.1999039092174769e-16,0,0,0,0,1,-1.3818012518380708e-17,1.1756609271809252e-16,1,0 +313.57161758174954,306,27.895189101123876,0,0,1.0417193315453477,-0.17803637487680513,0,0,0.11611294044433977,-0.97979589711288184,1.1999039092174769e-16,0,0,0,0,1,-1.3932437114989943e-17,1.1756609271809923e-16,1,0 +314.61350121255646,307,27.716507418041438,0,0,1.0420489955782988,-0.17932976285153951,0,0,0.11707666438635303,-0.97979589711311188,1.1999039092174769e-16,0,0,0,0,1,-1.4048074727532759e-17,1.1756609271812684e-16,1,0 +315.65571773340486,308,27.536523961497373,0,0,1.0423851438875622,-0.18063999709357229,0,0,0.11805075031947872,-0.97979589711346826,1.1999039092174769e-16,0,0,0,0,1,-1.4164955679439886e-17,1.1756609271816958e-16,1,0 +316.69827372611422,309,27.355221657405426,0,0,1.0427279725814491,-0.18196753564647145,0,0,0.11903546017885558,-0.97979589711383286,1.1999039092174769e-16,0,0,0,0,1,-1.4283111400411014e-17,1.1756609271821334e-16,1,0 +317.74117597281673,310,27.172582964601698,0,0,1.0430776861589679,-0.18331285461616459,0,0,0.12003106557124614,-0.97979589711404891,1.1999039092174769e-16,0,0,0,0,1,-1.4402574480647758e-17,1.1756609271823925e-16,1,0 +318.78443146446796,311,26.98858985648878,0,0,1.0434344979735359,-0.18467644911355802,0,0,0.12103784825401789,-0.97979589711399528,1.1999039092174769e-16,0,0,0,0,1,-1.4523378728326785e-17,1.1756609271823284e-16,1,0 +319.82804740975075,312,26.80322380184688,0,0,1.0437986307267939,-0.18605883425562547,0,0,0.12205610064254695,-0.97979589711371484,1.1999039092174769e-16,0,0,0,0,1,-1.464555923048339e-17,1.1756609271819919e-16,1,0 +320.87203124444363,313,26.616465744691578,0,0,1.044170316994655,-0.18746054622918623,0,0,0.12308612634809575,-0.97979589711356407,1.1999039092174769e-16,0,0,0,0,1,-1.4769152417551644e-17,1.175660927181811e-16,1,0 +321.91639064277456,314,26.4282960807333,0,0,1.0445497998061151,-0.18888214346086882,0,0,0.12412824076824379,-0.97979589711348969,1.1999039092174769e-16,0,0,0,0,1,-1.4894196134210395e-17,1.1756609271817217e-16,1,0 +322.96113352753122,315,26.2386946355509,0,0,1.044937333249375,-0.19032420783362761,0,0,0.12518277169773101,-0.97979589711347781,1.1999039092174769e-16,0,0,0,0,1,-1.502072971267864e-17,1.1756609271817074e-16,1,0 +324.00626808129113,316,26.047640640733864,0,0,1.0453331831148645,-0.1917873459762458,0,0,0.1262500599748449,-0.97979589711346304,1.1999039092174769e-16,0,0,0,0,1,-1.5148794050275736e-17,1.1756609271816897e-16,1,0 +325.05180275859567,317,25.855112708229491,0,0,1.0457376275989569,-0.19327219066969531,0,0,0.12733046018407834,-0.97979589711333936,1.1999039092174769e-16,0,0,0,0,1,-1.5278431693733594e-17,1.1756609271815413e-16,1,0 +326.09774629860976,318,25.661088803635273,0,0,1.0461509580549015,-0.19477940234351748,0,0,0.12842434140171485,-0.97979589711309845,1.1999039092174769e-16,0,0,0,0,1,-1.5409686928659756e-17,1.1756609271812524e-16,1,0 +327.14410773865978,319,25.465546217791648,0,0,1.0465734797982493,-0.19630967067674168,0,0,0.12953208799133986,-0.97979589711284698,1.1999039092174769e-16,0,0,0,0,1,-1.5542605874991091e-17,1.1756609271809504e-16,1,0 +328.19089642867954,320,25.268461536603382,0,0,1.0470055129732023,-0.19786371631495819,0,0,0.13065410045450293,-0.97979589711274662,1.1999039092174769e-16,0,0,0,0,1,-1.5677236589065102e-17,1.1756609271808301e-16,1,0 +329.23812204659475,321,25.069810609017996,0,0,1.0474473934863224,-0.19944229271516034,0,0,0.13179079634175733,-0.97979589711291892,1.1999039092174769e-16,0,0,0,0,1,-1.5813629172935897e-17,1.1756609271810369e-16,1,0 +330.28579461467518,322,24.869568513089504,0,0,1.0478994740140262,-0.20104618812997177,0,0,0.13294261122930162,-0.97979589711335546,1.1999039092174769e-16,0,0,0,0,1,-1.5951835891561827e-17,1.1756609271815608e-16,1,0 +331.33392451688439,323,24.667709520055858,0,0,1.0483621250903037,-0.20267622774287419,0,0,0.13410999976644955,-0.97979589711387849,1.1999039092174769e-16,0,0,0,0,1,-1.6091911298491771e-17,1.1756609271821881e-16,1,0 +332.38252251725766,324,24.46420705635839,0,0,1.0488357362810892,-0.20433327596605164,0,0,0.13529343679915323,-0.97979589711419024,1.1999039092174769e-16,0,0,0,0,1,-1.6233912370677159e-17,1.1756609271825624e-16,1,0 +333.43159977933647,325,24.259033663531639,0,0,1.0493207174517181,-0.20601823891246593,0,0,0.13649341857480563,-0.97979589711405723,1.1999039092174769e-16,0,0,0,0,1,-1.6377898653036666e-17,1.1756609271824026e-16,1,0 +334.48116788669131,326,24.052160955891832,0,0,1.049817500133901,-0.20773206705378,0,0,0.13771046403354748,-0.97979589711366788,1.1999039092174769e-16,0,0,0,0,1,-1.6523932413400639e-17,1.1756609271819355e-16,1,0 +335.53123886541562,327,23.843559574628451,0,0,1.0503265390097438,-0.20947575809872437,0,0,0.13894511620254407,-0.97979589711356296,1.1999039092174769e-16,0,0,0,0,1,-1.6672078809810922e-17,1.1756609271818097e-16,1,0 +336.58182520975015,328,23.633199136431816,0,0,1.0508483135530549,-0.21125036016721352,0,0,0.14019794372768049,-0.97979589711352144,1.1999039092174769e-16,0,0,0,0,1,-1.682240607430957e-17,1.1756609271817599e-16,1,0 +337.63293990612533,329,23.421048183911061,0,0,1.0513833297587896,-0.21305697511773625,0,0,0.14146954247244947,-0.97979589711350223,1.1999039092174769e-16,0,0,0,0,1,-1.6974985704790002e-17,1.1756609271817368e-16,1,0 +338.68459646109807,330,23.207074129294099,0,0,1.0519321220576039,-0.21489676222256618,0,0,0.14276053727826526,-0.97979589711330239,1.1999039092174769e-16,0,0,0,0,1,-1.7129892676217787e-17,1.1756609271814972e-16,1,0 +339.73680893057445,331,22.991243195411478,0,0,1.0524952553971179,-0.21677094214813197,0,0,0.14407158386395272,-0.97979589711293813,1.1999039092174769e-16,0,0,0,0,1,-1.7287205668551048e-17,1.1756609271810598e-16,1,0 +340.78959195142346,332,22.773520352215389,0,0,1.0530733275056745,-0.21868080127158171,0,0,0.1454033708785771,-0.97979589711266935,1.1999039092174769e-16,0,0,0,0,1,-1.7447007313060332e-17,1.1756609271807374e-16,1,0 +341.84296077563823,333,22.553869248519657,0,0,1.0536669713648865,-0.22062769637956797,0,0,0.14675662212747431,-0.97979589711279225,1.1999039092174769e-16,0,0,0,0,1,-1.760938445943085e-17,1.1756609271808848e-16,1,0 +342.89693130714465,334,22.332252138731619,0,0,1.0542768579168944,-0.22261305979441087,0,0,0.14813209899088894,-0.97979589711337189,1.1999039092174769e-16,0,0,0,0,1,-1.777442846597579e-17,1.1756609271815805e-16,1,0 +343.95152014135726,335,22.108629804346634,0,0,1.0549036990322542,-0.22463840497279663,0,0,0.14953060305462823,-0.97979589711408521,1.1999039092174769e-16,0,0,0,0,1,-1.7942235515289521e-17,1.1756609271824364e-16,1,0 +345.00674460758319,336,21.882961469976046,0,0,1.0555482507643794,-0.22670533262216891,0,0,0.1509529789721398,-0.97979589711434967,1.1999039092174769e-16,0,0,0,0,1,-1.8112906957669412e-17,1.1756609271827537e-16,1,0 +346.06262281437398,337,21.655204713679453,0,0,1.0562113169164553,-0.22881553737997026,0,0,0.152400117577421,-0.97979589711390547,1.1999039092174769e-16,0,0,0,0,1,-1.8286549684635057e-17,1.1756609271822207e-16,1,0 +347.11917369833265,338,21.425315370760813,0,0,1.0568937529526901,-0.23097081511268885,0,0,0.15387295927364622,-0.97979589711364667,1.1999039092174769e-16,0,0,0,0,1,-1.8463276535530969e-17,1.1756609271819103e-16,1,0 +348.17641708036763,339,21.1932474249022,0,0,1.0575964703654785,-0.23317307104134913,0,0,0.15537249778944157,-0.97979589711357029,1.1999039092174769e-16,0,0,0,0,1,-1.8643206748243471e-17,1.1756609271818186e-16,1,0 +349.23437372294234,340,20.958952896137003,0,0,1.058320441444162,-0.23542432857076098,0,0,0.15689978424012194,-0.97979589711352233,1.1999039092174769e-16,0,0,0,0,1,-1.8826466446510099e-17,1.1756609271817609e-16,1,0 +350.29306539334817,341,20.722381718022127,0,0,1.0590667045615527,-0.23772673904243058,0,0,0.15845593159403351,-0.97979589711315496,1.1999039092174769e-16,0,0,0,0,1,-1.9013189175837793e-17,1.1756609271813202e-16,1,0 +351.35251493239457,342,20.483481604799152,0,0,1.059836370047075,-0.24008259252764863,0,0,0.16004211959323225,-0.97979589711265791,1.1999039092174769e-16,0,0,0,0,1,-1.9203516493937034e-17,1.1756609271807236e-16,1,0 +352.41274632964576,343,20.242197906714161,0,0,1.0606306266913459,-0.2424943297379788,0,0,0.16165960015926126,-0.97979589711262771,1.1999039092174769e-16,0,0,0,0,1,-1.9397598619363185e-17,1.1756609271806876e-16,1,0 +353.47378480589805,344,19.998473452229277,0,0,1.0614507489885117,-0.24496455523347818,0,0,0.16330970335833514,-0.97979589711336779,1.1999039092174769e-16,0,0,0,0,1,-1.9595595147281288e-17,1.1756609271815755e-16,1,0 +354.53565690323575,345,19.752248376386987,0,0,1.0622981052216196,-0.24749605210579501,0,0,0.16499384399850539,-0.97979589711432924,1.1999039092174769e-16,0,0,0,0,1,-1.979767584106252e-17,1.175660927182729e-16,1,0 +355.59839058300548,346,19.503459934588275,0,0,1.0631741664963141,-0.25009179831328998,0,0,0.16671352893138122,-0.97979589711440451,1.1999039092174769e-16,0,0,0,0,1,-2.000402150842053e-17,1.1756609271828195e-16,1,0 +356.66201533205037,347,19.252042301039527,0,0,1.0640805168281884,-0.25275498484543635,0,0,0.16847036513102898,-0.97979589711378023,1.1999039092174769e-16,0,0,0,0,1,-2.0214824970801737e-17,1.1756609271820703e-16,1,0 +357.72656228163135,348,18.99792634513901,0,0,1.065018864479166,-0.25548903605946865,0,0,0.17026606869392588,-0.97979589711362269,1.1999039092174769e-16,0,0,0,0,1,-2.0430292143293316e-17,1.1756609271818812e-16,1,0 +358.79206434029129,349,18.741039383486658,0,0,1.065991054779255,-0.25829763258001648,0,0,0.1721024749143315,-0.9797958971135694,1.1999039092174769e-16,0,0,0,0,1,-2.0650643243570914e-17,1.1756609271818174e-16,1,0 +359.85855633604143,350,18.481304913847989,0,0,1.066999084487247,-0.26118473682485133,0,0,0.1739815494506271,-0.97979589711302206,1.1999039092174769e-16,0,0,0,0,1,-2.0876114131752127e-17,1.1756609271811607e-16,1,0 +360.9260751755732,351,18.218642319475116,0,0,1.0680451181138781,-0.26415462189381422,0,0,0.17590540089237358,-0.97979589711243686,1.1999039092174769e-16,0,0,0,0,1,-2.1106957818322652e-17,1.1756609271804583e-16,1,0 +361.99466002128219,352,17.95296654220547,0,0,1.0691315063975781,-0.26721190412776263,0,0,0.17787629484310521,-0.97979589711292003,1.1999039092174769e-16,0,0,0,0,1,-2.1343446153936245e-17,1.1756609271810381e-16,1,0 +363.06435248883162,353,17.684187719682722,0,0,1.0702608073460165,-0.2703615800161327,0,0,0.17989666978440916,-0.97979589711429227,1.1999039092174769e-16,0,0,0,0,1,-2.1585871732951808e-17,1.1756609271826849e-16,1,0 +364.13519686640421,354,17.412210784300786,0,0,1.071435810273857,-0.27360906815346253,0,0,0.18196915499419891,-0.9797958971145927,1.1999039092174769e-16,0,0,0,0,1,-2.1834550043454023e-17,1.1756609271830453e-16,1,0 +365.2072403569075,355,17.136935021308926,0,0,1.0726595632693237,-0.27696025694925075,0,0,0.18409659079375534,-0.97979589711382742,1.1999039092174769e-16,0,0,0,0,1,-2.2089821896703724e-17,1.175660927182127e-16,1,0 +366.28053335283687,356,16.858253571451918,0,0,1.0739354047712855,-0.28042155922996659,0,0,0.18628205157236372,-0.97979589711368176,1.1999039092174769e-16,0,0,0,0,1,-2.2352056189873088e-17,1.1756609271819522e-16,1,0 +367.35512974711918,357,16.576052872092706,0,0,1.0752670000558429,-0.28399997501138996,0,0,0.18852887206885935,-0.9797958971133115,1.1999039092174769e-16,0,0,0,0,1,-2.2621653059578594e-17,1.175660927181508e-16,1,0 +368.43108727804912,358,16.290212038197563,0,0,1.0766583833596568,-0.28770316358450709,0,0,0.19084067733721677,-0.97979589711236581,1.1999039092174769e-16,0,0,0,0,1,-2.2899047477463762e-17,1.175660927180373e-16,1,0 +369.50846792186576,359,16.00060216276831,0,0,1.0781140068831598,-0.29153952695948998,0,0,0.1932214171891713,-0.97979589711284054,1.1999039092174769e-16,0,0,0,0,1,-2.3184713382982766e-17,1.1756609271809427e-16,1,0 +370.5873383404512,360,15.70708552435684,0,0,1.079638797950442,-0.29551830669412021,0,0,0.19567540585836674,-0.97979589711468795,1.1999039092174769e-16,0,0,0,0,1,-2.3479168442717067e-17,1.1756609271831594e-16,1,0 +371.66777038960487,361,15.409514691688653,0,0,1.0812382260738116,-0.29964969686734361,0,0,0.19820736790784615,-0.97979589711431347,1.1999039092174769e-16,0,0,0,0,1,-2.378297955883313e-17,1.1756609271827103e-16,1,0 +372.74984169468496,362,15.10773151357394,0,0,1.0829183817825621,-0.30394497613910348,0,0,0.20082249147028136,-0.97979589711373927,1.1999039092174769e-16,0,0,0,0,1,-2.4096769257398402e-17,1.1756609271820213e-16,1,0 +373.83363632191873,363,14.801565951997381,0,0,1.0846860701050385,-0.30841666351588193,0,0,0.20352649052432523,-0.97979589711348103,1.1999039092174769e-16,0,0,0,0,1,-2.4421223160945162e-17,1.1756609271817114e-16,1,0 +374.91924554573029,364,14.490834753757603,0,0,1.0865489216855779,-0.3130787023937408,0,0,0.20632567782036154,-0.97979589711219783,1.1999039092174769e-16,0,0,0,0,1,-2.4757098738859746e-17,1.1756609271801716e-16,1,0 +376.00676873683409,365,14.175339922527435,0,0,1.0885155257697918,-0.31794667953359335,0,0,0.20922705087699067,-0.97979589711318837,1.1999039092174769e-16,0,0,0,0,1,-2.5105235626134503e-17,1.1756609271813601e-16,1,0 +377.09631440176111,366,13.854866943977571,0,0,1.0905955902858993,-0.3230380870884022,0,0,0.212238393917693,-0.97979589711518933,1.1999039092174769e-16,0,0,0,0,1,-2.5466567854787865e-17,1.1756609271837609e-16,1,0 +378.1880013941057,367,13.529182729135458,0,0,1.092800135884485,-0.32837263819591839,0,0,0.21536839942536096,-0.97979589711392678,1.1999039092174769e-16,0,0,0,0,1,-2.5842138439240164e-17,1.1756609271822461e-16,1,0 +379.28196033762316,368,13.198033213853774,0,0,1.0951417324972907,-0.33397264931033094,0,0,0.21862681392669389,-0.97979589711365289,1.1999039092174769e-16,0,0,0,0,1,-2.6233116869040195e-17,1.1756609271819175e-16,1,0 +380.37833532223107,369,12.861140521304947,0,0,1.0976347904148784,-0.33986350758360706,0,0,0.22202461428070513,-0.97979589711197568,1.1999039092174769e-16,0,0,0,0,1,-2.6640820261792055e-17,1.1756609271799051e-16,1,0 +381.47728591285772,370,12.518199620816208,0,0,1.1002959207392089,-0.34607424569938156,0,0,0.225574222074098,-0.97979589711392445,1.1999039092174769e-16,0,0,0,0,1,-2.7066739088540148e-17,1.1756609271822434e-16,1,0 +382.57898957249466,371,12.168874331523753,0,0,1.1031443860497572,-0.3526382556573196,0,0,0.22928976672227119,-0.97979589711470794,1.1999039092174769e-16,0,0,0,0,1,-2.7512568743361657e-17,1.1756609271831833e-16,1,0 +383.68364458101064,372,11.812792540453815,0,0,1.1062026690382898,-0.35959418287510608,0,0,0.23318741095066917,-0.97979589711385207,1.1999039092174769e-16,0,0,0,0,1,-2.7980248598001029e-17,1.1756609271821563e-16,1,0 +384.79147360580646,373,11.44954040223481,0,0,1.1094971975270209,-0.36698705786151992,0,0,0.23728575744645353,-0.97979589711195358,1.1999039092174769e-16,0,0,0,0,1,-2.847201079616297e-17,1.1756609271798785e-16,1,0 +385.90272809279139,374,11.078655261945284,0,0,1.1130592792971443,-0.37486974416139363,0,0,0.24160636197853727,-0.97979589711428705,1.1999039092174769e-16,0,0,0,0,1,-2.8990441822985974e-17,1.1756609271826785e-16,1,0 +387.017693732802,375,10.69961692083781,0,0,1.1169263223137127,-0.38330481347271811,0,0,0.24617438827324442,-0.97979589711423798,1.1999039092174769e-16,0,0,0,0,1,-2.9538561083828708e-17,1.1756609271826196e-16,1,0 +388.13669732380646,376,10.311836763294998,0,0,1.121143449391186,-0.39236700644125722,0,0,0.25101945416338806,-0.97979589711331605,1.1999039092174769e-16,0,0,0,0,1,-3.011992243402867e-17,1.1756609271815134e-16,1,0 +389.26011552074158,377,9.9146440228683357,0,0,1.1257656677029839,-0.40214651095778636,0,0,0.25617674036731369,-0.97979589711251014,1.1999039092174769e-16,0,0,0,0,1,-3.0738747221733049e-17,1.1756609271805463e-16,1,0 +390.38838612156513,378,9.5072682321938711,0,0,1.1308608327422012,-0.41275340106055114,0,0,0.26168846543287283,-0.97979589711452175,1.1999039092174769e-16,0,0,0,0,1,-3.1400101267002685e-17,1.17566092718296e-16,1,0 +391.52202286184189,379,9.0888164441166541,0,0,1.1365137754855699,-0.4243237604966254,0,0,0.26760588212390185,-0.97979589711284532,1.1999039092174769e-16,0,0,0,0,1,-3.2110134409006129e-17,1.1756609271809484e-16,1,0 +392.66163514719796,380,8.6582431638760067,0,0,1.1428321738300007,-0.43702830965185324,0,0,0.27399203293682567,-0.97979589711497206,1.1999039092174769e-16,0,0,0,0,1,-3.2876411141534087e-17,1.1756609271835004e-16,1,0 +393.80795490660012,381,8.214309876059275,0,0,1.1499551117664006,-0.45108485312608532,0,0,0.2809256384736713,-0.97979589711398551,1.1999039092174769e-16,0,0,0,0,1,-3.3708377180397398e-17,1.1756609271823166e-16,1,0 +394.96187396152862,382,7.7555293634886535,0,0,1.1580659127806263,-0.4667767422216238,0,0,0.28850672655307136,-0.97979589711207304,1.1999039092174769e-16,0,0,0,0,1,-3.4618034902656812e-17,1.1756609271800217e-16,1,0 +396.12449746121786,383,7.2800870557100472,0,0,1.1674120242486903,-0.48448115502196076,0,0,0.2968650278872717,-0.97979589711400017,1.1999039092174769e-16,0,0,0,0,1,-3.562095074718928e-17,1.1756609271823341e-16,1,0 +397.29722269467868,384,6.7857265188764604,0,0,1.1783370411208651,-0.50471408813823293,0,0,0.30617294413160956,-0.97979589711424098,1.1999039092174769e-16,0,0,0,0,1,-3.6737811256014269e-17,1.175660927182623e-16,1,0 +398.48185980038227,385,6.2695764947414609,0,0,1.1913347333893116,-0.52820527560786401,0,0,0.31666643933096511,-0.97979589711241188,1.1999039092174769e-16,0,0,0,0,1,-3.7996929847120426e-17,1.1756609271804282e-16,1,0 +399.68082530078249,386,5.7278777228986701,0,0,1.2071455233933508,-0.55603009363058098,0,0,0.3286804673514771,-0.97979589711424642,1.1999039092174769e-16,0,0,0,0,1,-3.9438497765846494e-17,1.1756609271826294e-16,1,0 +400.89747071518605,387,5.1555266321441939,0,0,1.2269414967265748,-0.58985863633610247,0,0,0.34271303672679876,-0.97979589711727044,1.1999039092174769e-16,0,0,0,0,1,-4.112227125082788e-17,1.1756609271862582e-16,1,0 +402.13668330645402,388,4.54525609911249,0,0,1.2527155284234375,-0.63247071905666719,0,0,0.35955108775083866,-0.97979589711760862,1.1999039092174769e-16,0,0,0,0,1,-4.3142675575562755e-17,1.1756609271866637e-16,1,0 +403.40609920562804,389,3.8860144313574665,0,0,1.2882089332242985,-0.6889601787273627,0,0,0.38054714261671257,-0.97979589711364801,1.1999039092174769e-16,0,0,0,0,1,-4.5662000406733431e-17,1.1756609271819115e-16,1,0 +404.71892830936724,390,3.1592785705381488,0,0,1.3415634010738333,-0.7701012396930732,0,0,0.40833373573712628,-0.97979589711788617,1.1999039092174769e-16,0,0,0,0,1,-4.8996124577635443e-17,1.1756609271869967e-16,1,0 +406.10220244383697,391,2.3285945222010236,0,0,1.4355067186237975,-0.90492385735833991,0,0,0.44921303584672961,-0.97979589711218673,1.1999039092174769e-16,0,0,0,0,1,-5.390124777839418e-17,1.1756609271801581e-16,1,0 +407.63446762785566,392,1.2936577331960704,0,0,1.6802994668114823,-1.2271935367909899,0,0,0.52668996709762506,-0.97979589711811721,1.1999039092174769e-16,0,0,0,0,1,-6.3197735046606516e-17,1.1756609271872753e-16,1,0 diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/debug-build.log.gz b/benchmarks/ray_pool_scheduling_2026-09-06/debug-build.log.gz new file mode 100644 index 0000000..1c7f40c Binary files /dev/null and b/benchmarks/ray_pool_scheduling_2026-09-06/debug-build.log.gz differ diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/debug-tests.log.gz b/benchmarks/ray_pool_scheduling_2026-09-06/debug-tests.log.gz new file mode 100644 index 0000000..14798af Binary files /dev/null and b/benchmarks/ray_pool_scheduling_2026-09-06/debug-tests.log.gz differ diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/instrumentation-summary.json b/benchmarks/ray_pool_scheduling_2026-09-06/instrumentation-summary.json new file mode 100644 index 0000000..55ada51 --- /dev/null +++ b/benchmarks/ray_pool_scheduling_2026-09-06/instrumentation-summary.json @@ -0,0 +1,58 @@ +[ + { + "log": "repeat-0-dynamic-32.log.gz", + "slabs": 47, + "ray_seconds": 33.168786045, + "steps": 206670193, + "active_visits": 402534, + "first_slab_workers": 16 + }, + { + "log": "repeat-1-static-32.log.gz", + "slabs": 47, + "ray_seconds": 34.607429587, + "steps": 206670193, + "active_visits": 402534, + "first_slab_workers": 16 + }, + { + "log": "repeat-2-static.log.gz", + "slabs": 47, + "ray_seconds": 55.558642399, + "steps": 206670193, + "active_visits": 402534, + "first_slab_workers": 3 + }, + { + "log": "sweep-0-static.log.gz", + "slabs": 47, + "ray_seconds": 55.68798219, + "steps": 206670193, + "active_visits": 402534, + "first_slab_workers": 3 + }, + { + "log": "sweep-1-static-32.log.gz", + "slabs": 47, + "ray_seconds": 34.101257694, + "steps": 206670193, + "active_visits": 402534, + "first_slab_workers": 16 + }, + { + "log": "sweep-2-dynamic-32.log.gz", + "slabs": 47, + "ray_seconds": 33.807714462999996, + "steps": 206670193, + "active_visits": 402534, + "first_slab_workers": 16 + }, + { + "log": "sweep-3-dynamic-128.log.gz", + "slabs": 47, + "ray_seconds": 34.315769388, + "steps": 206670193, + "active_visits": 402534, + "first_slab_workers": 16 + } +] \ No newline at end of file diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/production-after-0-dynamic-32-command.txt b/benchmarks/ray_pool_scheduling_2026-09-06/production-after-0-dynamic-32-command.txt new file mode 100644 index 0000000..08ba280 --- /dev/null +++ b/benchmarks/ray_pool_scheduling_2026-09-06/production-after-0-dynamic-32-command.txt @@ -0,0 +1 @@ +env OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE OMP_SCHEDULE=dynamic,32 /tmp/gr-ray-schedules/renderer --catalog assets/sky_grid_5deg.csv --observer-track /home/wyj/Code/C/GR_4d_raytracing/benchmarks/ray_pool_scheduling_2026-09-06/camera.csv --movie-track-samples --frames-dir /tmp/gr-ray-schedules/production-after-0-dynamic-32 --frames-prefix frame --width 64 --height 36 --fov-deg 60 --exposure 0.2 --coarse-cell-pixels 16 --refine-max-level 3 --lens-map-output /tmp/gr-ray-schedules/production-after-0-dynamic-32/movie.grlens --verbose diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/production-after-0-dynamic-32.log.gz b/benchmarks/ray_pool_scheduling_2026-09-06/production-after-0-dynamic-32.log.gz new file mode 100644 index 0000000..518c9c8 Binary files /dev/null and b/benchmarks/ray_pool_scheduling_2026-09-06/production-after-0-dynamic-32.log.gz differ diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/production-after-build-command.txt b/benchmarks/ray_pool_scheduling_2026-09-06/production-after-build-command.txt new file mode 100644 index 0000000..4d96dd5 --- /dev/null +++ b/benchmarks/ray_pool_scheduling_2026-09-06/production-after-build-command.txt @@ -0,0 +1 @@ +cc -std=c11 -march=native -pipe -Wall -Wextra -Wpedantic -O2 -DNDEBUG -fopenmp -DENABLE_PNG -DFRAME_PSF_EVENT_SINK=1 -DSPACETIME_SCHWARZSCHILD -I/tmp/gr-ray-schedules/baseline /tmp/gr-ray-schedules/baseline/catalog.c /tmp/gr-ray-schedules/baseline/frame.c /tmp/gr-ray-schedules/baseline/geodesic.c /tmp/gr-ray-schedules/baseline/lens_map.c /tmp/gr-ray-schedules/baseline/movie.c /tmp/gr-ray-schedules/baseline/observer.c /tmp/gr-ray-schedules/baseline/observer_track.c /tmp/gr-ray-schedules/baseline/optics.c /tmp/gr-ray-schedules/baseline/spacetime_common.c /tmp/gr-ray-schedules/baseline/spacetime_schwarzschild.c /tmp/gr-ray-schedules/ray.c /tmp/gr-ray-schedules/main.c -lm -lpng -o /tmp/gr-ray-schedules/renderer diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/production-after-build.log b/benchmarks/ray_pool_scheduling_2026-09-06/production-after-build.log new file mode 100644 index 0000000..e69de29 diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/production-after-environment.json b/benchmarks/ray_pool_scheduling_2026-09-06/production-after-environment.json new file mode 100644 index 0000000..eae4cda --- /dev/null +++ b/benchmarks/ray_pool_scheduling_2026-09-06/production-after-environment.json @@ -0,0 +1,10 @@ +{ + "base": "8cf6106127fc19732cee123e9890d401a6838a51", + "cpu": "Architecture: x86_64\nCPU op-mode(s): 32-bit, 64-bit\nAddress sizes: 46 bits physical, 48 bits virtual\nByte Order: Little Endian\nCPU(s): 16\nOn-line CPU(s) list: 0-15\nVendor ID: GenuineIntel\nModel name: 12th Gen Intel(R) Core(TM) i7-12700K\nCPU family: 6\nModel: 151\nThread(s) per core: 2\nCore(s) per socket: 8\nSocket(s): 1\nStepping: 2\nMicrocode version: 0x3e\nCPU(s) scaling MHz: 57%\nCPU max MHz: 5100.0000\nCPU min MHz: 800.0000\nBogoMIPS: 7219.20\nFlags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb intel_pt sha_ni xsaveopt xsavec xgetbv1 xsaves split_lock_detect avx_vnni dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp hwp_pkg_req hfi vnmi umip pku ospke waitpkg gfni vaes vpclmulqdq rdpid movdiri movdir64b fsrm md_clear serialize pconfig arch_lbr ibt flush_l1d arch_capabilities\nVirtualization: VT-x\nL1d cache: 384 KiB (8 instances)\nL1i cache: 256 KiB (8 instances)\nL2 cache: 10 MiB (8 instances)\nL3 cache: 25 MiB (1 instance)\nNUMA node(s): 1\nNUMA node0 CPU(s): 0-15\nVulnerability Gather data sampling: Not affected\nVulnerability Ghostwrite: Not affected\nVulnerability Indirect target selection: Not affected\nVulnerability Itlb multihit: Not affected\nVulnerability L1tf: Not affected\nVulnerability Mds: Not affected\nVulnerability Meltdown: Not affected\nVulnerability Mmio stale data: Not affected\nVulnerability Old microcode: Not affected\nVulnerability Reg file data sampling: Mitigation; Clear Register File\nVulnerability Retbleed: Not affected\nVulnerability Spec rstack overflow: Not affected\nVulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl\nVulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization\nVulnerability Spectre v2: Mitigation; Enhanced / Automatic IBRS; IBPB conditional; PBRSB-eIBRS SW sequence; BHI BHI_DIS_S\nVulnerability Srbds: Not affected\nVulnerability Tsa: Not affected\nVulnerability Tsx async abort: Not affected\nVulnerability Vmscape: Mitigation; IBPB before exit to userspace\n", + "compiler": "cc (Gentoo 15.3.0 p8) 15.3.0\nCopyright (C) 2025 Free Software Foundation, Inc.\nThis is free software; see the source for copying conditions. There is NO\nwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n", + "track_sha256": "e1bdee4053d83bfb5cd14b182e43fe610d397eed02f833d114c2d1fb40e066a9", + "catalog_sha256": "1f906f67991dd817b6f5968955a498edfdfcc0933bc3081b115c56ff048de2c6", + "production": true, + "ray_sha256": "69331a17bc8cb57728e35c3d3889bf982038533410e213435d2fc25dd648e047", + "openmp_environment": {} +} \ No newline at end of file diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/production-after-results.json b/benchmarks/ray_pool_scheduling_2026-09-06/production-after-results.json new file mode 100644 index 0000000..1368a02 --- /dev/null +++ b/benchmarks/ray_pool_scheduling_2026-09-06/production-after-results.json @@ -0,0 +1,12 @@ +[ + { + "name": "production-after-0-dynamic-32", + "schedule": "dynamic,32", + "exit": 0, + "elapsed": 38.68557698093355, + "user": 554.7874099999999, + "system": 2.748245, + "lens_map_sha256": "708a218eca26b9eac42cb4954b0dbd4dfe316cc55d4315d650cbc8ab7e616080", + "png_count": 393 + } +] \ No newline at end of file diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/production-before-0-static-command.txt b/benchmarks/ray_pool_scheduling_2026-09-06/production-before-0-static-command.txt new file mode 100644 index 0000000..46e45b3 --- /dev/null +++ b/benchmarks/ray_pool_scheduling_2026-09-06/production-before-0-static-command.txt @@ -0,0 +1 @@ +env OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE OMP_SCHEDULE=static /tmp/gr-ray-schedules/renderer --catalog assets/sky_grid_5deg.csv --observer-track /home/wyj/Code/C/GR_4d_raytracing/benchmarks/ray_pool_scheduling_2026-09-06/camera.csv --movie-track-samples --frames-dir /tmp/gr-ray-schedules/production-before-0-static --frames-prefix frame --width 64 --height 36 --fov-deg 60 --exposure 0.2 --coarse-cell-pixels 16 --refine-max-level 3 --lens-map-output /tmp/gr-ray-schedules/production-before-0-static/movie.grlens --verbose diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/production-before-0-static.log.gz b/benchmarks/ray_pool_scheduling_2026-09-06/production-before-0-static.log.gz new file mode 100644 index 0000000..4800da7 Binary files /dev/null and b/benchmarks/ray_pool_scheduling_2026-09-06/production-before-0-static.log.gz differ diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/production-before-build-command.txt b/benchmarks/ray_pool_scheduling_2026-09-06/production-before-build-command.txt new file mode 100644 index 0000000..4d96dd5 --- /dev/null +++ b/benchmarks/ray_pool_scheduling_2026-09-06/production-before-build-command.txt @@ -0,0 +1 @@ +cc -std=c11 -march=native -pipe -Wall -Wextra -Wpedantic -O2 -DNDEBUG -fopenmp -DENABLE_PNG -DFRAME_PSF_EVENT_SINK=1 -DSPACETIME_SCHWARZSCHILD -I/tmp/gr-ray-schedules/baseline /tmp/gr-ray-schedules/baseline/catalog.c /tmp/gr-ray-schedules/baseline/frame.c /tmp/gr-ray-schedules/baseline/geodesic.c /tmp/gr-ray-schedules/baseline/lens_map.c /tmp/gr-ray-schedules/baseline/movie.c /tmp/gr-ray-schedules/baseline/observer.c /tmp/gr-ray-schedules/baseline/observer_track.c /tmp/gr-ray-schedules/baseline/optics.c /tmp/gr-ray-schedules/baseline/spacetime_common.c /tmp/gr-ray-schedules/baseline/spacetime_schwarzschild.c /tmp/gr-ray-schedules/ray.c /tmp/gr-ray-schedules/main.c -lm -lpng -o /tmp/gr-ray-schedules/renderer diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/production-before-build.log b/benchmarks/ray_pool_scheduling_2026-09-06/production-before-build.log new file mode 100644 index 0000000..e69de29 diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/production-before-environment.json b/benchmarks/ray_pool_scheduling_2026-09-06/production-before-environment.json new file mode 100644 index 0000000..731f111 --- /dev/null +++ b/benchmarks/ray_pool_scheduling_2026-09-06/production-before-environment.json @@ -0,0 +1,10 @@ +{ + "base": "8cf6106127fc19732cee123e9890d401a6838a51", + "cpu": "Architecture: x86_64\nCPU op-mode(s): 32-bit, 64-bit\nAddress sizes: 46 bits physical, 48 bits virtual\nByte Order: Little Endian\nCPU(s): 16\nOn-line CPU(s) list: 0-15\nVendor ID: GenuineIntel\nModel name: 12th Gen Intel(R) Core(TM) i7-12700K\nCPU family: 6\nModel: 151\nThread(s) per core: 2\nCore(s) per socket: 8\nSocket(s): 1\nStepping: 2\nMicrocode version: 0x3e\nCPU(s) scaling MHz: 46%\nCPU max MHz: 5100.0000\nCPU min MHz: 800.0000\nBogoMIPS: 7219.20\nFlags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb intel_pt sha_ni xsaveopt xsavec xgetbv1 xsaves split_lock_detect avx_vnni dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp hwp_pkg_req hfi vnmi umip pku ospke waitpkg gfni vaes vpclmulqdq rdpid movdiri movdir64b fsrm md_clear serialize pconfig arch_lbr ibt flush_l1d arch_capabilities\nVirtualization: VT-x\nL1d cache: 384 KiB (8 instances)\nL1i cache: 256 KiB (8 instances)\nL2 cache: 10 MiB (8 instances)\nL3 cache: 25 MiB (1 instance)\nNUMA node(s): 1\nNUMA node0 CPU(s): 0-15\nVulnerability Gather data sampling: Not affected\nVulnerability Ghostwrite: Not affected\nVulnerability Indirect target selection: Not affected\nVulnerability Itlb multihit: Not affected\nVulnerability L1tf: Not affected\nVulnerability Mds: Not affected\nVulnerability Meltdown: Not affected\nVulnerability Mmio stale data: Not affected\nVulnerability Old microcode: Not affected\nVulnerability Reg file data sampling: Mitigation; Clear Register File\nVulnerability Retbleed: Not affected\nVulnerability Spec rstack overflow: Not affected\nVulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl\nVulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization\nVulnerability Spectre v2: Mitigation; Enhanced / Automatic IBRS; IBPB conditional; PBRSB-eIBRS SW sequence; BHI BHI_DIS_S\nVulnerability Srbds: Not affected\nVulnerability Tsa: Not affected\nVulnerability Tsx async abort: Not affected\nVulnerability Vmscape: Mitigation; IBPB before exit to userspace\n", + "compiler": "cc (Gentoo 15.3.0 p8) 15.3.0\nCopyright (C) 2025 Free Software Foundation, Inc.\nThis is free software; see the source for copying conditions. There is NO\nwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n", + "track_sha256": "e1bdee4053d83bfb5cd14b182e43fe610d397eed02f833d114c2d1fb40e066a9", + "catalog_sha256": "1f906f67991dd817b6f5968955a498edfdfcc0933bc3081b115c56ff048de2c6", + "production": true, + "ray_sha256": "216c059dda7af71cb7dd414c1dbd5f0cb964a12887365f4db10ad1c1250bfc0d", + "openmp_environment": {} +} \ No newline at end of file diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/production-before-results.json b/benchmarks/ray_pool_scheduling_2026-09-06/production-before-results.json new file mode 100644 index 0000000..f6c5457 --- /dev/null +++ b/benchmarks/ray_pool_scheduling_2026-09-06/production-before-results.json @@ -0,0 +1,12 @@ +[ + { + "name": "production-before-0-static", + "schedule": "static", + "exit": 0, + "elapsed": 62.126207682071254, + "user": 411.940254, + "system": 1.9642659999999998, + "lens_map_sha256": "708a218eca26b9eac42cb4954b0dbd4dfe316cc55d4315d650cbc8ab7e616080", + "png_count": 393 + } +] \ No newline at end of file diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/release-build.log.gz b/benchmarks/ray_pool_scheduling_2026-09-06/release-build.log.gz new file mode 100644 index 0000000..d235819 Binary files /dev/null and b/benchmarks/ray_pool_scheduling_2026-09-06/release-build.log.gz differ diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/release-tests.log.gz b/benchmarks/ray_pool_scheduling_2026-09-06/release-tests.log.gz new file mode 100644 index 0000000..f554da3 Binary files /dev/null and b/benchmarks/ray_pool_scheduling_2026-09-06/release-tests.log.gz differ diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/repeat-0-dynamic-32-command.txt b/benchmarks/ray_pool_scheduling_2026-09-06/repeat-0-dynamic-32-command.txt new file mode 100644 index 0000000..7580356 --- /dev/null +++ b/benchmarks/ray_pool_scheduling_2026-09-06/repeat-0-dynamic-32-command.txt @@ -0,0 +1 @@ +env OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE OMP_SCHEDULE=dynamic,32 /tmp/gr-ray-schedules/renderer --catalog assets/sky_grid_5deg.csv --observer-track /home/wyj/Code/C/GR_4d_raytracing/benchmarks/ray_pool_scheduling_2026-09-06/camera.csv --movie-track-samples --frames-dir /tmp/gr-ray-schedules/repeat-0-dynamic-32 --frames-prefix frame --width 64 --height 36 --fov-deg 60 --exposure 0.2 --coarse-cell-pixels 16 --refine-max-level 3 --lens-map-output /tmp/gr-ray-schedules/repeat-0-dynamic-32/movie.grlens --verbose diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/repeat-0-dynamic-32.log.gz b/benchmarks/ray_pool_scheduling_2026-09-06/repeat-0-dynamic-32.log.gz new file mode 100644 index 0000000..20a6b43 Binary files /dev/null and b/benchmarks/ray_pool_scheduling_2026-09-06/repeat-0-dynamic-32.log.gz differ diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/repeat-1-static-32-command.txt b/benchmarks/ray_pool_scheduling_2026-09-06/repeat-1-static-32-command.txt new file mode 100644 index 0000000..11b0533 --- /dev/null +++ b/benchmarks/ray_pool_scheduling_2026-09-06/repeat-1-static-32-command.txt @@ -0,0 +1 @@ +env OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE OMP_SCHEDULE=static,32 /tmp/gr-ray-schedules/renderer --catalog assets/sky_grid_5deg.csv --observer-track /home/wyj/Code/C/GR_4d_raytracing/benchmarks/ray_pool_scheduling_2026-09-06/camera.csv --movie-track-samples --frames-dir /tmp/gr-ray-schedules/repeat-1-static-32 --frames-prefix frame --width 64 --height 36 --fov-deg 60 --exposure 0.2 --coarse-cell-pixels 16 --refine-max-level 3 --lens-map-output /tmp/gr-ray-schedules/repeat-1-static-32/movie.grlens --verbose diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/repeat-1-static-32.log.gz b/benchmarks/ray_pool_scheduling_2026-09-06/repeat-1-static-32.log.gz new file mode 100644 index 0000000..dde208f Binary files /dev/null and b/benchmarks/ray_pool_scheduling_2026-09-06/repeat-1-static-32.log.gz differ diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/repeat-2-static-command.txt b/benchmarks/ray_pool_scheduling_2026-09-06/repeat-2-static-command.txt new file mode 100644 index 0000000..63d7003 --- /dev/null +++ b/benchmarks/ray_pool_scheduling_2026-09-06/repeat-2-static-command.txt @@ -0,0 +1 @@ +env OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE OMP_SCHEDULE=static /tmp/gr-ray-schedules/renderer --catalog assets/sky_grid_5deg.csv --observer-track /home/wyj/Code/C/GR_4d_raytracing/benchmarks/ray_pool_scheduling_2026-09-06/camera.csv --movie-track-samples --frames-dir /tmp/gr-ray-schedules/repeat-2-static --frames-prefix frame --width 64 --height 36 --fov-deg 60 --exposure 0.2 --coarse-cell-pixels 16 --refine-max-level 3 --lens-map-output /tmp/gr-ray-schedules/repeat-2-static/movie.grlens --verbose diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/repeat-2-static.log.gz b/benchmarks/ray_pool_scheduling_2026-09-06/repeat-2-static.log.gz new file mode 100644 index 0000000..deac5be Binary files /dev/null and b/benchmarks/ray_pool_scheduling_2026-09-06/repeat-2-static.log.gz differ diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/repeat-build-command.txt b/benchmarks/ray_pool_scheduling_2026-09-06/repeat-build-command.txt new file mode 100644 index 0000000..4d96dd5 --- /dev/null +++ b/benchmarks/ray_pool_scheduling_2026-09-06/repeat-build-command.txt @@ -0,0 +1 @@ +cc -std=c11 -march=native -pipe -Wall -Wextra -Wpedantic -O2 -DNDEBUG -fopenmp -DENABLE_PNG -DFRAME_PSF_EVENT_SINK=1 -DSPACETIME_SCHWARZSCHILD -I/tmp/gr-ray-schedules/baseline /tmp/gr-ray-schedules/baseline/catalog.c /tmp/gr-ray-schedules/baseline/frame.c /tmp/gr-ray-schedules/baseline/geodesic.c /tmp/gr-ray-schedules/baseline/lens_map.c /tmp/gr-ray-schedules/baseline/movie.c /tmp/gr-ray-schedules/baseline/observer.c /tmp/gr-ray-schedules/baseline/observer_track.c /tmp/gr-ray-schedules/baseline/optics.c /tmp/gr-ray-schedules/baseline/spacetime_common.c /tmp/gr-ray-schedules/baseline/spacetime_schwarzschild.c /tmp/gr-ray-schedules/ray.c /tmp/gr-ray-schedules/main.c -lm -lpng -o /tmp/gr-ray-schedules/renderer diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/repeat-build.log b/benchmarks/ray_pool_scheduling_2026-09-06/repeat-build.log new file mode 100644 index 0000000..e69de29 diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/repeat-environment.json b/benchmarks/ray_pool_scheduling_2026-09-06/repeat-environment.json new file mode 100644 index 0000000..4d0b590 --- /dev/null +++ b/benchmarks/ray_pool_scheduling_2026-09-06/repeat-environment.json @@ -0,0 +1,7 @@ +{ + "base": "8cf6106127fc19732cee123e9890d401a6838a51", + "cpu": "Architecture: x86_64\nCPU op-mode(s): 32-bit, 64-bit\nAddress sizes: 46 bits physical, 48 bits virtual\nByte Order: Little Endian\nCPU(s): 16\nOn-line CPU(s) list: 0-15\nVendor ID: GenuineIntel\nModel name: 12th Gen Intel(R) Core(TM) i7-12700K\nCPU family: 6\nModel: 151\nThread(s) per core: 2\nCore(s) per socket: 8\nSocket(s): 1\nStepping: 2\nMicrocode version: 0x3e\nCPU(s) scaling MHz: 53%\nCPU max MHz: 5100.0000\nCPU min MHz: 800.0000\nBogoMIPS: 7219.20\nFlags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb intel_pt sha_ni xsaveopt xsavec xgetbv1 xsaves split_lock_detect avx_vnni dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp hwp_pkg_req hfi vnmi umip pku ospke waitpkg gfni vaes vpclmulqdq rdpid movdiri movdir64b fsrm md_clear serialize pconfig arch_lbr ibt flush_l1d arch_capabilities\nVirtualization: VT-x\nL1d cache: 384 KiB (8 instances)\nL1i cache: 256 KiB (8 instances)\nL2 cache: 10 MiB (8 instances)\nL3 cache: 25 MiB (1 instance)\nNUMA node(s): 1\nNUMA node0 CPU(s): 0-15\nVulnerability Gather data sampling: Not affected\nVulnerability Ghostwrite: Not affected\nVulnerability Indirect target selection: Not affected\nVulnerability Itlb multihit: Not affected\nVulnerability L1tf: Not affected\nVulnerability Mds: Not affected\nVulnerability Meltdown: Not affected\nVulnerability Mmio stale data: Not affected\nVulnerability Old microcode: Not affected\nVulnerability Reg file data sampling: Mitigation; Clear Register File\nVulnerability Retbleed: Not affected\nVulnerability Spec rstack overflow: Not affected\nVulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl\nVulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization\nVulnerability Spectre v2: Mitigation; Enhanced / Automatic IBRS; IBPB conditional; PBRSB-eIBRS SW sequence; BHI BHI_DIS_S\nVulnerability Srbds: Not affected\nVulnerability Tsa: Not affected\nVulnerability Tsx async abort: Not affected\nVulnerability Vmscape: Mitigation; IBPB before exit to userspace\n", + "compiler": "cc (Gentoo 15.3.0 p8) 15.3.0\nCopyright (C) 2025 Free Software Foundation, Inc.\nThis is free software; see the source for copying conditions. There is NO\nwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n", + "track_sha256": "e1bdee4053d83bfb5cd14b182e43fe610d397eed02f833d114c2d1fb40e066a9", + "catalog_sha256": "1f906f67991dd817b6f5968955a498edfdfcc0933bc3081b115c56ff048de2c6" +} \ No newline at end of file diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/repeat-results.json b/benchmarks/ray_pool_scheduling_2026-09-06/repeat-results.json new file mode 100644 index 0000000..99f04d4 --- /dev/null +++ b/benchmarks/ray_pool_scheduling_2026-09-06/repeat-results.json @@ -0,0 +1,32 @@ +[ + { + "name": "repeat-0-dynamic-32", + "schedule": "dynamic,32", + "exit": 0, + "elapsed": 38.679246054030955, + "user": 555.894142, + "system": 2.6404059999999996, + "lens_map_sha256": "708a218eca26b9eac42cb4954b0dbd4dfe316cc55d4315d650cbc8ab7e616080", + "png_count": 393 + }, + { + "name": "repeat-1-static-32", + "schedule": "static,32", + "exit": 0, + "elapsed": 40.11868779012002, + "user": 551.641688, + "system": 2.7434530000000006, + "lens_map_sha256": "708a218eca26b9eac42cb4954b0dbd4dfe316cc55d4315d650cbc8ab7e616080", + "png_count": 393 + }, + { + "name": "repeat-2-static", + "schedule": "static", + "exit": 0, + "elapsed": 61.09274424496107, + "user": 410.128786, + "system": 1.778231, + "lens_map_sha256": "708a218eca26b9eac42cb4954b0dbd4dfe316cc55d4315d650cbc8ab7e616080", + "png_count": 393 + } +] \ No newline at end of file diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/run.py b/benchmarks/ray_pool_scheduling_2026-09-06/run.py new file mode 100644 index 0000000..2497da7 --- /dev/null +++ b/benchmarks/ray_pool_scheduling_2026-09-06/run.py @@ -0,0 +1,111 @@ +#!/usr/bin/env python3 +"""Compare OpenMP schedules in a temporary, instrumented baseline renderer.""" +import argparse +import gzip +import hashlib +import json +import os +from pathlib import Path +import resource +import shlex +import subprocess +import time + +HERE = Path(__file__).resolve().parent +ROOT = HERE.parent.parent +BASE = '8cf6106127fc19732cee123e9890d401a6838a51' +p = argparse.ArgumentParser() +p.add_argument('--work-dir', type=Path, default=Path('/tmp/gr-ray-schedules')) +p.add_argument('--schedules', nargs='+', default=['static', 'static,32', 'dynamic,32', 'dynamic,128']) +p.add_argument('--tag', default='sweep') +p.add_argument('--production', action='store_true', + help='Use uninstrumented baseline static or current dynamic,32 source (one schedule).') +a = p.parse_args() +a.work_dir.mkdir(parents=True, exist_ok=True) +os.chdir(ROOT) +commands = [] + +def source(path): + return subprocess.check_output(['git', 'show', f'{BASE}:{path}'], text=True) + +def build(cmd): + commands.append(shlex.join(cmd)) + subprocess.run(cmd, check=True, stdout=build_log, stderr=subprocess.STDOUT) + +# Only temporary copies use schedule(runtime) and diagnostic counters. +ray = source('src/ray.c').replace('#include ', '#include \n#include ') +ray = ray.replace('#pragma omp parallel for schedule(static)\n for (size_t i = 0; i < p->count; ++i) {', ''' const int capacity = omp_get_max_threads(); + size_t counts[capacity], step_counts[capacity]; + double work_seconds[capacity]; + for (int w = 0; w < capacity; ++w) { + counts[w] = step_counts[w] = 0; work_seconds[w] = 0; + } + const double batch_start = omp_get_wtime(); +#pragma omp parallel + { + const int worker = omp_get_thread_num(); + const double work_start = omp_get_wtime(); +#pragma omp for schedule(runtime) nowait + for (size_t i = 0; i < p->count; ++i) {''') +ray = ray.replace(' GeodesicRayState s = {.coordinate_time', ' ++counts[worker];\n const unsigned int old_steps = p->steps[i];\n GeodesicRayState s = {.coordinate_time') +ray = ray.replace(' p->t[i] = s.coordinate_time;', ' step_counts[worker] += s.steps - old_steps;\n p->t[i] = s.coordinate_time;') +ray = ray.replace('\n}\n\nint ray_pool_has_live', ''' + work_seconds[worker] = omp_get_wtime() - work_start; + } + fprintf(stderr, "BENCH slab=%.9g pool=%zu seconds=%.9f active/steps/seconds:", + slab->t_hi, p->count, omp_get_wtime() - batch_start); + for (int w = 0; w < capacity; ++w) + fprintf(stderr, " %zu/%zu/%.9f", counts[w], step_counts[w], work_seconds[w]); + fputc('\\n', stderr); +} + +int ray_pool_has_live''') +main = source('src/main.c').replace(' const int traced = trace_movie_generation(', ' const double generation_start = omp_get_wtime();\n const int traced = trace_movie_generation(') +main = main.replace(' if (traced < 0)\n goto done;', ' fprintf(stderr, "BENCH generation=%zu seconds=%.9f result=%d\\n", generation, omp_get_wtime() - generation_start, traced);\n if (traced < 0)\n goto done;') +if a.production: + if len(a.schedules) != 1 or a.schedules[0] not in ('static', 'dynamic,32'): + p.error('--production requires exactly one of static or dynamic,32') + ray = (source('src/ray.c') if a.schedules[0] == 'static' + else (ROOT/'src/ray.c').read_text()) + assert ('schedule(static)' if a.schedules[0] == 'static' + else 'schedule(dynamic, 32)') in ray + main = source('src/main.c') +(a.work_dir/'ray.c').write_text(ray) +(a.work_dir/'main.c').write_text(main) +with (HERE/(a.tag+'-build.log')).open('w') as build_log: + names = subprocess.check_output(['git','ls-tree','-r','--name-only',BASE,'src'],text=True).splitlines() + sources = [x for x in names if x.endswith('.c') and Path(x).name not in ('main.c', 'ray.c', 'spacetime_minkowski.c')] + # Pin all sources/headers to the baseline for reproducibility after changes. + srcdir = a.work_dir/'baseline'; srcdir.mkdir(exist_ok=True) + for name in names: + if name.endswith(('.c','.h')): + (srcdir/Path(name).name).write_text(source(name)) + sources = [str(srcdir/Path(x).name) for x in sources] + build(['cc', '-std=c11', '-march=native', '-pipe', '-Wall', '-Wextra', '-Wpedantic', '-O2', '-DNDEBUG', '-fopenmp', '-DENABLE_PNG', '-DFRAME_PSF_EVENT_SINK=1', '-DSPACETIME_SCHWARZSCHILD', '-I'+str(srcdir), *sources, str(a.work_dir/'ray.c'), str(a.work_dir/'main.c'), '-lm', '-lpng', '-o', str(a.work_dir/'renderer')]) +(HERE/(a.tag+'-build-command.txt')).write_text('\n'.join(commands)+'\n') +metadata = {'base': BASE, 'cpu': subprocess.check_output(['lscpu'],text=True), 'compiler':subprocess.check_output(['cc','--version'],text=True), 'track_sha256':hashlib.sha256((HERE/'camera.csv').read_bytes()).hexdigest(), 'catalog_sha256':hashlib.sha256((ROOT/'assets/sky_grid_5deg.csv').read_bytes()).hexdigest()} +metadata.update(production=a.production, ray_sha256=hashlib.sha256(ray.encode()).hexdigest(), + openmp_environment={k:v for k,v in os.environ.items() if k.startswith(('OMP_', 'GOMP_'))}) +(HERE/(a.tag+'-environment.json')).write_text(json.dumps(metadata,indent=2)) +results=[] +for number, schedule in enumerate(a.schedules): + name = f'{a.tag}-{number}-{schedule.replace(",", "-")}' + out=a.work_dir/name; out.mkdir(exist_ok=True) + args=[str(a.work_dir/'renderer'), '--catalog','assets/sky_grid_5deg.csv', '--observer-track',str(HERE/'camera.csv'), '--movie-track-samples','--frames-dir',str(out), '--frames-prefix','frame', '--width','64','--height','36','--fov-deg','60','--exposure','0.2','--coarse-cell-pixels','16','--refine-max-level','3','--lens-map-output',str(out/'movie.grlens'),'--verbose'] + overrides=dict(OMP_NUM_THREADS='16', OMP_DYNAMIC='FALSE', OMP_SCHEDULE=schedule) + command='env '+' '.join(shlex.quote(k+'='+v) for k,v in overrides.items())+' '+shlex.join(args) + (HERE/(name+'-command.txt')).write_text(command+'\n') + before=resource.getrusage(resource.RUSAGE_CHILDREN); start=time.monotonic() + with (out/'raw.log').open('w') as log: + proc=subprocess.run(args,env=dict(os.environ,**overrides),stdout=log,stderr=subprocess.STDOUT) + elapsed=time.monotonic()-start; after=resource.getrusage(resource.RUSAGE_CHILDREN) + raw=(out/'raw.log').read_bytes() + with gzip.open(HERE/(name+'.log.gz'),'wb') as log: log.write(raw) + row=dict(name=name,schedule=schedule,exit=proc.returncode,elapsed=elapsed,user=after.ru_utime-before.ru_utime,system=after.ru_stime-before.ru_stime) + if proc.returncode==0: + row['lens_map_sha256']=hashlib.sha256((out/'movie.grlens').read_bytes()).hexdigest() + row['png_count']=len(list(out.glob('frame_*.png'))) + results.append(row) + (HERE/(a.tag+'-results.json')).write_text(json.dumps(results,indent=2)) + print(json.dumps(row),flush=True) + if proc.returncode: raise SystemExit(proc.returncode) diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/sweep-0-static-command.txt b/benchmarks/ray_pool_scheduling_2026-09-06/sweep-0-static-command.txt new file mode 100644 index 0000000..54bfac6 --- /dev/null +++ b/benchmarks/ray_pool_scheduling_2026-09-06/sweep-0-static-command.txt @@ -0,0 +1 @@ +env OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE OMP_SCHEDULE=static /tmp/gr-ray-schedules/renderer --catalog assets/sky_grid_5deg.csv --observer-track /home/wyj/Code/C/GR_4d_raytracing/benchmarks/ray_pool_scheduling_2026-09-06/camera.csv --movie-track-samples --frames-dir /tmp/gr-ray-schedules/sweep-0-static --frames-prefix frame --width 64 --height 36 --fov-deg 60 --exposure 0.2 --coarse-cell-pixels 16 --refine-max-level 3 --lens-map-output /tmp/gr-ray-schedules/sweep-0-static/movie.grlens --verbose diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/sweep-0-static.log.gz b/benchmarks/ray_pool_scheduling_2026-09-06/sweep-0-static.log.gz new file mode 100644 index 0000000..32fd04b Binary files /dev/null and b/benchmarks/ray_pool_scheduling_2026-09-06/sweep-0-static.log.gz differ diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/sweep-1-static-32-command.txt b/benchmarks/ray_pool_scheduling_2026-09-06/sweep-1-static-32-command.txt new file mode 100644 index 0000000..febf478 --- /dev/null +++ b/benchmarks/ray_pool_scheduling_2026-09-06/sweep-1-static-32-command.txt @@ -0,0 +1 @@ +env OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE OMP_SCHEDULE=static,32 /tmp/gr-ray-schedules/renderer --catalog assets/sky_grid_5deg.csv --observer-track /home/wyj/Code/C/GR_4d_raytracing/benchmarks/ray_pool_scheduling_2026-09-06/camera.csv --movie-track-samples --frames-dir /tmp/gr-ray-schedules/sweep-1-static-32 --frames-prefix frame --width 64 --height 36 --fov-deg 60 --exposure 0.2 --coarse-cell-pixels 16 --refine-max-level 3 --lens-map-output /tmp/gr-ray-schedules/sweep-1-static-32/movie.grlens --verbose diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/sweep-1-static-32.log.gz b/benchmarks/ray_pool_scheduling_2026-09-06/sweep-1-static-32.log.gz new file mode 100644 index 0000000..3f1aa79 Binary files /dev/null and b/benchmarks/ray_pool_scheduling_2026-09-06/sweep-1-static-32.log.gz differ diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/sweep-2-dynamic-32-command.txt b/benchmarks/ray_pool_scheduling_2026-09-06/sweep-2-dynamic-32-command.txt new file mode 100644 index 0000000..f1285b7 --- /dev/null +++ b/benchmarks/ray_pool_scheduling_2026-09-06/sweep-2-dynamic-32-command.txt @@ -0,0 +1 @@ +env OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE OMP_SCHEDULE=dynamic,32 /tmp/gr-ray-schedules/renderer --catalog assets/sky_grid_5deg.csv --observer-track /home/wyj/Code/C/GR_4d_raytracing/benchmarks/ray_pool_scheduling_2026-09-06/camera.csv --movie-track-samples --frames-dir /tmp/gr-ray-schedules/sweep-2-dynamic-32 --frames-prefix frame --width 64 --height 36 --fov-deg 60 --exposure 0.2 --coarse-cell-pixels 16 --refine-max-level 3 --lens-map-output /tmp/gr-ray-schedules/sweep-2-dynamic-32/movie.grlens --verbose diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/sweep-2-dynamic-32.log.gz b/benchmarks/ray_pool_scheduling_2026-09-06/sweep-2-dynamic-32.log.gz new file mode 100644 index 0000000..aeed817 Binary files /dev/null and b/benchmarks/ray_pool_scheduling_2026-09-06/sweep-2-dynamic-32.log.gz differ diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/sweep-3-dynamic-128-command.txt b/benchmarks/ray_pool_scheduling_2026-09-06/sweep-3-dynamic-128-command.txt new file mode 100644 index 0000000..a40976a --- /dev/null +++ b/benchmarks/ray_pool_scheduling_2026-09-06/sweep-3-dynamic-128-command.txt @@ -0,0 +1 @@ +env OMP_NUM_THREADS=16 OMP_DYNAMIC=FALSE OMP_SCHEDULE=dynamic,128 /tmp/gr-ray-schedules/renderer --catalog assets/sky_grid_5deg.csv --observer-track /home/wyj/Code/C/GR_4d_raytracing/benchmarks/ray_pool_scheduling_2026-09-06/camera.csv --movie-track-samples --frames-dir /tmp/gr-ray-schedules/sweep-3-dynamic-128 --frames-prefix frame --width 64 --height 36 --fov-deg 60 --exposure 0.2 --coarse-cell-pixels 16 --refine-max-level 3 --lens-map-output /tmp/gr-ray-schedules/sweep-3-dynamic-128/movie.grlens --verbose diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/sweep-3-dynamic-128.log.gz b/benchmarks/ray_pool_scheduling_2026-09-06/sweep-3-dynamic-128.log.gz new file mode 100644 index 0000000..14ed452 Binary files /dev/null and b/benchmarks/ray_pool_scheduling_2026-09-06/sweep-3-dynamic-128.log.gz differ diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/sweep-build-command.txt b/benchmarks/ray_pool_scheduling_2026-09-06/sweep-build-command.txt new file mode 100644 index 0000000..4d96dd5 --- /dev/null +++ b/benchmarks/ray_pool_scheduling_2026-09-06/sweep-build-command.txt @@ -0,0 +1 @@ +cc -std=c11 -march=native -pipe -Wall -Wextra -Wpedantic -O2 -DNDEBUG -fopenmp -DENABLE_PNG -DFRAME_PSF_EVENT_SINK=1 -DSPACETIME_SCHWARZSCHILD -I/tmp/gr-ray-schedules/baseline /tmp/gr-ray-schedules/baseline/catalog.c /tmp/gr-ray-schedules/baseline/frame.c /tmp/gr-ray-schedules/baseline/geodesic.c /tmp/gr-ray-schedules/baseline/lens_map.c /tmp/gr-ray-schedules/baseline/movie.c /tmp/gr-ray-schedules/baseline/observer.c /tmp/gr-ray-schedules/baseline/observer_track.c /tmp/gr-ray-schedules/baseline/optics.c /tmp/gr-ray-schedules/baseline/spacetime_common.c /tmp/gr-ray-schedules/baseline/spacetime_schwarzschild.c /tmp/gr-ray-schedules/ray.c /tmp/gr-ray-schedules/main.c -lm -lpng -o /tmp/gr-ray-schedules/renderer diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/sweep-build.log b/benchmarks/ray_pool_scheduling_2026-09-06/sweep-build.log new file mode 100644 index 0000000..e69de29 diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/sweep-environment.json b/benchmarks/ray_pool_scheduling_2026-09-06/sweep-environment.json new file mode 100644 index 0000000..b455795 --- /dev/null +++ b/benchmarks/ray_pool_scheduling_2026-09-06/sweep-environment.json @@ -0,0 +1,7 @@ +{ + "base": "8cf6106127fc19732cee123e9890d401a6838a51", + "cpu": "Architecture: x86_64\nCPU op-mode(s): 32-bit, 64-bit\nAddress sizes: 46 bits physical, 48 bits virtual\nByte Order: Little Endian\nCPU(s): 16\nOn-line CPU(s) list: 0-15\nVendor ID: GenuineIntel\nModel name: 12th Gen Intel(R) Core(TM) i7-12700K\nCPU family: 6\nModel: 151\nThread(s) per core: 2\nCore(s) per socket: 8\nSocket(s): 1\nStepping: 2\nMicrocode version: 0x3e\nCPU(s) scaling MHz: 40%\nCPU max MHz: 5100.0000\nCPU min MHz: 800.0000\nBogoMIPS: 7219.20\nFlags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb intel_pt sha_ni xsaveopt xsavec xgetbv1 xsaves split_lock_detect avx_vnni dtherm ida arat pln pts hwp hwp_notify hwp_act_window hwp_epp hwp_pkg_req hfi vnmi umip pku ospke waitpkg gfni vaes vpclmulqdq rdpid movdiri movdir64b fsrm md_clear serialize pconfig arch_lbr ibt flush_l1d arch_capabilities\nVirtualization: VT-x\nL1d cache: 384 KiB (8 instances)\nL1i cache: 256 KiB (8 instances)\nL2 cache: 10 MiB (8 instances)\nL3 cache: 25 MiB (1 instance)\nNUMA node(s): 1\nNUMA node0 CPU(s): 0-15\nVulnerability Gather data sampling: Not affected\nVulnerability Ghostwrite: Not affected\nVulnerability Indirect target selection: Not affected\nVulnerability Itlb multihit: Not affected\nVulnerability L1tf: Not affected\nVulnerability Mds: Not affected\nVulnerability Meltdown: Not affected\nVulnerability Mmio stale data: Not affected\nVulnerability Old microcode: Not affected\nVulnerability Reg file data sampling: Mitigation; Clear Register File\nVulnerability Retbleed: Not affected\nVulnerability Spec rstack overflow: Not affected\nVulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl\nVulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization\nVulnerability Spectre v2: Mitigation; Enhanced / Automatic IBRS; IBPB conditional; PBRSB-eIBRS SW sequence; BHI BHI_DIS_S\nVulnerability Srbds: Not affected\nVulnerability Tsa: Not affected\nVulnerability Tsx async abort: Not affected\nVulnerability Vmscape: Mitigation; IBPB before exit to userspace\n", + "compiler": "cc (Gentoo 15.3.0 p8) 15.3.0\nCopyright (C) 2025 Free Software Foundation, Inc.\nThis is free software; see the source for copying conditions. There is NO\nwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n", + "track_sha256": "e1bdee4053d83bfb5cd14b182e43fe610d397eed02f833d114c2d1fb40e066a9", + "catalog_sha256": "1f906f67991dd817b6f5968955a498edfdfcc0933bc3081b115c56ff048de2c6" +} \ No newline at end of file diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/sweep-results.json b/benchmarks/ray_pool_scheduling_2026-09-06/sweep-results.json new file mode 100644 index 0000000..a2abd5d --- /dev/null +++ b/benchmarks/ray_pool_scheduling_2026-09-06/sweep-results.json @@ -0,0 +1,42 @@ +[ + { + "name": "sweep-0-static", + "schedule": "static", + "exit": 0, + "elapsed": 61.03994133579545, + "user": 410.763039, + "system": 1.7671189999999999, + "lens_map_sha256": "708a218eca26b9eac42cb4954b0dbd4dfe316cc55d4315d650cbc8ab7e616080", + "png_count": 393 + }, + { + "name": "sweep-1-static-32", + "schedule": "static,32", + "exit": 0, + "elapsed": 39.54031334305182, + "user": 552.412053, + "system": 2.5203690000000005, + "lens_map_sha256": "708a218eca26b9eac42cb4954b0dbd4dfe316cc55d4315d650cbc8ab7e616080", + "png_count": 393 + }, + { + "name": "sweep-2-dynamic-32", + "schedule": "dynamic,32", + "exit": 0, + "elapsed": 39.29241717304103, + "user": 554.554419, + "system": 2.765975, + "lens_map_sha256": "708a218eca26b9eac42cb4954b0dbd4dfe316cc55d4315d650cbc8ab7e616080", + "png_count": 393 + }, + { + "name": "sweep-3-dynamic-128", + "schedule": "dynamic,128", + "exit": 0, + "elapsed": 39.79164670989849, + "user": 553.6425350000002, + "system": 2.555026, + "lens_map_sha256": "708a218eca26b9eac42cb4954b0dbd4dfe316cc55d4315d650cbc8ab7e616080", + "png_count": 393 + } +] \ No newline at end of file diff --git a/benchmarks/ray_pool_scheduling_2026-09-06/verification-commands.txt b/benchmarks/ray_pool_scheduling_2026-09-06/verification-commands.txt new file mode 100644 index 0000000..089f5f0 --- /dev/null +++ b/benchmarks/ray_pool_scheduling_2026-09-06/verification-commands.txt @@ -0,0 +1,5 @@ +make -j8 BUILD_TYPE=Release all +make -j8 BUILD_TYPE=Release test +make -j8 BUILD_TYPE=Debug all +make -j8 BUILD_TYPE=Debug test +git diff --check diff --git a/nr_spacetime_movie_renderer_design.md b/nr_spacetime_movie_renderer_design.md index f8383d9..9cfffe5 100644 --- a/nr_spacetime_movie_renderer_design.md +++ b/nr_spacetime_movie_renderer_design.md @@ -885,6 +885,17 @@ for (...) { schedule(dynamic, CHUNK) ``` +当前 movie `RayPool` 使用 `schedule(dynamic, 32)`:samples 按 frame +排列,连续静态分块会把同一 time slab 的 active rays 集中到少数 worker。 +32 条一块的动态分配让空闲 worker 继续领取工作,也允许不同光线的积分开销 +不一致。每条 ray 仍由一个 worker 推进,pool slot 与 frame/sample ID 不移动; +没有新增共享可变缓存或 per-ray allocation。 + +这一 chunk 大小来自 [393 帧 Schwarzschild 对照实验](benchmarks/ray_pool_scheduling_2026-09-06.md), +并非所有 backend 的最优参数。实验同时比较连续静态、轮转静态和动态分块, +用完整 lens-map 文件校验调度前后的结果一致性。当前仍遍历整个 pool; +active-index compaction、activation 和 mesh analysis 的并行化属于后续优化。 + 不要: - 一 ray 一个 OpenMP task; diff --git a/src/ray.c b/src/ray.c index 7b09715..8f167c2 100644 --- a/src/ray.c +++ b/src/ray.c @@ -65,7 +65,11 @@ void ray_pool_activate_in_time_range(RayPool *p, const MetricSlab *slab) { void ray_pool_advance_active(RayPool *p, const MetricSlab *slab, const GeodesicTraceConfig *config) { -#pragma omp parallel for schedule(static) + /* Samples are grouped by frame, so a time slab activates only part of the + * pool. Give workers bounded chunks instead of one contiguous frame range; + * dynamic assignment also balances varying strong-field integration costs. + * Pool slots stay stable for endpoint installation after the slab sweep. */ +#pragma omp parallel for schedule(dynamic, 32) for (size_t i = 0; i < p->count; ++i) { if (p->status[i] != RAY_POOL_ACTIVE) continue; diff --git a/tests/test_camera_cli.py b/tests/test_camera_cli.py index cbed67a..5e6572b 100644 --- a/tests/test_camera_cli.py +++ b/tests/test_camera_cli.py @@ -12,8 +12,8 @@ BUILD = Path(sys.argv[1] if len(sys.argv) > 1 else 'build/Release').resolve() ENV = dict(os.environ, OMP_NUM_THREADS='4') -def run(binary, *args, ok=True): - result = subprocess.run([str(binary), *map(str, args)], env=ENV, +def run(binary, *args, ok=True, env=ENV): + result = subprocess.run([str(binary), *map(str, args)], env=env, capture_output=True, text=True) if (result.returncode == 0) != ok: raise AssertionError(f'{binary.name} {args}: {result.returncode}\n{result.stderr}') @@ -144,13 +144,28 @@ with tempfile.TemporaryDirectory(prefix='gr-camera-cli-') as directory: # former still needs refinement. Finishing the empty batch used # to abort the whole movie in generation 1. mixed = Path(__file__).parent / 'fixtures/schwarzschild_mixed_refinement.csv' + parallel_map = tmp / 'mixed-parallel.grlens' result = run(binary, *common, '--height', 36, '--fov-deg', 60, '--refine-max-level', 3, '--observer-track', mixed, '--movie-track-samples', '--frames-dir', tmp, - '--frames-prefix', 'mixed', '--verbose') + '--frames-prefix', 'mixed', '--verbose', + '--lens-map-output', parallel_map) assert 'Ray trace generation 1: frame 0 added' in result.stderr assert 'Ray trace generation 0: frame 1 added' not in result.stderr for frame in range(2): image_payload(tmp / f'mixed_{frame:06d}.png', dimensions=(64, 36), allow_black=True) + # Thread scheduling must preserve endpoints, frame/sample IDs and + # the resulting adaptive mesh across the entire slab sweep. + for threads in (1, 16): + comparison_map = tmp / f'mixed-{threads}-threads.grlens' + run(binary, *common, '--height', 36, '--fov-deg', 60, + '--refine-max-level', 3, '--observer-track', mixed, + '--movie-track-samples', '--frames-dir', tmp, + '--frames-prefix', f'mixed-{threads}-threads', + '--lens-map-output', comparison_map, + env=dict(ENV, OMP_NUM_THREADS=str(threads))) + assert parallel_map.read_bytes() == comparison_map.read_bytes(), \ + f'movie lens map changed with {threads} threads' + print('schwarzschild: movie lens map identical with 1, 4 and 16 threads', flush=True) print(f'{backend}: CLI checks passed; single/movie PNG identical, map max error {max_error:.3g}', flush=True)