gamersensual
gamersensual

Reputation: 95

I need help translating this basic ACC pragma to OMP

My question is: I'm trying to make a CUDA function call (cublasDgemm) and I'm getting an error because I'm accessing addresses that should be unnaccessible.

I think it is because the CUBLAS function isn't using the device variables, but the host ones.

I've seen that in OpenACC, you would use this:

#pragma acc host_data use_device(list of variables) {
    (call to CUBLAS function)
}

host_data makes you capable of bringing device's variable's addresses to the host, and use_device makes whatever is inside the braces {} use the variables in the device, not in the host. It can be consulted in more detail here -> https://www.openacc.org/sites/default/files/inline-files/OpenACC_2_0_specification.pdf

So, is there a way to replicate this in OpenMP? Do I have to do this? How do I make sure that the CUBLAS call is using the variables of the device?

Upvotes: 0

Views: 152

Answers (1)

Mat Colgrove
Mat Colgrove

Reputation: 5646

Try:

#pragma omp target data use_device_ptr(list of variables) 
{
    call to cuda(vars)
}

See slide 27 of: https://on-demand.gputechconf.com/gtc/2018/presentation/s8344-openmp-on-gpus-first-experiences-and-best-practices.pdf

Upvotes: 2

Related Questions