资讯详情

无厘头记录CPU, GPU各种参数和开发应用代码变量类型

📅 2026/9/17 11:42:02 | 华诺云谱 👁 阅读
无厘头记录CPU, GPU各种参数和开发应用代码变量类型
无厘头记录一下图形处理 GPU的日志输出含义你的情况queueC2[8] queueG0[16] queueT1[2]Vulkan 计算队列 2 个上限 8、图形队列 0、传输队列 1 个正常NCNN 只用计算队列bugsbn10 bugbilz0 ...驱动已知 bug 标记全 0 无已知问题正常fp16-p/s/a1/1/1半精度浮点 packed/storage/arithmetic 全部支持正常可跑 fp16 模型int8-p/s/a1/1/1int8 量化全部支持正常subgroup32 ...子组大小 32基础 /vote/ballot/shuffle 指令都支持正常bugsbn1 记录在哪里环节位置定义 / 存储ncnnsrc/gpu.cpp中GpuInfo对象的私有成员d-bug_storage_buffer_no_l1这类 bool 变量只存在程序运行时的内存里不写文件、不写注册表判断赋值get_gpu_info()里通过vkGetPhysicalDeviceProperties拿到的vendorID厂商号/deviceID设备号/apiVersion驱动版本判断后置 0 或 1打印旧版 ncnn 的get_gpu_info()里用日志打印出来就是你看到的这行新版 ncnn 已把这行换成别的格式使用Vulkan 后端编译 shader / 申请显存缓冲时调用GpuInfo::bug_storage_buffer_no_l1()等方法决定是否启用绕开方案你的输出全称含义bugsbn1bugstoragebuffernoL1某些驱动如高通 Adreno 老驱动的 storage buffer 不走 L1 缓存ncnn 需要绕开bugbilzbugbufferimageloadzero某些驱动 buffer→image 拷贝会读成 0 的 bugbugcopcbugcorruptedonlinepipelinecache某些驱动在线编译的 pipeline 缓存会损坏bugihfabugimplicithalffp16arithmetic某些驱动如 ARM Mali 旧版不支持隐式 fp16 运算fp16 精度舍入误差很多数在 FP16 里表示不了。比如 0.1 在 FP16 里存成最接近的数相对误差约0.05%FP32 约 0.000006%输出里fp16-p/s/a1/1/1三个开关开关含义对应策略packed2 个 FP16 打包进 1 个 32 位单元省一半带宽 / 寄存器storage数据用 FP16 存计算时转回 FP32保守模式精度几乎无损NCNN 默认偏好arithmeticGPU 直接用 FP16 指令计算激进模式最快误差略大int8 精度《其实还好和fp16 差不多说什么范围 65000很少上面的图又很夸张很负责作用不大其实挺常用的两个变量类型。。。。》subGroup 子指令4条指令指令干什么类比basic同步barrier 广播broadcast一条线程的值复制给全组或全组停下对齐开会时主持人喊 听我说所有人停下听vote组内逻辑判断all全组都满足/any有人满足结果一个布尔全组举手表决只看 全票通过 / 有人赞成ballot把每条线程的布尔结果按位打包成一个 32 位整数bit0lane0…bit31lane31记名投票记录每个人具体投了什么shuffle线程之间直接交换寄存器值不走显存邻座之间直接递纸条不用跑邮局无厘头参考--- Unity 的射线点击检查经常用到一直要重写所以真的就重新写一个暂时只支持鼠标之后支持点击后再统一封装成Standard Assets重点需要Meshcollider支持不确定。。。单独开一个gameObject挂下面的脚本using System; using System.Collections; using System.Collections.Generic; using UnityEngine; [ExecuteInEditMode] public class RaycastController : MonoBehaviour { private Camera Camera_main; private void Awake() { if (gameObject.name ! RaycastController) gameObject.name RaycastController; } void Start() { Camera_main Camera.main; } // Update is called once per frame void Update() { var mouseDown Input.GetMouseButton(0); if(mouseDown) { Debug.Log(鼠标向下); Ray ray Camera_main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if(Physics.Raycast(ray,out hit)){ Debug.Log(response ??? hit.point); } } } }
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。