乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      使用nvcc從CUDA創(chuàng)建 DLL

       LibraryPKU 2018-03-20

      為了從外部C 程序中使用這個庫,我想從一個CUDA代碼( kernel.cu ) 創(chuàng)建一個. dll 。 經(jīng)過一些嘗試后,我在. cu 文件中留下了一個簡單的C 函數(shù)。 代碼如下:

      kernel.cu

      #include 
      #include"kernel.h"
      void hello(const char *s) {
       printf("Hello %sn", s);
      }/*

      kernel.h

      #ifndef KERNEL_H
      #define KERNEL_H
      #include"cuda_runtime.h"
      #include"device_launch_parameters.h"
      #ifdef __cplusplus
      extern"C" {
      #endif
      void __declspec(dllexport) hello(const char *s);
      #ifdef __cplusplus
      }
      #endif
      #endif//KERNEL_H

      我嘗試首先使用 nvcc 生成一個 kernel.o 對象,然后使用 g++ 創(chuàng)建 DLL,如下所示:

      nvcc -c kernel.cu -o kernel.o
      g++ -shared -o kernel.dll kernel.o -L"C:Program FilesNVIDIA GPU Computing ToolkitCUDAv5.0libx64" -lcudart

      它工作正常并生成 kernel.dll 。 為了測試DLL文件,我編寫了這個簡單的程序 main.c:

      #include 
      #ifdef __cplusplus
      extern"C" {
      #endif
      void __declspec ( dllimport ) hello(const char *s);
      #ifdef __cplusplus
      }
      #endif
      int main(void) {
       hello("World");
       return 0;
      }

      編譯為:

      g++ -o app.exe main.c -I"C:Program FilesNVIDIA GPU Computing ToolkitCUDAv5.0include" -L. -lkernel

      當執(zhí)行開始時產(chǎn)生內(nèi)存訪問錯誤。

      但是,如果我在. c ( 因為它只是C 代碼) 中重命名. cu 文件,使用相同的命令,它就。 nvcc的輸出更改,因為我知道,因為它使用默認的C 編譯器而不是使用ipqos一個。

      你覺得這跟nvcc有什么關(guān)系? 還是我在犯錯誤?

      :我忘了一些可能重要的信息。 在 G++ ( 創(chuàng)建dll時) 第一次調(diào)用時出現(xiàn)警告,它們不同于. cu. c 或者. cpp.

      光標

      Warning:. drectve `/FAILIFMISMATCH:"_MSC_VER=1600"/FAILIFMISMATCH:"_ITERATOR_DEBUG_LEVEL=0" 
      /DEFAULTLIB:"libcpmt"/DEFAULTLIB:"LIBCMT"/DEFAULTLIB:"OLDNAMES"/EXPORT:hello ' unrecognized

      而且它不工作。

      cpp和。c

      Warning:. drectve `/DEFAULTLIB:"LIBCMT"/DEFAULTLIB:"OLDNAMES"/EXPORT:hello ' unrecognized

      而且它。

      【Note】

      已經(jīng)解決。我仍然不知道為什么發(fā)生了( 也許是因為沒有使用像羅伯特。com這樣的正式的官方編譯器),但是替換了這兩個命令作為一個程序:

      nvcc -o kernel.dll --shared kernel.cu

      注意雙擊( nvcc以此方式工作),以及直接創(chuàng)建一個 .o 而不是創(chuàng)建第一個,然后從對象創(chuàng)建 DLL 。

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多