cuda parallel-processing opencl

¿Cuál es el análogo de OpenCL para__syncthreads() de CUDA y blockIdx.x?



parallel-processing (3)

Estoy tratando de traducir el código CUDA a OpenCL y ahora estoy atrapado con estas funciones / variables:

  • __syncthreads()
  • blockIdx.x


Hay muchas páginas en la web que pueden ayudarlo a portar CUDA a OpenCl (por ejemplo, aquí ). Solo quiero destacar, como lo señala aquí para la "barrera", que hay barrier(CLK_LOCAL_MEM_FENCE) y barrier(CLK_GLOBAL_MEM_FENCE) : principalmente la diferencia es que la primera garantiza el orden correcto de las operaciones de memoria cuando se usa el local (compartido en CUDA) memoria y el segundo cuando está operando en la memoria global. Asegúrese de usar el correcto para su caso.


__syncthreads() -> barrier(_) pero asegúrese de entender la diferencia entre barrier(CLK_LOCAL_MEM_FENCE) y barrier(CLK_GLOBAL_MEM_FENCE) marque esta pregunta o esta documentación para obtener más información.

blockIdx.x -> get_group_id(0) que le dará la primera / x dimensión de identificación del grupo / bloque