我爲兩個矩陣的元素乘法構建了一個內核,但至少在我的配置中,當每個矩陣大於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