# Low Level Perf APIs

Introduction

In SNPE-2.22, we introduced a set of low level performance management APIs primarily pertaining to the DSP runtime - SNPEPerfProfile.h ( C++ Wrapper SNPEPerfProfile.hpp).
In addition to this, two new perf profile setting APIs were added to SNPE and one new API to Builder. Details are [here](https://docs.qualcomm.com/doc/80-63442-2/topic/low_level_perf_apis.html#new-perf-apis).

These new APIs provide a way for a client application to set different perf settings for initialization, between inferences, and for de-initialization.
Up until SNPE-2.21, a user-supplied preset profile (defaulting to Balanced) would be applied during the entire lifecycle of SNPE.

The new APIs are designed to build a perf profile from the ground up OR start with a preset profile (like Burst) and tweak certain parameters on a case-by-case basis.
Such customized profiles (or hybrid profiles) can be applied both during initialization via the new builder API or after initialization for inference and de-initialization using the new SNPE API. Detailed usage examples are in [New perf APIs in SNPE-2.22](https://docs.qualcomm.com/doc/80-63442-2/topic/low_level_perf_apis.html#new-perf-apis).

SNPE employs certain heuristics based on the preset profile – which was true even in SNPE-2.21. As part of the new custom perf profile, we have exposed them as knobs that can be tweaked via APIs in SNPEPerfProfile.h. Details are in [Ability to hold the vote for a longer duration – Minimizing RPC Calls](https://docs.qualcomm.com/doc/80-63442-2/topic/low_level_perf_apis.html#min-rpc-calls).

The new APIs enable better synchronization flexibility for cooperative multiple SNPE instances within the same process or in different processes pertaining to aggregation of voting packets at the HTP/NSP level. Example with an use case is in [Synchronization problems in SNPE 2.21](https://docs.qualcomm.com/doc/80-63442-2/topic/low_level_perf_apis.html#syn-prob-221) and [Better Synchronization flexibility SNPE in 2.22](https://docs.qualcomm.com/doc/80-63442-2/topic/low_level_perf_apis.html#syn-sol-222).

The net run applications snpe-net-run and snpe-throughput-net-run have a command-line argument –perf\_config\_yaml that takes in a user-provided YAML config file that can configure all the perf settings. A sample YAML config corresponding to sustained high performance profile is provided in [Sample YAML file](https://docs.qualcomm.com/doc/80-63442-2/topic/low_level_perf_apis.html#samp-yaml-file).

PSNPE API configurability options are available in SNPE-2.23.

<svg width="80.0%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" overflow="hidden" aria-label="../images/perf_overview.svg" viewbox="0 0 2705 1030"><defs><clippath id="clip0"><rect x="1454" y="585" width="2705" height="1030"></rect></clippath><image width="393" height="122" xlink:href="data:image/png;base64,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" preserveaspectratio="none" id="img1"></image><image width="791" height="525" xlink:href="data:image/png;base64,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" preserveaspectratio="none" id="img2"></image></defs><g clip-path="url(#clip0)" transform="translate(-1454 -585)"><use width="100%" height="100%" xlink:href="#img1" fill="none" transform="translate(3766 585)"></use><text fill="#13171F" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3847.13 659)">BEFORE INIT</text><use width="100%" height="100%" xlink:href="#img1" fill="none" transform="translate(3766 1349)"></use><text fill="#13171F" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3815.62 1423)">BEFORE DE</text><text fill="#13171F" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 4027.6 1423)">-</text><text fill="#13171F" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 4039.63 1423)">INIT</text><use width="100%" height="100%" xlink:href="#img1" fill="none" transform="translate(3766 1111)"></use><text fill="#13171F" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3902.13 1163)">AFTER  </text><text fill="#13171F" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3856.3 1205)">INFERENCE</text><use width="100%" height="100%" xlink:href="#img1" fill="none" transform="translate(3766 728)"></use><text fill="#13171F" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3862.6 802)">AFTER INIT</text><use width="100%" height="100%" xlink:href="#img1" fill="none" transform="translate(3766 967)"></use><text fill="#13171F" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3886.66 1019)">BEFORE </text><text fill="#13171F" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3856.3 1061)">INFERENCE</text><use width="100%" height="100%" xlink:href="#img1" fill="none" transform="translate(3766 1493)"></use><text fill="#13171F" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3831.09 1567)">AFTER DE</text><text fill="#13171F" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 4012.13 1567)">-</text><text fill="#13171F" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 4024.16 1567)">INIT</text><use width="100%" height="100%" xlink:href="#img2" fill="none" transform="translate(1461 698)"></use><text fill="#FFFFFF" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 1794.29 783)">BURST</text><text fill="#FFFFFF" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 1542.78 825)">SUSTAINED_HIGH_PERFORMANCE</text><text fill="#FFFFFF" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 1657.94 868)">HIGH_PERFORMANCE</text><text fill="#FFFFFF" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 1757.35 910)">BALANCED</text><text fill="#FFFFFF" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 1705.49 952)">LOW_BALANCED</text><text fill="#FFFFFF" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 1658.81 994)">HIGH_POWER_SAVER</text><text fill="#FFFFFF" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 1714.66 1036)">POWER_SAVER </text><text fill="#FFFFFF" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 1662.82 1079)">LOW_POWER_SAVER</text><text fill="#FFFFFF" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 1615.84 1121)">EXTREME_POWER_SAVER</text><text fill="#FFFFFF" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 1678.86 1163)">SYSTEM_SETTINGS</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 1663.12 1279)">Current Preset Profiles</text><path d="M2532.5 693.5 2532.5 1501.01" stroke="#252D3B" stroke-width="9.16667" stroke-linejoin="round" stroke-miterlimit="10" stroke-dasharray="36.6667 27.5 9.16667 27.5" fill="none" fill-rule="evenodd"></path><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 2448.25 644)">SNPE API</text><text font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 1487.26 1402)">Snpe_SNPEBuilder_SetPerformanceProfile</text><text font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 2201.69 1402)">()</text><text font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 1487.26 1487)">SNPEBuilder::</text><text font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 1723.88 1487)">setPerformanceProfile</text><text font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 2089.4 1487)">()</text><path d="M1481.5 1430.06 2327.59 1430.06C2329.49 1430.06 2331.02 1431.6 2331.02 1433.5 2331.02 1435.4 2329.49 1436.94 2327.59 1436.94L1481.5 1436.94C1479.6 1436.94 1478.06 1435.4 1478.06 1433.5 1478.06 1431.6 1479.6 1430.06 1481.5 1430.06ZM2323 1419.75 2350.5 1433.5 2323 1447.25Z" fill="#1D5CFF"></path><path d="M2702.5 841.502C2702.5 769.152 2761.15 710.5 2833.5 710.5L3533.5 710.5C3605.85 710.5 3664.5 769.152 3664.5 841.502L3664.5 1365.5C3664.5 1437.85 3605.85 1496.5 3533.5 1496.5L2833.5 1496.5C2761.15 1496.5 2702.5 1437.85 2702.5 1365.5Z" stroke="#000000" stroke-width="3.4375" stroke-linejoin="round" stroke-miterlimit="10" fill="#00B0F0" fill-rule="evenodd" fill-opacity="0.329412"></path><text font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 2878.57 820)">Perf Profile driven heuristics in SNPE</text><text font-family="Wingdings,Wingdings_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 2773.45 905)"></text><text font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 2876.57 905)">RPC Polling is enabled for BURST, SHP </text><text font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 2876.57 947)">and HP (only for Fast RPC based transport </text><text font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 2876.57 989)">and not MCDM based architectures)</text><text font-family="Wingdings,Wingdings_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 2773.45 1073)"></text><text font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 2876.57 1073)">Voting hysteresis timer of 300 </text><text font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3371.57 1073)">ms</text><text font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3430.01 1073)">for </text><text font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 2876.57 1116)">BURST and SHP</text><text font-family="Wingdings,Wingdings_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 2773.45 1200)"></text><text font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 2876.57 1200)">Async Voting thread for all profiles except </text><text font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 2876.57 1242)">BURST and SHP</text><text font-family="Wingdings,Wingdings_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 2773.45 1327)"></text><text font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 2876.57 1327)">No voting for SYSTEM_SETTINGS as the </text><text font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 2876.57 1369)">client is expected to vote directly utilizing </text><text font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 2876.57 1411)">Hexagon SDK</text></g></svg>

The following sections demonstrate the Perf support in Qualcomm® Neural Processing SDK:

1. [New perf APIs in SNPE-2.22](https://docs.qualcomm.com/doc/80-63442-2/topic/low_level_perf_apis.html#new-perf-apis)
2. [Ability to hold the vote for a longer duration – Minimizing RPC Calls](https://docs.qualcomm.com/doc/80-63442-2/topic/low_level_perf_apis.html#min-rpc-calls)
3. [Synchronization problems in SNPE 2.21](https://docs.qualcomm.com/doc/80-63442-2/topic/low_level_perf_apis.html#syn-prob-221)
4. [Better Synchronization flexibility in SNPE 2.22](https://docs.qualcomm.com/doc/80-63442-2/topic/low_level_perf_apis.html#syn-sol-222)
5. [Sample YAML file](https://docs.qualcomm.com/doc/80-63442-2/topic/low_level_perf_apis.html#samp-yaml-file)

New perf APIs in SNPE-2.22

The current performance setting builder API allows the selection of preset profiles during SNPE initialization.
This preset profile is used for voting both before and after initialization, inference, and de-initialization.
Based on these preset profiles, SNPE internally employs certain heuristics with respect to RPC polling, async voting thread, and hysteresis timer for voting.
The limitation of this design is its lack of flexibility. The same profile is used for the entire lifecycle of SNPE. Additionally, the client application is stuck with the corner voltages selected by these preset profiles, even if alternate voltages are offered by the hardware that may better suit the performance-power trade-off for a particular use case.

Introducing low level perf API header SNPEPerfProfile.h ( C++ Wrapper SNPEPerfProfile.hpp) that allows client application to create a SNPE perf profile handle/object.

Snpe_SNPEPerfProfile_Handle_t perfHandle = Snpe_SNPEPerfProfile_Create();
    SNPEPerfProfile perfProfile; // C++ Wrapper API
    Copy to clipboard

A perf profile handle can also be created with a preset perf profile as a starting point:-

Snpe_SNPEPerfProfile_Handle_t perfHandle = Snpe_SNPEPerfProfile_CreatePreset(SNPE_PERFORMANCE_PROFILE_BURST);
    SNPEPerfProfile perfProfile(BURST); // C++ Wrapper API
    Copy to clipboard

This perf profile handle can now be customized as follows:-

Snpe_SNPEPerfProfile_SetDcvsVoltageCornerDcvsVCornerMinDone(perfHandle, SNPE_DCVS_VOLTAGE_VCORNER_NOM_PLUS);
    perfProfile.SetDcvsVoltageCornerDcvsVCornerMinDone(DCVS_VOLTAGE_VCORNER_NOM_PLUS); // C++ Wrapper API
    Copy to clipboard

This custom perf profile handle/object can now be associated with SNPE Builder handle (for init) or SNPE handle (for inference and de-init):-

Snpe_SNPEBuilder_SetCustomPerfProfile(snpeBuilderHandle, perfHandle);
    builder.setCustomPerfProfile(perfProfile); // C++ Wrapper API
    Snpe_SNPE_SetCustomPerfProfile(snpeHandle, perfHandle);
    snpe->setCustomPerformanceProfile(perfProfile); // C++ Wrapper API
    Snpe_SNPE_ExecuteUserBuffers(snpeHandle, inputHandle, outputHandle);
    snpe->execute(inputUbMap, outputUbMap); // C++ Wrapper API
    Copy to clipboard

An example usage with C API showing different perf settings for init, between inferences and for de-init:-

Snpe_SNPEPerfProfile_Handle_t perfHandle = Snpe_SNPEPerfProfile_CreatePreset(SNPE_PERFORMANCE_PROFILE_HIGH_PERFORMANCE);
    Snpe_SNPEPerfProfile_SetCoreVoltageCornerMaxMvStart(perfHandle, SNPE_DCVS_VOLTAGE_VCORNER_TURBO_PLUS);
    Snpe_SNPEPerfProfile_SetCoreVoltageCornerMaxMvDone(perfHandle, SNPE_DCVS_VOLTAGE_VCORNER_SVS);
    Snpe_SNPEBuilder_SetCustomPerfProfile(snpeBuilderHandle, perfHandle); // perf settings set to high_performance + new corners
    Snpe_SNPEPerfProfile_Delete(perfHandle);
    Snpe_SNPE_Handle_t snpeHandle = Snpe_SNPEBuilder_Build(snpeBuilderHandle); //Init performed with this custom setting
    Snpe_SNPE_ExecuteUserBuffers(snpeHandle, inputHandle, outputHandle); // 1st inference with this custom setting
    
    Snpe_SNPE_SetPerformanceProfile(snpeHandle, SNPE_PERFORMANCE_PROFILE_BURST); //perf setting now overwritten to Burst
    Snpe_SNPE_ExecuteUserBuffers(snpeHandle, inputHandle, outputHandle); // 2nd inference with preset Burst profile
    
    Snpe_SNPEPerfProfile_Handle_t perfHandle2 = Snpe_SNPEPerfProfile_Create();
    Snpe_SNPEPerfProfile_SetBusVoltageCornerMinStart(perfHandle2, SNPE_DCVS_VOLTAGE_VCORNER_NOM);
    ……… more settings ………
    Snpe_SNPE_SetCustomPerfProfile(snpeHandle, perfHandle2); // perf settings for the SNPE handle set to cutom values
    Snpe_SNPEPerfProfile_Delete(perfHandle2);
    Snpe_SNPE_ExecuteUserBuffers(snpeHandle, inputHandle, outputHandle); // 3rd inference with custom perf settings
    
    Snpe_SNPE_SetPerformanceProfile(snpeHandle, SNPE_PERFORMANCE_PROFILE_LOW_BALANCED); //perf setting now overwritten to preset
    Snpe_SNPE_Delete(snpeHandle); //De-Init performed with this new preset of low_balanced profile
    Copy to clipboard

Ability to hold the vote for a longer duration – Minimizing RPC calls

With the preset profiles burst and sustained high performance, inference voting has a hysteresis feature.
Once clocks are bumped up before execute, they are not brought down after inference is done for a certain period (300 ms) to reduce the amount of voting packets sent to the NSP.
This feature is present in SNPE-2.21 and particularly helps when there are back to back inferences. With SNPE-2.22, we are exposing this as part of custom perf profile. So the hysteresis timer can be increased or reduced or totally turned off for burst and sustained high performance. Also this can now be enabled for any other perf profile. Example:-

Snpe_SNPEPerfProfile_Handle_t perfHandle = Snpe_SNPEPerfProfile_CreatePreset(SNPE_PERFORMANCE_PROFILE_LOW_POWER_SAVER);
    Snpe_SNPEPerfProfile_SetDspHysteresisTime(perfHandle, 500); //Set inference voting hysteresis to 500 ms
    Snpe_SNPE_SetCustomPerfProfile(snpeHandle, perfHandle);
    Snpe_SNPE_ExecuteUserBuffers(snpeHandle, inputHandle, outputHandle);
    
    …… more inferences ……
    Snpe_SNPEPerfProfile_SetDspHysteresisTime(perfHandle, 0); //Disable voting hysteresis after a few inferences
    Snpe_SNPE_SetCustomPerfProfile(snpeHandle, perfHandle);
    Snpe_SNPE_ExecuteUserBuffers(snpeHandle, inputHandle, outputHandle);
    Copy to clipboard

Synchronization problem for multiple SNPE instances in SNPE-2.21

<svg width="40.0%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" overflow="hidden" aria-label="../images/221_sync_prob.svg" viewbox="0 0 1335 1377"><g transform="translate(-3065 -475)"><path d="M3183.5 567.208 3598.01 567.209C3599.27 567.209 3600.3 568.235 3600.3 569.5 3600.3 570.766 3599.27 571.792 3598.01 571.792L3183.5 571.792C3182.23 571.792 3181.21 570.766 3181.21 569.5 3181.21 568.234 3182.23 567.208 3183.5 567.208ZM3593.42 555.75 3620.92 569.5 3593.42 583.25Z" fill="#FF0000"></path><path d="M3183.5 639.208 3598.01 639.209C3599.27 639.209 3600.3 640.235 3600.3 641.5 3600.3 642.766 3599.27 643.792 3598.01 643.792L3183.5 643.792C3182.23 643.792 3181.21 642.766 3181.21 641.5 3181.21 640.234 3182.23 639.208 3183.5 639.208ZM3593.42 627.75 3620.92 641.5 3593.42 655.25Z" fill="#FF0000"></path><path d="M3182.5 716.208 3597.01 716.209C3598.27 716.209 3599.3 717.235 3599.3 718.5 3599.3 719.766 3598.27 720.792 3597.01 720.792L3182.5 720.792C3181.23 720.792 3180.21 719.766 3180.21 718.5 3180.21 717.234 3181.23 716.208 3182.5 716.208ZM3592.42 704.75 3619.92 718.5 3592.42 732.25Z" fill="#FF0000"></path><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3191.64 556)">Before Vote </text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3396.17 556)">-</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3417.95 556)">Higher</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3243.53 706)">After Vote </text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3417.12 706)">-</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3438.89 706)">High</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3294.79 626)">Inference</text><path d="M3641 518.5C3641 495.58 3659.58 477 3682.5 477L3848.5 477C3871.42 477 3890 495.58 3890 518.5L3890 1646.5C3890 1669.42 3871.42 1688 3848.5 1688L3682.5 1688C3659.58 1688 3641 1669.42 3641 1646.5Z" stroke="#000000" stroke-width="3.89583" stroke-linejoin="round" stroke-miterlimit="10" fill="#A6D0C3" fill-rule="evenodd"></path><path d="M3182.5 965.208 3597.01 965.209C3598.27 965.209 3599.3 966.235 3599.3 967.501 3599.3 968.766 3598.27 969.792 3597.01 969.792L3182.5 969.792C3181.23 969.792 3180.21 968.766 3180.21 967.5 3180.21 966.235 3181.23 965.208 3182.5 965.208ZM3592.42 953.751 3619.92 967.501 3592.42 981.251Z" fill="#FF0000"></path><path d="M3182.5 1037.21 3597.01 1037.21C3598.27 1037.21 3599.3 1038.23 3599.3 1039.5 3599.3 1040.77 3598.27 1041.79 3597.01 1041.79L3182.5 1041.79C3181.23 1041.79 3180.21 1040.77 3180.21 1039.5 3180.21 1038.23 3181.23 1037.21 3182.5 1037.21ZM3592.42 1025.75 3619.92 1039.5 3592.42 1053.25Z" fill="#FF0000"></path><path d="M3181.5 1114.21 3596.01 1114.21C3597.27 1114.21 3598.3 1115.23 3598.3 1116.5 3598.3 1117.77 3597.27 1118.79 3596.01 1118.79L3181.5 1118.79C3180.23 1118.79 3179.21 1117.77 3179.21 1116.5 3179.21 1115.23 3180.23 1114.21 3181.5 1114.21ZM3591.42 1102.75 3618.92 1116.5 3591.42 1130.25Z" fill="#FF0000"></path><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3191.09 953)">Before Vote </text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3395.63 953)">-</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3417.4 953)">Higher</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3242.98 1104)">After Vote </text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3416.57 1104)">-</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3438.34 1104)">High</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3294.24 1023)">Inference</text><path d="M1.89545e-06-2.29167 413.414-2.29132C414.68-2.29132 415.706-1.26531 415.706 0.000343833 415.706 1.266 414.68 2.29201 413.414 2.29201L-1.89545e-06 2.29167C-1.26565 2.29167-2.29167 1.26565-2.29167-1.89545e-06-2.29167-1.26565-1.26565-2.29167 1.89545e-06-2.29167ZM408.831-13.7497 436.331 0.000360892 408.831 13.7503Z" fill="#1D5CFF" transform="matrix(-1 0 0 1 4351.83 1202.5)"></path><path d="M1.89545e-06-2.29167 413.414-2.29132C414.68-2.29132 415.706-1.26531 415.706 0.000343833 415.706 1.266 414.68 2.29201 413.414 2.29201L-1.89545e-06 2.29167C-1.26565 2.29167-2.29167 1.26565-2.29167-1.89545e-06-2.29167-1.26565-1.26565-2.29167 1.89545e-06-2.29167ZM408.831-13.7497 436.331 0.000360892 408.831 13.7503Z" fill="#1D5CFF" transform="matrix(-1 0 0 1 4351.83 1275.5)"></path><path d="M1.89545e-06-2.29167 413.414-2.29132C414.68-2.29132 415.706-1.26531 415.706 0.000343833 415.706 1.266 414.68 2.29201 413.414 2.29201L-1.89545e-06 2.29167C-1.26565 2.29167-2.29167 1.26565-2.29167-1.89545e-06-2.29167-1.26565-1.26565-2.29167 1.89545e-06-2.29167ZM408.831-13.7497 436.331 0.000360892 408.831 13.7503Z" fill="#1D5CFF" transform="matrix(-1 0 0 1 4353.83 1352.5)"></path><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3961.8 1189)">Before Vote </text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 4166.33 1189)">-</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 4188.1 1189)">Low</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3961.8 1338)">After Vote </text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 4135.39 1338)">-</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 4157.17 1338)">Lower</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 4067.65 1259)">Inference</text><path d="M1.89545e-06-2.29167 413.414-2.29132C414.68-2.29132 415.706-1.26531 415.706 0.000343833 415.706 1.266 414.68 2.29201 413.414 2.29201L-1.89545e-06 2.29167C-1.26565 2.29167-2.29167 1.26565-2.29167-1.89545e-06-2.29167-1.26565-1.26565-2.29167 1.89545e-06-2.29167ZM408.831-13.7497 436.331 0.000360892 408.831 13.7503Z" fill="#1D5CFF" transform="matrix(-1 0 0 1 4351.83 765.5)"></path><path d="M1.89545e-06-2.29167 413.414-2.29132C414.68-2.29132 415.706-1.26531 415.706 0.000343833 415.706 1.266 414.68 2.29201 413.414 2.29201L-1.89545e-06 2.29167C-1.26565 2.29167-2.29167 1.26565-2.29167-1.89545e-06-2.29167-1.26565-1.26565-2.29167 1.89545e-06-2.29167ZM408.831-13.7497 436.331 0.000360892 408.831 13.7503Z" fill="#1D5CFF" transform="matrix(-1 0 0 1 4351.83 837.5)"></path><path d="M1.89545e-06-2.29167 413.414-2.29132C414.68-2.29132 415.706-1.26531 415.706 0.000343833 415.706 1.266 414.68 2.29201 413.414 2.29201L-1.89545e-06 2.29167C-1.26565 2.29167-2.29167 1.26565-2.29167-1.89545e-06-2.29167-1.26565-1.26565-2.29167 1.89545e-06-2.29167ZM408.831-13.7497 436.331 0.000360892 408.831 13.7503Z" fill="#1D5CFF" transform="matrix(-1 0 0 1 4352.83 914.5)"></path><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3961.04 752)">Before Vote </text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 4165.57 752)">-</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 4187.34 752)">Low</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3961.04 900)">After Vote </text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 4134.63 900)">-</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 4156.4 900)">Lower</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 4066.88 822)">Inference</text><path d="M3180.5 1433.21 3595.01 1433.21C3596.27 1433.21 3597.3 1434.23 3597.3 1435.5 3597.3 1436.77 3596.27 1437.79 3595.01 1437.79L3180.5 1437.79C3179.23 1437.79 3178.21 1436.77 3178.21 1435.5 3178.21 1434.23 3179.23 1433.21 3180.5 1433.21ZM3590.42 1421.75 3617.92 1435.5 3590.42 1449.25Z" fill="#FF0000"></path><path d="M3180.5 1506.21 3595.01 1506.21C3596.27 1506.21 3597.3 1507.23 3597.3 1508.5 3597.3 1509.77 3596.27 1510.79 3595.01 1510.79L3180.5 1510.79C3179.23 1510.79 3178.21 1509.77 3178.21 1508.5 3178.21 1507.23 3179.23 1506.21 3180.5 1506.21ZM3590.42 1494.75 3617.92 1508.5 3590.42 1522.25Z" fill="#FF0000"></path><path d="M3179.5 1583.21 3594.01 1583.21C3595.27 1583.21 3596.3 1584.23 3596.3 1585.5 3596.3 1586.77 3595.27 1587.79 3594.01 1587.79L3179.5 1587.79C3178.23 1587.79 3177.21 1586.77 3177.21 1585.5 3177.21 1584.23 3178.23 1583.21 3179.5 1583.21ZM3589.42 1571.75 3616.92 1585.5 3589.42 1599.25Z" fill="#FF0000"></path><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3188.9 1422)">Before Vote </text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3393.43 1422)">-</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3415.2 1422)">Higher</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3240.79 1572)">After Vote </text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3414.38 1572)">-</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3436.15 1572)">High</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3292.05 1492)">Inference</text><text fill="#FFFFFF" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="50" transform="matrix(6.12323e-17 1 -1 6.12323e-17 3751.08 667)">HTP/NSP  VOTE  AGGREGATION</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3250.95 1705)">SNPE </text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3360.95 1705)">-</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3372.98 1705)">1 preset</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3135.22 1749)">(High Performance Workload)</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 4015.27 1706)">SNPE </text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 4125.27 1706)">-</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 4137.3 1706)">2 </text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3847.7 1750)">(Low Performance Workload)</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="46" transform="matrix(1 0 0 1 3639.47 1814)">SNPE</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="46" transform="matrix(1 0 0 1 3763.79 1814)">-</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="46" transform="matrix(1 0 0 1 3779.26 1814)">2.21</text></g></svg>

Consider the use case of two SNPE instances, as shown in the diagram above.
These instances could be part of the same process or different processes.
They are executing concurrently, with one having a high-performance workload (represented in red) and the other having a low-performance workload (represented in blue).

When these two SNPE instances are in separate processes, they get unique power config ids. When they are in the same process and unique power config ids were requested via Platform Option “dspPowerSettingContext” (which is the default), they get different power config ids.

Due to this, during vote aggregation at the HTP/NSP level, the after/done vote of SNPE-1 would vote out the before/start vote of SNPE-2. This is because the default after/done vote of SNPE-1 is still high compared to the before/start vote of SNPE-2. The before and after voting voltage corners are controlled by a preset performance profile that was passed during builder/init stage. This means the execution of SNPE-2 would be performed at a higher performance level, which is not intended and thus ends up consuming more power.

With the introduction of the new perf APIs in SNPE-2.22, this can be solved which is outlined in the next section.

Better synchronization flexibility for cooperative multiple SNPE instances in SNPE-2.22

<svg width="40.0%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" overflow="hidden" aria-label="../images/222_sync_sol.svg" viewbox="0 0 922 1038"><g transform="translate(-3407 -137)"><path d="M3443.5 206.208 3732.47 206.209C3733.73 206.209 3734.76 207.235 3734.76 208.501 3734.76 209.766 3733.73 210.792 3732.47 210.792L3443.5 210.792C3442.23 210.792 3441.21 209.766 3441.21 208.5 3441.21 207.235 3442.23 206.208 3443.5 206.208ZM3727.88 194.75 3755.38 208.501 3727.88 222.25Z" fill="#FF0000"></path><path d="M3443.5 260.208 3732.47 260.209C3733.73 260.209 3734.76 261.235 3734.76 262.5 3734.76 263.766 3733.73 264.792 3732.47 264.792L3443.5 264.792C3442.23 264.792 3441.21 263.766 3441.21 262.5 3441.21 261.234 3442.23 260.208 3443.5 260.208ZM3727.88 248.75 3755.38 262.5 3727.88 276.25Z" fill="#FF0000"></path><path d="M3443.5 316.062 3464.12 316.062 3464.12 322.937 3443.5 322.937ZM3471 316.062 3491.62 316.062 3491.62 322.937 3471 322.937ZM3498.5 316.062 3519.12 316.062 3519.12 322.937 3498.5 322.937ZM3526 316.062 3546.62 316.062 3546.62 322.937 3526 322.937ZM3553.5 316.062 3574.12 316.062 3574.12 322.938 3553.5 322.937ZM3581 316.062 3601.62 316.063 3601.62 322.938 3581 322.938ZM3608.5 316.063 3629.12 316.063 3629.12 322.938 3608.5 322.938ZM3636 316.063 3656.62 316.063 3656.62 322.938 3636 322.938ZM3663.5 316.063 3684.12 316.063 3684.12 322.938 3663.5 322.938ZM3691 316.063 3711.62 316.063 3711.62 322.938 3691 322.938ZM3718.5 316.063 3732.47 316.063 3732.47 322.938 3718.5 322.938ZM3727.88 305.75 3755.38 319.5 3727.88 333.25Z" fill="#FF0000"></path><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 3449.74 198)">Before Vote </text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 3602.7 198)">-</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 3619.32 198)">Higher</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 3486.73 310)">After Vote </text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 3616.21 310)">-</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 3632.82 310)">Lower</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 3523.28 251)">Inference</text><path d="M3770 168.666C3770 152.282 3783.28 139 3799.67 139L3918.33 139C3934.72 139 3948 152.282 3948 168.666L3948 1012.33C3948 1028.72 3934.72 1042 3918.33 1042L3799.67 1042C3783.28 1042 3770 1028.72 3770 1012.33Z" stroke="#000000" stroke-width="3.89583" stroke-linejoin="round" stroke-miterlimit="10" fill="#A6D0C3" fill-rule="evenodd"></path><path d="M3443.5 502.208 3732.47 502.209C3733.73 502.209 3734.76 503.235 3734.76 504.5 3734.76 505.766 3733.73 506.792 3732.47 506.792L3443.5 506.792C3442.23 506.792 3441.21 505.766 3441.21 504.5 3441.21 503.234 3442.23 502.208 3443.5 502.208ZM3727.88 490.75 3755.38 504.5 3727.88 518.25Z" fill="#FF0000"></path><path d="M3443.5 556.208 3732.47 556.209C3733.73 556.209 3734.76 557.235 3734.76 558.5 3734.76 559.766 3733.73 560.792 3732.47 560.792L3443.5 560.792C3442.23 560.792 3441.21 559.766 3441.21 558.5 3441.21 557.234 3442.23 556.208 3443.5 556.208ZM3727.88 544.75 3755.38 558.5 3727.88 572.25Z" fill="#FF0000"></path><path d="M3442.5 612.063 3463.13 612.063 3463.13 618.938 3442.5 618.938ZM3470 612.063 3490.63 612.063 3490.63 618.938 3470 618.938ZM3497.5 612.063 3518.13 612.063 3518.13 618.938 3497.5 618.938ZM3525 612.063 3545.63 612.063 3545.63 618.938 3525 618.938ZM3552.5 612.063 3573.13 612.063 3573.13 618.938 3552.5 618.938ZM3580 612.063 3600.63 612.063 3600.63 618.938 3580 618.938ZM3607.5 612.063 3628.13 612.063 3628.13 618.938 3607.5 618.938ZM3635 612.063 3655.63 612.063 3655.63 618.938 3635 618.938ZM3662.5 612.063 3683.13 612.063 3683.13 618.938 3662.5 618.938ZM3690 612.063 3710.63 612.063 3710.63 618.938 3690 618.938ZM3717.5 612.063 3731.47 612.063 3731.47 618.938 3717.5 618.938ZM3726.88 601.75 3754.38 615.501 3726.88 629.25Z" fill="#FF0000"></path><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 3449.34 495)">Before Vote </text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 3602.31 495)">-</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 3618.93 495)">Higher</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 3486.34 607)">After Vote </text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 3615.82 607)">-</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 3632.43 607)">Lower</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 3522.89 547)">Inference</text><path d="M2.65843e-06-2.29167 288.186-2.29133C289.451-2.29133 290.477-1.26532 290.477 0.000336967 290.477 1.26599 289.451 2.292 288.186 2.292L-2.65843e-06 2.29167C-1.26566 2.29167-2.29167 1.26565-2.29167-2.65843e-06-2.29167-1.26566-1.26565-2.29167 2.65843e-06-2.29167ZM283.602-13.7497 311.102 0.000360892 283.602 13.7503Z" fill="#1D5CFF" transform="matrix(-1 0 0 1 4278.6 672.5)"></path><path d="M2.65843e-06-2.29167 288.186-2.29133C289.451-2.29133 290.477-1.26532 290.477 0.000336967 290.477 1.26599 289.451 2.292 288.186 2.292L-2.65843e-06 2.29167C-1.26566 2.29167-2.29167 1.26565-2.29167-2.65843e-06-2.29167-1.26566-1.26565-2.29167 2.65843e-06-2.29167ZM283.602-13.7497 311.102 0.000360892 283.602 13.7503Z" fill="#1D5CFF" transform="matrix(-1 0 0 1 4278.6 726.5)"></path><path d="M2.65843e-06-2.29167 288.186-2.29133C289.451-2.29133 290.477-1.26532 290.477 0.000336967 290.477 1.26599 289.451 2.292 288.186 2.292L-2.65843e-06 2.29167C-1.26566 2.29167-2.29167 1.26565-2.29167-2.65843e-06-2.29167-1.26566-1.26565-2.29167 2.65843e-06-2.29167ZM283.602-13.7497 311.102 0.000360892 283.602 13.7503Z" fill="#1D5CFF" transform="matrix(-1 0 0 1 4279.6 784.5)"></path><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 4000.23 663)">Before Vote </text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 4153.2 663)">-</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 4169.81 663)">Low</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 4000.23 774)">After Vote </text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 4129.71 774)">-</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 4146.32 774)">Lower</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 4075.7 715)">Inference</text><path d="M2.65843e-06-2.29167 288.186-2.29133C289.452-2.29133 290.478-1.26532 290.478 0.000336967 290.478 1.26599 289.452 2.292 288.186 2.292L-2.65843e-06 2.29167C-1.26566 2.29167-2.29167 1.26565-2.29167-2.65843e-06-2.29167-1.26566-1.26565-2.29167 2.65843e-06-2.29167ZM283.603-13.7497 311.103 0.000360892 283.603 13.7503Z" fill="#1D5CFF" transform="matrix(-1 0 0 1 4270.6 355.5)"></path><path d="M2.65843e-06-2.29167 288.186-2.29133C289.452-2.29133 290.478-1.26532 290.478 0.000336967 290.478 1.26599 289.452 2.292 288.186 2.292L-2.65843e-06 2.29167C-1.26566 2.29167-2.29167 1.26565-2.29167-2.65843e-06-2.29167-1.26566-1.26565-2.29167 2.65843e-06-2.29167ZM283.603-13.7497 311.103 0.000360892 283.603 13.7503Z" fill="#1D5CFF" transform="matrix(-1 0 0 1 4270.6 409.5)"></path><path d="M2.65843e-06-2.29167 288.186-2.29133C289.452-2.29133 290.478-1.26532 290.478 0.000336967 290.478 1.26599 289.452 2.292 288.186 2.292L-2.65843e-06 2.29167C-1.26566 2.29167-2.29167 1.26565-2.29167-2.65843e-06-2.29167-1.26566-1.26565-2.29167 2.65843e-06-2.29167ZM283.603-13.7497 311.103 0.000360892 283.603 13.7503Z" fill="#1D5CFF" transform="matrix(-1 0 0 1 4271.6 467.5)"></path><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 3991.99 346)">Before Vote </text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 4144.96 346)">-</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 4161.57 346)">Low</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 3991.99 457)">After Vote </text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 4121.47 457)">-</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 4138.08 457)">Lower</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 4067.46 398)">Inference</text><path d="M3441.5 852.208 3730.47 852.209C3731.73 852.209 3732.76 853.235 3732.76 854.5 3732.76 855.766 3731.73 856.792 3730.47 856.792L3441.5 856.792C3440.23 856.792 3439.21 855.766 3439.21 854.5 3439.21 853.234 3440.23 852.208 3441.5 852.208ZM3725.88 840.75 3753.38 854.5 3725.88 868.25Z" fill="#FF0000"></path><path d="M3441.5 905.208 3730.47 905.209C3731.73 905.209 3732.76 906.235 3732.76 907.5 3732.76 908.766 3731.73 909.792 3730.47 909.792L3441.5 909.792C3440.23 909.792 3439.21 908.766 3439.21 907.5 3439.21 906.234 3440.23 905.208 3441.5 905.208ZM3725.88 893.75 3753.38 907.5 3725.88 921.25Z" fill="#FF0000"></path><path d="M3441.5 962.063 3462.13 962.063 3462.13 968.938 3441.5 968.938ZM3469 962.063 3489.63 962.063 3489.63 968.938 3469 968.938ZM3496.5 962.063 3517.13 962.063 3517.13 968.938 3496.5 968.938ZM3524 962.063 3544.63 962.063 3544.63 968.938 3524 968.938ZM3551.5 962.063 3572.13 962.063 3572.13 968.938 3551.5 968.938ZM3579 962.063 3599.63 962.063 3599.63 968.938 3579 968.938ZM3606.5 962.063 3627.13 962.063 3627.13 968.938 3606.5 968.938ZM3634 962.063 3654.63 962.063 3654.63 968.938 3634 968.938ZM3661.5 962.063 3682.13 962.063 3682.13 968.938 3661.5 968.938ZM3689 962.063 3709.63 962.063 3709.63 968.938 3689 968.938ZM3716.5 962.063 3730.47 962.063 3730.47 968.938 3716.5 968.938ZM3725.88 951.75 3753.38 965.5 3725.88 979.25Z" fill="#FF0000"></path><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 3447.78 844)">Before Vote </text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 3600.75 844)">-</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 3617.36 844)">Higher</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 3484.77 956)">After Vote </text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 3614.25 956)">-</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 3630.87 956)">Lower</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 3521.33 896)">Inference</text><text fill="#FFFFFF" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="46" transform="matrix(6.12323e-17 1 -1 6.12323e-17 3841.87 281)">HTP/NSP  VOTE  AGGREGATION</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 3529.22 1056)">SNPE </text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 3611.72 1056)">-</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 3620.89 1056)">1 custom </text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 3448.17 1089)">(High Performance Workload)</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 4052.4 1055)">SNPE </text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 4134.9 1055)">-</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 4144.07 1055)">2 </text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="28" transform="matrix(1 0 0 1 3926.36 1088)">(Low Performance Workload)</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3770.19 1144)">SNPE</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3870.45 1144)">-</text><text fill="#664C81" font-family="Microsoft Sans Serif,Microsoft Sans Serif_MSFontService,sans-serif" font-weight="400" font-size="37" transform="matrix(1 0 0 1 3882.48 1144)">2.22</text></g></svg>

With the introduction of the new performance APIs (illustrated in the diagram above), SNPE-1 can now selectively control the after/done vote (indicated by the dotted red arrow). SNPE-1 can match the after/done vote voltage corner to match SNPE-2’s before/start vote or lower than that or not vote at all. This allows it to cooperate with SNPE-2, thus enabling SNPE-2 to execute in desired low power mode. Code snippet to lower the after/done vote for SNPE-1 the high performance workload is provided below:-

// C API
    Snpe_SNPEPerfProfile_Handle_t perfHandle1 = Snpe_SNPEPerfProfile_CreatePreset(SNPE_PERFORMANCE_PROFILE_BURST);
    Snpe_SNPEPerfProfile_SetBusVoltageCornerMinDone(perfHandle1, SNPE_DCVS_VOLTAGE_CORNER_DISABLE);
    Snpe_SNPEPerfProfile_SetBusVoltageCornerTargetDone(perfHandle1, SNPE_DCVS_VOLTAGE_CORNER_DISABLE);
    Snpe_SNPEPerfProfile_SetBusVoltageCornerMaxDone(perfHandle1, SNPE_DCVS_VOLTAGE_CORNER_DISABLE);
    Snpe_SNPEPerfProfile_SetCoreVoltageCornerMinMvDone(perfHandle1, SNPE_DCVS_VOLTAGE_CORNER_DISABLE);
    Snpe_SNPEPerfProfile_SetCoreVoltageCornerTargetMvDone(perfHandle1, SNPE_DCVS_VOLTAGE_CORNER_DISABLE);
    Snpe_SNPEPerfProfile_SetCoreVoltageCornerMaxMvStart(perfHandle1, SNPE_DCVS_VOLTAGE_CORNER_DISABLE);
    Snpe_SNPE_SetCustomPerfProfile(snpe1Handle, perfHandle1);
    Snpe_SNPE_ExecuteUserBuffers(snpeHandle1, inputHandle, outputHandle);
    // C++ Wrapper API
    SNPEPerfProfile perfProfile1(BURST);
    perfProfile1.setBusVoltageCornerMinDone(DCVS_VOLTAGE_CORNER_DISABLE);
    perfProfile1.setBusVoltageCornerTargetDone(DCVS_VOLTAGE_CORNER_DISABLE);
    perfProfile1.setBusVoltageCornerMaxDone(DCVS_VOLTAGE_CORNER_DISABLE);
    perfProfile1.setCoreVoltageCornerMinMvDone(DCVS_VOLTAGE_CORNER_DISABLE);
    perfProfile1.setCoreVoltageCornerTargetMvDone(DCVS_VOLTAGE_CORNER_DISABLE);
    perfProfile1.setCoreVoltageCornerMaxMvDone(DCVS_VOLTAGE_CORNER_DISABLE);
    snpe1->setCustomPerformanceProfile(perfProfile1);
    snpe1->execute(inputUbMap, outputUbMap);
    Copy to clipboard

Sample snpe-net-run YAML file

Below is a snippet of snpe-net-run / snpe-throughput-net-run yaml corresponding to SUSTAINED\_HIGH\_PERFORMANCE profile:-

general:
      ASYNC_VOTING_ENABLE: false
      DSP_HYSTERESIS_TIME_US: 300000
      DSP_SLEEP_DISABLE_MS: 0
      DSP_RPC_POLLING_TIME_US: 9999
    init:
      DSP_ENABLE_DCVS_START: false
      DSP_ENABLE_DCVS_DONE: true
      DSP_SLEEP_LATENCY_START_US: 100
      HIGH_PERFORMANCE_MODE: true
      POWERMODE_START: SNPE_DSP_PERF_INFRASTRUCTURE_POWERMODE_ADJUST_UP_DOWN
      POWERMODE_DONE: SNPE_DSP_PERF_INFRASTRUCTURE_POWERMODE_ADJUST_UP_DOWN
      BUS_VOLTAGE_CORNER_MIN_START: SNPE_DCVS_VOLTAGE_VCORNER_TURBO
      BUS_VOLTAGE_CORNER_TARGET_START: SNPE_DCVS_VOLTAGE_VCORNER_TURBO
      BUS_VOLTAGE_CORNER_MAX_START: SNPE_DCVS_VOLTAGE_VCORNER_TURBO
      CORE_VOLTAGE_CORNER_MIN_START: SNPE_DCVS_VOLTAGE_VCORNER_TURBO
      CORE_VOLTAGE_CORNER_TARGET_START: SNPE_DCVS_VOLTAGE_VCORNER_TURBO
      CORE_VOLTAGE_CORNER_MAX_START: SNPE_DCVS_VOLTAGE_VCORNER_TURBO
      BUS_VOLTAGE_CORNER_MIN_DONE: SNPE_DCVS_VOLTAGE_VCORNER_SVS2
      BUS_VOLTAGE_CORNER_TARGET_DONE: SNPE_DCVS_VOLTAGE_VCORNER_SVS
      BUS_VOLTAGE_CORNER_MAX_DONE: SNPE_DCVS_VOLTAGE_VCORNER_SVS
      CORE_VOLTAGE_CORNER_MIN_DONE: SNPE_DCVS_VOLTAGE_VCORNER_SVS2
      CORE_VOLTAGE_CORNER_TARGET_DONE: SNPE_DCVS_VOLTAGE_VCORNER_SVS
      CORE_VOLTAGE_CORNER_MAX_DONE: SNPE_DCVS_VOLTAGE_VCORNER_SVS
      DSP_SLEEP_LATENCY_DONE_US: 2000
    execute:
      DSP_ENABLE_DCVS_START: false
      DSP_ENABLE_DCVS_DONE: true
      DSP_SLEEP_LATENCY_START_US: 100
      HIGH_PERFORMANCE_MODE: true
      POWERMODE_START: SNPE_DSP_PERF_INFRASTRUCTURE_POWERMODE_ADJUST_UP_DOWN
      POWERMODE_DONE: SNPE_DSP_PERF_INFRASTRUCTURE_POWERMODE_ADJUST_UP_DOWN
      BUS_VOLTAGE_CORNER_MIN_START: SNPE_DCVS_VOLTAGE_VCORNER_TURBO
      BUS_VOLTAGE_CORNER_TARGET_START: SNPE_DCVS_VOLTAGE_VCORNER_TURBO
      BUS_VOLTAGE_CORNER_MAX_START: SNPE_DCVS_VOLTAGE_VCORNER_TURBO
      CORE_VOLTAGE_CORNER_MIN_START: SNPE_DCVS_VOLTAGE_VCORNER_TURBO
      CORE_VOLTAGE_CORNER_TARGET_START: SNPE_DCVS_VOLTAGE_VCORNER_TURBO
      CORE_VOLTAGE_CORNER_MAX_START: SNPE_DCVS_VOLTAGE_VCORNER_TURBO
      BUS_VOLTAGE_CORNER_MIN_DONE: SNPE_DCVS_VOLTAGE_VCORNER_SVS2
      BUS_VOLTAGE_CORNER_TARGET_DONE: SNPE_DCVS_VOLTAGE_VCORNER_SVS
      BUS_VOLTAGE_CORNER_MAX_DONE: SNPE_DCVS_VOLTAGE_VCORNER_SVS
      CORE_VOLTAGE_CORNER_MIN_DONE: SNPE_DCVS_VOLTAGE_VCORNER_SVS2
      CORE_VOLTAGE_CORNER_TARGET_DONE: SNPE_DCVS_VOLTAGE_VCORNER_SVS
      CORE_VOLTAGE_CORNER_MAX_DONE: SNPE_DCVS_VOLTAGE_VCORNER_SVS
      DSP_SLEEP_LATENCY_DONE_US: 2000
    deinit:
      DSP_ENABLE_DCVS_START: false
      DSP_ENABLE_DCVS_DONE: true
      HIGH_PERFORMANCE_MODE: true
      DSP_SLEEP_LATENCY_START_US: 100
      POWERMODE_START: SNPE_DSP_PERF_INFRASTRUCTURE_POWERMODE_ADJUST_UP_DOWN
      POWERMODE_DONE: SNPE_DSP_PERF_INFRASTRUCTURE_POWERMODE_ADJUST_UP_DOWN
      BUS_VOLTAGE_CORNER_MIN_START: SNPE_DCVS_VOLTAGE_VCORNER_TURBO
      BUS_VOLTAGE_CORNER_TARGET_START: SNPE_DCVS_VOLTAGE_VCORNER_TURBO
      BUS_VOLTAGE_CORNER_MAX_START: SNPE_DCVS_VOLTAGE_VCORNER_TURBO
      CORE_VOLTAGE_CORNER_MIN_START: SNPE_DCVS_VOLTAGE_VCORNER_TURBO
      CORE_VOLTAGE_CORNER_TARGET_START: SNPE_DCVS_VOLTAGE_VCORNER_TURBO
      CORE_VOLTAGE_CORNER_MAX_START: SNPE_DCVS_VOLTAGE_VCORNER_TURBO
      BUS_VOLTAGE_CORNER_MIN_DONE: SNPE_DCVS_VOLTAGE_VCORNER_MIN_VOLTAGE_CORNER
      BUS_VOLTAGE_CORNER_TARGET_DONE: SNPE_DCVS_VOLTAGE_VCORNER_MIN_VOLTAGE_CORNER
      BUS_VOLTAGE_CORNER_MAX_DONE: SNPE_DCVS_VOLTAGE_VCORNER_MIN_VOLTAGE_CORNER
      CORE_VOLTAGE_CORNER_MIN_DONE: SNPE_DCVS_VOLTAGE_VCORNER_MIN_VOLTAGE_CORNER
      CORE_VOLTAGE_CORNER_TARGET_DONE: SNPE_DCVS_VOLTAGE_VCORNER_MIN_VOLTAGE_CORNER
      CORE_VOLTAGE_CORNER_MAX_DONE: SNPE_DCVS_VOLTAGE_VCORNER_MIN_VOLTAGE_CORNER
      DSP_SLEEP_LATENCY_DONE_US: 2000
    Copy to clipboard

Note:- These settings can be retrieved via the getter APIs after starting with a preset profile. Example:-

CAPI
    Snpe_SNPEPerfProfile_Handle_t perfHandle = Snpe_SNPEPerfProfile_CreatePreset(SNPE_PERFORMANCE_PROFILE_BURST);
    auto asyncVoteStatus = Snpe_SNPEPerfProfile_GetEnableAsyncVoting(perfHandle);
    auto sleepLatencyStart = Snpe_SNPEPerfProfile_GetSleepLatencyStart(perfHandle);
    auto busVoltageCornerMinDone = Snpe_SNPEPerfProfile_GetBusVoltageCornerMinDone(perfHandle);
    
    C++ Wrapper API
    SNPEPerfProfile perfProfile(BURST);
    auto asyncVoteStatus = perfProfile.getEnableAsyncVoting();
    auto sleepLatencyStart = perfProfile.getSleepLatencyStart();
    auto busVoltageCornerMinDone = perfProfile.getBusVoltageCornerMinDone();
    Copy to clipboard

Last Published: Oct 02, 2025

[Previous Topic
Integrate Windows Error Reporting into Your Application](https://docs.qualcomm.com/bundle/publicresource/80-63442-2/topics/wer.md) [Next Topic
Network Models](https://docs.qualcomm.com/bundle/publicresource/80-63442-2/topics/usergroup1.md)