摘要:
高等数字集成电路课程作业的记录,都是很简单的toy design,只有VCS,Verdi和Design Compiler的脚本以及约束可供参考。 阅读全文
高等数字集成电路课程作业的记录,都是很简单的toy design,只有VCS,Verdi和Design Compiler的脚本以及约束可供参考。 阅读全文
posted @ 2024-11-10 22:59
Astron_fjh
阅读(240)
评论(0)
推荐(0)
高等数字集成电路课程作业的记录,都是很简单的toy design,只有VCS,Verdi和Design Compiler的脚本以及约束可供参考。 阅读全文
Digital Design and Computer Architecture Lecture22&23的学习笔记,介绍缓存体系结构和一些缓存操作,及优化缓存的策略。 阅读全文
现代DRAM结构由于核心速度限制,通过burst模式和多Banks结构提高带宽。CUDA中,warp级聚合内存访问减少DRAM请求,提升效率。分块访问模式通过将数据加载到共享内存中,降低全局内存访问频率,进一步优化CUDA内存访问性能。 阅读全文
详细介绍了IIC通信协议并给出如何使用PCF8591,用verilog实现。 阅读全文
使用PYNQ生成PWM波控制舵机/步进电机/机械臂。 阅读全文
这篇文章探讨了CUDA编程中的warp和SIMD概念,以及控制分歧对性能的影响。warp是CUDA中线程调度的基本单位,每个warp包含32个线程,以SIMD方式执行相同指令。控制分歧发生在同一warp中线程因不同控制路径而导致执行效率下降。文章通过向量加法示例分析了控制分歧的影响,表明只有在特定情况下(如线程索引超出范围)才会产生控制分歧,其对性能影响通常较小。总体而言,合理设计数据结构和算法可以降低控制分歧,提升CUDA程序的性能。 阅读全文
这段文字详细介绍了CUDA编程中的内存管理和数据定位。首先,强调了GPU的内存带宽与浮点计算能力之间的关系,指出性能瓶颈主要来源于内存访问的限制。接着,通过矩阵乘法的示例,展示了如何利用共享内存提高性能,介绍了内存类型(如全局内存、常量内存、寄存器和共享内存)及其访问方式。此外,讨论了Tiling技术,通过将数据划分为小块来优化内存访问。Tiling的有效实现需要线程的同步,以确保在加载和计算阶段的正确执行。最后,文中提供了处理任意大小矩阵的方法,说明如何在矩阵乘法中避免无效计算并管理边界条件。 阅读全文
这篇文章深入探讨了CUDA编程中的并行性模型,重点介绍了基于kernel的单指令多数据(SPMD)编程。首先,通过向量加法示例,展示了CUDA内核函数的编写与调用,并解释了__global__、__device__和__host__的不同用法。接着,文章扩展到多维网格配置,演示如何处理图像数据,如RGB转灰度和图像模糊。最后,讨论了线程调度及其透明扩展性,强调了warp执行和GPU资源管理。 阅读全文
这篇文章是关于CUDA编程的基础介绍,主要聚焦于CUDA C的概念与内存管理。文章首先阐明了CUDA的异构计算模型,区分了CPU(host)和GPU(device)的角色,并介绍了它们之间的数据移动和通信机制。接着,详细说明了CUDA程序的执行流程,包括内存分配、数据传输和核函数的调用。 阅读全文