CUDA項目初始化及常見問題

CUDA簡介

CUDA(Compute Unified Device Architecture,統一計算架構)是NVIDIA所推出的GPGPU框架。尤其是在進行並行運算時,能夠在極大程度上提升運算速度。現在我們常使用的深度學習框架底層也都是通過CUDA進行加速的。在基於物理模擬中,很多在CPU上需要耗費大量時間才能計算出的結果,在CUDA上卻可以做到實時計算。

CUDA項目初始化

要初始化項目,環境配置一般來說是比較耗費時間並且需要查閱一定資料的。因而爲了便捷地初始化CUDA項目,我們使用cmake便可以輕鬆達到這個目的。

當然,要使用CUDA必須先上Nvida的官網下載CUDA Toolkit。
下載並安裝完CUDA Toolkit後只需要使用cmake來自動化配置環境便可以了。
本文提供一個CUDA項目初始化的模板,可以通過Github下載:cuda_project_template
具體的使用方法參考這個Github的介紹就可以了。

CUDA項目初始化常見問題

以CUDA爲例,在構建一個新的項目時,普遍CUDA部分的計算會獨立作爲一個部分並生成靜態鏈接庫。而主程序或者其他核心部分計算要調用CUDA時需要鏈接到這個CUDA的靜態鏈接庫。而這其中最常見的問題就是:

value MT_StaticRelease' doesn't match value 'MTd_StaticDebug'

或者是

value 'MT_StaticRelease' doesn't match value 'MD_DynamicRelease'

再通過搜索相關問題的解決辦法後,我將這兩種方法的解決辦法結合了一下,以下的cmake部分配置可以解決上述問題:

    add_compile_options(
        $<$<CONFIG:>:/MT>
        $<$<CONFIG:Debug>:/MTd>
        $<$<CONFIG:Release>:/MT> 
    )

    set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
    set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")

具體的CMakeLists.txt可以參考上述Github中的cmake文件:CMakeLists.txt

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章