-
Notifications
You must be signed in to change notification settings - Fork 254
8. Hardware guide
If you are building or upgrading a system for Kilosort2, the only important components are the GPU and the SSD. We start with a list of recommendations for a standard Neuropixels recording (384 channels, <3 hours), and then we continue with a list of modifications depending on how your recordings differ from this standard one.
-
GPU: only Nvidia GPUs are supported. Of the currently available GTX or RTX gpus, anything starting at GTX 1660 should work fine, but the speed will typically be proportional to the cost, except for the 2080Ti, which is not 2x faster than 2080 despite being 2x more expensive. The sweet spot is probably the 2070. Do not consider the Titan RTX or Tesla GPUs: they are very expensive for no performance gains.
-
SSD: check for read/write speed. Any good SATA SSD is around 500MB/s, and PCI-based SSD are usually a lot better. You shouldn't need anything faster than 500MB/s, but you might want to have generous capacity for the purpose of batch processing of many datasets. A typical workflow is to copy datasets you want processed to the SSD, then run Kilosort2 on them (which makes an additional temporary copy of the data on this SSD), then run Phy on the local copy of the data with the Kilosort2 results. Once you are happy with the sorting, you would typically free up the local copy of the data to make space for the next round of spike sorting.
-
rest of the system: 16GB of RAM are recommended and a 4-core CPU. There is little performance to be gained by increasing these. However, if you want to use the same system for other computational tasks, it would be a good idea to increase to a 6- or 8-core CPU, with 32 GB of RAM. A 650W power supply will be sufficient even for this slightly beefed up system with an RTX 2080Ti.
-
Same number of channels, but longer recordings, like 6h or more. Right now, this situation requires more RAM, like 32 or 64 GB. Kilosort2 splits the data into small batches (default = 2s) and sorts each separately. However, a few steps (drift sorting, final extraction) require keeping some information from each batch in RAM, before it is used or saved at the end of the run through the entire data. This situation is also likely to arise with fewer channels, and correspondingly longer recordings. We will aim to remove this limitation in future development.
-
More channels. Currently Kilosort2 is limited to 1024 channels and will crash with more. This is due to low-level shared memory management on the GPU. You should not need more computer resources for 1024 channels, but we have not tested this thoroughly. It should not be too difficult to remove the channel count limitation in future versions.
-
Very few channels. Currently Kilosort2 will fail for 1 channel, and there are reports of failures for 4 channels. We have been able to run it in the latter case without problems. You will still need a GPU for this, and we do not plan to support a CPU version in the future.
Let us know if you have other use cases, and we can try to add them to the list.