Hi, I will tackle the second question first as I am pretty certain of the problem. _constants_ must be defined at the global scope, i.e. not inside functions, classes etc. So, for example,
__constant__ double CONST_DATA[256];
__global__ void myKernel(double * out, double * in) {
// Some code
}
is fine, whilst
__global__ void myKernel(double * out, double * in) {
__constant__ double CONST_DATA[256];
// Some code
}
is not. If you already have your constants at global scope then there must be something else amiss. In that case, perhaps you could post some short CU code that shows the problem?
Regarding your first question, I'm afraid I don't have a definite answer. I've just tried compiling a simple kernel to PTX using NVCC from CUDA 4.1 with MATLAB R2012a and it worked fine. However this may depend on the compile options specified. Perhaps you could provide some details about which MATLAB release you are using, what compile command you used, and maybe even a short snippet of code that will help me to understand the problem?
Thanks.
Ben
Best Answer