
高性能计算 HPC
文章平均质量分 70
mightbxg
这个作者很懒,什么都没留下…
展开
-
CUDA profiler 配置
变量如果不设置,可能会报 “No CMAKE_CUDA_COMPILER could be found” 的错误。不过这两个变量与具体编译环境相关,所以不建议直接在比较规范的 CMakeLists.txt 里面硬编码。这个编译选项是为了让 cuda 编译器生成源码信息,这样 Nsight Compute 才能找到并显示 C++ 源码,否则只能显示汇编代码。变量如果不设置,可能会报 “Failed to detect a default CUDA architecture” 的错误;原创 2023-05-10 20:07:53 · 1110 阅读 · 0 评论 -
perf 性能调试
perf 安装与使用原创 2022-07-15 20:39:27 · 888 阅读 · 0 评论 -
稀疏 Harris 响应的 C++ 实现及 SSE 加速
前言Harris 响应值可以判断图像上的点是否“像一个角点”,通常用于角点检测,有时候也会在特征提取/匹配/跟踪算法中用于评估特征点质量的好坏,因为角点响应值大的点往往更适合特征匹配或者特征跟踪,OpenCV 的 ORB 检测器就是这样的。具体原理就不细说了,可以参见:Harris角点Harris响应的一点认识归结到公式就是:cov(x,y)=∑(u,v)∈W(x,y)w(u,v)[Iu2IuIvIuIvIv2]R=det(cov)−k∗trace(cov)cov(x,y)=\sum_{(原创 2021-03-09 22:08:46 · 563 阅读 · 0 评论 -
SSE学习-一个小栗子
指令集优化在高性能计算中至关重要,所以用 C/C++ 到后面感觉难免要用上指令集。虽然指令集学习和使用都不太容易,但想一想能够在不增加 CPU 占用的情况下提升数倍计算速度,确实挺诱人的。具体指令集是啥就不多介绍了,几个名词:SIMD: 单指令多数据,即指令集加速技术SSE: Streaming SIMD Extensions, 使用128位寄存器的指令集(Intel)AVX: Advanced Vector Extensions, 使用256位寄存器的指令集(Intel)Neon: ARM 上原创 2020-10-16 12:28:42 · 1204 阅读 · 0 评论 -
利用 CPU 流水线加快数据处理
最近看 OpenCV 源码时注意到一个有意思的地方:template<typename T, size_t BinsOnStack = 0u>static double getThreshVal_Otsu( const Mat& _src, const Size& size){ const int N = std::numeric_limits<T>::max() + 1; int i, j; #if CV_ENABLE_UNROLLED原创 2020-09-24 18:10:44 · 833 阅读 · 0 评论 -
STL容器初始化可以更快
文章目录前言一、容器初始化做了什么?二、取消元素初始化时间消耗1. 将基础数据类型封装成类2. 自定义 allocator总结前言用 C++ 的同学对 STL 容器(vector, map, …)一定不陌生,但很少有人会关注容器初始化的效率。最近在读《并行程序设计 - 概念与实践》1,里面提到当容器元素非常多时,其初始化的时间消耗其实不容小视。一、容器初始化做了什么?std::vector<uint64_t> lst(total);以 vector 为例,上面这行代码定义了一个元素原创 2020-08-26 19:54:53 · 711 阅读 · 0 评论