Я запускаю ядро несколько раз, пока не найдено решение. решение будет найдено как минимум одним блоком.
поэтому, когда блок находит решение, он должен сообщить процессору, что решение найдено, поэтому процессор печатает решение, предоставленное этим блоком.
так что я сейчас делаю следующее:
__global__ kernel(int sol)
{
//do some computations
if(the block found a solution)
sol = blockId.x //atomically
}
теперь при каждом обращении к ядру я копирую sol обратно в память хоста и проверяю его значение. например, если для него установлено значение 3, я знаю, что blockid 3 нашел решение, и теперь я знаю, где начинается индекс решения, и копирую решение обратно на хост.
в этом случае будет ли лучше использовать cudaHostAlloc? кроме того, копирование значения одного целого числа при каждом вызове ядра замедляет мою программу?