标签: gpu

我们应该使用cuda Event来计时推力函数(比如排序)还是应该使用cpu定时器

我正在尝试计时推力排序功能.现在,我正在使用cuda事件.但我很好奇如果cuda事件会给我错误的价值.这是因为,在我的计算机上,推力是在34毫秒内在GPU中分类200万个浮点数.但这似乎太快了

我尝试了CPU和GPU时间,并得到了以下内容:

CPU(大约需要36毫秒)

__int64 ctr1 = 0 , ctr2 = 0 , freq = 0 ;
    QueryPerformanceFrequency((LARGE_INTEGER *) &freq);
    QueryPerformanceCounter((LARGE_INTEGER *) &ctr1);
    thrust::sort(D.begin(),D.end());
    // transfer data back to host   
    thrust::copy(D.begin(), D.end(), H.begin());
    cudaThreadSynchronize(); // block until kernel is finished

   QueryPerformanceCounter((LARGE_INTEGER *)&ctr2);
    double ans = ((ctr2 - ctr1) * 1.0 / freq);
    printf("The time elapsed in milliseconds is %f\n",(ans*1000));
Run Code Online (Sandbox Code Playgroud)

GPU

cudaEvent_t start, stop;
cudaEventCreate(&start);
cudaEventCreate(&stop);
cudaEventRecord(start, 0);
thrust::sort(D.begin(),D.end());

thrust::copy(D.begin(), D.end(), H.begin());
cudaEventRecord(stop, 0);
cudaEventSynchronize(stop);
float elapsedTime; 
cudaEventElapsedTime(&elapsedTime , start, stop);
printf("time …
Run Code Online (Sandbox Code Playgroud)

cuda gpu timer

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

GPU卡在2秒后重置

我正在使用NVIDIA geforce卡,如果我尝试在其上运行一些CUDA程序,则会在2秒后发出错误.我在这里读到你可以使用TDRlevel密钥HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\GraphicsDrivers.但是,我在注册表中看不到任何此类密钥.是否需要自己添加?有其他人遇到过这个问题.如果是这样,你是如何解决的?谢谢.

c cuda gpu gpgpu

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

NVidia的ISA语言

AMD为每个GPU系列定义其ISA.据我所知,ISA是一个指令集架构:类似汇编的"语言".怎样称为NVidia的GPU"汇编式语言"? - PTX?是否有像AMD或Intel离线编译器这样的工具为NVidia内核生成这样的程序集?谢谢

cuda gpu nvidia isa amd-processor

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

__CUDA_ARCH__宏的行为

在主机代码中,__CUDA_ARCH__宏似乎不会生成不同的代码路径,相反,它将生成代码以确保当前设备的代码路径.

但是,如果__CUDA_ARCH__在设备代码中,它将为编译选项(/ arch)中指定的不同设备生成不同的代码路径.

谁能证实这是正确的?

cuda gpu nvidia

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

OpenCL-GPU矢量数学(指令级并行性)

文章谈论的代码,并讨论了指令级并行优化。他们给出了GPU向量数学的示例,其中float4向量数学可以在向量上执行,而不是在单个标量上执行。给出的例子:

float4 x_neighbor = center.xyxy + float4(-1.0f, 0.0f, 1.0f, 0.0f);
Run Code Online (Sandbox Code Playgroud)

现在我的问题是,它是否也可以用于比较?因此,在简化示例中,我可以这样做:

accumulator.xyz = (accumulator.xyz < element.xyz) ? accumulator.xyz : element.xyz;
Run Code Online (Sandbox Code Playgroud)

谢谢。

parallel-processing gpu opencl

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

GPU L1 缓存一致性

在 OPENCL 和 CUDA 中,分别有原语,即barrier() 和syncthread(),用于强制L1 数据缓存/共享内存的一致性。这是否意味着缓存本身是不连贯的,即在硬件中没有为 L1 缓存实现类似 CPU 的缓存连贯协议?

gpu gpgpu

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

如何让OpenCl看到intel和nvidia设备?

我想知道如何让OpenCl"看到"我的K20.Xeon和Xeon Phi在同一时间?

特别是我对这里使用两个库感到困惑(来自NVidia和Intel).

怎么做,如果可能的话?

gpu nvidia intel opencl

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

映射内存和 gpu::CudaMem 用法

我想知道是否有可能避免 gpu 和设备之间的内存传输。我最近读到映射内存就是为此目的,如果我错了,请纠正我。

  1. 可以分配多少映射内存?
  2. 当我们使用映射内存时,gpu 的全局内存未使用?
  3. 相反,在上传数据的gpu::GpuMatOpenCV中可以使用我们ALLOC_ZEROCOPY
    GPU :: CudaMem节省上传时间像这样
  4. 如果是的话,你能举个例子吗?

谢谢!

opencv cuda gpu

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

Renderscript rs.finish(), allocation.syncAll(), copyTo() :等待内核执行完成

我正在编写 android 渲染脚本代码,它需要背靠背的内核调用(有时一个内核的输出成为另一个内核的输入)。我还有一些全局指针,从 Java 层绑定到内存。每个内核更新这些全局指针并输出一些东西。我必须确保在 kernel2 开始执行之前已完成 kernel1 的执行。

我查看了 android renderscript 文档,但无法很好地理解 syncAll(Usage) 和 finish()。谁能澄清如何实现这种行为?

谢谢

mScript.forEach_kernel1(mColorImageAllocation, tempAlloc);

// make sure kernel1 finishes, from android rs doc, copyTo should block 
tempAlloc.copyTo(testOutputBitmap);

for (short i = 0; i < NUM_DIST; i++) {
            mScript.set_gCurrentDistanceIndex(i);
            mScript.forEach_kernel2(tempAlloc);    
        mRS.finish(); // wait till kernel2 finishes
}
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,在 kernel1 的输出上使用不同的全局参数调用相同的 kernel2。

parallel-processing android gpu sync renderscript

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

为什么GPU能比CPU更快地进行矩阵乘法?

我一直在使用GPU一段时间没有质疑但现在我很好奇.

为什么GPU能比CPU更快地进行矩阵乘法?是因为并行处理吗?但我没有写任何并行处理代码.它是自动完成的吗?

任何直觉/高级解释将不胜感激!谢谢.

parallel-processing gpu matrix-multiplication tensorflow pytorch

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