-
Notifications
You must be signed in to change notification settings - Fork 0
family definitions
The family definitions consist of a model and one or more layouts. The model is what specific parts of the instance should do, while the layout is how it should do just that in concert. The model is usually implemented as Python code and CUDA code integrated with PyCUDA, while the layout is usually implemented as JSON structures.
A model consists of several classes, where each class implements a specific type of structure in the JSON-file. During (re)instantiation of the file correct classes will be injected into the python structure at the host. Parts of some of those structures will be numpy arrays that are later moved to the device. The structures will also be used for compiling a list of CUDA operations on those numpy arrays at the devices.
The list of operations consists of an outer list and an inner list. The inner list is a list of high level version of CUDA kernel configurations, which must be run to completion. All those kernels might be run in parallel if the devices allows it. The outer list is a list of inner lists, where each one is single stepped in the up-actions inner loop. Each step in the outer loop (that is the inner loop of the up-action) is run to completion before the next step is started. Each of those steps can include several kernel configurations from the inner list.
The kernel configurations must be compiled and uploaded to the device before they can be used, that is the inner loop can be started.
A layout definitions says how the model should be used to create an instance.