乐于分享
好东西不私藏

CUDA 三维模板计算:从有限差分到高性能实现

CUDA 三维模板计算:从有限差分到高性能实现

一、为什么需要模板计算?

科学计算中最核心的任务之一,是对 偏微分方程(PDE 求数值解。 以三维热传导方程为例:

其中  是温度场, 是热扩散系数。 这类方程在计算流体力学、地震模拟、电磁场仿真中无处不在。 要在计算机上求解它,必须先完成两步转化。

1.1 离散化:

将连续的物理空间切分成规则点阵,每个格点存储一个数值,这就是离散化。 三维问题对应边长为  的立方体网格,共  个格点,格距为 

1.2 有限差分

离散化之后,连续导数无法直接计算,需要用邻点函数值来近似。 对  关于  的二阶导数,利用泰勒展开:

两式相加,消去奇数项,得到二阶精度的中心差分公式

差分阶数越高,需要的邻点越多,精度也越高。 下图展示了一维情况下,一阶(3点)、二阶(5点)、三阶(7点)模板随阶数增加邻点增多的过程:

一维模板阶数示意

图 1:一维差分模板的阶数对比。(A) 一阶:中心点 + 左右各 1 个邻点,共 3 点; (B) 二阶:中心点 + 左右各 2 个邻点,共 5 点; (C) 三阶:中心点 + 左右各 3 个邻点,共 7 点。 阶数越高,差分截断误差越小,但每次计算依赖的邻点越多,访存开销也越大。

将三个方向的差分公式代入拉普拉斯算子,对网格点  有:

三维七点模板的本质就是 每个输出点是中心点加上 六个轴向邻点的加权和,权系数由差分精度决定。


二、模板计算的基本原理

概念
含义
离散化
连续函数场 → 规则网格点阵,只保留格点数值
模板运算
用中心点及其邻点值,近似计算该点的导数或更新值
模板遍历
将模板规则作用于全部有效格点,批量计算整个输出场

常见模板类型

根据维度和阶数的不同,模板形状差异显著:

二维与三维模板类型

图 2(Figure 8.3):常见模板形状对比。 (A) 二维五点模板(一阶):中心 + 上下左右 4 邻点,用于二维泊松/热传导方程; (B) 二维九点模板(二阶):中心 + 上下左右各 2 邻点,每轴向精度更高; (C) 三维七点模板(一阶):中心 + 前后左右上下 6 邻点,三维 PDE 最常用; (D) 三维 13 点模板(二阶):每轴向取 2 个邻点,共 12 邻点 + 中心,精度更高。 深色圆点为中心点(当前计算目标),浅色圆点为参与加权求和的邻点。


三、模板计算CUDA 核函数实现

3.1 从网格到一维内存:寻址方式

GPU 内存本质上是一维线性空间,二维/三维网格需要手动线性化存储。 如下图所示,对于二维情形,五点模板的中心点(蓝色)在线性内存中的位置 并不相邻于其上下邻点,访问时需要额外的跨行跳转:

二维网格与线性内存的对应关系

图 3(Figure 8.4):二维网格的存储方式与五点模板的内存访问模式。 上方: 网格中,蓝色为输入模板涉及的点(中心 + 4 邻点), 绿色为对应的输出点。 下方: 网格以二维数组形式存储时, 中心点的左右邻点在内存中连续,而上下邻点则相距一整行(步长为 )。 这说明同一 warp 内的线程若沿行方向(k 方向)分配, 可实现合并访问;而跨行访问(j 或 i 方向)则会产生非连续访存。

三维情形下,坐标  的线性下标为:

 方向在内存中连续,因此应将  映射到 threadIdx.x, 让同一 warp 的 32 个线程访问连续地址,实现合并访问(coalesced access)

3.2 核函数结构

三维七点模板的基础实现思路非常直接:一个线程负责一个网格点

// 差分系数(由差分精度推导,此处为拉普拉斯算子归一化示例)__constant__ float c0 = -6.0f, c1 = 1.0f, c2 = 1.0f;__constant__ float c3 = 1.0f,  c4 = 1.0f, c5 = 1.0f, c6 = 1.0f;__global__ void stencil_kernel(const float* __restrict__ in, float* out,unsigned int N){// 将线程ID映射到三维坐标unsigned int k = blockIdx.x * blockDim.x + threadIdx.x;  // x方向(内存连续方向)unsigned int j = blockIdx.y * blockDim.y + threadIdx.y;  // y方向unsigned int i = blockIdx.z * blockDim.z + threadIdx.z;  // z方向// 只处理内部点,跳过边界if (i >= 1 && i < N-1 && j >= 1 && j < N-1 && k >= 1 && k < N-1) {        out[i*N*N + j*N + k] =            c0 * in[i*N*N + j*N + k]           // 中心点          + c1 * in[i*N*N + j*N + (k-1)]       // x-1          + c2 * in[i*N*N + j*N + (k+1)]       // x+1          + c3 * in[i*N*N + (j-1)*N + k]       // y-1          + c4 * in[i*N*N + (j+1)*N + k]       // y+1          + c5 * in[(i-1)*N*N + j*N + k]       // z-1          + c6 * in[(i+1)*N*N + j*N + k];      // z+1    }}

3.3 几个细节说明

边界处理:跳过最外层一圈点,防止越界。 实际工程中边界条件通常单独设置(Dirichlet、Neumann 等)。

__restrict__ 修饰:告知编译器 in 和 out 不存在指针别名, 有助于编译器生成更优化的内存访问指令。


四、性能瓶颈分析

4.1 运算访存比

分析基础核函数的计算强度:

  • 每个输出点:7 次乘法 + 6 次加法 = 13 FLOPs
  • 内存访问:读取 7 个 float(28 字节)+ 写入 1 个 float(4 字节)= 32 字节
访

现代 GPU(如 A100)的峰值算力约 312 TFLOPS(FP32),内存带宽约 2 TB/s, 理论机器屋脊线 ≈ 156 OP/B。0.41 OP/B 距此相差约 380 倍, 属于极度内存带宽受限的计算,GPU 的计算单元大量空转。

4.2 与卷积的对比

模板计算与卷积的根本区别在于邻域形状: 模板只取坐标轴方向的点(稀疏),卷积取整块方形邻域(密集)。

计算类型
输入点数
FLOPs
理论访存比上限
二维五点模板
5
9
~2.3 OP/B
3×3 二维卷积
9
18
~4.5 OP/B
三维七点模板713~3.25 OP/B
3×3×3 三维卷积
27
54
~13.5 OP/B
三维三阶 19 点模板
19
37
~9.25 OP/B

"理论访存比上限"指在完全数据复用假设下(每个输入字节只从内存读一次)的上限值。 维度和阶数越高,模板与同规模卷积的差距越大。


五、共享内存分块优化

5.1 基本思路

GPU 的共享内存(Shared Memory)位于片上,延迟约 1~5 ns, 是全局内存(~300 ns)的 100 倍以上。分块优化的思路是:

  1. 将输出网格划分为若干 Output Tile(输出块)
  2. 每个线程块负责计算一个输出块,先将对应的**输入块(含 Halo)**整体搬入共享内存
  3. 在共享内存上完成全部模板计算,避免反复访问全局内存

输入块 vs 输出块的关系如下图所示:

分块输入输出的 Halo 关系

图 4:二维五点模板下,输入块(蓝色)与输出块(绿色)的关系示意。 深蓝色区域为输出块(Output Tile),浅蓝色外圈为Halo 区域, 即模板计算所额外依赖的边缘邻点。 右图绿色为最终写入的输出块,输出块的边长比输入块小 2(每侧各缩 1)。 三维情形下,Halo 扩展到六个面,输入块边长 

5.2 分块核函数实现

#define OUT_TILE_DIM 6#define IN_TILE_DIM  (OUT_TILE_DIM + 2)   // = 8__global__ void stencil_tiled_kernel(const float* __restrict__ in, float* out,unsigned int N){// 全局坐标:减1以让线程块向外扩展一格,覆盖halo区域int k = blockIdx.x * OUT_TILE_DIM + threadIdx.x - 1;int j = blockIdx.y * OUT_TILE_DIM + threadIdx.y - 1;int i = blockIdx.z * OUT_TILE_DIM + threadIdx.z - 1;    __shared__ float in_s[IN_TILE_DIM][IN_TILE_DIM][IN_TILE_DIM];// 阶段一:所有线程协作将输入块(含halo)加载到共享内存if (i >= 0 && i < (int)N && j >= 0 && j < (int)N && k >= 0 && k < (int)N) {        in_s[threadIdx.z][threadIdx.y][threadIdx.x] = in[i*N*N + j*N + k];    } else {        in_s[threadIdx.z][threadIdx.y][threadIdx.x] = 0.0f;  // 边界外填零    }    __syncthreads();  // 必须等所有线程完成加载// 阶段二:只有输出块内部线程(去掉halo层)执行计算if (i >= 1 && i < (int)N-1 &&        j >= 1 && j < (int)N-1 &&        k >= 1 && k < (int)N-1) {if (threadIdx.z >= 1 && threadIdx.z < IN_TILE_DIM-1 &&            threadIdx.y >= 1 && threadIdx.y < IN_TILE_DIM-1 &&            threadIdx.x >= 1 && threadIdx.x < IN_TILE_DIM-1) {            out[i*N*N + j*N + k] =                c0 * in_s[threadIdx.z  ][threadIdx.y  ][threadIdx.x  ]              + c1 * in_s[threadIdx.z  ][threadIdx.y  ][threadIdx.x-1]              + c2 * in_s[threadIdx.z  ][threadIdx.y  ][threadIdx.x+1]              + c3 * in_s[threadIdx.z  ][threadIdx.y-1][threadIdx.x  ]              + c4 * in_s[threadIdx.z  ][threadIdx.y+1][threadIdx.x  ]              + c5 * in_s[threadIdx.z-1][threadIdx.y  ][threadIdx.x  ]              + c6 * in_s[threadIdx.z+1][threadIdx.y  ][threadIdx.x  ];        }    }}

5.3 代码细节说明

坐标偏移 -1 的threadIdx.x = 0 对应输入块左边界 halo 点, threadIdx.x = IN_TILE_DIM-1 对应右边界 halo 点, 中间 [1, IN_TILE_DIM-2] 的线程才对应有效输出点。 偏移 -1 正是让每个线程块的坐标范围向外扩展一格,使线程与共享内存下标对齐。

双重边界判断

  • 第一层:防止加载时访问超出网格 [0, N) 的地址(越界保护)
  • 第二层:确保只有有效内部点(全局坐标在 [1, N-2],且局部坐标排除 halo 层)才写入输出

__syncthreads():这个屏障同步是正确性保证,不是性能优化。 必须等 IN_TILE_DIM³ 个线程全部完成加载,才能进入计算阶段读取共享内存。

5.4 性能提升量化

分块后,每个输入块的数据只从全局内存读取一次,在共享内存上被多个相邻输出点复用。 运算访存比公式:

访

当 (对应 ):

相比基础核函数的 0.41 OP/B,提升约 3.3 倍。 当 ,比值趋向理论上限  OP/B。


六、硬件限制:为什么分块不能做大?

6.1 线程数上限

CUDA 规定单个线程块最多 1024 个线程。三维分块时:

(线程数)
是否可用
8
512
安全
10
1000
接近上限
11
1331
超限

因此实际工程中, 只能取 8 或 10

6.2 共享内存上限

一个 SM 上的共享内存通常为 48~164 KB(视 GPU 型号而定)。三维输入块占用:

三维情形下内存增长是立方级别,即使线程数允许,共享内存也会成为新的瓶颈。

6.3 Halo 开销问题

当 ):

超过一半的全局内存读取发生在 Halo 区域,而 Halo 点不产生输出,对计算毫无贡献。 这是三维模板计算相对于二维情形更难优化的根本原因:维度越高,Halo 占比越大。

6.4 内存访问模式问题

 的线程块在访问  方向邻点时, 一个 warp(32 线程)会跨越多个不连续的内存行,难以实现完美的合并访问, 实际带宽利用率会进一步打折。


七、总结

版本
运算访存比
主要限制
基础核函数
~0.41 OP/B
每点 7 次全局内存读取,无复用
共享内存分块(
~1.37 OP/B
线程数/共享内存/Halo 三重约束
理论上限
~3.25 OP/B
完全数据复用

共享内存分块已将运算访存比提升至 1.37 OP/B,但距离理论上限 3.25 仍有 2.4 倍差距。 三维模板计算始终是内存带宽受限的计算模式,无法通过简单分块突破。

进一步提升性能需要更激进的优化手段:

  • 线程粗化(Thread Coarsening):一个线程负责沿某方向的多个输出点, 在寄存器层面复用相邻层的数据(又称"pencil"优化)
  • 寄存器分块(Register Tiling):将  方向的滑动窗口数据缓存到寄存器, 极大降低对共享内存的依赖
  • 循环展开与指令级并行:结合 #pragma unroll,减少分支开销
  • 异步预取:使用 memcpy_async 隐藏 Halo 数据的加载延迟
基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-29 10:25:32 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/668633.html
  2. 运行时间 : 0.126829s [ 吞吐率:7.88req/s ] 内存消耗:4,744.60kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=e4fcf8ee8eb2a221d59b1bba61028954
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000724s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000897s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000368s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000292s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000474s ]
  6. SELECT * FROM `set` [ RunTime:0.000224s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000562s ]
  8. SELECT * FROM `article` WHERE `id` = 668633 LIMIT 1 [ RunTime:0.000484s ]
  9. UPDATE `article` SET `lasttime` = 1782699932 WHERE `id` = 668633 [ RunTime:0.004397s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000232s ]
  11. SELECT * FROM `article` WHERE `id` < 668633 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000416s ]
  12. SELECT * FROM `article` WHERE `id` > 668633 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000369s ]
  13. SELECT * FROM `article` WHERE `id` < 668633 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000776s ]
  14. SELECT * FROM `article` WHERE `id` < 668633 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.003386s ]
  15. SELECT * FROM `article` WHERE `id` < 668633 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.004620s ]
0.129550s