标签: gpu-warp

GPU 如何将线程分组为扭曲/波前?

我的理解是,warp 是通过任务调度程序在运行时定义的一组线程,CUDA 的一个性能关键部分是 warp 内线程的分歧,有没有办法很好地猜测硬件将如何构造 warp在线程块内?

例如,我启动了一个线程块中包含 1024 个线程的内核,扭曲是如何排列的,我可以从线程索引中看出(或至少做出一个很好的猜测)吗?

因为通过这样做,可以最大限度地减少给定经纱内线程的发散。

gpu gpgpu gpu-warp

2
推荐指数
1
解决办法
2197
查看次数

OpenGL计算着色器映射到nVidia warp

假设我有一个带有local_size = 8*8*8的OpenGL计算着色器.调用如何映射到nVidia GPU warp?同样的调用是否gl_LocalInvocationID.x会在同一个warp中?还是?还是z?我并不是指所有的调用,我只是指一般的聚合.

我问这个是因为在一个时刻进行了优化,并非所有的调用都有工作要做,所以我希望它们处于相同的变形中.

opengl compute-shader gpu-warp

1
推荐指数
1
解决办法
156
查看次数

__activemask()与__ballot_sync()

在CUDA Developer Blog上阅读了这篇文章后,我努力了解何时可以安全\正确使用__activemask()代替__ballot_sync()

活动掩码查询部分中,作者写道:

这是不正确的,因为它将导致部分和而不是总计。

之后,在“ 机会扭曲级编程”部分中,他们使用此函数__activemask()是因为:

如果要在库函数中使用扭曲级编程,但是不能更改函数接口,则可能会很困难。

cuda gpu-warp

0
推荐指数
1
解决办法
529
查看次数

我应该何时使用CUDA的内置warpSize,而不是我自己的常量?

nvcc设备代码可以访问内置值,warpSize该值设置为执行内核的设备的warp大小(即在可预见的将来为32).通常你不能把它区分为常数 - 但是如果你试图声明一个长度为warpSize的数组,你就会抱怨它是非常量的...(使用CUDA 7.5)

所以,至少为了这个目的,你有动力去做(编辑):

enum : unsigned int { warp_size  = 32 };
Run Code Online (Sandbox Code Playgroud)

在你的标题中的某个地方.但是现在 - 我应该选择哪个,何时?:warpSize,或warp_size

编辑: warpSize显然是PTX中的编译时常量.问题仍然存在.

c++ cuda constants gpu-warp

-1
推荐指数
2
解决办法
756
查看次数

标签 统计

gpu-warp ×4

cuda ×2

c++ ×1

compute-shader ×1

constants ×1

gpgpu ×1

gpu ×1

opengl ×1