big steps:
- standalone main calls "work" kernel we call with GPU pointers (completed)
- standalone main calls exc_vxc (RPBE only) interface with GPU pointers
- gpaw CPU version uses exc_vxc on GPU (we give exc_vxc GPU pointers)
- gpaw GPU version uses exc_vxc on GPU
plan for step(2):
- starting to work in libxc source
- start with work_gga_x.c. make work_gga_x a "shell".
- try using nvcc for everything
questions:
- we may run out of memory when putting more stuff on GPU
- can gga.c call a "kernel pointer" or does work_gga_x become a "shell" that calls kernel?
to make an XC(gga_type) pointer "p" on the device:
- need the size of params
- swap out the info/params pointers for device pointers
- p gpu-initialization happens at func_init time
to make "work" functions into a kernel:
- need a _global_ in the work
- need a _device_ in the rpbe