标签: opencl

NVIDIA与AMD:GPGPU性能

我想听听有两种编码经验的人的意见.我自己,我只有NVIDIA的经验.

NVIDIA CUDA似乎比竞争对手更受欢迎.(只计算这个论坛上的问题标签,'cuda'优于'opencl'3:1,'nvidia'优于'ati '15:1,并且根本没有'ati-stream'标签.

另一方面,根据维基百科,ATI/AMD显卡应该具有更大的潜力,特别是每美元.目前市场上最快的NVIDIA显卡,GeForce 580(500美元),评级为1.6单精度TFlops.AMD Radeon 6970的售价为370美元,售价为2.7 TFlops.580具有512个执行单元,772 MHz.6970具有1536个执行单元,频率为880 MHz.

AMD相对于NVIDIA的纸张优势有多现实,是否可能在大多数GPGPU任务中实现?整数任务会发生什么?

cuda gpgpu nvidia ati opencl

103
推荐指数
7
解决办法
5万
查看次数

Java中GPGPU/CUDA/OpenCL的最佳方法?

图形处理单元(GPGPU)上的通用计算是一种非常有吸引力的概念,可以利用GPU的强大功能进行任何类型的计算.

我喜欢使用GPGPU进行图像处理,粒子和快速几何操作.

现在看来,这个领域的两个竞争者似乎是CUDA和OpenCL.我想知道:

  • OpenCL在Windows/Mac上是否可以从Java使用?
  • 有哪些库与OpenCL/CUDA接口?
  • 是否直接使用JNA?
  • 我忘记了什么吗?

任何真实世界的经验/例子/战争故事都值得赞赏.

java cuda gpgpu opencl

92
推荐指数
5
解决办法
4万
查看次数

什么是银行冲突?(做Cuda/OpenCL编程)

我一直在阅读CUDA和OpenCL的编程指南,我无法弄清楚银行冲突是什么.他们只是倾向于如何解决问题而不详细说明主题本身.任何人都可以帮我理解吗?如果帮助是在CUDA/OpenCL的背景下,或者只是计算机科学中的银行冲突,我没有偏好.

cuda nvidia opencl bank-conflict

91
推荐指数
4
解决办法
4万
查看次数

OpenGL与OpenCL,可以选择和为什么?

使用GLSL进行计算的OpenCL有哪些特性可供选择?尽管有与图形相关的术语和非实用的数据类型,但对OpenGL有什么实际的警告吗?

例如,可以通过使用其他纹理渲染纹理来完成并行函数评估.减少操作可以通过迭代渲染到越来越小的纹理来完成.另一方面,无法以任何有效的方式进行随机写访问(唯一的方法是通过纹理驱动的顶点数据渲染三角形).这可能与OpenCL有关吗?OpenGL还有什么不可能实现的?

opengl gpgpu opencl

71
推荐指数
6
解决办法
8万
查看次数

使用Keras和Tensorflow与AMD GPU

我开始学习Keras,我认为它是Tensorflow和Theano之上的一层.但是,我只能访问AMD GPU,例如AMD R9 280X.

如何设置我的Python环境,以便通过Keras/Tensorflow支持OpenCL来使用我的AMD GPU?

我在OSX上运行.

python opencl python-2.7 keras tensorflow

63
推荐指数
6
解决办法
9万
查看次数

OpenCL/AMD:深度学习

虽然"googl'ing"并进行了一些研究,但我无法在AMD硬件上找到任何用于科学GPGPU计算和OpenCL的严肃/流行框架/ sdk .我错过了哪些文献和/或软件?

特别是我对深度学习感兴趣.

据我所知,deeplearning.net推荐使用NVIDIA硬件和CUDA框架.此外,我所知道的所有重要的深度学习框架,如Caffe,Theano,Torch,DL4J,......都专注于CUDA而不打算支持OpenCL/AMD.

此外,人们可以找到大量科学论文以及基于CUDA的深度学习任务的相应文献,但基于OpenCL/AMD的解决方案几乎没有.

在2015/16学年,是否有可能出现基于OpenCL/AMD的新解决方案或现有科学框架?

使用OpenCL/AMD进行深度学习的良好开端是什么?有文献吗?教程?杂项来源?

sdk gpgpu opencl neural-network deep-learning

58
推荐指数
5
解决办法
2万
查看次数

OpenCL和OpenGL的计算着色器有什么区别?

我知道OpenCL可以控制GPU的内存架构,因此可以实现更好的优化,但是,除此之外,我们可以使用Compute Shaders进行矢量运算(加法,乘法,反演等)吗?

opengl gpgpu opencl compute-shader

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

与OpenGL TextureSampling相比,糟糕的OpenCL ImageSampling性能

我最近将我的volumeraycaster从OpenGL移植到OpenCL,这使得raycaster的性能降低了大约90%.我跟踪了OpenCL的图像采样功能的性能下降,这比相应的OpenGL纹理采样功能慢得多.通过删除图像采样功能和纹理采样功能,两个raycaster实现具有大致相同的速度.为了轻松地在不同的硬件上使用功能,并在其余的RT代码中排除一些愚蠢的错误,我写了一个小的基准测试,将OpenCL采样速度与OpenGL采样速度进行比较,并在不同的机器上进行测试但是OpenCL仍然只占OpenGL性能的10%左右.

基准测试的OpenCL HostCode(至少是其中最重要的部分):

void OGLWidget::OCLImageSampleTest()
{
    try
    {
    int size=8;
    float Values[4*size*size*size];
    cl::Kernel kernel=cl::Kernel(program,"ImageSampleTest",NULL);
    cl::ImageFormat FormatA(CL_RGBA,CL_FLOAT);
    cl::Image3D CLImage(CLcontext, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR ,FormatA,size,size,size,0,0,Values,NULL);


    cl::ImageFormat FormatB(CL_RGBA,CL_UNSIGNED_INT8);
    cl::Image2D TempImage(CLcontext, CL_MEM_WRITE_ONLY,FormatB,1024,1024,0,NULL,NULL );


    kernel.setArg(0, CLImage);
    kernel.setArg(1, TempImage);



    cl::Sampler Samp;
    Samp() = clCreateSampler( CLcontext(), CL_TRUE, CL_ADDRESS_REPEAT, CL_FILTER_LINEAR, NULL);
    kernel.setArg(2, Samp);

    QTime BenchmarkTimer=QTime();
    BenchmarkTimer.start();

    cl::KernelFunctor func = kernel.bind(queue, cl::NDRange(1024,1024), cl::NDRange(32,32));
    func().wait();

    int Duration =  BenchmarkTimer.elapsed();
    printf("OCLImageSampleTest: %d ms \n", Duration);
    }
    catch (cl::Error& err)
      {
        std::cerr << "An OpenCL error occured, " << err.what()
                  << "\nError num …
Run Code Online (Sandbox Code Playgroud)

opengl textures image opencl sampling

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

关于全球和本地工作规模的问题

通过NVIDIA论坛搜索,我发现了这些问题,我也感兴趣,但在过去四天左右没有人回答过这些问题.你能帮我吗?

原论坛帖子

深入研究OpenCL阅读教程有些事情对我来说还不清楚.以下是关于本地和全球工作规模的问题集.

  1. 必须global_work_size小于CL_DEVICE_MAX_WORK_ITEM_SIZES?在我的机器上CL_DEVICE_MAX_WORK_ITEM_SIZES= 512,512,64.

  2. 是否CL_KERNEL_WORK_GROUP_SIZE推荐work_group_size使用内核?

    1. 或者这work_group_size是GPU允许的唯一?在我的机器上CL_KERNEL_WORK_GROUP_SIZE= 512
  3. 我是否需要分成工作组,或者我只能有一个,但没有指定local_work_size

    1. 当我只有一个工作组时,我需要注意什么?
  4. 什么CL_DEVICE_MAX_WORK_GROUP_SIZE意思?在我的机器上CL_DEVICE_MAX_WORK_GROUP_SIZE= 512,512,64

    1. 这是否意味着,我可以拥有一个与工作组一样大的工作组CL_DEVICE_MAX_WORK_ITEM_SIZES
  5. global_work_size要的除数CL_DEVICE_MAX_WORK_ITEM_SIZES?在我的代码global_work_size= 20.

opencl

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

OpenCL的障碍

在OpenCL中,我的理解是您可以使用该barrier()函数来同步工作组中的线程.我(通常)了解它们的用途以及何时使用它们.我也知道工作组中的所有线程都必须遇到障碍,否则会出现问题.但是,每次我尝试使用障碍到目前为止,它似乎导致我的视​​频驱动程序崩溃,或者有关访问某种无效内存的错误消息.到目前为止,我已经在2张不同的显卡上看过这个(1个ATI,1个NVIDIA).

所以,我的问题是:

  1. 知道为什么会这样吗?
  2. barrier(CLK_LOCAL_MEM_FENCE)和之间有什么区别barrier(CLK_GLOBAL_MEM_FENCE)?我阅读了文档,但对我来说并不清楚.
  3. 关于什么时候使用barrier(CLK_LOCAL_MEM_FENCE)vs. 有一般规则barrier(CLK_GLOBAL_MEM_FENCE)吗?
  4. 有没有时间barrier()用错误的参数类型调用可能会导致错误?

opencl

44
推荐指数
2
解决办法
4万
查看次数