/******************************************************************************* Project: DigiCortex Engine Developed by: Ivan Dimkovic (ivan@digicortex.net) Stuttgart, Germany Copyright: Copyright (c) 2018 Accelerico, Ltd. Copyright (c) 2011-2023 Ivan Dimkovic All Rights Reserved Worldwide. *******************************************************************************/ COPYRIGHT / TRADEMARK NOTICE: All trademarks are property of their respective owners. -------------------------------------------------------------------------------- DIFFUSION MRI DATA SOURCE NOTICE: Diffusion MRI Data collection and sharing for this project was provided by the Human Connectome Project (HCP; Principal Investigators: Bruce Rosen, M.D., Ph.D., Arthur W. Toga, Ph.D., Van J. Weeden, MD). HCP funding was provided by the National Institute of Dental and Craniofacial Research (NIDCR), the National Institute of Mental Health (NIMH), and the National Institute of Neurological Disorders and Stroke (NINDS). HCP data are disseminated by the Laboratory of Neuro Imaging at the University of California, Los Angeles -------------------------------------------------------------------------------- BRAINSTEM ATLAS NOTICE: Edlow BL, Takahashi E, Wu O, Benner T, Dai G, Bu L, Grant PE, Greer DM, Greenberg SM, Kinney HC, Folkerth RD.Neuroanatomic connectivity of the human ascending arousal system critical to consciousness and its disorders. Journal of Neuropathologyand Experimental Neurology. 2012; 71:531 - 546. PMCID : PMC3387430. -------------------------------------------------------------------------------- CHANGELOG: ========== v2.14 - Released on November 28th 2023 -------------------------------------------------------------------------------- NOTE: some features (retina support, advanced stats and CUDA acceleration) are still TBD for the 2.x releases, they will be enabled in the near future * Fixed rare random crashes during network build-up affecting AVX-512 builds * Fixed handling of certain edge cases in neural network build-up resulting in abnormally long local axonal delays * Improved handling of firings buffers in high thread contention cases v2.13 - Released on September 5th 2023 -------------------------------------------------------------------------------- NOTE: some features (retina support, advanced stats and CUDA acceleration) are still TBD for the 2.x releases, they will be enabled in the near future * Fixed tract rendering bug where under certain circumstances axonal tract belonging to a neuron was traversed in wrong direction v2.12 - Released on August 29th 2023 -------------------------------------------------------------------------------- NOTE: some features (retina support, advanced stats and CUDA acceleration) are still TBD for the 2.x releases, they will be enabled in the near future * Added request to video driver(s) to prefer dGPUs for rendering as v2.x shaders do not compile properly on some integrated GPUs. This configuration preference affects only systems with hybrid iGPU+dGPU hardware configuration * Bug fixes v2.11 - Released on July 4th 2023 -------------------------------------------------------------------------------- NOTE: some features (retina support, advanced stats and CUDA acceleration) are still TBD for the 2.x releases, they will be enabled in the near future * Network creation speedup (factor ~2.5x) by removal of unnecessary OS calls v2.1 - Released on July 3rd 2023 -------------------------------------------------------------------------------- NOTE: some features (retina support, advanced stats and CUDA acceleration) are still TBD for the 2.x releases, they will be enabled in the near future * Added support for displaying anatomic landmarks * Added support for free-moving camera ("demo mode") * Video capture format changed to HEVC (NVENC) in MPEG TS Container * New tract rendering algorithm based on assisted procedural rendering saving large amounts of VRAM and with better visual quality * Improved rendering performance up to 30% thanks to optimizations in the NeonConnectome rendering engine * Upgraded to version 2 of Intel's AVX-512 sorting library * Further improvements in cache-locality (data layout optimizations) * Improved cell selection algorithm with better mathcing of desired cell connectivity statistics and with stronger preference for closer candidate post-synaptic cell targets * Fixed NUMA/CPU Group affinity bug affecting CPUs with more than 64 cores within a single NUMA node * Fixed luminance bug when rendering Nonbasket cell types * Fixed bug where main window is not set to foreground when created * Fixed bug that triggered rare random crashes after neural network creation v2.01 - Released on May 7th 2023 -------------------------------------------------------------------------------- NOTE: some features (retina support, advanced stats and CUDA acceleration) are still TBD for the 2.x releases, they will be enabled in the near future * Added DigiCortexDemo.exe as GUI front-end * Re-enabled SpikeBenchmark for performance evaluation * Added MP4 muxer for the video capture. MP4 output is optimized but requires a complete session (optimization happens at the end of the capture). In case of system crash/hang, MP4 output already written will not be playable * Pseudorandom number generator upgraded to use AVX-512 instruction set and xorshift128+ as algorithm due to increased performance (55 GB/s on a single 3.3 GHz Ice Lake Server CPU core) v2.00 - Released on April 30th 2023 -------------------------------------------------------------------------------- NOTE: some features (retina support, advanced stats and CUDA acceleration) are still TBD for the 2.x releases, they will be enabled in the near future * Rendering backend is now using DXGI, allowing smooth resize, native HDR support and improved performance * Font rendering engine updated to FreeType 2.13.0 with Harfbuzz support * Added support for acrylic background effect for tool windows * Added "Neuron Properties" and "Neural Network Stats" windows including EEG v2.00 PREVIEW - Released on April 17th 2023 -------------------------------------------------------------------------------- NOTE: this is a technology demonstrator with a limited feature set Focused on showing the new rendering engine capabilities. Most of the advanced neuron toolkit UX features are not enabled in this preview. * New "Neon Connectome" Rendering Engine - Long-Range Axonal Pathways rendered as Bezier paths - Propagation of action potentials through white matter visualized - Custom color schemes for neurons and axonal pathways supported - Rendering control per major tract pathway, neuron type or area - HDR Floating Point rendering support with automatic tone mapping - Order Independent Transparency (OIT) rendering for brain surfaces - Phong and Blinn-Phong lighting models for brain surfaces - SMAA Anti-Aliasing Support for non-HDR rendering - Entire rendering engine upgraded to OpenGL 4.6 Core profile: all legacy / compatibility OpenGL profile code removed - Added support for bindless textures - CPU<->GPU data transfers / texture uploads fully asynchronous - Detail enhancement supported by using tessellation shaders - Reduced GPU memory usage with custom vertex fetching and data layout - Hardware accelerated HDR 4:4:4 H.265 video capture (NVENC) * Completely removed Windows UI controls, new UI is using Dear ImGui * Diffusion MRI dataset upgraded to MGH 0.7mm high resolution dMRI data, with 8x improvement in 3D resolution over previous data * New tractography engine (Tract-o-Matic), dramatically cutting down connectome loading speeds and improved tracking quality * Tractography engine now groups fibers in major neuroanatomical tracts fully selectable in the UI * Brainstem ARAS structures anatomy rebuilt from high quality atlas * Added support for hybrid CPU architectures (P-cores / E-cores) including explicit disabling of power throttling, as a hint to OS scheduler * Additional AVX-512 optimizations for CPU simulation runtime including Intel x86-simd-sort library (>10x speedup for FLOAT32 sort) * Improved lockless task scheduler with built-in awareness of the system memory (NUMA) layout and cache hiearchy for efficient work/task stealing * Additional optimizations for systems with over 64 CPU cores NOTE: Compute engine is still limited to 256 CPUs, this is to be fixed * Switched to fast user-space synchronization primitives where it was not possible to use lockless algorithms (WaitOnAddress()) * Removed support for Windows versions prior to Windows 10 NOTE: Windows 11 or above is highly recommended * Removed support for CPUs without AVX2 instruction set * CUDA compute plug-in temporarily removed, pending rewrite * Numerous small bugfixes v1.35 - Released on December 22nd 2018 -------------------------------------------------------------------------------- * Added support for more than 64 CPUs/threads for dMRI-based axonal fiber tracking (based on DSI Studio library) * Added support for more than 64 CPUs/threads for generation of high detail 3D geometry (-wireframe mode) * Added more verbose progress tracking for simulation generation with simulations containing large number of neurons, thus potentially reducing confusion that the simulation generation process is "stuck" v1.35 - Released on December 22nd 2018 -------------------------------------------------------------------------------- * Added support for more than 64 CPUs/threads for dMRI-based axonal fiber tracking (based on DSI Studio library) * Added support for more than 64 CPUs/threads for generation of high detail 3D geometry (-wireframe mode) * Added more verbose progress tracking for simulation generation with simulations containing large number of neurons, thus potentially reducing confusion that the simulation generation process is "stuck" v1.34 - Released on December 10th 2018 -------------------------------------------------------------------------------- * Fixed a bug where DigiCortex IDE application was only loading DigiCortex libraries with up to AVX set support (ignoring AVX2 and AVX512 versions) v1.33 - Released on December 8th 2018 -------------------------------------------------------------------------------- * Added new server benchmark for HEDT/Workstations and large servers (spikebenchmark_v104_ws_server.bat, using Demo1mBench.xml) * Please note that the output CSV format of the benchmark tool has been updated (description of the columns will be in the first row of the CSV file) * Minimum OS is now Windows 7 x64 / Windows Server 2008 R2 x64 Windows XP and Windows Vista support has been deprecated as well as support for 32-bit Operating Systems * Improved CPU work scheduling algorithm, taking into account the NUMA systems with more than two nodes where access cost between the nodes might not be identical. At the beginning of every DigiCortex simulation, a small benchmark (taking few seconds) will be performed to measure relative NUMA to NUMA node memory access cost. This change impacts only NUMA systems with e.g. different routing costs between CPU X and CPU Y * CPU work scheduling has been improved to take into account CPU cache hierarchies more when performing work stealing v1.32 - Released on November 26th 2018 -------------------------------------------------------------------------------- * Enabled limited support for number of synapses larger than 4B. NOTE: this is very experimental and 4B limits still apply to single compute nodes (NUMA node, GPU). For example, dual-socket system configured with 2 NUMA nodes could, in theory, allocate up to 8 billion synapses. Ultimate number of synapses supported is: MAX_NODES * 2^32, where MAX_NODES is 128 in the current version of DigiCortex. v1.31 - Released on November 23rd 2018 -------------------------------------------------------------------------------- * Removed outdated Windows-specific OpenGL font calls (wglXXX) * Made visualization engine compatible with Mesa 3D software OpenGL drivers (for running visualization on systems with no accelerated graphics) * Fixed a bug in CUDA simulations where number of spikes delivered to remote GPU could overflow its available VRAM v1.30 - Released on November 16th 2018 -------------------------------------------------------------------------------- * Added support for UHD 4K video capture (needs -uhd4k command line parameter) * Added option to record every Nth video capture frame in capture mode (-capnthframe , default: 2) * Reduced video memory usage for high-quality ("connectome") rendering by approx. ~10% by optimized packing of 3D visualization data v1.29 - Released on November 5th 2018 -------------------------------------------------------------------------------- * Fixed incorrect OpenGL video memory usage report * Improved rendering in high-quality ("connectome") mode including showing of long-range connections * Fixed rendering bug in high-quality ("connectome") mode when running simulations including retinal input * Added support for rendering of very large simulations in high-quality mode even when rendering objects size is larger than VRAM size of the visualization GPU (exact behavior can depend on the actual OpenGL implementation, correct operation has been confirmed with the NVIDIA 416.16 driver and GeForce GTX 1080 Ti GPU) v1.28 - Released on October 10th 2018 -------------------------------------------------------------------------------- * Fixed a bug which prevented video encoding from running on systems with more than 64 processor cores v1.27 - Released on October 3rd 2018 -------------------------------------------------------------------------------- * Added support for NVIDIA Turing architecture v1.26 - Released on September 20 2018 -------------------------------------------------------------------------------- * Bugfixes v1.25 - Released on August 9th 2018 -------------------------------------------------------------------------------- * Updated to CUDA Toolkit 9.2 -------------------------------------------------------------------------------- v1.24 - Released on June 5th 2018 -------------------------------------------------------------------------------- * Updated to CUDA Toolkit 9.1 * Bugfixes * Retinal cell activity view is disabled in "no OpenGL mode" -------------------------------------------------------------------------------- v1.23 - Released on August 8th 2017 -------------------------------------------------------------------------------- * Preliminary support for NVIDIA Volta architecture -------------------------------------------------------------------------------- v1.22 - Released on May 2nd 2017 -------------------------------------------------------------------------------- * CUDA simulations will limit GPU firings buffer size in case there is not enough VRAM for default firings buffer size. When operating with constrained firings buffer size, some spikes might be missed * Fixed the problem preventing simulations from starting on systems with 16 GPUs due to memory allocation failure -------------------------------------------------------------------------------- v1.21 - Released on April 25th 2017 -------------------------------------------------------------------------------- * Added support for NVIDIA Pascal architecture * Support for simultaneous use of multiple NVIDIA CUDA devices, please see comments in DigiCortexConfig.cuda * Fixed CPU discovery on systems with number of CPU groups higher than four * CUDA compute now requires at least Kepler generation GPU * Added configuration option for forcing circuit builder to generate neurons with single compartments (), for usage please see Demo*_SingleCompartment.xml files * Added more example projects (_SingleCompartment.xml) -------------------------------------------------------------------------------- v1.20 - Released on March 21st 2017 -------------------------------------------------------------------------------- * Added an option to control number of benchmark samples (-benchsamples, default 5000) * Improved performance when running on systems with number of CPUs different than 2^N (e.g. 6, 10, 18, etc.) * Fixed a bug where number of simulation threads was capped at 64 * Fixed a bug where simulations might run incorrectly on systems with number of logical cores higher than 64. DigiCortex now supports up to 4 processor groups with 64 cores each, totalling 256 cores. This will be improved in the future for supporting more than 256 cores. * Fixed a bug on NVIDIA Optimus systems where running CUDA simulation and OpenGL visualization would not work. This problem is fixed by forcing DigiCortex to run on NVIDIA GPU. In order for this to work, Optimus configuration settings must be set to "Auto" for GPU selection -------------------------------------------------------------------------------- v1.19 - Released on March 20th 2017 -------------------------------------------------------------------------------- * Added option to control number of warmup time steps (-warmupsamples) * Added option to exit DigiCortex once benchmark results are written to a file (-benchexit) * Simulation time step is now written in the benchmark log * Added support for Intel Skylake-EP / AVX-512 instruction set * CUDA runtime updated to v8.0 * Updated hardware performance monitoring to support following CPUs: - Intel Broadwell-EP/EX - Intel Broadwell-DE - Intel Broadwell - Intel Skylake NOTE: Hardware performance monitoring run on multi-socket Haswell EP systems will not run in 32-bit mode, resulting in bug check. If running on multi-socket system and with hardware performance monitoring (-pmu switch), please use 64-bit version of DigiCortex * Fixed a bug where, during circuit building, incorrect pre-synaptic neuron was selected for connection (affects neurons with retinotopic coordinates only e.g. LGN TC, V1 Pyr. etc.) * Fixes a bug where command line help (-h) switch was crashing * Fixed a bug where 32-bit simulation crashed if number of logical CPUs is higher than 32. Note: maximum number of logical CPUs on 32-bit simulations is 32. For supporting systems with number of logical CPUs higher than 32, please use 64-bit version of DigiCortex * Updates code signing certificate (dropped SHA-1) -------------------------------------------------------------------------------- v1.18 - Released on January 18th 2016 -------------------------------------------------------------------------------- * Bug fixes -------------------------------------------------------------------------------- v1.17 - Released on September 10th 2015 -------------------------------------------------------------------------------- * Rebuilt with CUDA 7.5 * Fixed a problem with STDP metaplasticity in simulations with retina where homeostatic control would stop if synaptic weight reached its specified maximum value -------------------------------------------------------------------------------- v1.16 - Released on June 4th 2015 -------------------------------------------------------------------------------- * Fixed a crash when running on Windows Server 2008 R2+ systems with multiple processor groups (number of logical processors > 64), such as 4S Intel Xeon E5 V2 systems or 2S Xeon E5 2699 V3 (this 2S setup has 72 logical cores configured in two Windows processor groups) -------------------------------------------------------------------------------- v1.15 - Released on May 28th 2015 -------------------------------------------------------------------------------- * White matter tracts are now being traced from a dataset which also includes voxel-wise corrections of gradient non-linearities on bvals / bvecs (Bammer et al., 2003; Sotiropoulos et al., 2013) References: Bammer, R., Markl, M., Barnett, A., Acar, B., Alley, M.T., Pelc, N.J., Glover, G.H., Moseley, M.E., 2003. Analysis and generalized correction of the effect of spatial gradient field distortions in diffusion-weighted imaging. Magn Reson Med 50, 560-569 Sotiropoulos, S.N., Jbabdi, S., Xu, J., Andersson, J.L., Moeller, S., Auerbach, E.J., Glasser, M.F., Hernandez, M., Sapiro, G., Jenkinson, M., Feinberg, D.A., Yacoub, E., Lenglet, C., Van Essen, D.C., Ugurbil, K., Behrens, T.E., 2013. Advances in diffusion MRI acquisition and processing in the Human Connectome Project. Neuroimage 80, 125-143. * Fixed Linux (Wine) compatibility of 64-bit DigiCortex binaries. Wine 1.6.x has no implementation of GetNumaProcessorNode() and related API calls. This problem has been fixed by disabling NUMA-aware calls when DigiCortex is running under Wine environment on Linux and falling back to legacy memory allocation. * Fixed compatibility problems of 64-bit DigiCortex binaries running on x64 editions of Windows XP and Windows Server 2003 R2 caused by attempted usage of non-existent Windows 7 Processor Group APIs * Fixed rendering problem on certain VMWare installations which was caused by accessing OpenGL states (glGetFloat) from additional (non-rendering) thread not having its own OpenGL context * Fixed a bug in handling of synaptic min/max range for homeostatic control affecting CUDA-accelerated simulations -------------------------------------------------------------------------------- v1.14 - Released on April 19th 2015 -------------------------------------------------------------------------------- * Improved precision of the white matter tract tracing by decreasing the step size to 1/2 of the diffusion MRI dataset voxel size, which is 1.5 mm for the current dsi.fib.bin dataset. Previous versions of DigiCortex were using fixed step size of 5 mm (6.66x larger). To compensate for the vastly increased number of tract segments, new strategy is applied for reducing the number of 3D points for tract rendering by effectively downsampling the inner tract points, which reduces the number of vertices to render but without compromising the resolution of the data used for connectome mapping (beginning and termination tract segments) * Improved registration of the white matter tracts with the cortical mesh, resulting in improved accuracy of the long-range connections of the cortical and thalamocortical/corticothalamic neurons * Fixed several bugs related to the generation of short-range synaptic connections inside the cortex * Improved rendering of the white matter tracts -------------------------------------------------------------------------------- v1.13 - Released on March 1st 2015 -------------------------------------------------------------------------------- * Added configuration options for meta-plasticity with homeostatic regulation for each neuron type. Values are configurable per each extended neuron type in their respective XML configuration file (e.g. /NeuronLibrary/P2.xml): EnableMetaplasticity --> Enable / Disable Metaplasticity MetaScalingFactor --> Scaling factor controling the rate of control MetaTargetFiringRate --> Target firing rate (in Hz) MetaMinSynWeightThresh --> Threshold below which adjustment stops MetaMaxSynWeightThresh --> Threshold above which adjustment stops * Fixed a bug where reticular thalamic neurons adjectant to LGN layer did not have correct retinotopic coordinates assigned to them (affected simulations with retinal model only) * Added option to print out list of post-synaptic neurons of the selected neuron with the 'U' key (list of axon terminals) * Added printing of retinotopic coordinates (UV) for pre-synaptic neurons of LGN and V1 when showing compartment statistics ('Y' key) * Updated brain structural data based on improved registration between T1 and Diffusion spaces, resulting in improved alignment of the axonal tracts with cortical surface * Fixed a bug where configuring MaxAxonalDelay in the simulation configuration resulted in all axon terminals to be incorrectly set to the MaxAxonalDelay value * Fixed a bug in CUDA compute which resulted in some neuron categories flags to be transmitted to the GPU incorrectly, resulting in wrong computation of membrane voltage for thalamic neurons -------------------------------------------------------------------------------- v1.12 - Released on February 12th 2015 -------------------------------------------------------------------------------- * CUDA compute plug-in now selects the GPU with the highest amount of SMs for computation * Added command line option -cudevice for manual selection of CUDA accelerator -------------------------------------------------------------------------------- v1.11 - Released on December 3rd 2014 -------------------------------------------------------------------------------- * Initial support for Oculus Rift DK2 devices (-oculus command line) -------------------------------------------------------------------------------- v1.10 - Released on November 10th 2014 -------------------------------------------------------------------------------- * Added support for Intel(R) Crystalwell architecture for performance benchmarks / measusrement (-pmu command line switch) * Added support for Intel(R) Haswell-EP/EX (Xeon E5-2600/4600 v3) CPUs benchmarks / measusrement (-pmu command line switch) * Rendering fixes for NVIDIA drivers 33x, removing OpenGL warnings -------------------------------------------------------------------------------- v1.09 - Released on May 21st 2014 -------------------------------------------------------------------------------- * Added support for Adaptive Exponential Integrate and Fire neuron model in CUDA simulations (for configuring AdEx neurons please replace BaseNeuronParams.xml with BaseNeuronParams.axex) NOTE: Current CUDA implementation causes huge warp divergence when simulation contains both AdEx and Izhikevich-type neurons. This results in decrease in performance. This problem will be solved in future version of DigiCortex. * Added option for limiting maximum allowed axonal delay (in msec): MaxAxonalDelay (in AxonalParams section) -------------------------------------------------------------------------------- v1.08 - Released on May 12th 2014 -------------------------------------------------------------------------------- * Background current injection option extended so it can be separately defined for cortical and thalamic neurons (see: option in the demonstration XML files) * Fixed a problem where incorrect voltage was displayed for non-somatic compartments in the visualization view -------------------------------------------------------------------------------- v1.07 - Released on April 27th 2014 -------------------------------------------------------------------------------- * Compiled with CUDA 6 SDK. CUDA simulations now require CUDA 6 capable drivers / hardware. * Added ability to configure multiple STDP parameters for each base cell morphology (NeuronLibrary/BaseNeuronTypes.xml). STDP parameters can be configured independently for each post-synaptic target cell type. For example, see configuration for SS4 cell, which has "regular" STDP curves with all cells except with the SS4/P4 cells where STDP curves are "inverted" in order to help decorrelate the input sensory input. STDP parameters that can be individually configured are: * Enable/Disable STDP * A+, A- values (e.g. positive A+ and negative A- = inverted STDP) Other STDP parameters (theta+/-, T+/-) are fixed per base cell type since they are dependent on post-synaptic compartment's configuration * Added ability to define a "black list" of neuron types for each target post-synaptic neuron type. Neuron types in the "black list" will be forbidden from forming synaptic connection with the neuron * Fixed STDP-homeostasis control so that the homeostasis-control factor is inverted for inhibitory synapses as well as synapses with inverted STDP curves. * Changed the circuit-building strategy so that it attempts to maintain the ratio between inhibitory and excitatory cell types even if the proximity rules would bias in favor of excitatory cells (typical for simulations with low neuron density) -------------------------------------------------------------------------------- v1.06 - Released on April 14th 2014 -------------------------------------------------------------------------------- * New longe-range axonal connectivity data based on MGH Human Connectome Project Data: Gmax=300 mT/m, bmax=10000 s/mm2, res 1.5mm iso - in the upcoming versions of DigiCortex, we will perform further improvements of tractography and elimination of false tracts * Reduced GPU memory load for tractography visualization ("box" mode) -------------------------------------------------------------------------------- v1.05 - Released on March 16th 2014 -------------------------------------------------------------------------------- * First release of DigiCortex Software Development Kit (SDK) - SDK is in /SDK subfolder of the installation - SDK examples Visual Studio 2012 project si SdkExamples.sln - Implemented functionality: neuron queries, mapped neuron buffers updating neuron buffers with up-to-date simulation information injecting background current in arbitrary compartments - To test SDK, build neuron_query64.exe, copy it in the DigiCortex binary directory. Start a simulation. Once simulation starts, execute neuron_query64.exe - SDK currently works with CPU simulations only. CUDA support is work in progress. -------------------------------------------------------------------------------- v1.04 - Released on March 9th 2014 -------------------------------------------------------------------------------- * Extended capabilities of the RPC server required for upcoming SDK release * Fixed OpenGL rendering issues with 33x NVIDIA drivers * Limited maximum tract length in order to eliminate non-anatomic DSI tracts * Improved brain diffusion source data (improved eddy current removal and motion correction), resulting in more precise tract mapping to the cortical areas -------------------------------------------------------------------------------- v1.03 - Released on November 24th 2013 -------------------------------------------------------------------------------- * Added metaplasticity (STDP homeostatic control) based on average and target firing rates. It is possible to set the desired target firing rate for each extended neuron type with the following param: (e.g. see NeuronLibrary/p2.xml) and the vSTDP will attempt to reach this target rate by rescaling synaptic weights in a way that preserves individual ratios between synapses. NOTE: Metaplasticity is currently implemented for CUDA simulations only. It will be enabled in CPU simulations with the next release * Added extended information related to pre-synaptic connections that can be displayed in the console by pressing 'Y' keyboard button (requires that neuron is picked in the OpenGL simulation) * Improved receptive-field formation using vSTDP with retinal simulations. NOTE: For camera (live) based simulations, strenght (gmax) of the LGN synapse must be set at ~45.0 or higher as retinal live simulation is not step-locked with the thalamocortical simulation and typically runs slower (so LGN neurons get retinal spikes every other time step). For file-based (or RGC dump) based retinal simulations, retinal synapse maximum strenght should be set at 21.0 This yields typical firing rates of ~2 Hz for LGN TC neurons (as opposed to ~7 Hz average firing rate for RGC cells) See: NeuronLibrary/SynapseLibrary.xml value for retinal synapse. -------------------------------------------------------------------------------- v1.02 - Released on October 13th 2013 -------------------------------------------------------------------------------- * Fixed a bug where axonal paths for V1 cortico-thalamic and thalamo- cortical tracts were resolved incorrectly * Added an option for printing-out currently selected compartment connectivity statistics ('Y' keyboard key shortcut) -------------------------------------------------------------------------------- v1.01 - Released on September 22nd 2013 -------------------------------------------------------------------------------- * Added ability to generate RGC cell dumps which can be used instead of full retinal simulation in the subsequent runs. See DemoSmallRetinaDumpCreate.xml (which creates the retinal simulation dump - needs input AVI file!) and DemoSmallRetinaDump.xml which is using RGC spike dump instead of full retinal simulation NOTE: RGC dump file must match the retinal simulation parameters (there is currently no header inside the RGC dump) * Fixed a bug where synaptic allocation of LGN cells was not following physiological bounds * Fixed inappropriate use of spinlock-barrier when the number of compute threads is larger than the number of CPU cores present -------------------------------------------------------------------------------- v1.00a - Released on August 25th 2013 -------------------------------------------------------------------------------- * Added visualization of the LGN synapse strenghts for V1 neurons for retinal simulations * Fixed a bug with Oculus Rift enabled visualizations where residual mouse cursor was visible in the edge of the viewport -------------------------------------------------------------------------------- v1.00 - Released on August 24th 2013 -------------------------------------------------------------------------------- * Added support for Oculus Rift VR headset. To enable Oculus Rift visualization mode, add -oculus to SpikeFun.exe / SpikeFun64.exe command line. Oculus Rift support works in multi-monitor mode (non fullscreen). In addition, it is also possible to configure supersampling for increasing quality on limited-resolution Oculus Rift development kits: use -osfac where N is the supersampling factor (default 2). Example Oculus Rift visualization demo: SpikeFun64.exe -project demoSmall.xml -ministhalamus -oculus -demo -------------------------------------------------------------------------------- v0.99b - Released on August 18th 2013 -------------------------------------------------------------------------------- * Fixed a bug where Brainstem PPT Nucleus neurons were misplaced and ended up in misc. thalamic nuclei. * NOTE: Brainstem modulation is currently not working in CUDA-enabled simulations. This will be fixed in the next release. -------------------------------------------------------------------------------- v0.99a - Released on July 28th 2013 -------------------------------------------------------------------------------- * Changed identification of the primary visual cortex using FreeSurfer 5.3 detection method * Improved neuron soma distribution across cortical surface * Added -homedir command line option for SpikeFun.exe enabling setting home path for all project files and configuration data (useful when executing from external application) * Fixed a severe performance degradation when running on CPUs with core count different than power of 2 (e.g. 6, 10, 12) * Added performance monitoring support for Intel architecture codename IvyTown / Ivy Bridge EN/EP/EX (Xeon E5/E7 2600/2800/4600/4800/8800 v2) * Fixed a bug which resulted in a crash when retinal simulation is run on CPU-s (CUDA disabled) and the number of logical CPUs is larger than 32 -------------------------------------------------------------------------------- v0.99 - Released on July 6th 2013 -------------------------------------------------------------------------------- * Improved performance of the CPU simulations by using new event-based synaptic update workflow. Time steps can be processed up to 2 times faster in certain workloads with high number of action potentials * Improved CUDA simulation performance (up to 50%). Real-time simulation performance achieved with 300K neurons on single GK110 TITAN GPU * Added in-place preview of the retinal activity in the main simulation window (activated with the 'F' key) * Fixed a bug where incorrect candidate pre-synaptic neurons were used in simulation build-up phase. While the correct pre-synaptic type was obtained it might not conform to the target distance between its axon branch and post-synaptic neuron's dendritic branch * Fixed a bug where vSTDP weights were updated improperly on the CPU simulation in certain cases. -------------------------------------------------------------------------------- v0.98 - Released on June 9th 2013 -------------------------------------------------------------------------------- * Early support for Intel Haswell microarchitecture with the dedicated AVX2 optimizations (Fused Multiply & Add, Gather) * Added support for hardware performance counter monitoring for Intel Haswell microarchitecture * Added support for memory bandwidth measurement using hardware perf. counters in desktop processors based on Intel Sandy Bridge and Ivy Bridge microarchitectures. Previously, on non-server architectures memory bandwidth was estimated by software means * Fixed a bug where icEEG was not computed for retinal simulation with offline AVI file as the visual input source -------------------------------------------------------------------------------- v0.97a - Released on June 2nd 2013 -------------------------------------------------------------------------------- * Model of early vision: Added option to use video files instead of live camera input (see DemomSmallRetinaFileSource.xml for syntax). NOTE: It is recommended to use at least 100 FPS videos in order to avoid phase locking of the retinal ganglion cells to the frame rate of the source video. Above ~100 FPS this unwanted side-effect is diminished. In our internal tests we use 1000 FPS videos generated by motion-adaptive frame rate upconversion of the original videos. Due to patent restrictions we do not redistribute OpenCV ffmpeg DLLs. You need to download OpenCV 2.4.4 pre-built binaries from here: http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.4/ And copy opencv_ffmpeg244.dll and opencv_ffmpeg244_64.dll from the binary OpenCV distribution to the folder where all DigiCortex DLL files are located (this is usually the DigiCortex installation path) WARNING: File-source is untested with source data which resolution is not 320x240, and which frame rate is not equal to 1000 FPS! * Upgraded DSI tract tracking code to DSI Studio source code snapshot of 22/Apr/2013 (http://dsi-studio.labsolver.org/). * Cleaned-up DSI fiber data used for long-range axonal tract guidance, with removed cerebellar and ponto-cerebellar tracts. * Added post-processing step designed to remove incorrectly resolved cortical axonal tracts projecting contralaterally and not being part of any known commissure. These tracts are likely to be artifacts of the fiber tracking process and thus do not represent anatomically valid data. -------------------------------------------------------------------------------- v0.97 - Released on May 26th 2013 -------------------------------------------------------------------------------- * Model of early vision: Added LGN visual pathway. Retinal ganglion cell axons now project to thalamic lateral geniculate nucleus (LGN). Retinal ganglion cell pathways are currently separated in two layers 'ON' and 'OFF', with corresponding LGN layers. Thalamocortical relay cells from LGN project to V1 visual cortex. In addition to the thalamocortical relay cells, both inhibitory cells of the reticular thalamic nucleus (RTN) and thalamic interneurons are also present along with the cortico-thalamic "feedback" pathway from the pyramidal cells of cortical layer 6. NOTE: It is also possible to see visualized activity of the TC 'ON' and 'OFF' layers when retinal simulations are run. However, this is limited to CUDA accelerated simulations only at this moment. * Started using diffusion MRI data from Human Connectome Project (HCP) Please see the data source notice at the beginning of this document. * Simulated intracranial EEG (F2 key) is now also available with the CUDA-accelerated simulations. * PS3 Eye Capture Cam process (EyeCamServer.exe) now has built-in watchdog ensuring that EyeCamServer exits in case DigiCortex engine becomes unresponsive, avoiding having "zombie" EyeCamServer running and preventing initialization of camera capture on the next run * Various small bugfixes -------------------------------------------------------------------------------- v0.96 - Released on April 27th 2013 -------------------------------------------------------------------------------- * Retinal model: Prototype version of the visual system. Early visual system processing (retinal outer and inner plexiform layers) is implemented using INRIA Virtual Retina package feeding ON and OFF retinal ganglion cells (RGC). LGN relay is not yet implemented but it will be added in the future version of DigiCortex. Retinal input is fed from the live camera capture source. Two modes of capture are implemented: 1 - OpenCV HighGui capture 2 - Sony(R) PS3 Eye Cam High FPS capture (requires CL Eye SDK) You can configure the capture mode in the XML configuration file, please refer to node in the project XML config file (e.g. DemoSmallRetina.xml). Please note that retinal processing is done on the CPU and it is recommended to use retinal processing only when CUDA acceleration is enabled (by renaming DigiCortexConfig.cuda to DigiCortexConfig.xml). Otherwise, retinal processing will "steal" CPU cycles from the neuron processing. * CUDA Compute: Added support for Voltage-depentent STDP with homeostasis (model of Clopath et. al). STDP implementation is still not optimized and it slows down CUDA processing by ~10-15% * CUDA Compute: Added support for synapse weight read-out for the selected neuron (synapse weight display is updated every 500 ms) -------------------------------------------------------------------------------- v0.95 - Released on March 16th 2013 -------------------------------------------------------------------------------- * First (alpha) release of CUDA compute capability. To enable CUDA, DigiCortexConfig.cuda should be renamed to DigiCortexConfig.xml CUDA support is in a very early stage, and support only a subset of DigiCortex features. Limits of the current CUDA compute module: - Support for 64-bit version of DigiCortex only - Only one GPU is supported - It is not yet possible to spread the simulation between compute nodes (e.g. CPU + GPU) - Only Izhikevich model is supported (AdEx coming soon) - STDP is not supported yet * Fixed a bug where video capture was extremely slow during simulation -------------------------------------------------------------------------------- v0.94 - Released on March 3rd 2013 -------------------------------------------------------------------------------- * Added support for Adaptive Exponential Integrate and Fire (AdEx) neuron model [Brette R. and Gerstner W. (2005)]. To test the AdEx model, just rename BaseNeuronTypes.adex to BaseNeuronTypes.xml (in this file, pyramidal neurons of layer V/VI will be simulated using AdEx model). * Added support for injection of background current to every neuron. To enable background current injection, just set the parameter in the simulation XML file block. * It is now possible to specify all neuron model parameters (except gUp/gDown) for somatic and dendritic compartments separately * Added option to toggle the rendering of orientation axes (0 key) -------------------------------------------------------------------------------- v0.93 - Released on Feb 3rd 2013 -------------------------------------------------------------------------------- * Neuron Long-term Plasticity Homeostasis * Updated performance monitoring code to Intel(R) PCM v2.3, supporting memory I/O metrics for single-socket Sandy Bridge-E architecture. Added support for memory bandwidth I/O readouts from uncore per each CPU socket (requires uncore IMC readout support - supported by Intel Nehalem, Westmere or Jaketown / Sandy Bridge-E architectures ) * Significantly increased simulation throughput for small simulations running on large number of CPUs where threads spent significant time (20+ %) in wait state. In SpikeFun 0.93 thread workload divergence has been minimized thanks to improved load balancer, which allows to nearly eliminate time threads spend spinning (or sleeping when wait time is too large). * Added support for Windows 8 / Server 2012 new Kernel synchronization primitives ( Synchronization Barriers ) -------------------------------------------------------------------------------- v0.92 - Released on January 27th 2013 -------------------------------------------------------------------------------- * Synaptic receptor state processing has been switched from time-based to event based (where 'event' is a presynaptic spike). As a result significant memory I/O has been saved as the receptor state is updated only per preynaptic spike and not for every simulation time step. New AVX-optimized synaptic processing code is also better at grouping data into chunks suitable for processing in AVX registers. Next big improvements can be expected by Intel(R) Haswell(TM) AVX2 VGATHER instruction, which is going to be supported in the future version of DigiCortex Engine. Overall speed improvement is approx. 30% across all demo projects * Optimized neuron clustering algorithm allowing for greatly improved neuron locality in the memory. As a result, simulation build-up time is significantly improved (20%+ on NUMA systems). * Optimized worker thread scheduling by using NUMA-friendly spinlocks (spinlock are still 'hybrid' in a sense that they will be used up to the defined number of spins with exponential backoff, after which scheduler will try switching to other threads and, finally, sleep the thread if the work of other threads is not completed at that point). In addition, false sharing of per-thread data has been eliminated by padding remaining structures to the L1 cache line size * Memory usage optimizations by removing certain unnedeed variables from the Neuron structure * Added option to inject brief pulse of hyperpolarizing current into the selected neuron/compartment with the 'O' key -------------------------------------------------------------------------------- v0.91 - Released on January 6th 2013 -------------------------------------------------------------------------------- * STDP model changed to Voltage-based STDP model (Clopath et al.[1]) which is in agreement with the larger set of experimental data. [1] "Connectivity reflects coding: a model of voltage-based STDP with homeostasis" Clopath C, Buesing L, Vasilaki E, Gerstner W. Nat Neurosci. 2010 Mar;13(3):344-52 * Tract mapping speed optimizations * Small bugfixes / cleanups -------------------------------------------------------------------------------- v0.90 - Released on December 27th 2012 -------------------------------------------------------------------------------- * Increased complexity level of the pyramidal neurones, including basal dendrites and dendritic tree branching (apical tuft) * Improved axonal and dendritic arbor spreading boundary checking by employing optimized (Monte Carlo method) intersection test between the spreading region cylinders. Previous versions of DigiCortex did only limited checks by approximating cylinder regions as capsules * Optimized dendritic current calculation * Improved matching of desired connectivity statistics (requires pool of pre-synaptic neurons large enough to accomodate the requirements, which is typically only possible when neuron volume density is high enough) * Improved drawing of individual neuron axonal terminals and dendrites when neuron is selected * STDP bugfixes (preventing accidental weight runaway) * Fixed a bug where some neuron somae would get assigned incorrect (zero) coordinates during the simulation build-up -------------------------------------------------------------------------------- v0.89 - Released on December 10th 2012 -------------------------------------------------------------------------------- * Extension of the implementation of the Tsodyks-Markram model of synaptic release allowing differential signalling via the same axon of a given pre-synaptic neuron. It is now possible to define different synapse types that obey Thodyks-Markram kinetics (depressing, facilitating, pseudo-linear; see SynapseLibrary.xml) and configure different synaptic expression of a pre-synaptic neuron type depending on the post-synaptic target type. For example, Pyramidal neurons form facilitating synapses with LTS interneurons, and depressing synapses with other neuron types. For each synapse type (and there are no limits with the number of defined synapses) it is possible to tweak U, F and D parameters * Pyramidal neurons now form facilitating synapses with LTS cells * Pyramidal neurons of L6 now form facilitating synapses with thalamic neurons (all types) * Configurable ratios of fast (AMPA/GABAa) and slow (NMDA/GABAb) receptors for each synapse types (see SynapseLibrary.xml). This way it is possible to create synapses that are pure AMPA/GABAa and/or synapses with non-equal ratio of the AMPA/GABAa to NMDA/GABAb * Pyramidal neurons of Cortical Layer V are now of IB (Intrinsically- Bursting) type. See BaseNeuronTypes.xml, p5_l23.xml and p5_l56.xml * New improved dendritic tree builder with customizable tree branching factor for each cell type (except pyramidal neurons, where factors are still hardcoded, making them configurable is work in progress) * Maximum allowed number of synapses per neuron increased to 10000 (previous limit was 1024). Please note that the maximum number of synapses per simulation is still 2^32-4 (4294967292). Simulations where total possible number of synapses is larger than 2^32-4 will fail during build-up phase. * Misc. small bugfixes -------------------------------------------------------------------------------- v0.88 - Released on November 25h 2012 -------------------------------------------------------------------------------- * Improved thalamic nuclei parcellation, including division of the pulvinar thalamic nuclei into anterior, medial and lateral. Rules guiding synapse formation of thalamic relay cells have been extended so that cross-nuclei connections between core TRN cells are not allowed. * Reduced GPU memory load and faster rendering of the cortical surface * Dendritic current computation optimizations resulting in speed gains -------------------------------------------------------------------------------- v0.87a - Released on November 17th 2012 -------------------------------------------------------------------------------- * Disabled wireframe rendering of the brain mesh due to significant drop in rendering performance on NVidia Kepler GPUs with 30x.xx drivers when GL_LINE is used as glPolygonMode(). Rendering switched to GL_FILL with background thread doing depth sorting of brain polys every 10th frame (when camera angle is changing) to save CPU time. * Reduction in memory reservation for the spiking buffers due to better estimation of worst-case spiking scenarios. Total reserved memory (not necessarily used, just reserved for the worst case) has been reduced by approx. 50% * Optimized memory layout for synaptic storage with 32 bits of data per synapse removed. * 32-bit build of SpikeFun is now linked as "large address aware", allowing slightly larger simulations to run as it is able to use up to 3 GB (on 32-bit Windows) or 4 GB (on 64-bit Windows) of address space where OS is configured to allow large-address space for 32-bit applications. However, 64-bit SpikeFun is recommended to be used when possible (when running on 64-bit Windows) -------------------------------------------------------------------------------- v0.87 - Released on November 11th 2012 -------------------------------------------------------------------------------- * NUMA-specific performance optimizations * Fixed a bug on Win7+ x64 systems where processor affinity was not set properly for the worker threads -------------------------------------------------------------------------------- v0.86a - Released on November 4th 2012 -------------------------------------------------------------------------------- * Optimized in-memory neuron grouping which improves cache locality * Optimized thread-barrier code with hybrid spinning / wait strategy. This hybrid approach improves performance on systems with the large number of CPU cores and simulations with low number of synapses, where Windows thread scheduling quantum is too coarse and ends in worker threads spending too much time suspended (waiting to be 'unlocked'). Hybrid spinning is set in a way that does not tax the CPU too much but at the same time manages to catch many occasions where the thread would end up sleeping for 10-15 ms otherwise * Fixed a bug which triggered rare random crashes during simulation build-up on NUMA systems -------------------------------------------------------------------------------- v0.85 - Released on October 30th 2012 -------------------------------------------------------------------------------- * Added RPC Server (using ZeroMQ as the transport layer) which will be used in the future for remote simulation control/management and distributed computing. Currently with 0.85 only 4 command line tools are provided (enable_neuron, disable_neuron, axonal_delays) with the aim to extend this list significantly in the future. * Introduction of the compute plug-ins. Compute plug-ins will be used in the future to add more compute hardware support (e.g. OpenCL, CUDA and distributed computing). Currently with 0.85 only one plugin is provided, for CPU-based compute (port of the old built-in CPU compute core) * Simulation runtime thread-management code is now 100% lock-free, which gives performance gains up to 1% on large-threaded systems * Optimized dendritic-current calculation (faster dendritic tree walk) -------------------------------------------------------------------------------- v0.84 - Released on October 22nd 2012 -------------------------------------------------------------------------------- * Different STDP parameters can now be specified for individual base neuron type allowing expression of different long-term plasticity behaviors for each base neuron type * Added option to bias the axonal preference for a specific part of post-synaptic cell (soma, proximal dendrites and distal dendrites) * Added option to configure the maximum number of synapses allowed per single neuronal compartment (default value: 40) * New memory allocation strategy used during network build-up. Unlike the old approach, new memory allocator starts with reserved virtual address space and then commits the memory as needed. New approach avoids costly reallocations and also does not "grab" large chunk of memory at the beginning * Eliminated firing buffer memory reallocations that seldom occured during larger simulations * Fixed a bug in computation of the dendritic currents in neurons with multiple compartments -------------------------------------------------------------------------------- v0.83 - Released on October 3rd 2012 -------------------------------------------------------------------------------- * Big optimizations in the computation engine, yielding ~20-30% speed improvements (on AVX-capable CPUs) and runtime RAM usage reduction * Fixed a bug where cerebellar tracts were selected for guiding PPTN neuron axons. * More stringent testing of suitable reticulo-thalamic white matter tracts, eliminating incorrectly guided PPTN axons -------------------------------------------------------------------------------- v0.82 - Released on September 30th 2012 -------------------------------------------------------------------------------- * Begin adding support for Brainstem Nuclei: this version supports cholinergic neurons from the Brainstem Pedunculopontine Tegmental Area. Penduculopontine Tegmental Nuclei (PPTN) cholinergic neurons are currently modeled as glutamatergic as support for the muscarinic and nicotinic receptors is not yet supported. Spiking activity of the PPTN neurons can be modulated by using the "Brainstem modulation" slider. PPTN strongly projects to thalamus and it exhibits target-specific action: excitatory on the thalamic relay cells and inhibitory on the reticular thalamic cells. * Furter improvements in the simulation creation time for large-scale simulations - improvements can be up to 30% compared to the v0.81 * Small bugfixes -------------------------------------------------------------------------------- v0.81a - Released on September 17th 2012 -------------------------------------------------------------------------------- * Correction in the location (span) of Reticular Thalamic Nucleus. RTN now does not cover anterior and mediodorsal nuclei and RTN cells do not inhibit to TC and TI cells in those regions -------------------------------------------------------------------------------- v0.81 - Released on September 16th 2012 -------------------------------------------------------------------------------- * Added additional algorithm for connectome mapping, supporting high precision topographic mapping of axonal tracts. It is activated as a global setting (see "MappingPrecision" option in tractography parameters inside demo project XML files) * Thalamic neurons can now be created inside nuclei, instead of simplified surface-only approach used in previous versions. Please note that this option should only be used when number of thalamic neurons is relatively high. It is enabled in demo simulations that have 262144 neurons or more. See "FlattenSubcorticalRegions" option inside the demo project XML files. * Even more strict subcortical white matter tract identification * Fixed a bug where white-matter axonal length was miscalculated leading to significant decrease in reported size and corresponding network effects due to lack of actual longer-range connections * Fixed a bug where local-circuit connections of insular/cingulate cortex "leaked" to thalamus in low-neuron-count simulations (due to large bounding limits and disabled additional geo. checks) -------------------------------------------------------------------------------- v0.80a - Released on August 27th 2012 -------------------------------------------------------------------------------- * Enabled switching to different project without having to restart DigiCortex_IDE application -------------------------------------------------------------------------------- v0.80 - Released on August 26th 2012 -------------------------------------------------------------------------------- * Pre-Alpha version of the new DigiCortex IDE app (DigiCortexIDE_32bit / DigiCortexIDE_64bit binary) * New tract classification code which eliminates attributing non-thalamic tracts to thalamus (e.g. tracts that terminate near thalamic surface such as globus pallidus, etc.) * Additionally, new tract classification code is able to segment the thalamic nuclei, based on the global thalamic projections. Nuclei information is shown when thalamic neurons are picked, or if a cortical axon projects to thalamus * New voxelization algorithm for tract tracing, allowing greater precision with less memory usage as well as faster voxel space traversal. This also improves simulation creation speeds * Improved neuron pick-up precision in the GUI -------------------------------------------------------------------------------- v0.79 - Released on August 6th 2012 -------------------------------------------------------------------------------- * Added somatic diameter parameter for each neuron (see Neuron Library). Default values are selected from the neuroanatomical measurements * Simulation creation now takes into account somatic diameters when placing neuron somae (no overlap) * Improved simulation creation speed (30% +) for large simulations * Fixed axonal tract search algorithm which in some cases returned incorrect "best fit" resulting in tracts being abnormally far from the GM entry point of the axonal collateral * More bugfixes in neuronal drawing (wrong axonal positions in some cases) -------------------------------------------------------------------------------- v0.78b - [Bugfix release] Released on August 1st 2012 -------------------------------------------------------------------------------- * Fixed an error where cortical projections from the thalamocortical relay cells were not checked against cortex layer boundaries during axon terminal creation * Fixed an error where axonal terminals were not properly scaled during drawing -------------------------------------------------------------------------------- v0.78 - Released on July 29th 2012 -------------------------------------------------------------------------------- * Enabled per-base neuron type synaptic conductance configuration (see ./NeuronLibrary/BaseNeuronTypes.xml) * Added possibility to define per-base neuron type rules ("exceptions") for synapse conductance (weight) including min/max conductance range, STDP plasticity enable/disable and runtime randomization parameters. With this option, it is possible to define different synapse parameters for pre-synaptic base neuron neuron type depending on the base type of the post synaptic neuron (for example, one set of synaptic parameters when the target is a Pyramidal base cell type and other set when the target is of Basket base type) * Added possibility to override synaptic conductance configuration for wide-range of neurons in the project configuration (for all excitatory cortical, excitatory thalamic and inhibitory base neuron types). DemoSmall.xml and DemoMedium.xml are using synaptic parameter override, while other projects are only relying on per-base neuron type synaptic conductance parameters. * Added configuration data for individual cortical layer thickness (relative, will be scaled to the the anatomic cortical height at location, see ./BrainAnatomy.xml) * Added option to bias the axonal connectivity preference based on linear vs. exponential distance falloff factor. Each neuron type can have its own value. Default option is linear falloff (number of synaptic terminals decreases linearly to 0 at the border of the axonal arbor) * Fixed bugs in neuron drawing where axonal depth location was incorrectly calculated. -------------------------------------------------------------------------------- v0.77 - Released on July 24th 2012 -------------------------------------------------------------------------------- * New XML-based configuration manager and project format * XML-based neuron libraries, including open access to neuron type parameters, including adding/removing base and extended neuron types, modifying electrophysiological parameters as well as axonal and dendritic arbor spreads (defined for each brain structure / layer) * Each base and extended neuron types are identified by the corresponding UUID, allowing for complete freedom in the simulation arrangements (not relying on hardcoded neuron names / types) * XML-based and fully configurable cortical connectivity parameters, including per-neuron-type synaptic connectivity statistics, per-neuron type allocation ratios for number of cells and synaptic receptors * Configurable axonal action potential propagation velocity (axon conduction velocity) for each individual base neuron type (separate parameters for myelinated and non-myelinated axonal collaterals), allowing for different speeds of spike propagation based on the neuron type * Configurable per-neuron type axonal projection/bifurcation parameters allowing for custom branching rules for each neuron type (projection destination, ipsilateral vs. contralateral hemisphere, etc.) * Added -noopengl option to allow benchmarks without need for graphics / GUI. Useful for benchmarks on the server systems with limited or no graphics hardware at all * Memory allocation fix for firing buffer (crashes if the number of spikes was extremely high) * Fixed several incorrect parameters related to the cell electrical behavior * Correct display of brain region names -------------------------------------------------------------------------------- v0.76 - Released on July 3rd 2012 -------------------------------------------------------------------------------- * Font rendering bugfix (incorrectly rendered fonts on certain graphics cards, such as ATI Mobility Radeon 6xxx/7xxx) * Neuron initialization bugfix (affecting last 128-256 neurons in the simulation) -------------------------------------------------------------------------------- v0.75 - Released on July 1st 2012 -------------------------------------------------------------------------------- * Connectome mapping speed optimizations * Added support for Ivy Bridge CPU hardware monitoring in benchmark mode * Added performance-workaround for Intel HD graphics (MSAA antialiasing will be disabled for Intel HD graphics) * Bugfixes (crashes when trying to stop simulation, or 'restore defaults' in the simulation configuration) -------------------------------------------------------------------------------- v0.74 - Released on June 24th 2012 -------------------------------------------------------------------------------- * Fixed fMRI BOLD calculation bugs (fade out during pause) * Various OpenGL speedups (reduced state changes, all graphs are now drawn using VBOs) * Switched to freetype+FreeType-GL for font rendering, ensuring unique text look across graphics cards and operating systems and also improving rendering performance (text rendered directly to vertex buffers) * Switched to DejaVu open fonts instead of using Microsoft(R) Windows(TM) system fonts ensuring consistent look even when SpikeFun is run with Wine on Linux * Fixed a bug where contralateral tract was selected in place of ipsilateral tract for axon guidance in rare cases -------------------------------------------------------------------------------- v0.73 - Released on June 17th 2012 -------------------------------------------------------------------------------- * Improved neuron and axon vertical placement using interpolated mesh normals and cortical thickness (interpolation using barycentric coordinates of the cortical/thalamic mesh triangles below which somae/axons are located) * Further improvements (precision) of DSI tract mapping * Added option to limit the number of tracts that will be rendered (-trdrawlimit where N can be a value between 0 and 5) * Improved neuron picking precsion * Fixed bug that resulted in incorrect cortical thickness calculation * Improved thalamic surfaces (better matching to the anatomic MRI data) * Fixed a bug where moving/panning/zooming of the camera and responding to GUI elements became very slow if the 3D data takes considerable time to render -------------------------------------------------------------------------------- v0.72 - Released on June 10th 2012 -------------------------------------------------------------------------------- * Updated tractography module to the latest DSI Studio code-base (June 4th) * Better fiber source (more inclusive brain mask generated with non-linear registration of T1 MRI to DSI B0 and extracting brain mask from the registered structural MRI image) * Improved DSI tract->surface mapping accuracy with very little performance penalty for the level 0 (see below) * Added option to control the DSI tract->surface mapping precision (accuracy) with '-dsimaplevel ' switch, where n can be: 0 --> Fastest mapping (precision better than v0.71) 1 --> Better precision 2 --> Best precision (slowest) Default mapping level as of v0.72 is 2, you can get it to lower level if you are running the simulation on a slower computer and feel that DSI tract to surface mapping is taking too much time * Fixed DSI tract rendering bug (extra lines) -------------------------------------------------------------------------------- v0.71 - Released on June 03rd 2012 -------------------------------------------------------------------------------- * Improved DSI tract mapping * Automatic cortical thickness scaling * Improved simulation creation speed with SSE4-optimized segment-triangle hit testing (used for neuron topology build-up) and further small optimizations * Even faster pseudo-random number generator * Added SSE4-optimized DLL builds for newer Core 2 and first generation Core i3/5/7 computers -------------------------------------------------------------------------------- v0.70 - Released on May 17 2012 -------------------------------------------------------------------------------- * "Service" release, small bugfixes and tweaks * Dynamic loading of SSE/AVX optimized libraries depending on the system configuration -------------------------------------------------------------------------------- v0.69 - Released on May 13th 2012 -------------------------------------------------------------------------------- * Improved precision of long-range axonal guidance through the white matter (DSI tract testing) * More DSI tract tracking parameters exposed through the configuration interface (see demo*.cfg files) * Reduced time worker threads spend in being locked due to synchronization objects + eliminated "hot lock" during final neuron initialization * Memory usage optimizations + greatly reduced usage of small heap blocks * Added rendering configuration options for box renderer (show/hide tracts, show/hide neurons, show/hide brain surface) * WebM capture is now default capture method, for JPEG-sequence capture please use -jpeg switch -------------------------------------------------------------------------------- v0.68 - Released on May 6th 2012 -------------------------------------------------------------------------------- * Added support for processor groups (feature of Windows Server 2008 R2 / Windows 7 or newer kernels). With this addition, SpikeFun can now properly schedule threads on more than first 64 processors installed on the system * Added support for simulation video capturing to Google(R) WebM(TM) format (enabled with -webm switch). Configuration options are added to control the WebM encoding quality (e.g. target bitrate, bit allocation mode - CBR/VBR/CQ, FPS). Please see webm.txt for the licensing / copyright info. * Improved spike-delivery load balancing on NUMA systems. Number of threads has been reduced by the number of logical CPUs installed on the system * Added memory-bandwidth estimation for systems that do not expose hardware monitoring registers for memory bandwidth measurement (NOTE: only total memory bandwidth is estimated) * Added additional options allowing manual specification of the simulation rendering window size (-height and -width command line parameters) * Added command line option to control rending thread priority (-hpgui) * Fixed crashing on systems where number of logical CPUs is not power of 2 number (e.g. 3/6-core CPUs) * Switched to GLEW (The OpenGL Extension Wrangler Library) for initializing and managing various OpenGL extensions that are not part of standard Windows OpenGL API set (pretty much any recent OpenGL API). Please see glew.txt for the GLEW copyright note / licensing info -------------------------------------------------------------------------------- v0.67 - Released on May 1st 2012 -------------------------------------------------------------------------------- * Added benchmarking option (-bench) for system performance benchmarking purposes. Please see the benchmark.pdf file for a description of the typical benchmark scenarios * Added support for forcing the PRNG to emit fixed sequence of pseudorandom numbers (-fixrand). Enabled by default for -bench mode * Improved logging of performance-related data (simulation real-time factor, renderer frame rate, etc.) * Added option for system hardware profiling using Intel(r) Performance Monitoring Unit (PMU). Based on Intel's PCM tool (see copyrights.txt), SpikeFun supports measurement of memory bandwidth (Sandy Bridge EP/Jaketown CPUs only), CPU power draw (Sandy Bridge, SB-EP), CPU temperature (Nehalem and later), IPC rate and C0 residency. Please note that hardware profiling requires accessing of the MSR registers, which typically requires administrator privileges (to load SpikeMsr.sys / pikeMsr64.sys driver) * Optimized memory prefetching strategy, bringing about 3-5% improvements on multi-socket NUMA systems * Additional AVX optimizations * Memory optimizations for synaptic receptor and axonal terminal storage * Wireframe render now also contains wireframe render of the pial surface * Various bugfixes -------------------------------------------------------------------------------- v0.66 - Released on 22nd April 2012 -------------------------------------------------------------------------------- * Added support for large memory pages (helping reducing TLB overhead and thus increasing performance). SpikeFun will try to allocate synaptic and neuron memory using large pages. If large page allocation fails, SpikeFun will allocate regions of memory using standard system page size. * Various performance optimizations -------------------------------------------------------------------------------- v0.65 - Released on 21st April 2012 -------------------------------------------------------------------------------- * Performance optimizations for NUMA system architectures (memory optimization and work partitioning are now NUMA-aware and will optimize workload according to the system CPU and memory layout) * Windows XP support is limited to Windows XP SP3 only * NUMA support is not optimal under Windows XP (missing VirtualAllocExNuma() API) - for best performance SpikeFun requires Windows Vista / Server 2008 or later (NT Kernel 6.0 or later). Running on Windows 7 / Server 2008 R2 or later is recommended due to further improvements in multi-processor scheduling -------------------------------------------------------------------------------- v0.64 - Released on 10th April 2012 -------------------------------------------------------------------------------- * Added support for configuring mPSP release probability * Small OpenGL optimizations -------------------------------------------------------------------------------- v0.63 - Released on 9th April 2012 -------------------------------------------------------------------------------- * Added support for FreeSurfer cortical thickness map data simulation will generate cortical volume using variable cortical thickness as loaded from the .thickness files * Small rendering improvements -------------------------------------------------------------------------------- v0.62 - Released on 8th April 2012 -------------------------------------------------------------------------------- * Box Render (low complexity) is now also using GPU shaders helping to bring the rendering time down significantly -------------------------------------------------------------------------------- v0.61 - Released on 8th April 2012 -------------------------------------------------------------------------------- * Default neuron library parameters are now user-accessible (please see neuronLibrary.cfg file) * Synaptic plasticity options are now user-accessible (please see supplied demo .cfg files) * Performance improvements of 64-bit build on CPUs with AVX instruction set (Intel Sandy Bridge, AMD Bulldozer) * Simulation memory layout optimizations * Performance improvements of the Wireframe render for multi-core systems -------------------------------------------------------------------------------- v0.60 - Released on 26th March 2012 -------------------------------------------------------------------------------- * Wireframe render is now using OpenGL shaders which significantly improves the rendering performance -------------------------------------------------------------------------------- v0.59a - Released on 20th March 2012 -------------------------------------------------------------------------------- * Significantly improved performance of DSI tracking engine (~20x) -------------------------------------------------------------------------------- v0.59 - Released on 18th March 2012 -------------------------------------------------------------------------------- * Initial support for external simulation configuration files * External stimuli generation divided into visual, auditory and somatosensory modalities * Further improvements of the wireframe (LineRender) renderer -------------------------------------------------------------------------------- v0.58 - Released on 11th March 2012 -------------------------------------------------------------------------------- * New line-render (-wireframe) using DSI tracts for axon paths * Improved 3D rendering performance and memory usage * mPSP insertion divided into thalamic ('N' shortcut) and cortical ('N' key) -------------------------------------------------------------------------------- v0.57 - Released on 04th March 2012 -------------------------------------------------------------------------------- * New cortical network generation algorithm (much faster) * Fixed overprovisioning of neural compartments when desired numbers of synapses cannot be found * Added option to inject brief pulse of depolarizing current into the selected neuron ('I' key) for spike-induction * Added GUI for setting the brainstem and sensory modulation of the network * New command-line interface (-h for help) * Removed "box" simulation type * Various bugfixes -------------------------------------------------------------------------------- v0.56 - Released on 12th February 2012 -------------------------------------------------------------------------------- * Better brain model, based on FreeSurfer processed data * Added Cortical surface annotation * Added Multi-Region intra-cranial EEG (F2 button, Thalamocortical simulations only) * Added experimental support for 3D fMRI (/mri3D switch, experimental only, way undeveloped!) -------------------------------------------------------------------------------- v0.55 - Released on 05th February 2012 -------------------------------------------------------------------------------- * White matter tracts are automatically generated based on DSI data using DSI Studio implementation of DSI fiber tracking http://dsi-studio.labsolver.org/dsi-studio-download * Axonal lengths are now accurately estimated based on combination of white matter tract length and local gray matter collaterals * Added white matter tract visualization in the "box" viewing mode -------------------------------------------------------------------------------- v0.54 - Released on 22nd January 2012 -------------------------------------------------------------------------------- * Added thalamus geometry * Optimized cortical surface (less space) * Initial connectome data (based on DSI tractography) - work in progress * Axons are guided through white matter based on the connectome data -------------------------------------------------------------------------------- v0.53 - Released on 8th January 2012 -------------------------------------------------------------------------------- * Pyramidal and thalamocortical neuron axons now bifurcate into 2 or 3 axons e.g. L2/3 Pyr. neuron axons bifurcate into contralateral and ipsilateral axons * Axons now combine both myelinated (fast propagation) and non-myelinated (slow propagation) segments * Significantly more rigorous cortical geometry build up (unfortunately also >5x more complex) * To, at least partially, match the increase in complexity of the geometry build-up several optimizations are implemented: - SSE optimized pseudo-random number generation - Faster triangle-line intersection tests (used during network creation) - Better mesh voxelization (still very simple, with room for improvement) * Numerous small bug-fixes -------------------------------------------------------------------------------- v0.52 - Released on 22nd December 2011 -------------------------------------------------------------------------------- * Default simulation precision is now 1 ms making simulations 2x faster * Added option for the high-precision (legacy) integration step of 0.5 ms * Axons in the cortical simulation can now be myelinated and non-myelinated * Further optimization of 3D geometry generation * Reduced memory usage (> 10%) due to optimized synaptic data layout * Reduced difference in performance between 32-bit and 64-bit builds * Various bugfixes in cortical geometry builder -------------------------------------------------------------------------------- v0.51 - Released on 11rd December 2011 -------------------------------------------------------------------------------- * Added multi-compartment models for basket and non-basket interneurons * Added 'fixed-point' 3D geometry for large simulations (50% VRAM savings) * Improved accuracy of the cortex build-up (checking against intersections with cortical surface) * Added axonal laminar spread checks for 3D brain model -------------------------------------------------------------------------------- v0.50 - Released on 3rd December 2011 -------------------------------------------------------------------------------- * Added initial support for real-brain geometry (alpha) * Improved demo view (now including fMRI and EEG) * Integrated AVX optimizations in one executable * Integrated 32-bit and 64-bit downloads -------------------------------------------------------------------------------- v0.49 - Released on 27th November 2011 -------------------------------------------------------------------------------- * OpenGL repaint fix (issue affecting certain % of users) -------------------------------------------------------------------------------- v0.48 - Released on 27th November 2011 -------------------------------------------------------------------------------- * Added multi-compartmental models for Spiny-Stellate and Thalamocortical Relay cells (thalamocortical simulations only) * Improved multi-compartmental model of Pyramidal neurons * Support for limiting axonal laminar spreads - enabled for demo cortcial simulation scripts containing >100K neurons * Added precise spike timing detection (not locked to the simulation time-step) -------------------------------------------------------------------------------- v0.47 - Released on 20th November 2011 -------------------------------------------------------------------------------- * Added model of thalamus in the cortical simulations, enabling thalamo-cortical loops. * Sensory stimulus insertion ('L' key) now stimulates specific thalamic nuclei (cortical simulations only) * Further big improvements in simulation built-up thanks to the multi-threaded neuron and synapse creation. * Added "Huge" cortical demo simulation with 1 Million neurons and 200 million synapses (warning: requires up to 32 GB of RAM!) * Synapse weight display font size is scaled with zooming allowing reading of synapse weights for neurons containing large number of synaptic receptors -------------------------------------------------------------------------------- v0.46 - Released on 13th November 2011 -------------------------------------------------------------------------------- * Drastic speedup of cortical simulation built-up (10x+) * Added distance bias for post-synaptic target selection (closer neurons are prefered and probability of connection decreases with the distance from the axon of the pre-synaptic neuron) * Added "Big" and "Biggest" cortical simulation demos -------------------------------------------------------------------------------- v0.45 - Released on 06th November 2011 -------------------------------------------------------------------------------- * Added cortical neural network topology (with 6 layers and neuronal distributions as per Binzegger Et. Al.) * Added support for multi-compartment neurons (currently limited to Pyramidal neurons) * Added extended Izhikevich neuron model (with capacitance) * Added cortical neuron models: - Pyramidal Neurons (of L2/3, L4 and L5/6) with multiple compartments (apical dendritic tree) - Superficial Pyramidal Neurons (Chattering) - Spiny Stellate Neurons (of L4) - Basket Interneurons - Non-Basket Interneurons * Added fMRI BOLD simulation (use 'F' key to toggle) * Added support for insertion of mPSPs (Miniature Postsynaptic Potentials or 'minis') * GUI updates to reflect the new features -------------------------------------------------------------------------------- v0.44 - Released on 20th October 2011 -------------------------------------------------------------------------------- * Fixed render-style configuration bug * Fixed DLL issue with the 64-bit builds -------------------------------------------------------------------------------- v0.43 - Released on 9th October 2011 -------------------------------------------------------------------------------- * Added 64-bit builds allowing simulations that require >4 GB of RAM * New statistic "HUD" display in visualization (F11) mode * More demo test cases (/SpereTest1 and 2, /BoxTest1 and 2) * Optimizations in the OpenGL renderer (less state changes, etc...) -------------------------------------------------------------------------------- v0.42 - Released on 6th October 2011 -------------------------------------------------------------------------------- * Fixed font rendering bug when SpikeFun is run under Linux (Wine) -------------------------------------------------------------------------------- v0.41 - Released on 5th October 2011 -------------------------------------------------------------------------------- * Added option to dynamically toggle rendering styles (F12 key) * Added /DisableVbo command line switch for compatibility with low-end OpenGL hardware (e.g. Intel(R) GMA950) -------------------------------------------------------------------------------- v0.40 - Released on 3rd October 2011 -------------------------------------------------------------------------------- * Added initial support for spherical layouts (alpha! 2d neuron picking/display is buggy) * Added transparency (alpha channel) control in the toolbox * Rendering optimizations for /Wireframe mode