首页 / 知识
关于nvidia:CUDA全局(分配给C)动态数组分配给设备内存
2023-04-16 08:11:00

CUDA global (as in C) dynamic arrays allocated to device memory因此,我试图编写一些利用Nvidia的CUDA架构的代码。我注意到往返于设备的复制确实损害了我的整体性能,所以现在我正尝试将大量数据移至设备上。 由于此数据用于多种功能,我希望它具有全局性。是的,我可以传递指针,但是我真的很想知道在这种情况下如何使用全局变量。 因此,我具有要访问设备分配的阵列的设备功能。 理想情况下,我可以执行以下操作:
但是,我还没有弄清楚如何创建一个动态数组。我通过声明数组来找出解决方法,如下所示:
尽管不需要cudaMalloc调用,但我更喜欢动态分配方法。 类似的事情可能应该起作用。
旋转一下。 我继续尝试分配临时指针并将其传递给类似于kernel1的简单全局函数的解决方案。 好消息是它确实起作用:) 但是,当我尝试访问全局数据时,由于我现在得到"建议:假设全局内存空间,无法告诉指针指向什么",我认为它会使编译器感到困惑。幸运的是,这个假设恰好是正确的,但是警告很烦人。 无论如何,为了记录-我查看了许多示例,并进行了nvidia练习,其中的重点是使输出说"正确!"。但是,我还没有全部查看。如果有人知道他们在其中进行动态全局设备内存分配的sdk示例,我仍然想知道。 花一些时间专注于NVIDIA提供的丰富文档。 摘自《编程指南》:
这是如何分配内存的简单示例。现在,在您的内核中,您应该接受一个指向浮点数的指针,如下所示:
所以现在您可以像这样调用它们:
使用全局变量的理由很少。这绝对不是一个。我将把它作为扩展此示例的练习,以包括将" devPtr"移动到全局范围。 编辑: 好吧,根本的问题是这样的:您的内核只能访问设备内存,并且它们只能使用的全局范围指针是GPU的。从CPU调用内核时,在后台发生的情况是,在内核执行之前,指针和基元被复制到GPU寄存器和/或共享内存中。 因此,我能建议的最接近的是:使用cudaMemcpyToSymbol()来实现您的目标。但是,在后台,请考虑另一种方法可能是正确的事情。
在此示例中,请不要忘记'--host-compilation = c'。
-
如果内核在由数组组成的大型const结构上运行,该怎么办?不能使用所谓的常量内存,因为它的大小非常有限。因此,您必须将其放入全局内存中。 签出SDK随附的示例。这些示例项目中的许多都是通过示例进行学习的一种不错的方法。 Erm,正是将devPtr移到全局范围的问题是我的问题。 我有一个实现该功能的实现,两个内核都有一个指向数据的指针。我明确地不想传入这些指针。 我已经非常仔细地阅读了文档,并访问了nvidia论坛(谷歌搜索了一个小时左右),但是我没有找到实际运行的全局动态设备数组的实现(我已经尝试了几个编译,然后以新的有趣方式失败。) |
最新内容
相关内容
linux操作数据库命令?
linux操作数据库命令?,地址,服务,系统,密码,数据库,工具,名字,首页,命令,参数,如何实现MySQL数据库的基本用法在linux下1、mysql all-databaselinux下载数据命令?
linux下载数据命令?,软件,工具,数据,系统,代理,官网,网络,名称,网址,盘中,在linux下如何下载svn上的文件?1、首先,打开linux,进入主界面,然后在主linux清理内存命令行?
linux清理内存命令行?,策略,数据,系统,名称,不了,管理,情况,工作,一致,时间,linux如何清理内存Linux虽然是会自动释放内存的,可是有的时候却。linux测试性能命令?
linux测试性能命令?,系统,网络,信息,工具,状态,地址,指标,情况,分析,下行,五个Linux简单命令帮你解决系统性能问题VMSTAT命令擅长用来查询CPU做数据linux常用命令?
做数据linux常用命令?,工作,系统,基础,网络,数据,标准,管理,工具,地址,命令,linux运维常用命令Curl命令用法 curl语法和参数选项 # curl [optlinux分析内存命令?
linux分析内存命令?,情况,系统,信息,分析,命令,地址,内存,工具,下来,数据,linux查看CPU核数和内存大小命令?方法二:free命令法 free命令主要用linux查重复数据命令?
linux查重复数据命令?,工具,数据,系统,电脑,名字,资料,代码,百度,标准,技术,利用Linux命令行进行文本按行去重并按重复次数排序1、输入文件 指linux的内存查看命令?
linux的内存查看命令?,系统,情况,信息,数据,工具,命令,内存,第一,环境,电脑,查看linux的cpu和内存要查看内存使用情况,可以使用free命令。Freelinux数据库升级命令?
linux数据库升级命令?,系统,信息,时间,最新,网络,名字,地址,管理,简介,传播,linux下手动更新locate所在数据库的指令updatedb为什么行不通_百linux命令行查内存?
linux命令行查内存?,系统,情况,信息,状态,工具,内存,电脑,分析,数据,命令,怎么查看linux的内存/proc/meminfo 命令来查看系统的内存使用情况。linux看剩余内存命令?
linux看剩余内存命令?,系统,情况,工具,信息,分析,状态,实时,命令,内存,总量,Linux系统中查看执行中的进程占用内存量的方法1、(1)top top命令查询linux内存命令?
查询linux内存命令?,系统,情况,信息,工具,电脑,状态,命令,内存,发行,总量,查看linux的cpu和内存1、要查看内存使用情况,可以使用free命令。Free