标签: gpu

如何在多GPU上实现Radix排序?

如何在多GPU上实现基数排序 - 与在单GPU上相同,即通过拆分数据然后在单独的GPU上构建直方图,然后使用合并数据(如一堆卡)?

parallel-processing concurrency cuda gpu opencl

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

CUDA,漂浮精度

我在Geforce GTX 580(Fermi)上使用CUDA 4.0.我的数字小到7.721155e-43.我想将它们相互增加一次或者更好地说我想计算7.721155e-43*7.721155e-43.

我的经验告诉我,我不能直接做到这一点.你能给我一个建议吗?我需要使用双精度吗?怎么样?

floating-point precision cuda gpu

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

如何在同一块中扭曲分叉

我有点困惑Warps发散并需要通过__syncthreads()函数同步.块中的所有元素都以SIMT方式处理相同的代码.他们怎么可能不同步?它与调度程序有关吗?不同的warp会有不同的计算时间吗?为什么使用时有开销__syncthreads()

让我们说我们在一个区块中有12个不同的Warps已经完成了他们的工作.所以现在有空转,其他经线得到他们的计算时间.或者他们还有计算时间来完成这项__syncthreads()功能吗?

parallel-processing synchronization cuda gpu

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

Android模拟器:显示GPU透支

自从我读过这篇文章以来,我一直在尝试创建一个模拟器,我可以使用"Show GPU Overdraw".

我遵循这里那里的提示,但在新工具中,当创建新的AVD时,我发现无法启用GPU仿真.这可能就是为什么我没有在模拟器中看到GPU Overdraw,尽管在模拟器的Developer Settings中有"Show GPU Overdraw"(注意:我通过带有"-gpu on"选项的eclipse运行模拟器)

那么有没有人能够有一个模拟器来显示GPU Overdraw?

android gpu emulation

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

GpuMat上传的图像太慢

我想将图像上传到以下变量中gpu::GpuMat test;。首先,将输入图像(src)转换为灰度图像cvtColor( src, src_gray, COLOR_BGR2GRAY );,然后将其上传test.upload(src_gray);。不幸的是,上传花费了很多时间。超过2分钟。图像尺寸为169x90。我知道,由于带宽的原因,通常会有一些延迟,但是我认为两分钟对于这么小的图像来说实在太多了。最后,我要提到的是,在上传第一个图像之后,下一个图像的加载几乎是即时的。有初始化程序吗?我们可以改善这种延迟吗?

int main( int, char** argv )
{
/// Load source image and convert it to gray
string filename =  argv[1] ;//"yourfile.avi";
VideoCapture capture(filename);
if( !capture.isOpened() )
    throw "Error when reading steam_avi";

int framenumber=1;
Mat src, src_gray;
gpu::GpuMat test;

namedWindow( "w", 1);
time_t start,end;
time (&start);
for( ; ; )
{
    //printf("Frame %d: \n", framenumber++ );
    capture >> src;

    cvtColor( src, src_gray, COLOR_BGR2GRAY );

    test.upload(src_gray);//it takes too …
Run Code Online (Sandbox Code Playgroud)

opencv gpu

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

如何从多个CPU线程管理相同的CUDA内核调用?

我有一个cuda内核,当从单个CPU线程调用时,它可以正常工作。但是,当从多个CPU线程(〜100)调用同一内核时,大多数内核似乎根本不执行,因为结果全为零。有人可以指导我如何解决此问题吗?

在当前版本的内核中,我在内核调用结束时使用cudadevicesynchronize()。在这种情况下,在cudaMalloc()和内核调用之前添加sync命令会有帮助吗?

还有另一件事需要澄清。例如,如果两个CPU线程执行相同的cudaMalloc()命令,则后者会覆盖GPU内存中的前者还是会创建自己的内存?

在此先感谢您的帮助

multithreading cuda gpu gpgpu thread-safety

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

什么是BaseMosaic(NVidia/X11)

我在NVidia X Server Settings小程序和我的xorg.conf中看到对BaseMosaic的引用,但我找不到它的好描述.它是什么,它做了什么?

x11 gpu nvidia xorg

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

AMD GPU上的OpenCL 2.0

我正试图在AMD Fury X上初始化OpenCL 2.0,而我正在研究它的价值__OPENCL_VERSION__.无论如何都是120.我在寻找我的司机和内外#define __OPENCL_VERSION__ 120#define __OPENCL_VERSION__ 200可以在那里找到.

是否需要在某处启用特殊标志才能启用2.0版?我有以下平台和设备:

Advanced Micro Devices,Inc.的OpenCL平台"AMD加速并行处理",版本OpenCL 2.0 AMD-APP(1912.5),FULL_PROFILE
设备:Advanced Micro Devices,Inc.'斐济'(驱动程序版本:1912.5(VM))
OpenCL版本: OpenCL 2.0 AMD-APP(1912.5)
OpenCL"C"版本:OpenCL C 2.0

编辑

啊,傻.它似乎有助于-cl-std=CL2.0在编译器选项中指定clCreateProgramWithSource.那应该是预期的行为吗?

gpu opencl amd-app

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

如何在C/C++中了解我的Nvidia卡的计算能力?

许多框架要求您的nvidia显卡具有特定的计算能力版本.

我正在开发一个使用Cuda的C++应用程序.我应该通过代码获取此信息.这样我就可以为每个图形计算能力分配所需的框架.如何在C/C++中了解我的nvidia图形的计算能力?

c c++ cuda gpu nvidia

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

CUDA平行十字产品

免责声明:我对CUDA和并行编程都很陌生 - 所以如果你不想回答我的问题,请忽略这一点,或者至少指出我正确的资源,这样我就可以自己找到答案了.

这是我想要使用并行编程解决的特殊问题.我具有存储3D矢量以这种格式一些一维数组- > [v0x, v0y, v0z, ... vnx, vny, vnz]其中n是所述载体,和x,y,z是各自的组分.

假设我想找到[v0, v1, ... vn]一个数组中向量[v0, v1, ... vn]与另一个数组中相应向量之间的叉积.

没有并行化,计算非常简单:

result[x] = vec1[y]*vec2[z] - vec1[z]*vec2[y];

result[y] = vec1[z]*vec2[x] - vec1[x]*vec2[z];

result[z] = vec1[x]*vec2[y] - vec1[y]*vec2[x];
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是了解如何为我目前拥有的数组实现CUDA并行化.由于结果向量中的每个值都是单独的计算,因此我可以有效地并行运行每个向量的上述计算.由于得到的叉积的每个分量都是单独的计算,因此它们也可以并行运行.我将如何设置块和线程/考虑为这样的问题设置线程?

parallel-processing cuda gpu

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