---
# System prepended metadata

title: 06/18/20 - 06/25/20

---

# 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.
            :::
    - ![](https://i.imgur.com/1NHR8Hl.png)
        - 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
        ```