我使用的是nsight 2.2,Toolkit 4.2,最新的nvidia驱动程序,我的计算机中使用的是夫妇gpu。构建自定义4.2。我在CUDA的项目属性上设置了“ generate GPU ouput”(生成GPU输出),nsight监视器处于打开状态(一切看起来都很不错)。
我在全局内核函数上设置了几个断点。nsight在函数的声明处停止,但是跳过了几个断点。就像nsight决定要达到断点还是跳过断点一样。有趣的是nsight在for循环处停止,但在简单的赋值操作上不会停止。
另一个问题是我无法设置关注点或将变量添加到监视列表,在这种情况下(请参阅所附的屏幕截图),我无法解析变量“ value”的值:“ posss”或“ testDetctoinRate1” 。另一方面,共享内存或块内存将自动插入本地列表。
我通过以下调用唤起我的内核函数:
checkCUDA<<<1, 32>>>(sumMat->rows,sumMat->cols , (UINT *)pGPUsumMat);
cudaError = cudaGetLastError();
if(cudaError != cudaSuccess)
{
printf("CUDA error: %s\n", cudaGetErrorString(cudaError));
exit(-1);
}
Run Code Online (Sandbox Code Playgroud)
内核调用可以正常工作。
是否可以选择强制nsight在所有断点处停止?如何将线程的寄存器添加到监视列表?
任何帮助将不胜感激,我可以按需发布代码
干杯
最初,我的调试命令行如下:
设置CUDAFE_FLAGS =-sdk_dir“ c:\ Program Files \ Microsoft SDKs \ Windows \ v7.0A \”“ C:\ Program Files \ NVIDIA GPU计算工具包\ CUDA \ v4.2 \ bin \ nvcc.exe”-使用-local-env --cl-version 2010 -ccbin“ C:\ Program Files \ Microsoft Visual Studio 10.0 \ VC \ bin” …
我想使用 opencv FileStorage 对象编写一个 XML 文件。
我看到的大多数示例的工作原理如下
FileStorage fs("d:\\1.xml" , FileStorage::WRITE);
fs << "one" << 1;
Run Code Online (Sandbox Code Playgroud)
我想编写一个带有修改后的名称变量的部分,这意味着不必在编译时插入文本。我寻找这样的东西:
string st = "1";
fs << st.c_str() << 1;
Run Code Online (Sandbox Code Playgroud)
但是我不断收到运行时错误。它拒绝工作,我尝试过使用 opencv 字符串类型、stl 字符串类型、char*,但仍然无法使其工作。
我想在我的cuda代码中指定我是使用CUDA构建规则版本4.2还是使用CUDA构建规则版本5进行编译.
有没有用于此类提议的宏?
注意:我知道可以选择指定当前编译过程是否支持某种体系结构,例如
__CUDA_ARCH__
我正在为cuda构建规则版本寻找类似的宏
非常感谢帮助
我想知道我是否可以使用Nvidia Tesla K20和Direct3D 11?
我想使用Direct3D渲染图像,然后使用CUDA处理渲染的图像,[我知道如何计算CUDA的互操作性].
特斯拉k20没有显示适配器(物理远程适配器)
我设法使用特斯拉C2075,但是使用K20我无法接收设备适配器(EnumAdapters命令).
是否可以使用特斯拉K20和Direct3D?
坦率地说,这段代码是用记事本写的
谢谢
IDXGIFactory* factory = 0 ;
IDXGIAdapter* adapter = 0 ;
int dev = 0;
CreateDXGIFactory( __uuidof(IDXGIFactory) , (void**)&factory);
for (unsigned int i = 0 ; !adapter ; ++i )
{
if ( FAILED( factory->EnumAdapters (i , &adapter )))
break;
if ( cudaD3D11GetDevice(&dev , adapter) == cudaSuccess )
break;
adapter->Release()
}
Run Code Online (Sandbox Code Playgroud) 我正在使用matlab来对图像进行修改.我在Matlab上加载了一个图像.(图像可能具有不同的分辨率)将图像转换为灰度,然后将图像的矩阵转换为双倍.
我在图像上绘制了网格线(我已经发布了代码,如何在堆栈上的某个地方执行此操作).
我的问题是,由于在X轴和Y轴上对图像进行束缚,我可能在1000个方格上.
我想对该图像中的方块进行编号.
有没有在Matlab上绘制数字的选项?我很乐意收到任何有关这方面的信息(除了点击猴子并在0到1000上写油漆哈哈......).
干杯S.
我正在寻找一种在CUDA内核中传递多个重复参数的优雅方法,
众所周知,每个内核参数都位于每个CUDA线程的堆栈中,因此,内核传递给每个线程的参数之间可能存在重复,每个线程都位于每个堆栈上.
为了最大限度地减少传递的重复参数的数量,我正在寻找一种优雅的方式.
为了解释我的担忧:假设我的代码如下:
kernelFunction<<<gridSize,blockSize>>>(UINT imageWidth, UINT imageWidth, UINT imageStride, UINT numberOfElements,x,y,ect...)
Run Code Online (Sandbox Code Playgroud)
UINT imageWidth,UINT imageWidth,UINT imageStride,UINT numberOfElements参数位于每个线程库存中,
我正在寻找一个技巧来发送更少的参数并从其他来源访问数据.
我正在考虑使用常量内存,但由于常量内存位于全局,因此我将其删除.不用说内存位置应该很快.
任何帮助,将不胜感激.