簡體   English   中英

在Linux上CUDA編譯錯誤,但Windows Visual Studio成功

[英]CUDA compile error on Linux, but Windows Visual Studio succeed

該程序可以在Windows-Visual Studio 12上成功構建,但是在Linux上編譯時遇到了一些問題。

編譯命令: nvcc main.cu

int main(int argc, char **argv) {

    ... (Skip some code)

    // Read file.
    MemoryBuffer<char> text(size + 1); // size type is size_t
    auto text_smem = text.CreateSync(size);
    fread(text_smem.get_cpu_wo(), 1, size, fp);

    ... (Skip some code)

}

編譯器錯誤信息:

  1. auto text_smem = text.CreateSync(size);

    發生有關error: explicit type is missing ("int" assumed)error: no suitable conversion function from "SyncedMemory<char>" to "int" exists

  2. fread(text_smem.get_cpu_wo(), 1, size, fp);

    發生以下error: expression must have class type

如何解決Linux OS中的編譯器錯誤?


MemoryBuffer是一個類,詳細代碼可以從這里查看

這取決於您已安裝的CUDA Toolkit的版本,但是我想您可以嘗試對nvcc使用--std=c++11選項,以明確啟用現代C ++功能。

參照https://devblogs.nvidia.com/parallelforall/power-cpp11-cuda-7/

要啟用C ++ 11支持,請將--std=c++11標志傳遞給nvcc (Microsoft Visual Studio不需要此選項)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM