【发布时间】:2011-08-28 01:52:00
【问题描述】:
我为两个矩阵的元素乘法构建了一个内核,但至少在我的配置中,我的 OpenCL 内核只有在每个矩阵大于 2GB 时才会更快。所以我想知道,是因为我的幼稚内核(见下文)还是因为元素操作的性质,这意味着元素操作不会从使用 GPU 中获益。
感谢您的意见!
内核:
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 上进行相同的操作?