Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用CUDA和MATLAB生成文件_Matlab_Cuda_Makefile - Fatal编程技术网

用CUDA和MATLAB生成文件

用CUDA和MATLAB生成文件,matlab,cuda,makefile,Matlab,Cuda,Makefile,我正在尝试在以下URL运行源代码: 我在安装了MATLAB和CUDA6的服务器上运行它,但是当我这样做的时候 make all 它返回以下错误: make: *** No rule to make target `fft2_cuda.mexa64', needed by `all'. Stop. 以下是Makefile的外观: # Define installation location for CUDA and compilation flags compatible # with

我正在尝试在以下URL运行源代码:

我在安装了MATLAB和CUDA6的服务器上运行它,但是当我这样做的时候

make all 
它返回以下错误:

make: *** No rule to make target `fft2_cuda.mexa64', needed by `all'.  Stop.
以下是Makefile的外观:

# Define installation location for CUDA and compilation flags compatible
# with the CUDA include files.
CUDAHOME    = /usr/local/cuda
INCLUDEDIR  = -I$(CUDAHOME)/include
INCLUDELIB  = -L$(CUDAHOME)/lib -lcufft -Wl,-rpath,$(CUDAHOME)/lib
CFLAGS      = -fPIC -D_GNU_SOURCE -pthread -fexceptions
COPTIMFLAGS = -O3 -funroll-loops -msse2

# Define installation location for MATLAB.
export MATLAB = /usr/local/matlab
#export MATLAB = /Applications/MATLAB_R2007b
MEX           = $(MATLAB)/bin/mex
MEXEXT        = .$(shell $(MATLAB)/bin/mexext)

# nvmex is a modified mex script that knows how to handle CUDA .cu files.
NVMEX = ./nvmex

# List the mex files to be built.  The .mex extension will be replaced with the
# appropriate extension for this installation of MATLAB, e.g. .mexglx or
# .mexa64.
MEXFILES = fft2_cuda.mex       \
           fft2_cuda_sp_dp.mex \
           ifft2_cuda.mex      \
           Szeta.mex

all: $(MEXFILES:.mex=$(MEXEXT))

clean:
    rm -f $(MEXFILES:.mex=$(MEXEXT))

.SUFFIXES: .cu .cu_o .mexglx .mexa64 .mexmaci

.c.mexglx:
    $(MEX) CFLAGS='$(CFLAGS)' COPTIMFLAGS='$(COPTIMFLAGS)' $< \
        $(INCLUDEDIR) $(INCLUDELIB)

.cu.mexglx:
    $(NVMEX) -f nvopts.sh $< $(INCLUDEDIR) $(INCLUDELIB)

.c.mexa64:
    $(MEX) CFLAGS='$(CFLAGS)' COPTIMFLAGS='$(COPTIMFLAGS)' $< \
        $(INCLUDEDIR) $(INCLUDELIB)

.cu.mexa64:
    $(NVMEX) -f nvopts.sh $< $(INCLUDEDIR) $(INCLUDELIB)

.c.mexmaci:
    $(MEX) CFLAGS='$(CFLAGS)' COPTIMFLAGS='$(COPTIMFLAGS)' $< \
        $(INCLUDEDIR) $(INCLUDELIB)

.cu.mexmaci:
    $(NVMEX) -f nvopts.sh $< $(INCLUDEDIR) $(INCLUDELIB)
返回

/usr/local/bin/matlab
因此,我尝试将MATLAB目录更改为Makefile中的目录,但也不起作用


谁能帮帮我吗?

是用
.c
文件构建的吗?我认为
后缀
规范中缺少一部分。我认为简化Makefile应该是这样的:

# Everything up until the .SUFFIXES line is OK, but then:
.SUFFIXES: .c .cu $(MEXEXT)

.c$(MEXEXT):
    $(MEX) CFLAGS='$(CFLAGS)' COPTIMFLAGS='$(COPTIMFLAGS)' $< \
        $(INCLUDEDIR) $(INCLUDELIB)

.cu$(MEXEXT):
    $(NVMEX) -f nvopts.sh $< $(INCLUDEDIR) $(INCLUDELIB)
#在.SUFFIXES行之前,一切正常,但是:
.后缀:.c.cu$(MEXEXT)
.c$(MEXEXT):
$(MEX)CFLAGS='$(CFLAGS)'COPTIMFLAGS='$(COPTIMFLAGS)'$<\
$(INCLUDEDIR)$(INCLUDELIB)
.cu$(MEXEXT):
$(NVMEX)-f nvopts.sh$<$(INCLUDEDIR)$(INCLUDELIB)

看起来像repo中的
Matlab\u Cuda\u 1.1
目录不包含Mathlab Cuda插件源代码

可在此处找到它们的副本:

获取文件并将其放入您的
Matlab\u Cuda\u 1.1
dir


另外,在构建之前,不要忘记检查和调整Makefile开头的路径(CUDAHOME、MATLAB、MEX、MEXEXT),以便它们指向系统中的正确位置。

是否从MATLAB中调用了
make
?这就是。@m.s.这是否意味着我必须在执行matlab后调用make?我尝试在matlab中调用make,但它显示未定义的函数..执行unix('make');从内部MATLAB@m.s.我尝试了,但它返回了相同的错误:(在查找时,似乎缺少文件
fft2_cuda.c
等。我确实按照建议进行了清理和尝试,但出现了相同的错误:(也许在后缀之前也应该进行一些修改?嗯,我查看了源代码库-我看不到任何
fft\u cuda
源文件-所以这就是为什么Makefile无法构建一个。有什么方法可以绕过它吗?:(我真的不知道-没有提到在那个目录中构建)。
# Everything up until the .SUFFIXES line is OK, but then:
.SUFFIXES: .c .cu $(MEXEXT)

.c$(MEXEXT):
    $(MEX) CFLAGS='$(CFLAGS)' COPTIMFLAGS='$(COPTIMFLAGS)' $< \
        $(INCLUDEDIR) $(INCLUDELIB)

.cu$(MEXEXT):
    $(NVMEX) -f nvopts.sh $< $(INCLUDEDIR) $(INCLUDELIB)