首页 > 其他分享 >错误处理、cuda模型、GPU架构杂谈

错误处理、cuda模型、GPU架构杂谈

时间:2024-08-29 12:47:34浏览次数:12  
标签:模型 硬件 cuda 设计 GPU 错误处理 CUDA

错误处理、cuda模型、GPU架构杂谈 错误处理 所有编程都需要对错误进行处理,早起的编码错误,编译器会帮搞定,内存错误也能观察出来,但是有些逻辑错误很难发现,甚至到了上线运行时才会被发现,而且有些厉害的bug复现会很难,不总出现,但是很致命,而且CUDA基本都是异步执行的,当错误出现的时候,不一定是哪一条指令触发的,这一点非常头疼;这时候就需要对错误进行防御性处理了,例如代码库头文件里面的这个宏: #define CHECK(call)\ {\   const cudaError_t error=call;\   if(error!=cudaSuccess)\   {\       printf("ERROR: %s:%d,",__FILE__,__LINE__);\       printf("code:%d,reason:%s\n",error,cudaGetErrorString(error));\       exit(1);\   }\ } 就是获得每个函数执行后的返回结果,然后对不成功的信息加以处理,CUDA C 的API每个调用都会返回一个错误代码,这个代码就可以好好利用了,当然在release版本中可以去除这部分,但是开发的时候一定要有的。 CUDA执行模型概述 开始接近CUDA最核心的部分,就是有关硬件,和程序的执行模型,用CUDA的目的其实说白了就是为计算速度快,所以压榨性能,提高效率其实就是CUDA学习的最终目的,没人学CUDA为了去显示Hello world。
    启动核函数,计时,统计时间,然后学习了线程,内存模型,线程内存部分会在后面用几章的篇幅进行大书特书,而本章,介绍最底层最优理论指导意义的知识。
    什么时候沿着硬件设计的思路设计程序,就会得到百战百胜;什么时候背离了硬件设计的思路去设计程序,就会得不到好结果。 CUDA执行模型概述 CUDA执行模型揭示了GPU并行架构的抽象视图,再设计硬件的时候,其功能和特性都已经被设计好了,然后去开发硬件,如果这个过程模型特性或功能与硬件设计有冲突,双方就会进行商讨妥协,知道最后产品定型量产,功能和特性算是全部定型,而这些功能和特性就是变成模型的设计基础,而编程模型又直接反应了硬件设计,从而反映了设备的硬件特性。
    比如,最直观的一个就是内存,线程的层次结构帮助控制大规模并行,这个特性就是硬件设计最初设计好,然后集成电路工程师拿去设计,定型后程序员开发驱动,然后在上层可以直接使用这种执行模型来控制硬件。
所以了解CUDA的执行模型,可以帮助优化指令吞吐量,和内存使用来获得极限速度。 GPU架构概述 GPU架构是围绕一个流式多处理器(SM)的扩展阵列搭建的。通过复制这种结构来实现GPU的硬件并行,如图1所示。 图1 GPU流式多处理器(SM),复制这种结构实现GPU的硬件并行 图1包括关键组件: 1)CUDA核心 2)共享内存/一级缓存 3)寄存器文件 4)加载/存储单元 5)特殊功能单元 6)线程束调度器

标签:模型,硬件,cuda,设计,GPU,错误处理,CUDA
From: https://www.cnblogs.com/wujianming-110117/p/18386452

相关文章

  • GPU的Fermi 架构与Kepler架构杂谈
    Fermi架构Fermi架构是第一个完整的GPU架构,如图10-15所示。图10-15Fermi架构是第一个完整的GPU架构Fermi架构逻辑图,如图10-15所示,具体数据如下:1)512个加速核心,CUDA核2)每个CUDA核心都有一个全流水线的整数算数逻辑单元ALU,和一个浮点数运算单元FPU3)CUDA核被组织到16个SM上4......
  • CUDA编程结构、存储管理、线程管理杂谈
    CUDA编程结构、存储管理、线程管理杂谈CUDA编程结构一个异构环境,通常有多个CPU多个GPU,他们都通过PCIe总线相互通信,也是通过PCIe总线分隔开的。所以要区分一下两种设备的内存:1)主机:CPU及其内存2)设备:GPU及其内存这两个内存从硬件到软件都是隔离的(CUDA6.0以后支持统一寻址),目前先......
  • 并行动力:用PyTorch在多GPU上释放深度学习潜能
    标题:并行动力:用PyTorch在多GPU上释放深度学习潜能随着深度学习模型变得越来越复杂,单GPU训练往往难以满足需求。幸运的是,PyTorch提供了强大的多GPU训练支持,允许我们利用多个GPU来加速模型的训练过程。本文将详细介绍如何在PyTorch中使用多GPU训练,包括数据并行、模型并行以及......
  • Android 常用的性能分析工具详解:GPU呈现模式
    此篇将重点介绍几种常用的Android性能分析工具:一、Logcat日志选取Tag=ActivityManager,可以粗略地知道界面Displaying的时间消耗。当我们打开一个Activity的时候,log会打印一串log如下:I/ActivityManager﹕Displayedxxx.xxx.xxx/TestActivity:+1s272ms(total+3s843ms)第一......
  • 【CUDA编程笔记】如何使用CUDA统一内存来优化多进程多线程程序的性能?
    如何使用CUDA统一内存来优化多进程多线程程序的性能?要使用CUDA统一内存优化多进程多线程程序的性能,可以采取以下步骤。理解统一内存统一内存是CUDA编程模型的一个组件,它定义了一个所有处理器都可访问的单一连贯内存映像,允许数据在CPU和GPU之间透明迁移,无需显式复制。使......
  • 在AMD GPU上使用DBRX Instruct
    DBRXInstructonAMDGPUs—ROCmBlogs在这篇博客中,我们展示了DBRXInstruct,这是由Databricks开发的一个专家混合大型语言模型,在支持ROCm的系统和AMDGPU上运行。关于DBRXInstructDBRX是一个基于Transformer的仅解码大型语言模型,拥有1320亿参数,采用了细粒度的专家混合......
  • 使用统计方法在AMD GPU上使用JAX Profiler可靠地比较大型生成AI模型中的算法性能
    UsingstatisticalmethodstoreliablycomparealgorithmperformanceinlargegenerativeAImodelswithJAXProfileronAMDGPUs—ROCmBlogs摘要本文提供了一份详细的指南,介绍如何在JAX实现的生成AI模型中测量和比较各种算法的性能。利用JAXProfiler和统计分析......
  • 在浏览器上使用transformers.js运行(WebGPU)RMBG-1.4进行抠图(背景移除)
    在浏览器上使用transformers.js运行(WebGPU)RMBG-1.4进行抠图(背景移除)说明:首次发表日期:2024-08-28官方Github仓库地址:https://github.com/xenova/transformers.js/tree/main/examples/remove-background-client准备下载onnx模型文件:https://huggingface.co/briaai/RMBG-1.......
  • 在低显存GPU上运行PixArt-Σ/Flux.1图像生成:Python简短教程
    由PixArt-Σ在本地生成,所需显存不超过8Gb。图像生成工具的热度从未如此高涨,而且它们也变得越来越强大。像PixArtSigma和Flux.1这样的模型处于领先地位,这得益于它们的开源权重模型和宽松的许可协议。这种设置允许进行创造性的尝试,包括在不共享计算机外部数据的情况下训练LoRA......
  • 释放GPU潜能:PyTorch中torch.nn.DataParallel的数据并行实践
    释放GPU潜能:PyTorch中torch.nn.DataParallel的数据并行实践在深度学习模型的训练过程中,计算资源的需求往往随着模型复杂度的提升而增加。PyTorch,作为当前领先的深度学习框架之一,提供了torch.nn.DataParallel这一工具,使得开发者能够利用多个GPU进行数据并行处理,从而显著加速......