CUDA: detener todos los otros hilos

Tengo un problema que parece resolverse enumerando todas las soluciones posibles y luego encontrando la mejor. Para hacerlo, ideé un algoritmo de retroceso que enumera y almacena la mejor solución si se encuentra. Funciona bien hasta ahora.

Ahora, quería portar este algoritmo a CUDA. Por lo tanto, creé un procedimiento que genera algunos casos básicos distintos. Estos casos básicos deben procesarse en paralelo en la GPU. Si uno de los hilos de CUDA encuentra una solución óptima, todos los otros hilos pueden, por supuesto, detener su trabajo.

Entonces, quería algo de lo siguiente: el hilo que encuentra la solución óptima debería detenersetodas ejecutando hilos CUDA de mi programa, terminando así el cálculo.

Después de una búsqueda rápida, descubrí que los hilos solo pueden comunicarse si están en el mismo bloque. (Así que supongo que es imposible detener a otros que bloquean hilos).

El único método que se me ocurre es que tengo una bandera dedicadaoptimum_found, que se verifica al comienzo de cada núcleo. Si se encuentra una solución óptima, este indicador se establece en1, por lo que todos los hilos futuros saben que no tienen que funcionar. Pero, por supuesto, los subprocesos que ya se están ejecutando no notan este indicador si no lo verifican en cada iteración.

Entonces, ¿existe la posibilidad de detener todos los subprocesos CUDA restantes?