在MatLab中执行CUDA MEX函数期间,尝试在.txt上保存时出错 我有2个数学运算(1个C++和1个CUDA),它们都是相同的计算,我正在编写它们。

在MatLab中执行CUDA MEX函数期间,尝试在.txt上保存时出错 我有2个数学运算(1个C++和1个CUDA),它们都是相同的计算,我正在编写它们。,c++,c,matlab,cuda,C++,C,Matlab,Cuda,现在我正在处理CUDA mexfucntion,我需要在.txt上打印某些值以执行调试。我在C++ MeXFLUX中使用了相同的过程,并且它工作正常。现在在CUDA代码中,它不起作用,甚至使MatLab崩溃 我主要使用以下简单代码: std::ofstream test; test.open("test.txt"); test << "test"; test << "\n"; test.close(); std::of流试验; test.open(“test.txt”

现在我正在处理CUDA mexfucntion,我需要在.txt上打印某些值以执行调试。我在C++ MeXFLUX中使用了相同的过程,并且它工作正常。现在在CUDA代码中,它不起作用,甚至使MatLab崩溃

我主要使用以下简单代码:

std::ofstream test;
test.open("test.txt");
test << "test"; 
test << "\n";
test.close();
std::of流试验;
test.open(“test.txt”);

testOk伙计们,我们意识到在使用VS2010创建CUDA项目(我的CUDA 7.5版本)时存在兼容性问题

您不能使用标准的C++ IOFSUW从CUDA MySuffic生成.txt文件。必须使用C语法,即:

FILE *fp;
fp = fopen("test.txt", "w");
char str[] = "This is a test";
fwrite(str , 1 , sizeof(str) , fp );
fclose(fp);
这里有一个很好的提示:


如果它不是cuda函数,那么它就不是cuda问题,因为上面提到的代码位于cuda MEX函数中,所以我认为它是!也因为C++中的相同代码工作得很好。所以这个问题一定与CUDA有关,可能你提到我的句子“代码没有放在CUDA内核中”。。。好。。。阅读所有文章!!它不在内核中,因为您无法从CUDA内核调用主机函数。。。但是它仍然在CUDA MEX函数中。@Jonas CUDA不会修改
std::ofstream
的行为,因此应该还有其他错误,与CUDA无关。请发布一个复制此错误的MCVE。@Jonas制作MCVE的关键在于它能帮助您找到问题所在。真的,我正在用MATLAB运行CUDA代码,你的代码不会抛出任何错误。