- 博客(8)
- 收藏
- 关注
原创 C++ vs Go
1. 内存管理C++C++的内存分配和释放由malloc管理,空闲内存块被保存在链表中,链表的节点信息和空闲块的信息保存在空闲块的开头; 被释放的内存不会马上交还给操作系统,而是按大小加入不同的链表中以便再次分配,fast_bin, small_bin, large_bin; 当链表中和top chunk都找不到或切割出合适的空闲块时,调用brk()(主分配区),或者mmap分配新的一片内存; 每个线程分配内存时,都会锁定一个分配区,以防止不同线程同时分配的冲突;Go程序启动时会向操作系
2020-07-09 22:39:23 710
原创 Linux堆内存管理glibc
1. struct _heap_info, struct malloc_state和struct malloc_chunktypedef struct _heap_info{ mstate ar_ptr; /* Arena for this heap. */ struct _heap_info *prev; /* Previous heap. */ si...
2020-05-23 14:59:08 249
原创 epoll和select/poll源码层上的区别
预备知识文件描述符fd,inode和file结构体inode:位于内存中的文件索引节点,是linux管理文件的基本单位,对于磁盘中的一个文件或设备内核中只有一个inode,其数据成员的信息取自磁盘上的文件系统;dentry:目录项,是目录树的基本单元,与inode是多对一的关系,因为创建硬链接就会产生新的目录项,但inode却不变;file:内核打开文件时创建,关闭时释放,用来标识...
2020-05-04 21:33:27 260
原创 CUDA tips
1. 尽量对global memory读写时采用连续地址的读写。2. 多个thread对一个地址的数据操作并不互斥,因此可能会产生计算错误。3. 原子操作可以解决上述问题,但原子操作的类型有限,且不保证各thread的执行顺序。4....
2020-04-24 00:13:37 131
原创 python数据处理常用类和函数
总结实际应用中python数据处理时常用的一些类和函数,持续更新...一,文件读取pandas.read_csv('filename')返回一个DataFrame。二,数据定位,选中DataFrame[ "label" or ["label1", "label2", ...] or [row1,row2,..]]选中指定标签列或指定行。DataFrame["lab...
2019-12-20 23:26:35 217
原创 CUDA sample学习笔记(一)reduction
1. seperated threads and interleaved addressingtemplate <class T>__global__ void reduce0(T *g_idata, T *g_odata, unsigned int n) { // Handle to thread block group cg::thread_block cta = ...
2019-11-29 15:01:32 1060
原创 CUDA 踩坑
最近踩的坑1. 声明using namespace nvcuda的时候,编译要加上-arch=sm_70选项。2. 给half类型变量赋常量的时候必须加小数点,不然赋值完就是0。3. kernel的时候用到动态shared memory,结果在给shared memory赋值的时候一直报错“an illegal memory access was encountered”原因:...
2019-11-19 15:15:42 752
原创 在cuda中使用tensor core计算GEMM(上)
从CUDA9.0开始就已经支持代码中调用tensor core进行计算,tensor core是NVIDIA的volta架构中新处理单元,分布于各个流处理器(SM)中,其在物理层支持如下形式的运算:其中矩阵乘法中的A,B数据类型必须为FP16,而累加矩阵C和最终输出数据类型可以为FP16也可以为FP32。要在自己的kernel中使用tensor core必须包含头文件mma.h,...
2019-10-12 01:17:19 6145 6
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人