使用gpu编程双gpu编程例程,其中有头文件book.h
编译错误windows.h找不到
在MATLAB中混合vs2013编程,mex时出现windows.h无法识别,但是单独在vs2013下运行双GPU测试程序可以运行成功,路径定位准确。
第一步,首先在MATLAB中添加Windows kits所有路径,mex失败
第二步,使用绝对路径可行但是需要添加的路径太多,添加环境变量也会很多
第三步,添加环境变量,无法解决
第四步,在cuda编程指南中搜索include,在nvcc中可以同过-I path的方式添加所需要的包含文件的路径,此方法解决windows.h文件无法找到的问题,mex编译通过,但是在链接是出现新问题,”identifier “IUnknown” is undefined” error .
链接错误
第五步,通过搜索该问题在这里
找到解决方法,即在文件开头添加
#ifdef _WIN32
#define WIN32_LEAN_AND_MEAN
#endif
即可解决。
mexfunction函数可以通过传入参数和传出参数进行交互,在MATLAB中采用
[a b c ...] = fun(A,B,C,...)
调用,在cpp端
mexFunction(nrhs,nrhs[],nlhs,hlhs[])
其中nrhs是输入参数数量,nlhs是输出参数数量。
在mexFunction中使用mexPrintf()方法对数据进行打印,用法同printf()方法。
犯二错误
- 使用mexErrMsgTxt()方法,作为打印函数,此函数会终止程序运行。
- 在MATLAB端采用
[a,b] = double(func(c,d,e));
调用函数,当输出参数为一个时,用法可以,但是当输出参数为两个或更多少,就会导致在cpp函数中的输出参数nlhs总为1,运行错误提示输出参数过多。
双GPU实例代码框架
/*
* Copyright 1993-2010 NVIDIA Cor