- 博客(45)
- 资源 (14)
- 收藏
- 关注
原创 OpenCL vs CUDA terminology
Here is a short table summarizing the differences in terminology between OpenCL and CUDAOpenCL CUDAMultiple Platforms NVIDIA onlyWork-Item ThreadWork-Group BlockNDRange GridLocal Memory Shared MemoryPrivate Memory Regist
2024-11-13 15:26:28
103
1
原创 Vector Optimization – Gather Scatter
每个元素都有一个单独的地址,因此不能分组处理它们,并且整个内存系统中的许多地方都可能存在冲突。收集操作采用索引vector并获取其元素位于通过将基地址添加到索引vector中给定的偏移量而给出的地址处的vector。在稀疏矩阵中, vector的元素通常以某种压缩形式存储,然后间接访问。此类操作的目标是支持稀疏矩阵的压缩表示(即不包括零)和正常表示(即包括零)之间的移动。在以密集形式对这些元素进行操作之后,可以使用另一个索引vector ,通过分散存储以扩展形式存储稀疏vector。
2024-11-13 15:22:37
680
原创 Vector Optimization – Stride
vector处理器可以处理大于 1 的步幅(称为非单位步幅) ,仅使用具有步幅功能的vector加载和vector存储操作。增加块大小有助于降低单位步长数据的丢失率,但增加块大小甚至会对使用非单位步长访问的数据产生负面影响。步长值必须动态计算,因为矩阵的大小在编译时可能未知,或者可能因同一语句的不同执行而改变。只要步长和存储体数量互质,并且有足够的存储体来覆盖存储体访问延迟,连续访问就会并行进行。请注意,内存访问的成本很高,并且处理器必须停止,直到获取数据,然后才能移动到下一个跨步位置。
2024-11-13 15:15:36
1239
原创 Vector Optimization – Memory Banks
将访问分散到多个独立的存储体通常可以达到所需的速率。拥有大量的存储体对于处理访问数据行或列的vector加载或存储非常有用。为了支持来自多个加载或存储的同时访问,存储器系统需要多个存储体并且能够独立地控制存储体的地址。与更简单的功能单元不同,启动速率不一定是一个时钟周期,因为存储体停顿会降低有效吞吐量。如果访问不同的存储体,它可以支持 16 个并行访问。大多数vector处理器支持加载或存储不连续的数据字的能力。大多数vector计算机支持多个处理器共享同一内存系统,因此每个处理器将生成自己独立的地址流。
2024-11-13 15:11:51
476
原创 Vector Optimization – Vector Mask Register
vector掩码控件使用布尔vector来控制vector指令的执行。当vector掩码寄存器被使能时,所执行的任何vector指令仅对vector掩码寄存器中的对应条目为1的vector元素进行操作。目标vector寄存器中对应于掩码寄存器中的零的条目不受vector操作的影响。尽管如此,消除分支和相关的控制依赖性可以使条件指令更快(比使用标量模式更快),即使它有时会做无用的工作。使用vector掩码执行的Vector指令仍然需要相同的执行时间,即使对于掩码为零的元素也是如此。
2024-11-13 15:10:22
921
原创 Vector Optimization – Vector-Length Register
我们创建一个循环来处理任意数量的迭代(该迭代次数是 MVL 的倍数),并创建另一个循环来处理任何剩余迭代且必须小于 MVL。vector长度寄存器(VLR) 控制任何vector操作的长度,包括vector加载或存储。vector寄存器处理器具有由每个vector寄存器中的元素数量确定的自然vector长度。最大vector长度(MVL) 决定架构vector中数据元素的数量。特定vector运算的长度在编译时通常是未知的,或者单段代码可能需要不同的vector长度。Strip Mining 露天采矿。
2024-11-13 15:08:47
930
原创 NV 逆向驱动, pci平台,queue分析
分为以下几步, 和amd比较相似,但是channel部分和硬件关联, 猜测NV在fw做queue的load balance。
2023-09-19 10:50:03
1006
原创 GPU-PRT
转载:https://www.anandtech.com/show/5261/amd-radeon-hd-7970-review/6。
2023-08-30 16:04:52
168
原创 Cache bookdoor
A TLB (Translation Lookaside Buffer) is a cache of the translations from virtual memory addresses to physical memory addresses. When a processor changes the virtual-to-physical mapping of an address, it needs to tell the other processors to invalidate that
2023-06-13 10:09:51
109
原创 linux kernel GPU Scheduler . RR算法 FIFO entity, dma-fence, job dependency, vmid
RR的GPU schedule
2023-01-10 09:43:29
346
翻译 DRM vulkan同步(dma fence)机制 Sync Objects
gpu vulkan 同步机制 fence dma-fence , anno file
2023-01-10 09:41:56
1017
原创 Graphic’s文档
hi,这是我用百度网盘分享的文件~复制这段内容打开「百度网盘」APP即可获取。链接:https://pan.baidu.com/s/19RBlyfW4XW-NGi75W1CMHQ提取码:bzda
2022-03-31 23:31:11
180
原创 doorbell机制
在学习中断相关的知识时,查看了Wikipedia上的解释https://en.wikipedia.org/wiki/InterruptIn a push button analogy applied to computer systems, the term doorbell or doorbell interrupt is often used to describe a mechanism whereby a software system can signal or notify a comput
2021-11-09 10:14:38
5444
原创 intel NUC 11 使用linux系统 的面板headphone 问题
目前5.10的内核估计是只能 加规则sudo vim /etc/udev/rules.d/51-Realtek-Jackdetect.rules{15:51}~ ➭ cat /etc/udev/rules.d/51-Realtek-Jackdetect.rulesACTION=="add", SUBSYSTEM=="sound", ATTRS{chip_name}=="ALC256", ATTR{hints}="jack_detect=false"ACTION=="add", SUBSYSTEM=
2021-10-16 15:52:14
344
原创 mesa 资料
mesa好的帖子https://blogs.igalia.com/itoral/2014/07/29/a-brief-introduction-to-the-linux-graphics-stack/
2021-05-20 16:25:29
234
原创 OpenGL 4.6 comp spec chapter 1-3
文章目录1. Introduction 简介1.1 Formatting of the OpenGL Specification OpenGL规范的格式1.1.1 Formatting of the Compatibility Profile 兼容性配置文件的格式1.1.2 Formatting of Optional Features 可选功能的格式1.2 What is the OpenGL Graphics System? 什么是OpenGL图形系统1.2.1 Programmer’s Vi
2021-05-13 11:37:59
1448
转载 linux 使用set_task 杀死D状态进程
如何杀死D状态进程https://blog.youkuaiyun.com/VincentLuo91/article/details/72625446#include <linux/init.h> #include <linux/kernel.h> /*Needed by all modules*/#include <linux/module.h> #include <linux/sched.h> //for_each_process MODULE_LICENS
2021-03-18 10:51:24
620
原创 ww_mutex 一种伤害自己保证资源可靠性的锁
参考链接知乎对mutex知乎对ww_mutexlwn社区解释另外注解内核doc ww_mutex
2021-02-26 09:32:57
1245
原创 CEA-861-D infoframe
1. infoframe是什么?Various types of auxiliary data can be carried from the Source to the DTV Monitor using InfoFrames. Thissection describes the InfoFrames that have been defined so far将source端的auxiliary信息通过接口发送到sink端。sink端应通过CEA扩展在其EDID中包括与接口相关的(例如HDMI)V
2021-02-19 15:10:04
3682
原创 CEA-861-D 术语定义
Active Format Description (AFD)—A data structure that describes what portion of the picture actuallycontains useful information (i.e., letterbox and sidebars [bars] are not considered useful information). It isstandardized in DVB, and is partially adopt.
2021-02-19 11:24:13
2774
原创 分析amdgpu display 的 irq service
分析irq servicedal: Data Access Layer 数据访问层在irq_service中的irq_service_interface.h头文件中可以看出,irq_service是向外提供中断源操作函数函数,在内部实现寄存器操作在irq_service.h又知道这个头文件是让client进行数据注册以上,我们就可以了解到。irq_service想为了以后实现一个中间层,抽象出后续寄存器操作。中断的操作,其主要分dal_irq_service_set,dal_i
2021-01-21 10:00:18
694
2
原创 VGA switcheroo VGA仲裁器
文章目录VGA SwitcherooModes of Use“使用方式Manual switching and manual power control手动开关和手动电源控制Driver power controlAPIPublic functionsPublic structuresPublic constantsPrivate structuresHandlersapple-gmux HandlerGraphics muxPower controlBacklight controlPublic func
2021-01-13 16:03:39
1426
原创 AMDGPU内核驱动的pageflip实现
amd使用状态机维护了pageflip的三个状态。AMDGPU_FLIP_NONE当前工作队列为空AMDGPU_FLIP_SUBMITTED当前队列运转, 提交了任务AMDGPU_FLIP_PENDING当前工作队列正在运转1. 通过libdrm从上到下查看代码流程test_page_fliplibdrm通过drmModePageFlip(DRM_IOCTL_MODE_PAGE_FLIP)发pageflip通过select等待event重复2. 内核驱动运转模式主要分
2020-12-29 11:23:35
984
原创 KMALLOC PK VMALLOC
KMALLOC PK VMALLOCkmalloc是基于slab的,所以速度比较快。vmalloc的内部会调用到kmalloc,但是只是分配vm_struct描述符,和分配nr_pages指针数组,这个数组里的每个元素指向vm_struct对应的非连续内存区域的每一个页描述符结构。真正的分页是通过alloc_page一页一页的从buddy system分配。所以物理地址是不连续的,一页一页分配物理地址不一定啥地方了。kmalloc分配的页已经映射好了,而vmalloc分配后一级一级建立页表很是麻烦。
2020-12-15 20:16:29
282
原创 对ip blocks的理解
case CHIP_POLARIS10:case CHIP_POLARIS11:case CHIP_POLARIS12:case CHIP_VEGAM:这系列的ip_blocks注册的有: amdgpu_device_ip_block_add(adev, &vi_common_ip_block); amdgpu_device_ip_block_add(adev, &gmc_v8_1_ip_block); amdgpu_device_ip_bloc
2020-09-01 11:58:05
1741
原创 Amdgpu device ip early init
ip的意思是 Intellectual Property , 是知识产权,可以理解成不同的架构有不同的设计方式.所以抽象出来,通过宏去访问.在初始化时,按照asic的形式注册(在radeon的代码中是用的asic. 猜测全称是application specific integrated circuit, 目的是给不同框架使用对应api.)我们以CHIP_POLARIS10进行分析, POLARISI10还属于VEGA之前的架构,分析起来没那么累在函数入口,POLARISI10的family设置成AMD
2020-09-01 11:54:34
715
原创 分析AMDGPU DCE系列(POLARIYS10)驱动初始化(二. load)
这里的load本意就是将设备hw初始化.先做admgpu实例化,再amdgpu_device_init对应CHIP初始化.接着做了amdgpu_acpi_init,主要需要理解的是amdgpu_device_ini值得注意的是,到现在flags还是pci注册时传下来的,没发生变化实例化adev.amdgpu_device_init这里主要有几点:adev->flags = flags;保存了设备初始化的flagsadev->asic_type = flags & AMD.
2020-09-01 11:40:16
1724
原创 分析AMDGPU DCE系列(POLARIYS10)驱动初始化(一. probe)
1. 故事从从PCI初始化说起关于drm_driver和drm_device是对drm设备的抽象,我们就不在这赘述了.有兴趣的,可以去内核doc中学习drm_device具体是什么.h2. PCI/PCIE的初始工作目前市面上使用的设备基本上都是PCI的,较少的设备还是使用的platform(估计是上古神兽了).那PCI是怎么初始化的就不在本文赘述,感兴趣的同学可以去内核中driver/pci文件中看一下TIP:arch下边会有对pci扫描的过程,可以结合起来,容易理解在amdgpu的初始化时候a
2020-09-01 11:18:52
1329
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人