小编Ros*_*han的帖子

有条件减少CUDA

我需要总结100000存储在数组中的值,但有条件.

有没有办法在CUDA中做到这一点以产生快速结果?

任何人都可以发布一个小代码来做到这一点?

performance synchronization cuda sum

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

Cuda:如果我仅使用块和线程的 .x,它是否仍会使用 GPU 中的所有可用线程,或者必须使用线程和块的 .y 和 .z?

我的程序需要最大限度地使用 GPU。

那么,blockDim.x * blockIdx.x + threadIdx.x; 是吗?是否能够访问所有线程?或者也必须使用 .y 和 .z ?这是强制性的吗?

memory cuda

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

通过CUDA Thrust对具有偶数或奇数索引的元素求和

如果我使用

 float sum = thrust::transform_reduce(d_a.begin(), d_a.end(), conditional_operator(), 0.f, thrust::plus<float>());
Run Code Online (Sandbox Code Playgroud)

我得到满足条件的所有元素的总和conditional_operator(),如在CUDA中的条件减少.

但我可以总结只有元素d_a[0],d_a[2],d_a[4],d_a[6],.....?

我想过改变条件运算符,但它可以处理数组中的元素而不需要引用索引.

我能做些什么?

cuda sum thrust

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

Cuda:固定内存零拷贝问题

我试过这个链接中的代码是CUDA固定内存零拷贝? 要求声称该程序对他来说工作得很好的人但是如果我在内核中操作它们,那么值不会改变我的值.

基本上我的问题是,我的GPU内存不够,但我想进行需要更多内存的计算.我的程序使用RAM内存或主机内存,并能够使用CUDA进行计算.链接中的程序似乎解决了我的问题,但代码不提供输出,如该人所示.

关于零复制存储器的任何帮助或任何工作示例都是有用的.

谢谢

__global__ void testPinnedMemory(double * mem)
{
double currentValue = mem[threadIdx.x];
printf("Thread id: %d, memory content: %f\n", threadIdx.x, currentValue);
mem[threadIdx.x] = currentValue+10;
}

void test() 
{
const size_t THREADS = 8;
double * pinnedHostPtr;
cudaHostAlloc((void **)&pinnedHostPtr, THREADS, cudaHostAllocDefault);

//set memory values
for (size_t i = 0; i < THREADS; ++i)
    pinnedHostPtr[i] = i;

//call kernel
dim3 threadsPerBlock(THREADS);
dim3 numBlocks(1);
testPinnedMemory<<< numBlocks, threadsPerBlock>>>(pinnedHostPtr);

//read output
printf("Data after kernel execution: ");
for (int i = 0; i …
Run Code Online (Sandbox Code Playgroud)

c++ memory cuda

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

任何人都可以提供示例代码,演示在cuda中使用16位浮点数吗?

Cuda 7.5支持16位浮点变量.任何人都可以提供示例代码来证明它的使用吗?

cuda

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

标签 统计

cuda ×5

memory ×2

sum ×2

c++ ×1

performance ×1

synchronization ×1

thrust ×1