问题标签 [cuda-streams]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 多个 CUDA 流使 GPU 崩溃
这是这篇文章的延续。
似乎通过添加解决了一个特殊情况,volitile
但现在其他东西已经坏了。如果我在两个内核调用之间添加任何内容,系统就会恢复到旧的行为,即立即冻结和打印所有内容。sleep(2)
通过添加;来显示此行为 set_flag
和之间read_flag
。此外,当放入另一个程序时,这会导致 GPU 锁定。我现在做错了什么?
再次感谢。
cuda - 可以同时执行多少个 cudaMemcpyAsync 操作?
考虑以下情况:
两个 memcpy 操作能否同时发生并获得双倍的主机设备带宽(只要主机内存带宽足够)?如果答案是肯定的,那么这种并发是否有上限?
我计划为单个计算节点中的许多(6-8)GPU 编写一些程序,因此这对性能非常关键。
c++ - CUDA - 在多个同时内核上处理单个像素缓冲区数据(数组),这可能吗?
目前我有一个像素缓冲区,我用一个内核调用处理其中的数据:
像素缓冲区包含尺寸为 screenWidth x screenHeight 的窗口中的所有像素。
我的想法是将窗口分成 2 或 4 部分并同时处理像素数据。
可以做到这一点,如果可以的话 - 怎么做?
我对流的了解很少,但据我了解,两个流不能处理单个数据(例如我的 pixelBuffer),还是我错了?
编辑:我的显卡具有计算能力 3.0
编辑 2:我使用 SDL 进行绘图并且我有一个 GPU,并且我使用用户定义的数据数组:
主文件
cudaRenderer.cu
显示内容(vfb):
这是我在项目中所做的一个简单示例。它是一个光线追踪器,也许 SDL 是与 CUDA 互操作的最差选择,但我不知道我是否有时间更改它。
concurrency - 同一个多处理器上的并发、独特的内核?
在 Kepler 3.5 GPU 的同一个流式多处理器上,是否可以使用流来拥有多个独特的内核?<<<1,1024>>>
即在具有 15 个 SM 的 Kepler GPU 上同时运行 30 个大小的内核?
cuda - cuda 流和流多处理器
在nvidia的cuda技术中。
有两个概念:cuda编程中stream的概念,和Stream Multiprocessors的概念(Maxwell Architecture中也称为SMM,有时简称为SM),如何理解这两者?
案例一:我只是使用默认流来执行内核,并且块数足够大。在这种情况下,我的所有 5 个流多处理器(GTX 750 Ti 有 5 个 SMM,即 640 核)是否都参与处理块,或者只有一个流多处理器参与处理一个默认流
案例二:我使用 cudaStreamCreate() 创建 5 个(或更多)流,并使用它们执行 5 个不同的内核,其中所有 5 个内核都是独立的,这 5 个内核会在物理上并行处理吗?
cuda - Maxwell(GPU Nvidia)中的重叠数据传输
我是论坛的新手,希望你能帮助我解决我的问题。最近,我开发了一个应用程序,其中我使用了 CUDA 流,目的是重叠计算和数据传输。我已经在 GPU Nvidia(Maxwell 架构)上执行了这个应用程序。我使用 Visual Profiler 工具观察到一些数据传输 HostToDevice 同时发生。Maxwell GPU 只有 2 个复制引擎。一个复制引擎用于 HostToDevice 传输,另一个复制引擎用于 DeviceToHost 传输,对吧?考虑到这一点,我认为两个 HostToDevice 传输不能同时发生。但是,我使用 Visual Profiler 观察到此行为出现在我的应用程序中。所以,我的问题是:在这个架构中,
太感谢了。
cuda - 跨多个“重叠”CUDA Stream 启动的 CUDA FFT 计划重用
我正在尝试使用与 GPU 计算重叠的异步内存传输来提高代码的性能。
以前我有一个代码,我在其中创建了一个 FFT 计划,然后多次使用它。在这种情况下,创建 CUDA FFT 计划所花费的时间可以忽略不计,尽管根据之前的这篇文章,它可能非常重要。
现在我转向流,我正在做的是“多次”创建“相同”计划,然后设置 CUDA FFT 流。根据你们中的一些人在另一篇文章中给出的答案,这是浪费。但是,有没有其他方法可以做到这一点?
注意:我正在实时获取数据,因此启动“批量”CUDA FFT 是不可能的。我正在做的是创建并启动一个新的 CUDA 流作为完整脉冲传输的结果。
注意 2:我也在考虑使用“CUDA Streams/FFT 计划”的“池”,但我认为这不是一个优雅、明智的解决方案,有什么想法吗?
在分配 CUDA 流之前,是否有其他方法可以“复制”“现有的”fft 计划?
谢谢大家!/gals?希望在圣何塞见到你们中的一些人。=)
奥马尔
concurrency - 推力执行策略将内核发布到默认流
我目前正在设计一个简短的教程,展示 Thrust 模板库的各个方面和功能。
不幸的是,我为展示如何使用 cuda 流使用复制/计算并发而编写的代码中似乎存在问题。
我的代码可以在这里找到,在 asynchronousLaunch 目录中: https ://github.com/gnthibault/Cuda_Thrust_Introduction/tree/master/AsynchronousLaunch
以下是产生问题的代码摘要:
以下是通过 nvidia 可视化配置文件观察到的一个程序实例的结果:
如您所见,cudamemcopy(棕色)都发布到流 13 和 14,但是 Thrust 从thrust::transform 生成的内核被发布到默认流(捕获中的蓝色)
顺便说一句,我使用的是 cuda 工具包版本 7.0.28,带有 GTX680 和 gcc 4.8.2。
如果有人能告诉我我的代码有什么问题,我将不胜感激。
先感谢您
编辑:这是我认为作为解决方案的代码:
使用 nvcc 编译 ./test.cu -o ./test.exe -std=c++11
cuda - 在CUDA中,是否保证默认流等于nullptr?
在 CUDA 中driver_types.h
,我们有:
cuda_runtime.h
我们在很多地方都有默认初始化的流参数。例如:
假设默认流有多安全(cudaStream) nullptr
?
c - CUDA 中的多个内核调用
我试图在 CUDA 上多次调用同一个内核(使用一个不同的输入参数),但它只执行第一个内核调用并且不跟随其他内核调用。假设输入数组是
new_value0=[123.814935276; 234; 100; 166; 203.0866414; 383; 186; 338; 173.0984233]
,
new_value1=[186.221113; 391; 64; 235; 195.7454998; 275; 218; 121; 118.0333872]
部分输出是:
它来自第一个内核调用。
这是内核:
这是代码:
我认为我可以将它与流并行化,但我以前从未使用过它。我已经开始看了这个。