PyPO User Manual
InterfaceCUDA.h File Reference

Declarations of PO and RT library for GPU. More...

#include <iostream>
#include <string>
#include <cmath>
#include <array>
#include "GUtils.h"
#include "Structs.h"
#include "InterfaceReflector.h"
#include "MemUtils.h"
#include "Debug.h"

Go to the source code of this file.

Macros

#define CSIZE   12
 
#define CSIZERT   5
 
#define PYPO_DLL
 
#define __InterfaceCUDA_h
 

Functions

PYPO_DLL void callKernelf_JM (c2Bundlef *res, reflparamsf source, reflparamsf target, reflcontainerf *cs, reflcontainerf *ct, c2Bundlef *currents, float k, float epsilon, float t_direction, int nBlocks, int nThreads)
 
PYPO_DLL void callKernelf_EH (c2Bundlef *res, reflparamsf source, reflparamsf target, reflcontainerf *cs, reflcontainerf *ct, c2Bundlef *currents, float k, float epsilon, float t_direction, int nBlocks, int nThreads)
 
PYPO_DLL void callKernelf_JMEH (c4Bundlef *res, reflparamsf source, reflparamsf target, reflcontainerf *cs, reflcontainerf *ct, c2Bundlef *currents, float k, float epsilon, float t_direction, int nBlocks, int nThreads)
 
PYPO_DLL void callKernelf_EHP (c2rBundlef *res, reflparamsf source, reflparamsf target, reflcontainerf *cs, reflcontainerf *ct, c2Bundlef *currents, float k, float epsilon, float t_direction, int nBlocks, int nThreads)
 
PYPO_DLL void callKernelf_FF (c2Bundlef *res, reflparamsf source, reflparamsf target, reflcontainerf *cs, reflcontainerf *ct, c2Bundlef *currents, float k, float epsilon, float t_direction, int nBlocks, int nThreads)
 
PYPO_DLL void callKernelf_scalar (arrC1f *res, reflparamsf source, reflparamsf target, reflcontainerf *cs, reflcontainerf *ct, arrC1f *inp, float k, float epsilon, float t_direction, int nBlocks, int nThreads)
 
PYPO_DLL void callRTKernel (reflparamsf ctp, cframef *fr_in, cframef *fr_out, float epsilon, float t0, int nBlocks, int nThreads)
 

Detailed Description

Declarations of PO and RT library for GPU.

Provides double and single precision interface for NVIDIA GPUs running CUDA.

Function Documentation

◆ callKernelf_EH()

PYPO_DLL void callKernelf_EH ( c2Bundlef res,
reflparamsf  source,
reflparamsf  target,
reflcontainerf cs,
reflcontainerf ct,
c2Bundlef currents,
float  k,
float  epsilon,
float  t_direction,
int  nBlocks,
int  nThreads 
)

Call EH kernel.

Calculate E, H fields on a target surface using CUDA.

Parameters
resPointer to c2Bundlef object.
sourcereflparamsf object containing source surface parameters.
targetreflparamsf object containing target surface parameters.
csPointer to reflcontainerf object containing source grids.
ctPointer to reflcontainerf object containing target grids.
currentsPointer to c2Bundlef object containing source currents.
kWavenumber of radiation in 1 /mm.
epsilonRelative permittivity of source surface.
t_directionTime direction (experimental!).
nBlocksNumber of blocks in GPU grid.
nThreadsNumber of threads in a block.
See also
c2Bundlef
reflparamsf
reflcontainerf

◆ callKernelf_EHP()

PYPO_DLL void callKernelf_EHP ( c2rBundlef res,
reflparamsf  source,
reflparamsf  target,
reflcontainerf cs,
reflcontainerf ct,
c2Bundlef currents,
float  k,
float  epsilon,
float  t_direction,
int  nBlocks,
int  nThreads 
)

Call EHP kernel.

Calculate reflected E, H fields and P, the reflected Poynting vectorfield, on a target surface using CUDA.

Parameters
resPointer to c2rBundlef object.
sourcereflparamsf object containing source surface parameters.
targetreflparamsf object containing target surface parameters.
csPointer to reflcontainerf object containing source grids.
ctPointer to reflcontainerf object containing target grids.
currentsPointer to c2Bundlef object containing source currents.
kWavenumber of radiation in 1 /mm.
epsilonRelative permittivity of source surface.
t_directionTime direction (experimental!).
nBlocksNumber of blocks in GPU grid.
nThreadsNumber of threads in a block.
See also
c2rBundlef
c2Bundlef
reflparamsf
reflcontainerf

◆ callKernelf_FF()

PYPO_DLL void callKernelf_FF ( c2Bundlef res,
reflparamsf  source,
reflparamsf  target,
reflcontainerf cs,
reflcontainerf ct,
c2Bundlef currents,
float  k,
float  epsilon,
float  t_direction,
int  nBlocks,
int  nThreads 
)

Call FF kernel.

Calculate E, H fields on a far-field target surface using CUDA.

Parameters
resPointer to c2Bundlef object.
sourcereflparamsf object containing source surface parameters.
targetreflparamsf object containing target surface parameters.
csPointer to reflcontainerf object containing source grids.
ctPointer to reflcontainerf object containing target grids.
currentsPointer to c2Bundlef object containing source currents.
kWavenumber of radiation in 1 /mm.
epsilonRelative permittivity of source surface.
t_directionTime direction (experimental!).
nBlocksNumber of blocks in GPU grid.
nThreadsNumber of threads in a block.
See also
c2Bundlef
reflparamsf
reflcontainerf

◆ callKernelf_JM()

PYPO_DLL void callKernelf_JM ( c2Bundlef res,
reflparamsf  source,
reflparamsf  target,
reflcontainerf cs,
reflcontainerf ct,
c2Bundlef currents,
float  k,
float  epsilon,
float  t_direction,
int  nBlocks,
int  nThreads 
)

Call JM kernel.

Calculate J, M currents on a target surface using CUDA.

Parameters
resPointer to c2Bundlef object.
sourcereflparamsf object containing source surface parameters.
targetreflparamsf object containing target surface parameters.
csPointer to reflcontainerf object containing source grids.
ctPointer to reflcontainerf object containing target grids.
currentsPointer to c2Bundlef object containing source currents.
kWavenumber of radiation in 1 /mm.
epsilonRelative permittivity of source surface.
t_directionTime direction (experimental!).
nBlocksNumber of blocks in GPU grid.
nThreadsNumber of threads in a block.
See also
c2Bundlef
reflparamsf
reflcontainerf

◆ callKernelf_JMEH()

PYPO_DLL void callKernelf_JMEH ( c4Bundlef res,
reflparamsf  source,
reflparamsf  target,
reflcontainerf cs,
reflcontainerf ct,
c2Bundlef currents,
float  k,
float  epsilon,
float  t_direction,
int  nBlocks,
int  nThreads 
)

Call JMEH kernel.

Calculate J, M currents and E, H fields on a target surface using CUDA.

Parameters
resPointer to c4Bundlef object.
sourcereflparamsf object containing source surface parameters.
targetreflparamsf object containing target surface parameters.
csPointer to reflcontainerf object containing source grids.
ctPointer to reflcontainerf object containing target grids.
currentsPointer to c2Bundlef object containing source currents.
kWavenumber of radiation in 1 /mm.
epsilonRelative permittivity of source surface.
t_directionTime direction (experimental!).
nBlocksNumber of blocks in GPU grid.
nThreadsNumber of threads in a block.
See also
c4Bundlef
c2Bundlef
reflparamsf
reflcontainerf

◆ callKernelf_scalar()

PYPO_DLL void callKernelf_scalar ( arrC1f res,
reflparamsf  source,
reflparamsf  target,
reflcontainerf cs,
reflcontainerf ct,
arrC1f inp,
float  k,
float  epsilon,
float  t_direction,
int  nBlocks,
int  nThreads 
)

Call scalar kernel.

Calculate scalar field on a target surface using CUDA.

Parameters
resPointer to arrC1f object.
sourcereflparamsf object containing source surface parameters.
targetreflparamsf object containing target surface parameters.
csPointer to reflcontainerf object containing source grids.
ctPointer to reflcontainerf object containing target grids.
inpPointer to arrC1f object containing source field.
kWavenumber of radiation in 1 /mm.
epsilonRelative permittivity of source surface.
t_directionTime direction (experimental!).
nBlocksNumber of blocks in GPU grid.
nThreadsNumber of threads in a block.
See also
arrC1f
reflparamsf
reflcontainerf

◆ callRTKernel()

PYPO_DLL void callRTKernel ( reflparamsf  ctp,
cframef fr_in,
cframef fr_out,
float  epsilon,
float  t0,
int  nBlocks,
int  nThreads 
)

Call ray-trace Kernel.

Calculate a new frame of rays on a target, given an input frame of rays.

Parameters
ctpreflparamsf object containing target surface parameters.
fr_inPointer to input cframef object.
fr_outPointer to output cframef object.
epsilonPrecision for NR method.
t0Starting guess for NR method.
nBlocksNumber of blocks in GPU grid.
nThreadsNumber of threads in block.
See also
reflparamsf
cframef