自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(255)
  • 问答 (1)
  • 收藏
  • 关注

原创 第 463 场周赛(GPT-3,Me-1)

本文探讨了两种算法问题的解决方案:动态规划处理子数组删除问题和根号分治优化区间乘法查询问题。 子数组删除问题:通过动态规划方法,利用前缀和和哈希表优化,寻找可被k整除的连续子数组进行删除,以最小化剩余数组和。时间复杂度为O(n),适用于大规模数据。 区间乘法查询问题:采用根号分治策略,将查询分为大步长和小步长两类处理。大步长直接暴力更新,小步长使用差分数组优化,结合零值标记处理,将时间复杂度从O(nq)优化至O(n√n),适用于高频查询场景。 两种方法均通过数学优化显著提升效率,体现了算法设计中对时间复杂度

2025-08-17 11:38:47 705

原创 理解GPU架构:基础与关键概念

本文概述了GPU的基础架构及其在AI与高性能计算中的核心作用。CPU与GPU的关键区别在于CPU擅长顺序处理,而GPU专为大规模并行计算设计。GPU拥有复杂的内存层次结构(SRAM缓存、DRAM显存和HBM高性能内存),优化数据传输对性能至关重要。Streaming Multiprocessors(SMs)是GPU的基本处理单元,包含多个核心,按warp(32/64核心组)执行指令。为优化性能,需减少内存传输、提高并行度,并使工作负载尺寸匹配warp大小。理解这些机制有助于充分发挥GPU在AI、渲染等任务中

2025-08-15 11:01:37 729

原创 快速掌握 Triton:Python 化的高性能 GPU 编程语言

Triton是OpenAI开源的高性能Python化GPU编程语言,它让开发者能快速编写接近CUDA性能的GPU内核代码。本文介绍了Triton的基本用法和核心优势: Triton通过@triton.jit装饰器定义GPU内核,使用类似NumPy的编程方式,自动处理内存合并、共享内存管理等优化,只需25行代码就能实现与cuBLAS相当的性能。 文章通过向量加法示例展示了Triton编程模型:使用SPMD(单程序多数据)模式,通过程序ID和块大小计算偏移量,利用mask处理边界条件,实现高效的向量化内存访问。

2025-08-15 10:57:45 944

原创 从Triton入门:一步步教程

Triton是一个开源的GPU编程语言和编译器,旨在简化AI和深度学习中的高性能GPU代码编写。本教程介绍Triton的核心功能、安装方法及使用场景。Triton通过Python抽象GPU编程复杂度,自动优化内存访问和线程调度,性能接近专家级CUDA代码,同时提高开发效率。安装部分详细说明Linux(官方支持)、Windows(通过WSL2)和macOS(实验性支持)的配置方法。Triton特别适合需要定制GPU内核的AI研究者,填补了高级框架与底层CUDA之间的空白,是AI加速领域的重要工具。

2025-08-15 10:52:47 653

原创 CUDA 入门教程(GPT优化版)

CUDA编程学习路径与核心概念摘要 本学习路径系统介绍了CUDA编程的入门与进阶方法: 环境搭建:安装CUDA Toolkit,配置VS或VS Code开发环境 核心概念:掌握线程层级(thread→block→grid)、主机-设备协作流程(内存分配→数据传输→kernel调用→结果回传) 实战练习:从向量加法等基础运算逐步过渡到共享内存优化、Tensor Core应用 性能调优:使用Nsight工具分析性能,采用分阶段优化策略 高级应用:PyTorch扩展、CUTLASS库等优化方案 关键编程抽象包括:

2025-08-14 10:12:23 1041

原创 VFIO - “Virtual Function I/O” [ 1 ] ¶

VFIO框架为高性能计算应用提供安全的用户空间设备访问,替代UIO并整合KVM PCI设备分配功能。该框架通过IOMMU保护确保DMA安全,要求用户将设备从主机驱动解绑并绑定到VFIO驱动,形成/dev/vfio/$GROUP设备节点。操作示例展示了如何将PCI设备0000:06:0d.0及其关联设备加入VFIO组,最终通过权限设置允许非特权用户访问。VFIO设备API提供完整的I/O区域描述和中断管理机制,比UIO具有更强的安全性和功能性。

2025-08-05 11:23:17 349

原创 CVA6:支持 Linux 的 RISC-V CPU CORE-V

CVA6 是一款可以启动嵌入式 Linux 映像的 RISC-V CPU。

2025-04-08 12:24:59 669

原创 Asynchronous FIFO异步FIFO 原理及RTL代码实现

在异步FIFO中,数据读取和写入操作使用不同的时钟频率。由于写入和读取时钟不同步,因此称为异步FIFO。通常,这些用于数据需要从一个时钟域传递到另一个时钟域的系统中,这通常被称为“跨时钟域”。因此,异步FIFO有助于同步在不同时钟下工作的两个系统之间的数据流。

2025-03-30 12:36:17 904

原创 逻辑函数化简全解析:公式法与卡诺图法终极指南

在数字电路设计中,逻辑函数的化简是优化电路性能的关键步骤。本文将深入解析公式法(代数化简)与卡诺图法(图形化简)的核心原理、操作步骤及适用场景,辅以实例演示与对比分析,帮助工程师和电子爱好者快速掌握化简技巧,提升设计效率。文末附实战注意事项与工具推荐,助你避开常见误区!

2025-02-15 15:03:21 901

原创 使用与非门设计全加法器:数字电路优化与实现

本文将探讨如何使用与非门(NAND门)实现一个全加法器(Full Adder)。全加法器是数字电路中常见的基本组件,用于实现二进制数的加法。我们将详细介绍如何利用与非门设计异或、与、或等基本逻辑功能,从而构建一个高效的全加法器电路。通过这一过程,读者将理解与非门在数字电路中的广泛应用以及其在硬件实现中的优势。

2025-02-15 11:57:58 2137

原创 union 的定义和基本结构以及用途

`union` 的定义和基本结构以及用途;详细解释

2024-09-15 11:53:02 1402

原创 CISC 和 RISC 架构的对比

研究 RISC 架构优缺点的最简单方法是将其与其前身进行对比: CISC(复杂指令集计算机)架构。

2024-09-11 09:18:20 1592

原创 gdb交互命令

启动gdb后,进入到交互模式,通过以下命令完成对程序的调试;注意高频使用的命令一般都会有缩写,熟练使用这些缩写命令能提高调试的效率;

2024-08-22 20:04:48 925

原创 第32次CCF认证-树上搜索

按照题意模拟,然后注意longlong,和模拟的过程。其实可以得出一些技巧,比如你可以先把伪代码写出来,然后再进行变成,这样可以理解清楚思路,加快速度。

2024-05-30 10:28:36 289

原创 第 33 次CCF认证

第 33 次CCF认证。

2024-05-26 19:19:36 490

原创 stork函数

strtok函数是一个强大的工具,用于将字符串分割成标记。了解其工作原理和注意事项,可以帮助你在编写 C 语言代码时有效地使用它。如果需要线程安全的操作,请使用strtok_r。

2024-05-18 22:48:44 440

原创 readline 函数

readline函数是 GNU Readline 库的一部分,用于读取用户输入,并提供行编辑和历史记录功能。通过使用readline,可以轻松实现一个交互式命令行界面。如果你有其他问题或需要进一步的信息,请随时告诉我。

2024-05-18 22:20:15 1154

原创 GDB调试-简要使用手册

使用GDB(GNU调试器)进行调试时,可以通过一系列命令来单步执行代码、跳过不感兴趣的函数、运行到函数末尾、打印变量或寄存器的值、扫描内存、查看调用栈、设置断点和设置监视点。

2024-05-18 21:38:09 608

原创 GDB (逐步介绍)

GDB 是 GNU Project Debugger 的缩写,是 C 语言(以及 C++ 等其他语言)的强大调试工具。它可以帮助你在 C 语言程序运行时对其进行调试,还可以让你看到程序崩溃时到底发生了什么。GDB 在可执行文件上运行,可执行文件是编译过程中产生的二进制文件。为便于演示,下面的示例在一台规格如下的 Linux 机器上执行。

2024-04-14 11:33:09 905

原创 基于 FPGA 的 DE1-SoC 功率估算器

功耗是当今许多技术都要考虑的重要因素。例如,手机生产商总是谈论他们在电源管理方面的改进,以及如何延长电池的使用寿命。功能与功耗之间的平衡是许多人都在研究的有趣课题。然而,当我们做实验时,我们很少会考虑我们消耗了多少电能,因为我们从来没有受到电能的限制。在本课实验 3 中合成巨型鼓时,我们耗尽了 FPGA 上的所有 DSP 块,并使用了大量 M10K 内存。这种对硬件的大量使用很可能会导致高功耗,我们很想知道有哪些因素会影响 FPGA 的功耗。

2024-04-13 16:10:27 1193

原创 基于FPGA的光纤通信系统的实现的优化技巧与方法

FPGA实现的优化技巧和方法。1.跨时钟域数据同步技术;2.高速数据的乒乓缓存技术

2024-03-16 11:31:02 873

原创 基于FPGA的光纤通信系统设计

基于FPGA的光纤通信系统设计接收端控制逻辑、数据解码、检验计算、缓存控制、时钟控制。

2024-03-16 09:46:33 2643

原创 digital_design_and_computer_architecture

Digital Design and Computer Architecture RISC-V Edition 笔记!!!

2024-03-10 14:30:51 498

原创 FPGA 的 DSP:Verilog 中的简单 FIR 滤波器

本项目介绍如何用 Verilog 实现一个带有预生成系数的简单 FIR 滤波器。

2024-03-06 15:19:23 2647

原创 Verilog reg, Verilog wire, SystemVerilog logic. What’s the difference?

Verilog reg 和 Verilog wire 之间的区别经常让许多刚开始学习这种语言的程序员感到困惑(我也曾困惑过!后来,当我采用 SystemVerilog 编写 RTL 设计时,我被告知现在一切都可以是 “类型逻辑”。这在一般情况下也行得通,但时不时会遇到关于变量、网和赋值的令人费解的错误信息。于是,我决定找出这些数据类型的确切工作原理,来撰写这篇文章。我翻阅了语言参考手册,搜索了现已失效的 Verilog-2005 标准文件,并上了一堂历史课。

2024-03-06 11:20:27 960

原创 时钟域交叉设计——Clock Domain Crossing Design

任何关于时钟域交叉(CDC)的讨论,都应从对可变性和同步性的基本了解开始。通俗地说,可变性是指一种不稳定的中间状态,在这种状态下,最轻微的干扰也会导致稳定状态的恢复。当应用于数字电路中的触发器时,它指的是触发器的输出可能尚未稳定到最终预期值的状态。触发器进入可变状态的方式之一是其设置或保持时间受到破坏。在异步时钟域交叉(CDC)中,源时钟和目的时钟没有频率关系,来自源域的信号在其驱动的目的触发器的设置或保持时间内发生变化的概率为非零。

2024-03-06 11:13:31 1705 1

原创 一文讲懂 C++ 内存调试和智能指针

现在,让我们来演示如何使用一种工具来自动检测内存泄漏以及许多其他类型的内存相关错误。我们将使用的工具名为 “它是完全跨平台的,因此无论学生使用何种操作系统或 CPU 架构,它都能在每个学生的电脑上运行。要使用记忆博士,请从网站 ""部分的相关链接下载最新版本,并按照网站 "文档 "部分的相关说明进行安装。添加这些参数后,tasks.json的args你可以选择终端 > 运行编译任务…或按下,使用这些参数编译程序,而无需实际运行它。请注意,虽然程序中有 4 个非常严重的错误,但编译器不会发出任何警告!

2024-03-04 19:35:54 1360

原创 第 387 场周赛第一次AK记录

题意- 思路直接看代码代码。

2024-03-04 08:38:53 207

原创 怎么在 Ubuntu 22.04 上使用 SSH

SSH 是一种安全外壳网络协议,用于通过互联网在两台计算机之间进行通信,一台称为客户端计算机,另一台称为主机计算机。openSSH的包可以使用中的默认包来安装。在本文中,apt 包管理器用于在上安装 SSH 服务器。

2024-03-02 15:42:40 1958

原创 Parallel Computing - 一文讲懂并行计算

在本章中,我们将回顾一些有关并行计算的概念。但更加强调 GPU。

2024-03-02 10:58:57 2797

原创 Introduction to OpenCL

OpenCL是用于编写跨异构平台执行的程序的框架。例如,它们由CPUGPUDSP和FPGA组成。OpenCL指定了一种用于对这些设备进行编程的编程语言(基于C99)和应用程序编程接口 (API),以控制平台并在计算设备上执行程序。OpenCL为使用基于任务和基于数据的并行性的并行计算提供了标准接口。

2024-02-27 21:28:43 1275

原创 卡尔曼滤波

真实世界中,系统动力模型总是有不确定性的。比如我们想测量一个电阻的阻值,我们假设它是不变的,即阻值不随测量过程而改变。但实际上阻值会随着环境温度的改变而轻微改变。再比如用雷达追踪弹道导弹时,导弹动态模型的不确定性会包含一些随机的加减速。对于飞行器之类的目标,模型不确定性更大,因为飞行员随时可能进行机动。另一方面,当我们用GPS接收机计算一个固定物体的位置时,由于固定物体不会动所以动态模型不确定性为0. 动态模型的不确定性称为 过程噪声。一些文献中也叫模型噪声、驱动噪声、动态噪声或系统噪声。

2024-02-27 14:43:22 394

原创 如何为双向/输入输出端口编写 Verilog Testbench

这篇文章介绍了如何为双向或输入输出端口编写 Verilog 测试平台。这种情况发生在包含双向或输入输出端口(例如 I2C 内核、IO 焊盘、存储器等)的特殊设计中。在这篇文章中,我将举例说明如何为数字 IO 板编写测试平台代码。块 1 是生成测试用例以检查 IO 焊盘的输入/输出功能的主要测试平台。时,IO 板用作输出板。因此,来自输入 I 的信号被传递到双向端口。因此,从输入端口I读取来自双向端口。,用于将 IO 板配置为输入或输出。作为输入 pad,来自双向端口。的输入 I 获取数据的输出。

2024-02-26 16:45:23 931

原创 使用 Verilog 做一个可编程数字延迟定时器 LS7211-7212

延迟定时器的规格可以在这里轻松找到。基本上,延迟定时器有 4 种操作模式:一次性 (OS)、延迟操作 (DO)、延迟释放 (DR)、双延迟 (DD)。输入用于根据延迟定时器规范中给定的方程对延迟进行编程。今天的项目是在 Verilog HDL 中实现可编程数字延迟定时器。完整呈现了延迟定时器的 Verilog 代码。可编程延迟定时器的 Verilog 代码是可综合的,并且可以在 FPGA 上实现。以下是可编程数字延迟定时器 LS7212 的 Verilog 代码。所实现的数字延迟定时器是。

2024-02-26 16:29:56 843

原创 CUDA 编程指南 —— 编程接口之CUDA Runtime

编程模型假设系统由主机和设备组成,每个主机和设备都有自己独立的内存。设备内存概述了用于管理设备内存的运行时函数。进行动态链接的应用程序通常将它们作为应用程序安装包的一部分。引入了页锁定主机内存,需要将内核执行与主机和设备内存之间的数据传输重叠。描述了用于在系统中的各个级别启用异步并发执行的概念和 API。展示了编程模型如何扩展到具有连接到同一主机的多个设备的系统。介绍了运行时提供的各种函数,用于与两个主要图形 API(描述了如何正确检查运行时生成的错误。运行时符号的地址才是安全的。动态链接到应用程序。

2024-02-26 10:00:25 693

原创 CUDA 编程指南 —— 编程接口之使用NVCC编译

CUDAC++ 为熟悉 C++ 编程语言的用户提供了一条简单的途径,可以轻松编写供设备执行的程序。它由 C++ 语言的最小扩展集和运行时库组成。核心语言扩展已在编程模型中引入。它们允许程序员将内核定义为 C++ 函数,并在每次调用该函数时使用一些新语法来指定网格和块维度。所有扩展的完整描述可以在 C++ 语言扩展中找到。包含其中一些扩展的任何源文件都必须使用 nvcc 进行编译,如使用NVCC编译中所述。运行时是在中引入的。

2024-02-26 09:54:27 1479

原创 CUDA C++ 编程指南系列教程 —— 编程模型

本章通过概述 CUDA 编程模型背后的主要概念如何在 C++ 中公开来介绍它们。编程接口中给出了 CUDA C++ 的详细描述。本章和下一章中使用的向量加法示例的完整代码可以在 vectorAdd CUDA 示例中找到。

2024-02-25 10:36:18 1194 3

原创 CUDA C++ 编程指南

虽然 CPU 被设计为擅长以尽可能快的速度执行一系列称为线程的操作,并且可以并行执行几十个这样的线程,但 GPU 被设计为擅长并行执行数千个线程(摊销较慢的单线程性能以获得更大的吞吐量)。面临的挑战是开发能够透明地扩展其并行性的应用程序软件,以利用数量不断增加的处理器核心,就像 3D 图形应用程序透明地扩展其并行性到具有广泛不同数量的核心的多核 GPU 一样。多线程程序被划分为彼此独立执行的线程块,因此具有更多多处理器的 GPU 会比具有更少多处理器的 GPU 在更短的时间内自动执行程序。

2024-02-25 10:01:39 1709

原创 更简单地介绍 CUDA

这篇文章是对 CUDA 的超级简单介绍,CUDA 是 NVIDIA 流行的并行计算平台和编程模型。我之前在2013年写过一篇文章《CUDA简单介绍》,多年来一直很受欢迎。但 CUDA 编程变得更加容易,GPU 也变得更快,所以是时候进行更新(甚至更简单)的介绍了。CUDA C++ 只是使用 CUDA 创建大规模并行应用程序的方法之一。它允许您使用强大的 C++ 编程语言来开发由 GPU 上运行的数千个并行线程加速的高性能算法。

2024-02-24 11:20:18 784

原创 Python 常见数据结构

Python 中的数据结构

2024-02-24 10:16:18 745

数据结构自己总结.pdf

数据结构自己总结.pdf 更多资料联系 3067458469

2023-04-30

操作系统自己总结.pdf

西北工业大学 23 年上岸,初试 419,专业课 128。 操作系统自己总结.pdf 更多资料联系 3067458469

2023-04-30

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除