javascript

git

java

python

git-remote

reactjs

c++

github

django

c#

operators

git-fetch

typescript

user-experience

chmod

css

content-type

variables

var

loops

c#-完整的.NET OpenCL实现

我一直到处寻找,但是运气不好。 是否有针对OpenCL的有据可查的.NET绑定实现? (如果需要的话,我会为CUDA买些东西)。我已经遇到了各种实现,CUDA.NET,OpenCL.NET,OpenTK / Cloo(我知道,经常在stackoverflow中提到它们),但是它们似乎都处于alpha阶段或完全没有可用的示例。 CUDA.NET有一些帮助文件,但它只是一个库参考,并不能真正帮助您入门。

我希望找到一个成熟的.NET GPU编程库。最终,我需要能够用F#编写代码,但是我会选择任何.NET兼容语言,因为我以后总是可以将其转换并使用包含的任何示例来启动和运行。

自从我进行了全面搜索以来,大概是一个漫长的过程,但是我希望这只是我不知道要寻找正确事物的情况之一。

任何帮助将不胜感激。

trans by 2020-08-06T09:31:17Z

OpenCL调试器

我正在使用OpenCL。 有谁知道OpenCL的良好调试器,以便我可以进入OpenCL代码并进行跟踪?

trans by 2020-08-01T15:09:27Z

android-为什么Google选择RenderScript而不是OpenCL

我一直在想是否可以在Android上使用OpenCL,发现不可能,因此完全放弃了该主题。但是感谢1月14日在Android开发者官方博客上的博客文章([http://android-developers.blogspot.fr/2013/01/evolution-of-renderscript-performance.html),]我发现了并行编程 由于RenderScript的缘故,自Android 4.0起就有可能! 该API具有许多与OpenCL共同的功能。

我现在想知道的是:为什么Google选择实施此新解决方案,而不是向前推进OpenCL(Khronos组现在处理的开放规范)。

我的意思是,我知道,从一种转换为另一种并不难,但仍然...

无论如何,如果有人作为真正的解释,请让我知道!

trans by 2020-07-28T08:33:45Z

OpenCL中的障碍

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

因此,我的问题是:

  1. 知道为什么会这样吗?
  2. barrier()barrier(CLK_GLOBAL_MEM_FENCE)有什么区别? 我阅读了文档,但是我不清楚。
  3. 是否有关于何时使用barrier()barrier(CLK_GLOBAL_MEM_FENCE)的一般规则?
  4. 有没有时间使用错误的参数类型调用barrier()会导致错误?
trans by 2020-07-22T16:29:52Z

opencl-有关全球和本地工作规模的问题

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

论坛原始帖子

深入研究OpenCL阅读教程对我来说有些事情还不清楚。 这是我有关本地和全球工作规模的一系列问题。

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

  2. 对于二手内核,是否推荐使用global_work_size CL_DEVICE_MAX_WORK_ITEM_SIZES

    1. 还是这是GPU允许的唯一global_work_size? 在我的机器上CL_DEVICE_MAX_WORK_ITEM_SIZES = 512
  3. 我需要分成几个工作组,还是只能有一个工作组,但没有指定global_work_size

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

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

trans by 2020-07-13T18:03:55Z

图像-Abysmal OpenCL ImageSampling性能与OpenGL TextureSampling

我最近将我的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 of " << err.err() << "\n";
        return;
      }

}

OpenCL内核:

void kernel ImageSampleTest( read_only image3d_t CoordTexture, write_only image2d_t FrameBuffer, sampler_t smp)
{
int Screenx = get_global_id(0);
int Screeny = get_global_id(1);

int2 PositionOnScreen=(int2)(Screenx,Screeny) ;

float4 Testvec=(float4)(1,1,1,1);
for(int i=0; i< 2000; i++)
{
Testvec+= read_imagef(CoordTexture,smp, (float4)(0+0.00000001*i,0,0,0)); // i makes sure that the compiler doesn't unroll the loop
}

uint4 ToInt=(uint4)( (uint) (Testvec.x), (uint) (Testvec.y) ,(uint)(Testvec.z),1);
write_imageui (     FrameBuffer,  PositionOnScreen, ToInt ); 

}

用于全屏四边形的OpenGL FragmentShader,其片段数量与OpenCL内核具有的工作项相同:

#version 150
uniform sampler3D Tex;
out vec4 FragColor;

void main()
{
FragColor=vec4(0,0,0,0);
for(int i=0; i<2000; i++)
{
FragColor+= texture(Tex,vec3(0+0.00000001*i,0,0),0);
}
}

此外,我已经尝试了以下方法来提高性能:

-更改工作组大小:不提高性能

-不同的硬件:280 GTX,580 GTX,一些Fermi Tessla卡,它们在OpenCL和OpenGL中都具有相同的出色性能

-不同的纹理格式(字节而不是浮点数),不同的访问模式和不同的纹理大小:不增加

-使用缓冲区而不是图像作为数据,并使用自写三线性插值函数进行CL内核中的采样:将OpenCL性能提高了约100%

-使用2D图像//纹理代替3D图像//纹理:尽管OpenGL的性能完全没有改变,但OpenCL的性能却提高了100%。

-使用“最近”插值而不是“线性”插值:性能不变

这让我想知道:我是否犯了一个非常愚蠢的错误,从而降低了OpenCL的性能?尽管OpenCL采样性能应与OpenGL使用相同的纹理硬件,但为什么它的采样性能如此之低?为什么我的复杂三线性插值函数实现比其硬件实现更快?如何在OpenCL中提高采样性能,以使其具有与OpenGL相同的速度?

trans by 2020-01-04T03:03:52Z

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

我知道OpenCL可以控制GPU的内存架构,因此可以实现更好的优化,但是,撇开这一点,我们可以使用Compute Shaders进行矢量运算(加法,乘法,求逆等)吗?

trans by 2019-12-29T20:16:56Z

SDK-OpenCL / AMD:深度学习

在“搜索”并进行一些研究时,我找不到用于AMD硬件上的科学GPGPU计算和OpenCL的任何严肃/流行的框架/ SDK。 我错过了任何文献和/或软件吗?

我尤其对深度学习感兴趣。

就我所知,deeplearning.net建议使用NVIDIA硬件和CUDA框架。 另外,我知道的所有大型深度学习框架,例如Caffe,Theano,Torch,DL4J等,都专注于CUDA,并不打算支持OpenCL / AMD。

此外,对于基于CUDA的深度学习任务,可以找到大量科学论文以及相应的文献,而对于基于OpenCL / AMD的解决方案,则几乎找不到。

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

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

trans by 2019-11-04T06:06:06Z

python-将Keras和Tensorflow与AMD GPU一起使用

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

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

我在OSX上运行。

trans by 2019-10-09T21:56:38Z

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

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

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

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

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

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

trans by 2019-09-03T07:52:22Z

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

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

trans by 2019-09-03T00:25:13Z

cuda - NVIDIA vs 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任务中实现? 整数任务会发生什么?

trans by 2019-07-21T09:59:05Z

1 共1页