【发布时间】:2015-12-18 03:31:00
【问题描述】:
我有问题。我在循环中有两个内核,位于顶部。我想查看所有正在运行的内核的总时间,即使第一个内核将每秒运行例如 10 次,例如 5 次。
非常感谢。
for (int arrayLength = minLengthArray; arrayLength <= N; arrayLength *= 2)
{
int threadCount = 0;
int batchSize = N / arrayLength;
int GroupCount = (batchSize * arrayLength) / SHARED_SIZE_LIMIT;
size_t local = SHARED_SIZE_LIMIT / 2;
size_t global = local * GroupCount;
if (arrayLength <= SHARED_SIZE_LIMIT)
{
err = clEnqueueNDRangeKernel(commands, ddEvenMergeSortSharedKernel, 1, NULL, &global, &local, 0, NULL, NULL);
}
else
{
clSetKernelArg(oddEvenMergeSortSharedKernel, 5, sizeof(unsigned int), &SHARED_SIZE_LIMIT);
err = clEnqueueNDRangeKernel(commands, oddEvenMergeSortSharedKernel, 1, NULL, &global, &local, 0, NULL, NULL);
for (int size = 2 * SHARED_SIZE_LIMIT; size <= arrayLength; size <<= 1)
for (unsigned stride = size / 2; stride > 0; stride >>= 1)
{
global = batchSize * arrayLength;
local = 256;
err = clEnqueueNDRangeKernel(commands, oddEvenMergeSortGlobalKernel, 1, NULL, &global, &local, 0, NULL, NULL);
}
}
}
【问题讨论】:
-
为了清楚起见,您想要一个数字表示“运行所有这些内核总共花费了 T 秒”,还是您想要每个单独的内核调用的执行时间?
标签: opencl