對於10^6遺傳因子及其GeneXGene相互作用(〜5x10^11)的分析,我有許多獨立的線性迴歸問題,這些問題可能適用於GPU分析。使用CUDA實現大型線性迴歸模型
目標是使用包含交互項的線性迴歸在調節結果變量(腦表型)中詳盡搜索GeneXGene相互作用效應。
據我所知,Householder QR因子分解可能是擬合迴歸模型的解決方案,但是,考慮到這個特定工作中的每個迴歸矩陣都可以很容易地接近〜10'000x10的大小,即使是每個迴歸矩陣似乎不適合GPU片上存儲器(共享,寄存器等)。
我是否應該接受這個問題,它本質上是帶寬限制的,並且在迴歸分析期間將矩陣保留在GPU全局內存中,或者是否有其他策略可行?
EDIT 下面是有關該問題的更多細節:
將有大約10'000受試者,每個〜1M遺傳參數(遺傳矩陣:10'000x10^6)。每次迭代的算法應該選擇這個遺傳矩陣的兩列(10'000x2),還有其他6個與遺傳數據無關的其他變量(年齡,性別等),所以最終的迴歸模型將處理一個矩陣,如大小爲10 '000x [2(遺傳因子)+6(協變量)+2(截距&相互作用項)]和結果變量向量(10'000x1)。對於給定的一對遺傳因子,每次重複這一過程~5e11次。那些通過預定義統計閾值的模型應該保存爲輸出。
具體的問題是,雖然有〜5e11單獨的迴歸模型,即使單個迴歸模型似乎不適合片上存儲器。
我也猜測,堅持使用CUDA庫可能不是這裏的解決方案,因爲這要求大部分數據操作發生在CPU端,並且只發送每個QR分解到GPU?
先走高層。儘量減少你的問題到常見的線性代數例程,並使用[CUDA庫](https://developer.nvidia.com/gpu-accelerated-libraries)(其中有很多:例如cuBLAS和cuSolver可能已經有你需要的)。推遲發明你自己的東西,並擔心帶寬,直到你真的需要這個。 – Drop
爲什麼問題的大小從10^12突然變爲10000 * 10? – kangshiyin
@Drop謝謝。但考慮到將會有10^12個獨立的迴歸模型,這是否有效? – Sourena