- 博客(182)
- 问答 (1)
- 收藏
- 关注
原创 C++实现直接使用初始化列表来实现成员变量初始化
在C++类初始化过程中,我们有的时候希望直接通过参数列表初始化所有的参数,或者像vector一样,我们直接通过vector<int> a{1,2,3,4,5}的方式初始化,那么这种方式是如何实现的呢?就这么简单,当然对于={1,2,3}这种操作也是类似的,只需要重载运算符同样这么传参就可以了。
2024-03-18 23:17:02 164
原创 处理器分支预测(Branch predictor)原理和实现
处理器分支预测(Branch predictor)原理和实现,branch predictor算法实现。
2024-02-25 19:27:41 841
原创 C++中constexpr的用法
简单来说声明为constexpr的函数,那么在编译阶段就能得到其返回值,故编译器可以直接将对应位置的函数调用直接转换为函数的返回值,故其实现了和内联函数一样的功能
2023-09-16 16:47:57 282
原创 __builtin_expect, __builtin_unreachable和__builtin_prefetch
__builtin_expect, __builtin_unreachable和__builtin_prefetch用法。
2023-09-06 15:14:39 454
原创 openmpi入门之第一个程序
是默认的通信阈,如果不做其他声明,所有进程都属于这个通信阈,大多数情况下,这已足够用了。一个通信阈内的进程是有序的,每一个进程都有自己唯一的序号,对于有p个进程的通信阈,序号取值为0~p-1,通常我们通过这一序号来决定这个进程负责计算哪一部分任务,是MPI的初始化函数,其会完成所有初始化工作,以备后续MPI库的调用进行处理,该函数需要在调用其他MPI函数之前调用。函数,在MPI中,每一个活动的进程都是某个通信阈中的成员,这里-np 4表示运行时开启了4个进程。函数用来让系统释放分配给MPI的资源。
2023-09-03 22:00:10 256
原创 System Verilog中的packed array和unpacked array
System Verilog中的packed array和unpacked array.
2023-07-25 17:46:36 425
原创 C++不定参数宏定义(#define XXX (...)表示什么意思)
如果遇到#define XXX (...)这样的宏定义,其实表示的是输入参数不定的情况,本节直接给出实例来说明。
2023-07-03 15:30:41 1035
原创 std::this_thread::yield解析
如果调用std::this_thread::yield函数,当前线程会马上让出当前的CPU时间片,由运行态变为就绪态,但只是说明该线程当前的这次调度运行结束了,该线程会和其他线程一起共同由操作系统调度运行,至于该线程下次什么时候被调度运行,完全取决于系统的调度算法,yield函数并不会影响操作系统对该线程的下一次调度。其实和return效果类似,都是退出,但是对于一个线程来说,在该线程的回调函数调用return函数就会返回,该线程就会结束,而yield并不会,正因为此,yield函数有着特殊的用途。
2023-06-14 00:31:57 574
原创 EDA开源仿真工具verilator入门11: vcd波形文件分析
通过这个简单的例子,可以帮助我们很快的理解vcd波形文件的基本格式。当然还有很多其他的波形文件(fsdb、SHM、VPD等),目前verilator并不支持,如果感兴趣我们后面也可以讨论下,增加相应的内容。我们来看vcd文件的内容,首先会给出层次结构下的所有信号,每有一个新的层次结构都以。表示,且第一个时间戳会保存所有信号的值,之后的时间戳只保存变化的信号值,显然信号的。都是一个时间戳,表示一个新的cycle的开始,每个信号变量通过对应。每一个信号都有一个对应的。都是为了节省空间占用。
2023-06-11 10:59:51 923 1
原创 perf record对C++程序耗时进行分析
本节将介绍如何使用perf工具的perf record对C++代码进行性能分析,一切操作都是在ubuntu 20下进行。
2023-05-01 23:11:18 2016
原创 std::forward功能介绍
之前介绍了移动构造函数和std::move的作用,本小节将基于此介绍相关的std::forward功能。std::forward的作用是:如果参数不是左值引用那么返回右值引用,如果参数是左值引用,不作修改返回,我们将基于move的实例来说明。
2023-02-13 16:27:16 694 1
原创 EDA开源仿真工具verilator入门9:资料总结和最新版本安装
前面的文章已经对verilator相关功能和流程进行了较详细的介绍,由于最近版本更新较多,并且很多粉丝希望有一个更完整的总结,特别是针对最新版本,本节将基于verilator最新版本,对资料和相关内容进行总结,并介绍一下最新版本的安装。
2023-02-05 01:01:09 732
原创 VsCode执行gdb命令查看指针指向的具体派生类内容
之前有介绍过如何使用gdb来查看当前指针具体属于哪个派生类以及派生类的具体内容(gdb查看指针内容),那么对于复杂项目的调试,配合VsCode的断点和单步调试功能(VsCode单步调试),如果能够实时查看当前指针指向的所有内存信息,将大大提升debug的效率,本节将介绍如何实现。
2023-01-19 15:20:19 953
原创 EDA开源仿真工具verilator入门8:verilator 5.0 最新版本仿真玄铁性能对比
verilator最新已经升级到到了5.005,新版本的verilator在功能上更加完善,加入对Semantic Scheduling算法标准的支持,但因此效率肯定会有所损失,本节将接上一节测试最新版本性能变化
2023-01-16 01:13:17 1391 2
原创 EDA开源仿真工具verilator入门7:使用verilator仿真玄铁
EDA开源仿真工具verilator入门,使用verilator仿真玄铁,加快RISC相关设计开发的迭代速度。
2023-01-08 12:08:03 1357 2
原创 C++地址对齐算法:((x + align -1) & ~(align -1))
C++地址对齐算法:((x + align -1) & ~(align -1))。
2023-01-03 23:56:58 561
原创 C++中this+1的使用
C++中我们有时候会遇到类似this+1这种或者类似this+n的用法,乍一看感觉很是不解,那么通常这种用法是什么作用呢,本节来做介绍。
2023-01-01 23:04:07 260
原创 SystemVerilog开源编译解析工具slang入门1:编译和安装
slang是一个软件库,它提供了用于词法分析、语法分析、类型检查和阐述(elaborate) SystemVerilog代码的各种组件。并且附带了一个可执行工具,可以编译和代码检测(lint)任何SystemVerilog项目,也可以用作综合工具、仿真器、代码检测工具(linters)、代码编辑器和重构工具的前端。
2022-10-17 14:00:19 2773 3
原创 C++中的trivivally destructible类和is_trivially_destructible函数
C++中的trivivally destructible类和is_trivially_destructible函数介绍。
2022-08-25 17:54:27 481
空空如也
gpu安装后和集显无法显示
2017-03-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人