Skip to content

tjmaddenArgonne/EPICS_CUDA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

EPICS_CUDA

This code has two parts:

  1. An EPICS Areadetector plugin that: a) Loads a DLL b) The DLL has a list of parameters, and the plugin gets that list and creates them in EPICS land. c) All the brains are in the DLL. The plugin simply sets parameters in DLL, and gets them. d) The DLL can pass images to the DLL, and get completed images back, and send them up the Areadetector plugin chain. e) The DLL is a subclass of genCamController, which keeps its own param. list and looks like AreaDetector 1.5 or older. Params are defined in enums. In the DLL, only the header is there, as we are importing all the code in the DLL itself. The v-table of the class is used to map all the function and data pointers.

2 MSVC project (2008) that is a CUDA project. The project is compiled as a DLL, not an exe. As I have not looked at this in 5 years I wish I could say more about it... The main file where all the business happens is a subclass of genCamcontroller, called gpuCamera.cpp. Try this approach: a) Write all your CUDA code as a regular exe and get it working.have some place where raw images are passed in, and some code where computed images are passed out. b) make a list of parameters, like in epics AD, that can control your CUDA code. c) make a new project that will compile as a DLL (or so in linux). d) Instead of a main() from your exe project, put the main stuff in a subclass of genCamController. e) build this, and then load the DLL from epics.

3 This MSVC project is a couple of CUDA algorithms. There exists an image viewer and FFT convolution. I think the code makes an image more blurry by convolving a round smudge with the input image. The FFT can also be done in regular software (non GPU) using FFTW. The idea was to compare the GPU code with host code. This code was done as a little research project, and I have not messed with it in a few years.

The EPICS code where the plugin exists, is a regular EPICS make. No cuda is involved. When you build the CUDA, there is no epics involved. You use the regular CUDA tool flow, except that instead of a main(), you subclass genCamcontroller and export the genCamController class and makeCameraObjs (or whatever the functino is...)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published