【Qcom Camera】后主摄启动慢问题分析

问题描述:进入WiFi设置,在右侧添加二维码图标后启动相机,相机启动较慢,经分析发现configure_stream延迟
解析:

log分析如下:
[start configure_stream]:
 

06-22 05:57:37.499   808   808 I CamX    : [ INFO][HAL    ] camxhal3.cpp:1023 configure_streams() Number of streams: 1
06-22 05:57:37.499   808   808 I CamX    : [CONFIG][HAL    ] camxhal3.cpp:1080 configure_streams() HalOp: Begin CONFIG: 0x7ce62775d0,logicalCameraId: 0, cameraId: 0
06-22 05:57:37.499   808   808 I CamX    : [ INFO][HAL    ] camxhal3.cpp:1108 configure_streams()   stream[0] = 0x7ce6004508 - info:



[configure_stream end]:
 

06-22 05:57:39.161   808   808 I CamX    : [ INFO][HAL    ] camxhaldevice.cpp:1886 InitializeRequestLogger() m_pStreamsHeader S0[Rcvd/StatusOK/BufErrNotify](0x7ce6004508)[0] ##
06-22 05:57:39.161   808   808 I CamX    : [CONFIG][HAL    ] camxhal3.cpp:1176 configure_streams()  FINAL stream[0] = 0x7ce6004508 - info:



由此看出camera启动慢的原因在于configure_stream耗时近2s

进一步log分析,在CreateAndSubmitCommand方法中cmdType为8阶段耗时严重,通过排查cmdType为8是SPC OTP Setting

06-28 06:33:43.561 17262 17288 E CamX    : [ERROR][SENSOR ] camxsensornode.cpp:3348 CreateAndSubmitCommand() cmdType 8
06-28 06:33:43.561 17262 17288 V CamX    : [ VERB][SENSOR ] camxsensornode.cpp:3411 CreateAndSubmitCommand() IN Submit!
06-28 06:33:44.242 17262 17288 V CamX    : [ VERB][SENSOR ] camxsensornode.cpp:3414 CreateAndSubmitCom mand() out Submit! result 0


SPC为eeprom中的校准数据,通过调查对应的xml文件看到delay被设置为500ms,经过与FAE沟通将delay设置为10ms,相机启动慢的问题得到解决,与对比机启动速度一致。
 

/mm-camerasdk / oem/qcom/eeprom/xx_ov64b40_gt24p128c_eeprom.xml
<SPC>
<delay>10</delay>
</SPC>

### CUDA 核心与 Tensor 核心的区别及用途 #### CUDA 核心的特点及其应用领域 CUDA 核心是 NVIDIA GPU 中最基本的处理单元,负责执行浮点整数运。这些核心广泛应用于图形渲染以及通用计任务中。对于深度学习而言,CUDA 核心可以支持神经网络中的各种操作,如激活函数、池化层等非矩阵乘法密集型的任务。 ```cpp // 示例:使用 CUDA 核心实现简单的向量加法 __global__ void vectorAdd(const float* A, const float* B, float* C, int numElements) { int idx = blockDim.x * blockIdx.x + threadIdx.x; if (idx < numElements) C[idx] = A[idx] + B[idx]; } ``` #### Tensor 核心的功能特性及其应用场景 Tensor 核心专为加速机器学习工作负载而设计,特别是针对张量(多维数组)间的快速矩阵运进行了优化。自 Volta 架构引入以来,经过多次迭代改进,在最新的 Hopper 架构下已经进化至第四代[^2]。相比于传统 CUDA 核心,Tensor 核心能够显著提高涉及大量并行线性代数运的工作效率,例如卷积神经网络训练过程中的前向传播与反向传播阶段。 ```cpp // 使用 wmma 库调用 Tensor 核心进行矩阵乘法 #include <cuda_fp16.h> #include <mma.h> using namespace nvcuda; void matrixMultiplication() { // 定义矩阵维度其他参数... // 加载输入数据到共享内存 __shared__ half shared_A[...], shared_B[...]; // 创建 fragment 对象存储中间结果 wmma::fragment<wmma::matrix_a, 16, 16, 16, half, wmma::row_major> a_frag; wmma::fragment<wmma::matrix_b, 16, 16, 16, half, wmma::col_major> b_frag; wmma::fragment<wmma::accumulator, 16, 16, 16, float> c_frag; // 将数据加载到 fragments 并执行 MMA 操作 wmma::load_matrix_sync(a_frag, shared_A, ...); wmma::load_matrix_sync(b_frag, shared_B, ...); wmma::mma_sync(c_frag, a_frag, b_frag, c_frag); // 存储最终结果 wmma::store_matrix_sync(..., c_frag, ..., wmma::mem_row_major); } ``` 通过上述对比可以看出,虽然两者都属于 GPU资源的一部分,但在具体功能定位上存在明显差异——CUDA 核心更侧重于满足多样化的一般性需求;而 Tensor 核心得益于其高度专业化的设计理念,在特定类型的高性能计场景尤其是现代深度学习框架内展现出无可比拟的优势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cam_Rxy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值