1.項(xiàng)目?jī)?nèi)容
對(duì)于多信道探針采集到的腦電波信號(hào)進(jìn)行實(shí)時(shí)準(zhǔn)確分類
2.項(xiàng)目流程
首先背捌,對(duì)采集到的腦電波信號(hào)進(jìn)行濾波陶耍,然后根據(jù)高低閾值確定并提取我們要進(jìn)行聚類的波形塊赏陵,并對(duì)每個(gè)波形塊進(jìn)行特征提取屑柔,最后利用masked_EM算法對(duì)這些特征進(jìn)行聚類沉帮,從而確定每一個(gè)波形塊(spike)屬于哪一個(gè)腦細(xì)胞發(fā)出锈死。
3.實(shí)施方法
基于nature論文的klusta方法提出一套完整的流程,但是并沒(méi)有進(jìn)行算法加速穆壕,基于kilosort的論文雖然實(shí)現(xiàn)了GPU加速待牵,但是前面的兩種方法都是基于大規(guī)模離線數(shù)據(jù)的處理,并不能實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)處理喇勋。
因此我們考慮對(duì)數(shù)據(jù)進(jìn)行切分成小塊缨该,對(duì)每一小塊的數(shù)據(jù)進(jìn)行GPU加速?gòu)亩_(dá)到實(shí)時(shí)或準(zhǔn)實(shí)時(shí)處理,同時(shí)基于GPU性能的考慮川背,部分算法流程可能不適合在GPU上運(yùn)行贰拿,因此我們考慮GPU和CPU混合調(diào)用的方法,使資源調(diào)度達(dá)到更優(yōu)渗常,從而減少計(jì)算時(shí)間壮不。
基于此,我們先實(shí)現(xiàn)一個(gè)CPU_only和GPU_only的代碼皱碘,然后進(jìn)行計(jì)算資源的分配询一。
4.總體進(jìn)度
Nature的論文算法實(shí)現(xiàn)有一個(gè)Python版本的完整代碼,同時(shí)有一個(gè)C++版本的masked_EM算法實(shí)現(xiàn)〗∪铮基于上面的算法菱阵,目前我已經(jīng)實(shí)現(xiàn)了一個(gè)完整版本的C++代碼,并已經(jīng)完成了測(cè)試(和Python的代碼對(duì)比測(cè)試)缩功,CUDA代碼對(duì)于聚類前面的數(shù)據(jù)預(yù)處理部分晴及,目前代碼寫完了提取波形塊的代碼,后面還有三次樣條插值和PCA部分的代碼未完成嫡锌,對(duì)于聚類部分的代碼虑稼,目前處理了聚類數(shù)據(jù)的處理,關(guān)于masked_EM聚類算法的實(shí)現(xiàn)未完成势木。
5.本周進(jìn)度
對(duì)之前由于GPU計(jì)算能力影響的flood_fill算法(用于提取波形塊部分)進(jìn)行了重新調(diào)試和運(yùn)行蛛倦。
之前何炯師兄發(fā)給我的并行EM算法的代碼學(xué)習(xí)了一下,并對(duì)算法嘗試加入masked進(jìn)行了一些修改啦桌,但是因?yàn)楫?dāng)前的masked_EM算法涉及的東西(類別的分裂和刪除等)比較多溯壶,所以目前還只是理解EM的并行部分,沒(méi)有進(jìn)行太多代碼更改甫男。
同時(shí)看了CUDA的cublas的函數(shù)庫(kù)且改,測(cè)試了常用的幾個(gè)函數(shù)的用法。
6.下周計(jì)劃
基于cublas函數(shù)庫(kù)和已有的并行EM算法代碼板驳,嘗試實(shí)現(xiàn)masked_EM算法又跛。