我为两个矩阵的元素乘法构建了一个内核,但至少在我的配置中,当每个矩阵大于2GB时,我的OpenCL内核只会更快。所以我想知道,如果是因为我的天真内核(见下文),或者是因为元素操作的本质,这意味着元素操作不会从使用GPU中获益。OpenCL中的元素操作(Cuda)
感谢您的输入!
内核:
KERNEL_CODE = """
// elementwise multiplication: C = A .* B.
__kernel void matrixMul(
__global float* C,
__global float* A,
__global float* B,
int width, int height)
{
// ID
int x = get_global_id(0);
int y = get_global_id(1);
// Multiplying
C[y * height + x ] = A[y * height + x] * B[y * height + x];
}
"""
附:我看过一些专家认为,CUDA与OpenCL的差异太大,无法在同一个问题中回答,因此可以免费将其从标题和标签中删除。
检查在启动内核的过程中有多少时间正在丢失。你把这个比作什么?在CPU上的相同操作? – 2011-05-18 17:02:34