cuda檔案編譯matlab介面

NO IMAGE

因為使用了別人的專案檔案,需要重新編譯matlab介面

其一:xxx1.cpp   xxx1.cu

其二:xxx2.cu

別人是在windows下用的,使用mexcuda編譯出.mexw64檔案,我需要在自己的ubuntu16.04系統下編譯出.mexa64檔案。

最優方法:mexcuda 使用方法:mexcuda filename 但是我沒有成功。
曲線救國:nvcc mex (參考部落格 Matlab 呼叫CUDA的總結(Windows、Ubuntu)

下面說一下曲線救國具體方法

1 使用nvcc編譯出.o檔案

其一:nvcc -I /usr/local/MATLAB/R2016b/extern/include -c –compiler-options -fPIC xxx2.cu
其二:nvcc -I /usr/local/MATLAB/R2016b/extern/include -c –compiler-options -fPIC xxx1.cpp xxx1.cu
解釋一下上面引數的目的
-I /usr/local/MATLAB/R2016b/extern/include: 為了給nvcc包含cpp和cu檔案的標頭檔案mex.h的路徑(參考部落格 nvcc編譯器選項及配置
–compiler-options -fPIC :為了解決編譯的.o檔案的地址問題

2 在matlab命令列視窗下編譯.o檔案

其一:mex xxx2.o -L/usr/local/cuda/lib64 -lcudart
其二:mex xxx1.o -L/usr/local/cuda/lib64 -lcudart
解釋一下上面引數的目的
-L/usr/local/cuda/lib64 -lcudart:mex編譯.o檔案報錯(參考部落格 Compiling error: undefined reference to `cudaMalloc’)

補充說明

1 對於cpp檔案和cu檔案的標頭檔案,在自己的系統下修改了路徑,主要是cuda的兩個檔案cuda_runtime.h、device_launch_parameters.h的包含路徑
#include “/usr/local/cuda-8.0/include/cuda_runtime.h”
#include “/usr/local/cuda-8.0/include/device_launch_parameters.h”
2 編譯之前,gcc g 軟連結修改到了4.7版本,cc沒有修改

又編譯了一個檔案,提示錯誤及解決辦法如下

錯誤 #error This file requires compiler and library support for the ISO C 2011 standard. This support is currently experimental, and must be enabled with the -std=c 11 or -std=gnu 11 compiler options.
新增編譯選項 nvcc -std=c 11 -I /usr/local/MATLAB/R2016b/extern/include -c –compiler-options -fPIC xxx3.cu