- 博客(203)
- 问答 (1)
- 收藏
- 关注
原创 NVDLA专题15:Runtime environment-核心模式驱动
NVDLA专题15:Runtime environment-核心模式驱动。
2024-09-11 15:29:29 661
原创 NVDLA专题14:Runtime environment-用户模式驱动
NVDLA专题14:Runtime environment-用户模式驱动。
2024-09-10 21:37:05 777
原创 LLVM入门2:如何基于自己的代码生成IR-LLVM IR code generation实例介绍
LLVM入门2:如何基于自己的代码生成IR-LLVM IR code generation实例介绍。
2024-09-08 01:20:23 680
原创 NVDLA专题11:具体模块介绍——CROSS Channel Data Processor
NVDLA专题11:具体模块介绍——CROSS Channel Data Processor。
2024-08-19 13:47:50 277
原创 NVDLA专题10:具体模块介绍——Planar Data Processor
NVDLA专题10:具体模块介绍——Planar Data Processor。
2024-08-16 15:52:57 983
原创 NVDLA专题9:具体模块介绍——Single Point Data Processor
NVDLA专题9:具体模块介绍——Single Point Data Processor
2024-08-15 11:58:40 783
原创 NVDLA专题8:具体模块介绍——Convolution Accumulator
NVDLA专题8:具体模块介绍——Convolution Accumulator
2024-08-14 21:31:13 710
原创 NVDLA专题6:具体模块介绍——Convolution Sequence Controller
NVDLA专题6:具体模块介绍——Convolution Sequence Controller
2024-08-14 18:39:02 378
原创 NVDLA专题3:具体模块介绍——Convolution Pipeline
NVDLA专题3:具体模块介绍——Convolution Pipeline
2024-08-14 16:11:32 1162
原创 C++结构体对齐
对齐机制确保了结构体在内存中的布局是高效的,因为现代计算机的内存访问通常是对齐的,不对齐的访问可能会导致性能下降。此外,某些硬件平台对外设寄存器的访问有特定的对齐要求,不满足这些要求可能导致未定义的行为或性能问题。。
2024-08-09 19:28:12 230
原创 Verilator入门12:仿真玄铁coremark步骤详解
仿真玄铁coremark步骤详解,如何使用verilator编译RTL源代码,如何交叉编译逻辑程序,如何运行整个仿真。
2024-05-13 15:45:48 668
原创 C++实现直接使用初始化列表来实现成员变量初始化
在C++类初始化过程中,我们有的时候希望直接通过参数列表初始化所有的参数,或者像vector一样,我们直接通过vector<int> a{1,2,3,4,5}的方式初始化,那么这种方式是如何实现的呢?就这么简单,当然对于={1,2,3}这种操作也是类似的,只需要重载运算符同样这么传参就可以了。
2024-03-18 23:17:02 217
原创 处理器分支预测(Branch predictor)原理和实现
处理器分支预测(Branch predictor)原理和实现,branch predictor算法实现。
2024-02-25 19:27:41 999
原创 C++类成员初始化顺序(声明初始化,初始化列表初始化和构造函数初始化)
C++类成员初始化顺序(声明初始化,初始化列表初始化和构造函数初始化)。
2023-10-24 10:37:38 1590
原创 C++中constexpr的用法
简单来说声明为constexpr的函数,那么在编译阶段就能得到其返回值,故编译器可以直接将对应位置的函数调用直接转换为函数的返回值,故其实现了和内联函数一样的功能
2023-09-16 16:47:57 318
原创 __builtin_expect, __builtin_unreachable和__builtin_prefetch
__builtin_expect, __builtin_unreachable和__builtin_prefetch用法。
2023-09-06 15:14:39 943
原创 openmpi入门之第一个程序
是默认的通信阈,如果不做其他声明,所有进程都属于这个通信阈,大多数情况下,这已足够用了。一个通信阈内的进程是有序的,每一个进程都有自己唯一的序号,对于有p个进程的通信阈,序号取值为0~p-1,通常我们通过这一序号来决定这个进程负责计算哪一部分任务,是MPI的初始化函数,其会完成所有初始化工作,以备后续MPI库的调用进行处理,该函数需要在调用其他MPI函数之前调用。函数,在MPI中,每一个活动的进程都是某个通信阈中的成员,这里-np 4表示运行时开启了4个进程。函数用来让系统释放分配给MPI的资源。
2023-09-03 22:00:10 351
原创 System Verilog中的packed array和unpacked array
System Verilog中的packed array和unpacked array.
2023-07-25 17:46:36 1125
原创 C++不定参数宏定义(#define XXX (...)表示什么意思)
如果遇到#define XXX (...)这样的宏定义,其实表示的是输入参数不定的情况,本节直接给出实例来说明。
2023-07-03 15:30:41 1398
原创 std::this_thread::yield解析
如果调用std::this_thread::yield函数,当前线程会马上让出当前的CPU时间片,由运行态变为就绪态,但只是说明该线程当前的这次调度运行结束了,该线程会和其他线程一起共同由操作系统调度运行,至于该线程下次什么时候被调度运行,完全取决于系统的调度算法,yield函数并不会影响操作系统对该线程的下一次调度。其实和return效果类似,都是退出,但是对于一个线程来说,在该线程的回调函数调用return函数就会返回,该线程就会结束,而yield并不会,正因为此,yield函数有着特殊的用途。
2023-06-14 00:31:57 755
原创 EDA开源仿真工具verilator入门11: vcd波形文件分析
通过这个简单的例子,可以帮助我们很快的理解vcd波形文件的基本格式。当然还有很多其他的波形文件(fsdb、SHM、VPD等),目前verilator并不支持,如果感兴趣我们后面也可以讨论下,增加相应的内容。我们来看vcd文件的内容,首先会给出层次结构下的所有信号,每有一个新的层次结构都以。表示,且第一个时间戳会保存所有信号的值,之后的时间戳只保存变化的信号值,显然信号的。都是一个时间戳,表示一个新的cycle的开始,每个信号变量通过对应。每一个信号都有一个对应的。都是为了节省空间占用。
2023-06-11 10:59:51 1217 1
原创 perf record对C++程序耗时进行分析
本节将介绍如何使用perf工具的perf record对C++代码进行性能分析,一切操作都是在ubuntu 20下进行。
2023-05-01 23:11:18 3310
空空如也
gpu安装后和集显无法显示
2017-03-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人