# 06/18/20 - 06/25/20
- Compile `qsdmt` on `gjin2-T3610` and run `parsec vips` and `toys` evalution
- `gjin2-T3610` can compile and run `qsdmt` without errors
- Trace workflow one of the benchmark `parsec vips`:
- `qsdmt/apps/parsec/parsec-2.0/pkgs/apps/vips/src/src/iofuncs/vips.c`
- the file is used as parsing the input command
- the input command:
- `time LD_PRELOAD=/home/hsung2/qsdmt/dync_hook/interpose.so IM_CONCURRENCY=12 /home/hsung2/qsdmt/apps/parsec/vips im_benchmark orion_18000x18000.v output.v`
- The evaluation is running the `im_benchmark` options.
- The im_benchmark is written in the file
- `qsdmt/apps/parsec/parsec-2.0/pkgs/apps/vips/src/libsrc/other/im_benchmark.c`.
- the `vips.c` will execute the function called `im_run_command()` to execute selected options in the file
- `qsdmt/apps/parsec/parsec-2.0/pkgs/apps/vips/src/libsrc/iofuncs/package.c`
- the function `im_run_command()` will call another function called `dispatch_function()` to execute the selected options.
- Using Valgrind with KCachegrind to browse callgraph
- In the `im_benchmark`:
- im_LabQ2disp --> im_LabQ2disp_build_table --> im_LabQ2disp_table --> im_wrapone --> im_wrapmany --> im_generate --> im_thread_group_create --> im_region_create --> g_thread_create_full --> (doing task) ...
- According to this chain and the paper, https://parsec.cs.princeton.edu/doc/parsec-report.pdf,
- In the start point, The vips will divide image as serval `regions` and create thread to do task for each `regions`
- In the end point, the `regions` will be combined.
:::danger
- However, I still do not know whether the im_benchmark is seperate regions in each image processing stage for just on the first and the end.
:::
- 
- According to this map, the total thread for vips will be 16 when setting configuration as 12 threads.
- Evaluting different size of input for `parsec vips` with all-policies on
- Environment:
- gjin2-T3610 `12-core 24-thread`
- The config (vips.cfg):
```config
[parsec vips]
REPEATS = 10
PARSEC_NTHREADS = 12
INPUTS = im_benchmark *.v output.v
TARBALL = parsec-2.0/pkgs/apps/vips/inputs/*.tar
EXPORT = IM_CONCURRENCY=%(PARSEC_NTHREADS)s
RUN_CONFIGS = all-policies
non_det_for_single_thread = 0
log_sync = 1
```
- Output:
- TARBALL: `input_simdev.tar` INPUTS: `barbados_256x288.v`
```
bench, config, avg_time, sem, overhead, all times...
parsec vips, non-det, 0.04069999999999999, 0.00037549966711037156, 0%, 0.039, 0.04, 0.04, 0.043, 0.042, 0.04, 0.042, 0.041, 0.04, 0.04
parsec vips, xtern-all-policies, 0.1571, 0.00918634856730355, 285.995%, 0.243, 0.153, 0.154, 0.14, 0.153, 0.143, 0.151, 0.141, 0.148, 0.145
```
- TARBALL: `input_simsmall.tar` INPUTS: ` pomegranate_1600x1200.v`
```
bench, config, avg_time, sem, overhead, all times...
parsec vips, non-det, 0.0968, 0.0005440588203494182, 0%, 0.092, 0.097, 0.098, 0.098, 0.097, 0.098, 0.097, 0.098, 0.097, 0.096
parsec vips, xtern-all-policies, 0.9356, 0.011291766912224138, 866.529%, 0.952, 0.917, 0.926, 0.862, 0.97, 0.909, 0.992, 0.913, 0.951, 0.964
```
- TARBALL: `input_simmedium.tar` INPUTS: `vulture_2336x2336.v`
```
bench, config, avg_time, sem, overhead, all times...
parsec vips, non-det, 0.2549, 0.01963030819931261, 0%, 0.211, 0.241, 0.228, 0.213, 0.245, 0.369, 0.208, 0.383, 0.21, 0.241
parsec vips, xtern-all-policies, 2.4466, 0.014386243429054028, 859.827%, 2.432, 2.351, 2.431, 2.476, 2.425, 2.466, 2.436, 2.506, 2.519, 2.424
```
- TARBALL: `input_simlarge.tar` INPUTS: `bigben_2662x5500.v`
```
bench, config, avg_time, sem, overhead, all times...
parsec vips, non-det, 0.6311, 0.027931505509012577, 0%, 0.506, 0.78, 0.509, 0.64, 0.678, 0.603, 0.649, 0.758, 0.555, 0.633
parsec vips, xtern-all-policies, 6.3928, 0.023267488046628523, 912.961%, 6.332, 6.304, 6.455, 6.344, 6.481, 6.254, 6.448, 6.433, 6.424, 6.453
```
- TARBALL: `input_native.tar` INPUTS: `orion_18000x18000.v`
```
bench, config, avg_time, sem, overhead, all times...
parsec vips, non-det, 14.041599999999999, 0.3303860832420155, 0%, 12.996, 14.182, 11.773, 14.746, 14.974, 12.87, 14.743, 14.482, 14.778, 14.872
parsec vips, xtern-all-policies, 137.87460000000002, 0.11747426952315916, 881.901%, 138.563, 137.867, 137.602, 137.173, 138.023, 137.849, 137.651, 138.377, 137.755, 137.886
```