GeNN  4.9.0
GPU enhanced Neuronal Networks (GeNN)
CodeGenerator::CUDA::Preferences Struct Reference

Preferences for CUDA backend. More...

#include <backend.h>

Inheritance diagram for CodeGenerator::CUDA::Preferences:
CodeGenerator::PreferencesBase

Public Member Functions

 Preferences ()
 
void updateHash (boost::uuids::detail::sha1 &hash) const
 
- Public Member Functions inherited from CodeGenerator::PreferencesBase
void updateHash (boost::uuids::detail::sha1 &hash) const
 

Public Attributes

bool showPtxInfo = false
 Should PTX assembler information be displayed for each CUDA kernel during compilation? More...
 
bool generateLineInfo = false
 Should line info be included in resultant executable for debugging/profiling purposes? More...
 
bool selectGPUByDeviceID = false
 
bool enableNCCLReductions = false
 Generate corresponding NCCL batch reductions. More...
 
bool generateSimpleErrorHandling = false
 
DeviceSelect deviceSelectMethod = DeviceSelect::OPTIMAL
 How to select GPU device. More...
 
unsigned int manualDeviceID = 0
 If device select method is set to DeviceSelect::MANUAL, id of device to use. More...
 
BlockSizeSelect blockSizeSelectMethod = BlockSizeSelect::OCCUPANCY
 How to select CUDA blocksize. More...
 
KernelBlockSize manualBlockSizes
 If block size select method is set to BlockSizeSelect::MANUAL, block size to use for each kernel. More...
 
size_t constantCacheOverhead = 72 * 5
 How much constant cache is already used and therefore can't be used by GeNN? More...
 
std::string userNvccFlags = ""
 NVCC compiler options for all GPU code. More...
 
- Public Attributes inherited from CodeGenerator::PreferencesBase
bool optimizeCode = false
 Generate speed-optimized code, potentially at the expense of floating-point accuracy. More...
 
bool debugCode = false
 Generate code with debug symbols. More...
 
bool enableBitmaskOptimisations = false
 
bool automaticCopy = false
 If backend/device supports it, copy data automatically when required rather than requiring push and pull. More...
 
bool generateEmptyStatePushPull = true
 Should GeNN generate empty state push and pull functions. More...
 
bool generateExtraGlobalParamPull = true
 Should GeNN generate pull functions for extra global parameters? These are very rarely used. More...
 
bool includeModelNameInDLL = false
 
std::string userCxxFlagsGNU = ""
 C++ compiler options to be used for building all host side code (used for unix based platforms) More...
 
std::string userNvccFlagsGNU = ""
 NVCC compiler options they may want to use for all GPU code (used for unix based platforms) More...
 
plog::Severity logLevel = plog::info
 Logging level to use for code generation. More...
 

Detailed Description

Preferences for CUDA backend.

Constructor & Destructor Documentation

◆ Preferences()

CodeGenerator::CUDA::Preferences::Preferences ( )
inline

Member Function Documentation

◆ updateHash()

void CodeGenerator::CUDA::Preferences::updateHash ( boost::uuids::detail::sha1 &  hash) const
inline

Update hash with preferences

Member Data Documentation

◆ blockSizeSelectMethod

BlockSizeSelect CodeGenerator::CUDA::Preferences::blockSizeSelectMethod = BlockSizeSelect::OCCUPANCY

How to select CUDA blocksize.

◆ constantCacheOverhead

size_t CodeGenerator::CUDA::Preferences::constantCacheOverhead = 72 * 5

How much constant cache is already used and therefore can't be used by GeNN?

Each of the four modules which includes CUDA headers(neuronUpdate, synapseUpdate, custom update, init and runner) Takes 72 bytes of constant memory for a lookup table used by cuRAND. If your application requires additional constant cache, increase this

◆ deviceSelectMethod

DeviceSelect CodeGenerator::CUDA::Preferences::deviceSelectMethod = DeviceSelect::OPTIMAL

How to select GPU device.

◆ enableNCCLReductions

bool CodeGenerator::CUDA::Preferences::enableNCCLReductions = false

Generate corresponding NCCL batch reductions.

◆ generateLineInfo

bool CodeGenerator::CUDA::Preferences::generateLineInfo = false

Should line info be included in resultant executable for debugging/profiling purposes?

◆ generateSimpleErrorHandling

bool CodeGenerator::CUDA::Preferences::generateSimpleErrorHandling = false

By default, GeNN generates CUDA error-handling code that generates exceptions with line numbers etc. This can make compilation of large models very slow and require a large amount of memory. Turning on this option generates much simpler error-handling code that simply raises an abort signal.

◆ manualBlockSizes

KernelBlockSize CodeGenerator::CUDA::Preferences::manualBlockSizes

If block size select method is set to BlockSizeSelect::MANUAL, block size to use for each kernel.

◆ manualDeviceID

unsigned int CodeGenerator::CUDA::Preferences::manualDeviceID = 0

If device select method is set to DeviceSelect::MANUAL, id of device to use.

◆ selectGPUByDeviceID

bool CodeGenerator::CUDA::Preferences::selectGPUByDeviceID = false

GeNN normally identifies devices by PCI bus ID to ensure that the model is run on the same device it was optimized for. However if, for example, you are running on a cluser with NVML this is not desired behaviour.

◆ showPtxInfo

bool CodeGenerator::CUDA::Preferences::showPtxInfo = false

Should PTX assembler information be displayed for each CUDA kernel during compilation?

◆ userNvccFlags

std::string CodeGenerator::CUDA::Preferences::userNvccFlags = ""

NVCC compiler options for all GPU code.


The documentation for this struct was generated from the following file: