You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过clGetDeviceInfo()估算GPU性能以分配CPU/GPU工作负载

OpenCL设备计算能力估算与工作负载分配问题

我希望自动决策CPU与GPU之间的工作负载分配,计划遍历所有设备,通过公式 GFLOPS = clock_speed * number_of_cores 粗略估算理论计算能力(注:我知道这非常粗略,不同架构下每种操作的时钟周期数不同,还存在缓存未命中等低效问题,但仍可作为计算能力的大致参考)。

目前我可通过 clGetDeviceInfo() 获取 CL_DEVICE_MAX_CLOCK_FREQUENCY 和 CL_DEVICE_MAX_COMPUTE_UNITS 参数,其中时钟频率1777 MHz合理,但我的NVIDIA GeForce RTX 3060的计算单元数显示为28,与该显卡的核心配置Core Config: 3584 112:48:28:112不符。

查阅OpenCL文档得知:

CL_DEVICE_MAX_COMPUTE_UNITS
The number of parallel compute units on the OpenCL device. A work-group executes on a single compute unit. The minimum value is 1.

于是尝试调整公式为 GFLOPS = CL_DEVICE_MAX_CLOCK_FREQUENCY * CL_DEVICE_MAX_COMPUTE_UNITS * CL_DEVICE_MAX_WORK_GROUP_SIZE,但该公式应用在Intel CPU上时,因CL_DEVICE_MAX_WORK_GROUP_SIZE = 4096会得出CPU性能强于GPU的错误结论。

我已打印clGetDeviceInfo()返回的所有设备参数,但未找到所需信息:

OpenCL platform count 2 
DEVICE[0,0]: NVIDIA GeForce RTX 3060
        VENDOR:         NVIDIA Corporation
        DEVICE_VERSION: OpenCL 3.0 CUDA
        DRIVER_VERSION: 515.86.01
        C_VERSION:      OpenCL C 1.2 
        MAX_COMPUTE_UNITS:    28
        MAX_CLOCK_FREQUENCY:  1777  MHz 
        GLOBAL_MEM_SIZE:      12019 MB  
        LOCAL_MEM_SIZE:       48 kB  
        CONSTANT_BUFFER_SIZE: 64 kB  
        GLOBAL_MEM_CACHE_SIZE:     784 kB 
        GLOBAL_MEM_CACHELINE_SIZE: 128 
        MAX_WORK_ITEM_DIMENSIONS: 3  
        MAX_WORK_GROUP_SIZE:      1024 
        MAX_WORK_ITEM_SIZES:      [1024,1024,1024] 
        MIN_DATA_TYPE_ALIGN_SIZE: 128    
        
DEVICE[1,0]: pthread-Intel(R) Core(TM) i5-10400F CPU @ 2.90GHz
        VENDOR:         GenuineIntel
        DEVICE_VERSION: OpenCL 1.2 pocl HSTR: pthread-x86_64-pc-linux-gnu-skylake
        DRIVER_VERSION: 1.8
        C_VERSION:      OpenCL C 1.2 pocl 
        MAX_COMPUTE_UNITS:    12
        MAX_CLOCK_FREQUENCY:  4300  MHz 
        GLOBAL_MEM_SIZE:      13796 MB  
        LOCAL_MEM_SIZE:       256 kB  
        CONSTANT_BUFFER_SIZE: 256 kB  
        GLOBAL_MEM_CACHE_SIZE:     12288 kB 
        GLOBAL_MEM_CACHELINE_SIZE: 64 
        MAX_WORK_ITEM_DIMENSIONS: 3  
        MAX_WORK_GROUP_SIZE:      4096 
        MAX_WORK_ITEM_SIZES:      [4096,4096,4096] 
        MIN_DATA_TYPE_ALIGN_SIZE: 128   

编辑补充:
通过查阅维基、NVIDIA文档得知,每个计算单元包含128个着色核心(或CUDA核心),但这是需从外部获取的厂商特定信息,我希望仅通过clGetDeviceInfo()返回的信息自动估算计算能力。


内容的提问来源于stack exchange,提问作者Prokop Hapala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 20:38:14