Multiple Entry Points in a Single Context Run Parallel or Sequentially?

I’m writing some kind of simulation in OptiX that uses multiple entry point in a single context, and was not sure if the programs run at the same time or in sequential order.

For example, two line code

rtContextSetRayGenerationProgram( context, 0, progA );
rtContextSetRayGenerationProgram( context, 1, progB );

While progA only shoot rays and collect information and write into some deep buffers, progB uses the information provided by the deep buffers given by progA and constructs the result into output buffer.

And later I launch both of them in the glutDisplay function as below:

void glutDisplay()
{
    updateCamera();
    context->launch(0, static_cast<unsigned int>(256u), static_cast<unsigned int>(256u));
    context->launch(1, static_cast<unsigned int>(512u), static_cast<unsigned int>(512u));
	
    Buffer buffer = getOutputBuffer();
    ...
}

How will the progA and progB run? Does it run progA first (fininshing all 256x256 threads) then run progB (the 512x512 threads) since progA is launched before progB? Or after the launch both of them run parallel (that is, 256x256 threads and 512x512 threads run at the same time)?

Each launch is run sequentially. It’s a blocking call, not asynchronous.