CUDA学习(四)

简介:

编程接口:
CUDA C为熟悉C编程语言的用户提供了一个简单的途径,可以轻松编写程序供设备执行。
它由一组最小的C语言扩展和一个运行时库组成
核心语言扩展已经在编程模型中引入。 它们允许程序员将内核定义为C函数,并在每次调用函数时使用一些新的语法来指定网格和块维度。 所有扩展的完整描述可以在C语言扩展中找到。 任何包含这些扩展名的源文件都必须使用nvcc进行编译,如使用NVCC进行编译所述。
运行时刻(runtime)在编译工作流程中引入。 它提供在主机上执行的C函数,用于分配和释放设备内存,在主机内存和设备内存之间传输数据,管理具有多个设备的系统等。有关运行时刻的完整说明可以参考CUDA参考手册
runtime建在较低级别的C API(CUDA驱动程序API)之上,该API也可由应用程序访问。 驱动程序API通过底层概念(如CUDA上下文 - 设备的主机进程的模拟)以及CUDA模块 - 设备的动态加载库的模拟来提供额外的控制级别。 大多数应用程序不使用驱动程序API,因为它们不需要额外的控制级别,并且在使用runtime时,上下文和模块管理是隐含的,从而产生更简洁的代码。 驱动程序API是在Driver API中引入的,并在参考手册中进行了充分描述。
NVCC编译:
Kernel函数可以用CUDA指令集结构写称为PTX(在PTX参考手册中进行了描述)通常使用C这样的高级语言更加有效。这两种情况下都必须使用nvcc将内核函数编译成二进制代码才能在设备上执行。
nvcc是一个编译器驱动程序,它简化了编译C或PTX代码的过程:它提供了简单和熟悉的命令行选项,并通过调用实现不同编译阶段的工具集合来执行它们。
编译工作流程:
离线编译:
使用nvcc编译的源文件可以包含主机代码和设备代码的混合。nvcc的基本工作流程是将设备代码与主机代码分开,然后:

  • 将设备代码编译成汇编形式(PTX代码)或二进制形式(cubin 对象)
  • 并通过必要的CUDA C运行时机制函数调用来替换内核中引入的<<< ... >>>语法(在执行配置中更详细地描述)来修改主机代码,以从PTX代码加载和启动每个编译的内核或cubin对象。
    修改后的主机代码可以作为C代码输出,可以使用其他工具编译,也可以直接通过让nvcc在上一个编译阶段调用主机编译器

应用程序可以:

  • 链接到已编译的主机代码(这是最常见的情况)
  • 或者忽略已修改的主机代码(如果有的话)并使用CUDA驱动程序API(请参阅驱动程序API)来加载和执行PTX代码或Cubin对象
    即时编译:

应用程序运行时加载的任何PTX代码都会被设备驱动程序进一步编译为二进制代码。 这就是所谓的即时编译。 即时编译增加了应用程序加载时间,但允许应用程序从每个新设备驱动程序随附的新编译器改进中受益。 它也是应用程序在应用程序编译时不存在的设备上运行的唯一方式。
当设备驱动程序即时编译某些应用程序的某些PTX代码时,它会自动缓存生成的二进制代码的副本,以避免在后续调用应用程序时重复编译。 高速缓存(称为计算高速缓存)在设备驱动程序升级时会自动失效,以便应用程序可以从设备驱动程序中内置的新即时编译器。
0f5c3bfa828ba61ee9d0621e4d34970a304e59aa

目录
相关文章
|
5月前
|
存储 人工智能 安全
如何从零搭建出设备巡检二维码管理系统
通过为每台设备生成专属二维码,让每台设备都有自己的“电子档案”,记录设备基本信息以及巡检、维修等全生命周期数据
如何从零搭建出设备巡检二维码管理系统
|
3月前
|
人工智能 自然语言处理 安全
2025年数字人应用与选型之高效创作工具解析
面对数字内容的挑战,本文系统梳理主流AI数字人工具,涵盖全链路平台、专业视频生成与交互型三类方案。结合功能特点、适用场景及选型维度,助力创作者与企业高效决策,降本增效。
|
8月前
|
存储 芯片 iOS开发
格式化内存卡的方法有哪些?这几种很好用
本文介绍了内存卡常见问题的解决方法——格式化,并详细讲解了使用Windows磁盘管理器、Mac磁盘工具及第三方软件(如DiskGenius、SD Card Formatter)进行格式化的步骤。同时提醒用户:操作前务必备份数据并检查卡体是否完好,合理选择文件系统以确保兼容性。
|
11月前
|
弹性计算 运维 Cloud Native
阿里云虚拟主机、轻量应用服务器、云服务器、云·速成美站、云·原生建站区别及选择参考
在选择阿里云产品完整自己网站搭建的时候,面对云虚拟主机、轻量应用服务器、云服务器ECS、云·速成美站和云·原生建站等多种选择,很多用户不是很清楚他们之间的区别。每种产品都有其独特的优势和适用场景,如何根据自己的需求和技术背景选择最适合的建站产品,成为了用户关注的焦点。本文将详细比较阿里云这五种建站产品的优势和劣势,以及它们的适用人群,以供选择参考。
|
移动开发 前端开发 Android开发
【Uniapp 专栏】Uniapp 相较于其他跨平台框架的优势
【5月更文挑战第15天】Uniapp 是一款高效率的跨平台框架,一套代码可生成 iOS、Android、H5 等应用,减少重复工作。它具有强大兼容性,保证各平台稳定运行,提供一致体验。Uniapp 社区活跃,资源丰富,学习曲线平缓,适合新手。性能优化出色,可扩展性强,全面支持前端技术,降低开发和维护成本。因此,Uniapp 成为跨平台开发的热门选择。
592 0
【Uniapp 专栏】Uniapp 相较于其他跨平台框架的优势
|
存储 Web App开发 安全
计算机软件的分类与功能
计算机软件的分类与功能
|
缓存 监控 数据库
提高服务器响应速度是提升用户体验和系统性能的关键
提高服务器响应速度是提升用户体验和系统性能的关键
409 3
|
数据采集 数据可视化 数据挖掘
如何进行有效的数据清洗?
如何进行有效的数据清洗?
1313 3
|
机器学习/深度学习 人工智能 自然语言处理
【自然语言处理】python之人工智能应用篇——文本生成技术
文本生成是指使用自然语言处理技术,基于给定的上下文或主题自动生成人类可读的文本。这种技术可以应用于各种领域,如自动写作、聊天机器人、新闻生成、广告文案创作等。
874 8
|
人工智能 数据库
故事与绘本Bot-扣子AI
**摘要:** 构建了一个结合互动与故事讲解的语音交流Bot,灵感源于减轻教师姐姐夜间给小外甥讲故事的负担。该Bot以“小芸”角色引导用户创作故事,包括主题、情节、角色、背景等要素,并通过LLM模型生成故事内容。工作流程包括输入参数、文章生成、关键字提取和优化、以及相关图片生成。下一步计划支持微信集成、预设故事数据库及绘本图像优化。商业上,考虑将其集成到儿童故事设备和抖音账号,打造自动化故事分享平台。
故事与绘本Bot-扣子AI