ID del artículo: 000073934 Tipo de contenido: Resolución de problemas Última revisión: 06/12/2024

¿Por qué el SDK de FPGA para compilador OpenCL™ se cuelga y nunca termina con kernels NDRange que contienen operaciones de canal o flujo de control dependientes de subprocesos?

Entorno

  • Intel® Quartus® Prime Pro Edition
  • Intel® FPGA SDK para OpenCL™ edición Pro
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Descripción

    El SDK de FPGA para compilador OpenCL™ proporciona una garantía de que las instrucciones en un kernel NDRange son ejecutadas por subprocesos en orden de sus identificadores de subprocesos. Para asegurarse de que se cumple la garantía en los programas que contienen flujo de control dependiente de subprocesos, el compilador inserta una barrera de reordenamiento en el punto de unión de las rutas de flujo de control dependientes de subprocesos. Una falla en la configuración de tales barreras hace que el cálculo se detenga en la barrera sin posibilidad de progreso hacia adelante.

    Las operaciones del canal también pueden causar este estancamiento.

    A continuación se muestra un ejemplo de una "construcción de flujo de control dependiente de subprocesos":


    Obtener ID de hilo global

    int id = get_global_id(0);

    Asegúrese de no salirnos de los límites

    if (id < n)

    c[id] = a[id] b[id];

    Aquí, la instrucción if es una construcción de flujo de control que depende de subprocesos, es decir, lo que hace depende de qué subproceso lo ejecute.

    Resolución

    Vuelva a escribir el kernel de NDRange para que no contenga operaciones de canal ni construcciones de flujo de control dependientes de subprocesos.

    Productos relacionados

    Este artículo se aplica a 1 productos

    Dispositivos programables Intel®

    El contenido de esta página es una combinación de la traducción humana y automática del contenido original en inglés. Este contenido se ofrece únicamente para su comodidad como información general y no debe considerarse completa o precisa. Si hay alguna contradicción entre la versión en inglés de esta página y la traducción, prevalecerá la versión en inglés. Consulte la versión en inglés de esta página.