gpt4 book ai didi

opencl - 可以从在 GPU 上计算而受益的最微不足道的函数是什么?

转载 作者:行者123 更新时间:2023-12-04 06:28:39 26 4
gpt4 key购买 nike

我刚刚开始学习 OpenCL。我试图了解将函数/算法移动到 GPU 时预期的性能提升。

大多数教程中给出的最基本的内核是一个内核,它接受两个数字数组并将相应索引处的值相加,然后将它们添加到第三个数组中,如下所示:

__kernel void 
add(__global float *a,
__global float *b,
__global float *answer)
{
int gid = get_global_id(0);
answer[gid] = a[gid] + b[gid];
}

__kernel void
sub(__global float* n,
__global float* answer)
{
int gid = get_global_id(0);
answer[gid] = n[gid] - 2;
}

__kernel void
ranksort(__global const float *a,
__global float *answer)
{
int gid = get_global_id(0);
int gSize = get_global_size(0);
int x = 0;
for(int i = 0; i < gSize; i++){
if(a[gid] > a[i]) x++;
}
answer[x] = a[gid];
}

我假设你永远无法证明在 GPU 上计算这个是合理的,内存传输会以数量级来衡量它在 CPU 上计算它所花费的时间(我可能错了,因此这个问题)。

我想知道的是,在使用 OpenCL 内核而不是 CPU 时,您期望显着加速的最简单示例是什么?

最佳答案

如果您有足够大的矩阵集打算对其执行线性代数运算,或者您基本上对每个元素执行相同的运算,我会将其视为一个简单的例子。矩阵乘法、加法、fft、卷积等。你会看到一点加速,而无需做太多工作。现在,如果您想看到 100 倍的加速,那么您需要深入研究内存管理并了解一些幕后发生的事情。

对于入门,我建议从 pycuda 开始,因为它上手相当简单,因为它提供了非常高的抽象级别,并且可以让您非常快速地入门。查看伊利诺伊大学使用 cuda 进行并行计算的类(class) http://courses.ece.illinois.edu/ece498/al/当你准备好进一步潜水时。

关于opencl - 可以从在 GPU 上计算而受益的最微不足道的函数是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2443402/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com