如何配置 mex 以将编译器标志传递给 nvcc
How can one configure mex to pass compiler flags to nvcc
在使用 nvcc
编译 mex
文件时,我一直在努力将特定于 CUDA 的编译器选项传递给 nvcc
编译器,因为 mex
无法识别它们。
我找到了一些 old posts about passing compiler flags and some newer ones,
但是这些问题是针对特定用户的,mex
编译器这些年来也发生了变化,所以我不知道该怎么做。
所以,我的具体问题是:我应该怎么做才能让 mex
将编译器标志传递给 nvcc
?
更通用一点:应该如何使 mex
将编译器标志传递给另一个编译器?
如果使用选项位于 xml 文件中的最新编译方式,可以在其中对默认编译标志进行硬编码。例如我的看起来像:
COMPILER="nvcc"
COMPFLAGS="-gencode=arch=compute_20,code=sm_20 -gencode=arch=compute_30,code=sm_30 -gencode=arch=compute_35,code=sm_35 -gencode=arch=compute_50,code=\"sm_50,compute_50\" --compiler-options=/c,/GR,/W3,/EHs,/nologo,/MD"
COMPDEFINES="--compiler-options=/D_CRT_SECURE_NO_DEPRECATE,/D_SCL_SECURE_NO_DEPRECATE,/D_SECURE_SCL=0,$MATLABMEX"
MATLABMEX="/DMATLAB_MEX_FILE"
OPTIMFLAGS="--compiler-options=/O2,/Oy-,/DNDEBUG"
INCLUDE="-I"$MATLABROOT\extern\include" -I"$MATLABROOT\simulink\include""
DEBUGFLAGS="--compiler-options=/Z7"
可以修改默认值COMPFLAGS
在使用 nvcc
编译 mex
文件时,我一直在努力将特定于 CUDA 的编译器选项传递给 nvcc
编译器,因为 mex
无法识别它们。
我找到了一些 old posts about passing compiler flags and some newer ones,
但是这些问题是针对特定用户的,mex
编译器这些年来也发生了变化,所以我不知道该怎么做。
所以,我的具体问题是:我应该怎么做才能让 mex
将编译器标志传递给 nvcc
?
更通用一点:应该如何使 mex
将编译器标志传递给另一个编译器?
如果使用选项位于 xml 文件中的最新编译方式,可以在其中对默认编译标志进行硬编码。例如我的看起来像:
COMPILER="nvcc"
COMPFLAGS="-gencode=arch=compute_20,code=sm_20 -gencode=arch=compute_30,code=sm_30 -gencode=arch=compute_35,code=sm_35 -gencode=arch=compute_50,code=\"sm_50,compute_50\" --compiler-options=/c,/GR,/W3,/EHs,/nologo,/MD"
COMPDEFINES="--compiler-options=/D_CRT_SECURE_NO_DEPRECATE,/D_SCL_SECURE_NO_DEPRECATE,/D_SECURE_SCL=0,$MATLABMEX"
MATLABMEX="/DMATLAB_MEX_FILE"
OPTIMFLAGS="--compiler-options=/O2,/Oy-,/DNDEBUG"
INCLUDE="-I"$MATLABROOT\extern\include" -I"$MATLABROOT\simulink\include""
DEBUGFLAGS="--compiler-options=/Z7"
可以修改默认值COMPFLAGS