|  | #!/bin/sh | 
|  |  | 
|  | # Copyright 2021 The IREE Authors | 
|  | # | 
|  | # Licensed under the Apache License v2.0 with LLVM Exceptions. | 
|  | # See https://llvm.org/LICENSE.txt for license information. | 
|  | # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | 
|  |  | 
|  | # Runs on a Pixel 6 device itself to set the GPU frequency scaling policy. | 
|  |  | 
|  | ################################### WARNING #################################### | 
|  | # This will overheat the phone if it's not on a cooling plate, resulting in    # | 
|  | # thermal throttling. To prevent anything catching on fire, the actual GPU     # | 
|  | # frequencies will be throttled to below the maximum, skewing your results.    # | 
|  | ################################################################################ | 
|  |  | 
|  | set -euo pipefail | 
|  |  | 
|  | POLICY="${1:-performance}" | 
|  |  | 
|  | readonly MALI_GPU_PATH="/sys/devices/platform/1c500000.mali" | 
|  |  | 
|  | echo "GPU info (before changing frequency scaling policy):" | 
|  | echo 'policy\t\t\t\t\tcur\tmin\tmax' | 
|  | echo "--------------------------------------------------------------" | 
|  | paste \ | 
|  | "${MALI_GPU_PATH}/power_policy" \ | 
|  | "${MALI_GPU_PATH}/cur_freq" \ | 
|  | "${MALI_GPU_PATH}/min_freq" \ | 
|  | "${MALI_GPU_PATH}/max_freq" | 
|  |  | 
|  | echo "Setting GPU frequency scaling policy to ${POLICY}" | 
|  |  | 
|  | case "$POLICY" in | 
|  | performance) | 
|  | echo "always_on" > "${MALI_GPU_PATH}/power_policy" | 
|  | cat "${MALI_GPU_PATH}/max_freq" > "${MALI_GPU_PATH}/scaling_max_freq" | 
|  | cat "${MALI_GPU_PATH}/max_freq" > "${MALI_GPU_PATH}/scaling_min_freq" | 
|  | ;; | 
|  | default) | 
|  | echo "coarse_demand" > "${MALI_GPU_PATH}/power_policy" | 
|  | cat "${MALI_GPU_PATH}/max_freq" > "${MALI_GPU_PATH}/scaling_max_freq" | 
|  | cat "${MALI_GPU_PATH}/min_freq" > "${MALI_GPU_PATH}/scaling_min_freq" | 
|  | ;; | 
|  | *) | 
|  | echo "Unknown frequency scaling policy: ${POLICY}" | 
|  | exit 1 | 
|  | ;; | 
|  | esac | 
|  |  | 
|  | echo "GPU info (after changing frequency scaling policy):" | 
|  | echo 'policy\t\t\t\t\tcur\tmin\tmax' | 
|  | echo "--------------------------------------------------------------" | 
|  | paste \ | 
|  | "${MALI_GPU_PATH}/power_policy" \ | 
|  | "${MALI_GPU_PATH}/cur_freq" \ | 
|  | "${MALI_GPU_PATH}/min_freq" \ | 
|  | "${MALI_GPU_PATH}/max_freq" |