Skip to content

accelerated should be prior to powerPreference for device selection #911

@mingmingtasd

Description

@mingmingtasd

According to https://webmachinelearning.github.io/webnn/#dictdef-mlcontextoptions, the current WebNN specification states that the accelerated option has lower priority than powerPreference. This design creates logical contradictions and implementation difficulties, particularly in two scenarios:

low-power + accelerated = true:
If no low-power device NPU/iGPU is available, it seems we have to select CPU to satisfy the "low-power" requirement. This violates the developer's explicit intent to use hardware acceleration.  

high-performance/low-power + accelerated = false:
The spec suggests choosing a "high-performance/low-power CPU mode". However, web browsers typically lack the granular control to force a CPU into a high-performance/low-power state (e.g., pinning to performance cores or boosting clock speeds), making this practically impossible to implement

So the logic should be inverted: accelerated has higher priority than powerPreference.

Rationale: accelerated defines the category of hardware (Dedicated Accelerator vs. CPU), while powerPreference should act as a hint for selecting within that category. If accelerated is true, the user agent MUST return an accelerated context (GPU/NPU) if available, regardless of power preference.
See the following table, this will make device selection implementation easier and avoid some confusions from contradictory combinations.

accelerated powerPreference device should be selected
true "default"/"higher-performance" GPU
true "low-power" NPU; if no NPU, try to select iGPU
false ignored CPU

@huningxin @fdwr

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions