CUDA¶
Export to a CUDA kernel
Notes:
Only a kernel file is exported, no simulation engine, protocol or post-processing is included.
API¶
The standard interface for exporting and accessing expression writers is provided:
- myokit.formats.cuda.exporters()¶
Returns a list of all exporters available in this module.
- class myokit.formats.cuda.CudaKernelExporter¶
This
Exporter
creates an unoptimised CUDA cell kernel that calculates a forward Euler step for a single cell.Only a kernel file is created, no driver class is included and no support for protocol export is provided.
A value must be bound to
diffusion_current
which represents the current flowing from cell to cell. This is defined as positive when the cell is acting as a source, negative when it acts like a sink. In other words, it is defined as an outward current.Please keep in mind that CellML and other downloaded formats are typically not directly suitable for GPU simulation. Specifically, when simulating on single-precision devices a lot of divide-by-zero errors might crop up that remain hidden when using double precision single cell simulations on the CPU.
- class myokit.formats.cuda.CudaKernelRLExporter¶
Like
CudaKernelExporter
but uses a Rush-Larsen update step where applicable.For this exporter to work, the model’s membrane potential variable must be labelled as
membrane_potential
, and a value must be bound todiffusion_current
(seeCudaKernelExporter
for details).
- myokit.formats.cuda.ewriters()¶
Returns a list of all expression writers available in this module.
- class myokit.formats.cuda.CudaExpressionWriter(precision=32)¶
This
ExpressionWriter
translates Myokitexpressions
to their CUDA equivalents.- eq(q)¶
Converts a
myokit.Equation
to a string.
- ex(e)¶
Converts a
myokit.Expression
to a string.
- set_lhs_function(f)¶
- Sets a naming function, will be called to get the variable name from a
myokit.LhsExpression
object.
The argument
f
should be a function that takes anLhsExpression
as input and returns a string.