문제가 있습니다. 루프에 두 개의 커널이 있으며 맨 위에 있습니다. 첫 번째 커널이 예를 들어 초당 10 회, 예를 들어 5 번 실행 되더라도 모든 실행 커널의 총 시간을보고 싶습니다.OpenCL 측정 커널 시간
대단히 감사합니다.
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 초가 걸렸습니다"라는 단일 숫자를 원하십니까? 아니면 개별 커널 호출마다 실행 시간을 원하십니까? – jprice