当前位置:首页>java>CUDA推理技术介绍一些小点(代码是官方示例改的)

CUDA推理技术介绍一些小点(代码是官方示例改的)

  • 2026-02-05 00:56:47
CUDA推理技术介绍一些小点(代码是官方示例改的)

引言

在深度学习推理领域,CUDA编程技术的掌握已成为工程师提升模型性能的关键技能。随着模型规模不断扩大和实时性要求日益严格,如何充分利用GPU的并行计算能力成为技术挑战。本文将从CUDA架构原理出发,深入探讨推理优化的核心技术路径,分享实用的编程技巧和实战经验,帮助读者构建高效的深度学习推理系统。

一、CUDA架构与并行计算基础

1.1 GPU硬件架构演进

现代NVIDIA GPU基于SIMT(Single Instruction Multiple Threads)架构,通过大规模并行线程实现高性能计算。以RTX 4090为例,其包含16384个CUDA核心,分为多个SM(Streaming Multiprocessor),每个SM具备独立的共享内存、寄存器文件和调度单元。
图1: NVIDIA GPU硬件架构层次化布局示意图
// 获取GPU设备信息示例cudaDeviceProp prop;cudaGetDeviceProperties(&prop, 0);printf("GPU: %s\n", prop.name);printf("SM数量: %d\n", prop.multiProcessorCount);printf("每SM的CUDA核心数: %d\n"       prop.maxThreadsPerMultiProcessor);printf("全局内存: %.2f GB\n"       prop.totalGlobalMem / (1024.0 * 1024.0 * 1024.0));

1.2 线程层次与内存模型

CUDA采用层次化的线程组织方式:
  • 线程(Thread)
     : 最小执行单元
  • 线程块(Block)
     : 共享共享内存,通过同步屏障协作
  • 线程网格(Grid)
     : 包含多个线程块
图2: CUDA kernel从CPU到GPU的完整执行流程
内存访问层次对性能至关重要:
  • 寄存器
    : 最快访问速度,每个线程私有
  • 共享内存
    : 低延迟高带宽,块内线程共享
  • 全局内存
    : 大容量但高延迟,所有线程可访问
  • 常量内存与纹理内存
    : 特殊用途的只读内存
__global__ voidmatrixMulKernel(float* A, float* B, float* C,                                int width) {    // 使用共享内存优化矩阵乘法    __shared__ float ds_A[TILE_SIZE][TILE_SIZE];    __shared__ float ds_B[TILE_SIZE][TILE_SIZE];    int bx = blockIdx.x;    int by = blockIdx.y;    int tx = threadIdx.x;    int ty = threadIdx.y;    // 计算全局索引    int row = by * TILE_SIZE + ty;    int col = bx * TILE_SIZE + tx;    float sum = 0.0f;    // 分块计算    for (int i = 0; i < (width + TILE_SIZE - 1) / TILE_SIZE; ++i) {        // 加载数据到共享内存        if (row < width && i * TILE_SIZE + tx < width)            ds_A[ty][tx] = A[row * width + i * TILE_SIZE + tx];        else            ds_A[ty][tx] = 0.0f;        if (i * TILE_SIZE + ty < width && col < width)            ds_B[ty][tx] = B[(i * TILE_SIZE + ty) * width + col];        else            ds_B[ty][tx] = 0.0f;        __syncthreads();  // 同步确保数据加载完成        // 计算部分乘积        for (int k = 0; k < TILE_SIZE; ++k)            sum += ds_A[ty][k] * ds_B[k][tx];        __syncthreads();  // 同步确保计算完成    }    // 写入结果    if (row < width && col < width)        C[row * width + col] = sum;}

二、深度学习推理优化核心策略

2.1 内存访问优化

合并访问模式
内存合并访问是提升性能的关键。相邻线程应访问连续的内存地址,充分利用内存带宽。
// 优化前: 非合并访问__global__ voidbad_access(float* data) {    int idx = threadIdx.x + blockIdx.x * blockDim.x;    // 跨步访问,导致内存访问效率低下    data[idx * 4] *= 2.0f;  }// 优化后: 合并访问__global__ voidgood_access(float* data) {    int idx = threadIdx.x + blockIdx.x * blockDim.x;    // 连续访问,充分利用内存带宽    data[idx] *= 2.0f;}
共享内存利用
对于频繁访问的数据,使用共享内存可显著减少全局内存访问延迟。
__global__ void convolution_shared(float* input, float* filter,                                    float* output, int width,                                    int height, int filter_size) {    extern __shared__ float shared_data[];    int tx = threadIdx.x;    int ty = threadIdx.y;    int bx = blockIdx.x;    int by = blockIdx.y;    // 计算输出位置    int output_x = bx * blockDim.x + tx;    int output_y = by * blockDim.y + ty;    // 加载输入数据到共享内存(包含halo区域)    int halo = filter_size / 2;    int load_x = bx * blockDim.x + tx - halo;    int load_y = by * blockDim.y + ty - halo;    // 边界检查    if (load_x >= 0 && load_x < width &&         load_y >= 0 && load_y < height) {        shared_data[ty * (blockDim.x + 2 * halo) + tx] =             input[load_y * width + load_x];    } else {        shared_data[ty * (blockDim.x + 2 * halo) + tx] = 0.0f;    }    __syncthreads();    // 执行卷积计算    if (output_x < width - filter_size + 1 &&         output_y < height - filter_size + 1) {        float sum = 0.0f;        for (int fy = 0; fy < filter_size; fy++) {            for (int fx = 0; fx < filter_size; fx++) {                int local_x = tx + fx;                int local_y = ty + fy;                sum += shared_data[local_y * (blockDim.x + 2 * halo) + local_x] *                       filter[fy * filter_size + fx];            }        }        output[output_y * (width - filter_size + 1) + output_x] = sum;    }}

2.2 计算优化技术

// 使用WMMA API进行Tensor Core计算#include<mma.h>using namespace nvcuda::wmma;__global__ voidtensor_core_gemm(half* a, half* b, float* c,                                  int M, int N, int K) {    // 初始化fragment    wmma::fragment<matrix_a, 161616, half, row_major> a_frag;    wmma::fragment<matrix_b, 161616, half, col_major> b_frag;    wmma::fragment<accumulator, 161616float> c_frag;    // 加载矩阵片段    wmma::load_matrix_sync(a_frag, a, K);    wmma::load_matrix_sync(b_frag, b, K);    // 矩阵乘累加    wmma::mma_sync(c_frag, a_frag, b_frag, c_frag);    // 存储结果    wmma::store_matrix_sync(c, c_frag, N, mem_row_major);}
指令级并行优化
通过增加指令级并行度,隐藏延迟,提升计算资源利用率。
__global__ voidilp_optimized_kernel(float* data, int size) {    int idx = threadIdx.x + blockIdx.x * blockDim.x * 4;    int stride = blockDim.x * gridDim.x;    // 展开4次循环,增加指令级并行    for (int i = idx; i < size; i += stride * 4) {        float v0 = data[i];        float v1 = data[i + stride];        float v2 = data[i + stride * 2];        float v3 = data[i + stride * 3];        // 独立计算,减少依赖        data[i] = sqrtf(v0) + 1.0f;        data[i + stride] = sqrtf(v1) + 2.0f;        data[i + stride * 2] = sqrtf(v2) + 3.0f;        data[i + stride * 3] = sqrtf(v3) + 4.0f;    }}

三、高级优化技巧与工程实践

3.1 流(Stream)并发执行

利用CUDA流实现计算与数据传输的重叠,提升整体吞吐量。
class MultiStreamExecutor {public:    MultiStreamExecutor(int num_streams = 4) : num_streams_(num_streams) {        streams_.resize(num_streams_);        events_.resize(num_streams_);        for (int i = 0; i < num_streams_; ++i) {            cudaStreamCreate(&streams_[i]);            cudaEventCreate(&events_[i]);        }    }    ~MultiStreamExecutor() {        for (int i = 0; i < num_streams_; ++i) {            cudaStreamDestroy(streams_[i]);            cudaEventDestroy(events_[i]);        }    }    voidexecuteAsync(void* d_in, void* d_out, size_t size,                      cudaStream_t stream) {        // 异步数据传输        cudaMemcpyAsync(d_in, h_in_, size, cudaMemcpyHostToDevice, stream);        // 异步计算        dim3 block(256);        dim3 grid((size + block.x - 1) / block.x);        process_kernel<<<grid, block, 0, stream>>>(d_in, d_out, size);        // 异步数据回传        cudaMemcpyAsync(h_out_, d_out, size, cudaMemcpyDeviceToHost, stream);    }    voidsynchronize(){        for (int i = 0; i < num_streams_; ++i) {            cudaStreamSynchronize(streams_[i]);        }    }private:    std::vector<cudaStream_t> streams_;    std::vector<cudaEvent_t> events_;    int num_streams_;    void* h_in_;    void* h_out_;};

3.2 图(Graph)优化

CUDA Graph可减少kernel启动开销,特别适用于小batch推理场景。
cudaGraph_t createInferenceGraph(){    cudaGraph_t graph;    cudaGraphCreate(&graph, 0);    // 创建计算节点    cudaGraphNode_t preprocess_node, inference_node, postprocess_node;    // 预处理kernel节点    cudaKernelNodeParams preprocess_params = {0};    preprocess_params.func = (void*)preprocess_kernel;    preprocess_params.gridDim = dim3(3232);    preprocess_params.blockDim = dim3(3232);    cudaGraphAddKernelNode(&preprocess_node, graph, NULL0, &preprocess_params);    // 推理kernel节点    cudaKernelNodeParams inference_params = {0};    inference_params.func = (void*)inference_kernel;    inference_params.gridDim = dim3(6464);    inference_params.blockDim = dim3(1616);    cudaGraphAddKernelNode(&inference_node, graph, &preprocess_node, 1, &inference_params);    // 后处理kernel节点    cudaKernelNodeParams postprocess_params = {0};    postprocess_params.func = (void*)postprocess_kernel;    postprocess_params.gridDim = dim3(3232);    postprocess_params.blockDim = dim3(3232);    cudaGraphAddKernelNode(&postprocess_node, graph, &inference_node, 1, &postprocess_params);    return graph;}// 执行图推理voidexecuteGraphInference(cudaGraph_t graph, cudaGraphExec_t* exec){    // 实例化图    cudaGraphInstantiate(exec, graph, NULLNULL0);    // 启动图执行    cudaGraphLaunch(*exec, 0);    cudaStreamSynchronize(0);}

3.3 精度优化策略

通过混合精度计算和量化技术,在保持精度的同时大幅提升推理速度。
// FP16推理实现__global__ voidfp16_inference(half* input, half* weight, half* output,                               int input_size, int output_size) {    int idx = blockIdx.x * blockDim.x + threadIdx.x;    if (idx >= output_size) return;    half sum = 0.0f;    for (int i = 0; i < input_size; ++i) {        // 使用半精度浮点计算        sum = __hfma(input[i], weight[idx * input_size + i], sum);    }    output[idx] = sum;}// INT8量化推理__global__ voidint8_inference(int8_t* input, int8_t* weight,                               int32_t* output,                               float input_scale, float weight_scale,                              float output_scale,                              int input_size, int output_size) {    int idx = blockIdx.x * blockDim.x + threadIdx.x;    if (idx >= output_size) return;    int32_t sum = 0;    for (int i = 0; i < input_size; ++i) {        // 8位整数累加        sum += input[i] * weight[idx * input_size + i];    }    // 反量化到浮点    output[idx] = (int32_t)(sum * input_scale * weight_scale / output_scale);}

四、性能分析与调试工具

4.1 Nsight Systems分析

使用Nsight Systems进行整体性能分析,识别性能瓶颈。
# 收集性能数据nsys profile --stats=true --trace=cuda,nvtx \  --output=profile_report ./inference_app# 分析关键指标# - GPU利用率# - 内存传输时间# - Kernel执行时间# - 流并发效率

4.2 Nsight Compute优化

# 详细kernel分析ncu --set full ./inference_app# 关注指标:# - DRAM吞吐量# - L1/Shared Memory命中率# - Warp执行效率# - Occupancy

4.3 自定义性能监控

实现轻量级性能监控,便于生产环境调试。
class PerformanceMonitor {public:    voidstart() {        cudaEventCreate(&start_);        cudaEventCreate(&stop_);        cudaEventRecord(start_);    }    voidstop() {        cudaEventRecord(stop_);        cudaEventSynchronize(stop_);        cudaEventElapsedTime(&elapsed_time_, start_, stop_);    }    floatgetElapsedTime() const { return elapsed_time_; }    voidprintReport(const std::string& kernel_name) {        printf("%s: %.3f ms\n", kernel_name.c_str(), elapsed_time_);    }private:    cudaEvent_t start_, stop_;    float elapsed_time_;};// 使用示例PerformanceMonitor monitor;monitor.start();my_kernel<<<grid, block>>>(d_data, size);monitor.stop();monitor.printReport("my_kernel");

五、实战案例:ResNet推理优化

5.1 优化前性能分析

原始ResNet-50推理在RTX 4090上的基准性能:
Batch Size 1: 2.3ms/image
GPU利用率: 45%
内存带宽利用率: 32%

5.2 优化策略实施

  1. Kernel Fusion
    : 将BatchNorm+ReLU融合到Conv层
  2. Shared Memory Tiling
    : 优化卷积计算的内存访问
  3. Tensor Core加速
    : 关键层使用WMMA API
  4. 流水线并行
    : 实现Layer间流水线
// 融合Kernel示例__global__ void fused_conv_bn_relu(    half* input, half* weight, float* bias,    float* bn_mean, float* bn_var, float bn_epsilon,    half* output,     int height, int width, int in_channels, int out_channels) {    // 外部循环    int out_c = blockIdx.z * blockDim.z + threadIdx.z;    int out_y = blockIdx.y * blockDim.y + threadIdx.y;    int out_x = blockIdx.x * blockDim.x + threadIdx.x;    if (out_c >= out_channels || out_y >= height || out_x >= width) return;    // 卷积计算    float conv_sum = 0.0f;    for (int in_c = 0; in_c < in_channels; ++in_c) {        for (int ky = 0; ky < 3; ++ky) {            for (int kx = 0; kx < 3; ++kx) {                int in_y = out_y + ky - 1;                int in_x = out_x + kx - 1;                if (in_y >= 0 && in_y < height && in_x >= 0 && in_x < width) {                    half input_val = input[(in_c * height + in_y) * width + in_x];                    half weight_val = weight[((out_c * in_channels + in_c) * 3 + ky) * 3 + kx];                    conv_sum += __half2float(input_val) * __half2float(weight_val);                }            }        }    }    // BatchNorm + ReLU融合    float mean = bn_mean[out_c];    float var = bn_var[out_c];    float scale = 1.0f / sqrtf(var + bn_epsilon);    float bn_output = (conv_sum + bias[out_c] - mean) * scale;    // ReLU激活    output[(out_c * height + out_y) * width + out_x] =         __float2half(max(0.0f, bn_output));}

5.3 优化效果对比

图3: ResNet-50推理优化前后关键性能指标对比
优化指标
优化前
优化后
提升比例
单图推理延迟
2.3ms
0.8ms
2.9x
GPU利用率
45%
82%
1.8x
内存带宽利用率
32%
68%
2.1x
吞吐量(BS=32)
13,913 img/s
40,000 img/s
2.9x

总结

CUDA推理优化是一个系统工程,需要深入理解硬件架构、精心设计算法、持续性能调优。本文从架构原理、内存优化、计算加速、工程实践四个维度进行了深入探讨,并通过实际案例展示了优化技术的应用效果。
图4: 自动驾驶实时目标检测应用场景

关键要点总结:

  1. 内存优化是基础
    : 合并访问、共享内存利用是性能提升的基础
  2. 计算优化是核心
    : Tensor Core、ILP等技术可显著提升计算效率
  3. 工程实践是保障
    : 流并发、Graph优化等高级技术将理论转化为实际性能
  4. 性能分析是指南
    : 善用Nsight工具定位瓶颈,指导优化方向

随着AI技术的快速发展,CUDA编程技能将在深度学习推理领域发挥越来越重要的作用。希望本文能为读者提供实用的技术指导和启发,助力构建更高效的AI推理系统。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-07 13:37:02 HTTP/2.0 GET : https://f.mffb.com.cn/a/472821.html
  2. 运行时间 : 0.289886s [ 吞吐率:3.45req/s ] 内存消耗:4,733.27kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=959d55303131ba261636628934c08db9
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000935s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001633s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.001474s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.001837s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001555s ]
  6. SELECT * FROM `set` [ RunTime:0.005510s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001707s ]
  8. SELECT * FROM `article` WHERE `id` = 472821 LIMIT 1 [ RunTime:0.018332s ]
  9. UPDATE `article` SET `lasttime` = 1770442622 WHERE `id` = 472821 [ RunTime:0.009435s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 65 LIMIT 1 [ RunTime:0.002270s ]
  11. SELECT * FROM `article` WHERE `id` < 472821 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.003269s ]
  12. SELECT * FROM `article` WHERE `id` > 472821 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.008342s ]
  13. SELECT * FROM `article` WHERE `id` < 472821 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.035442s ]
  14. SELECT * FROM `article` WHERE `id` < 472821 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.021178s ]
  15. SELECT * FROM `article` WHERE `id` < 472821 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.013433s ]
0.291611s