I open a second issue for discussion on OpenACC GPU porting.
Another one is here: #79
Sometimes the code calls a "memory free" before doing allocations
This is done via the macro YAMBO_FREE, where the deallocate/devxlib_unmap calls are protected by if allocated.
Example here in https://github.com/yambo-code/yambo/blob/tech-gpu/src/pol_function/X_irredux.F#L250
This call specifically leads to the following line:
https://github.com/yambo-code/yambo/blob/tech-gpu/src/Ymodules/mod_collision_el.F#L102
!DEV_ACC exit data delete(ggw)
With gfortran and Openacc this leads to an error.
From what I understand, there is no data to be deleted if ggw was not allocated. Although here the logic is not super clear to me.
What is the opposite of !DEV_ACC exit data delete(ggw)? Is it !DEV_ACC enter data create(ggw) ?
Why is this not handled via devxlib? Probably because gww is a type ?
I open a second issue for discussion on OpenACC GPU porting.
Another one is here: #79
Sometimes the code calls a "memory free" before doing allocations
This is done via the macro YAMBO_FREE, where the
deallocate/devxlib_unmapcalls are protected byif allocated.Example here in https://github.com/yambo-code/yambo/blob/tech-gpu/src/pol_function/X_irredux.F#L250
This call specifically leads to the following line:
https://github.com/yambo-code/yambo/blob/tech-gpu/src/Ymodules/mod_collision_el.F#L102
!DEV_ACC exit data delete(ggw)With gfortran and Openacc this leads to an error.
From what I understand, there is no data to be deleted if
ggwwas not allocated. Although here the logic is not super clear to me.What is the opposite of
!DEV_ACC exit data delete(ggw)? Is it!DEV_ACC enter data create(ggw)?Why is this not handled via devxlib? Probably because
gwwis a type ?