发行配置的无效配置参数在X64平台上独立执行
Invalid configuration argument for Release configuration stand alone execution on x64 platform
我正在使用:GeForce GTX 1080 Ti具有计算能力6.1。OPENCV 3.2版本(分别为VS2013,X64发布和调试配置构建)。CUDA 8.0版本。Visual Studio 2013,X64平台的重新和调试配置。
我的目的是处理整个输入图像的一部分。图像部分由左上坐标,宽度和高度声明。
问题描述:无效的配置参数 CUDA错误是rasied 唯一的当我通过Visual Studio Debug debug菜单( ctrl )以独立模式(无调试)运行发行版输出时f5 )。
如果我通过VS DEBUG菜单(F5)运行相同的版本可执行文件。
另外,当我运行由同一应用程序代码生成的调试配置的输出时,选项F5和Ctrl F5都可以正常工作并且没有提出错误。
这是我的代码:
struct sRect
{
unsigned int m_StartRow;
unsigned int m_StartCol;
unsigned int m_SizeRows;
unsigned int m_SizeCols;
};
__global__ void CleanNoisePreparation(unsigned char * SrcImage, size_t iStep, const sRect ImageSlice)
{
int iXPos = threadIdx.x + blockIdx.x*blockDim.x;
int iYPos = threadIdx.y + blockIdx.y*blockDim.y;
if (!(iXPos < ImageSlice.m_SizeCols && iYPos < ImageSlice.m_SizeRows))
return;
/*In case pixel value is less or equal to 127 set it to black color (0) otherwisw set it to white color (255)*/
SrcImage[iYPos * iStep + iXPos] = (SrcImage[iYPos * iStep + iXPos] <= (unsigned char)127) ? ((unsigned char)0) : ((unsigned char)255);
}
void PerformCleanNoisePreparationOnGPU(cv::cuda::GpuMat& Image,
const sRect &ImageSlice,
const dim3 &dimGrid,
const dim3 &dimBlock,
const cudaStream_t &Stream)
{
/*Calculate the rquired start address based on the required image slice characteristics*/
unsigned char * pImageData = (unsigned char*)(Image.data ImageSlice.m_StartRow * Image.step + ImageSlice.m_StartCol);
CleanNoisePreparation << <dimGrid, dimBlock, 0, Stream >> >(pImageData, Image.step, ImageSlice);
CUDA(cudaGetLastError());
}
void main
{
sRect ResSliceParams;
ResSliceParams.m_StartRow = 0;
ResSliceParams.m_StartCol = 4854;
ResSliceParams.m_SizeRows = 7096;
ResSliceParams.m_SizeCols = 5146;
cv::cuda::GpuMat MyFrame = cv::cuda::GpuMat::GpuMat(cv::Size(10000, 7096), CV_8U);
//Image step size is 10240
dim3 dimBlock (32, 32, 1)
dim3 dimGrid (161, 222, 1)
cudaStream_t cudaStream;
cudaStreamCreateWithFlags(&cudaStream, cudaStreamNonBlocking);
PerformCleanNoisePreparationOnGPU(MyFrame,
ResSliceParams,
dimGrid,
dimBlock,
cudaStream);
}
当:
时也会提出错误- 内核是完全空的(所有行都已评论)
- 内核输入列表为空。
- 使用默认流代替特定流
找到了问题源。由于仅当我在没有调试模式的情况下发布我的申请时才提出问题,因此我只能使用prints命令来了解什么是变量值以及代码的真实流量是什么。
因此,我被认为dimgrid.y仅在此执行模式下被错误地设置为负值,并且在所有其他执行模式下,这是我预期的正值。由于这个负值,CUDA被提高为"无效配置参数"的rroR。
更多细节:我有一个代码,该代码根据输入图像分辨率以及它是肖像或景观来计算所需的DIMGRID值。我正在使用类型Bool的类成员保存此指示,并将其初始化值发送到其他子类,这是主类的成员初始化列表的一部分,这些列表将所有这些都包括在内。
。可以弄清楚,只有在没有调试执行模式的情况下发布时,布尔值是错误的,而不是true(代表景观模式),在子类的范围中与其在主类范围中的值相反。<<<<<<<<<<<<<<<<<</p>
我经过证实,在将其发送给所有其他子类构造函数之前,我已将其初始化(作为成员初始化列表的一部分),但是由于类成员初始化顺序未根据成员确定初始化列表订单,但根据班级中的声明命令,将其发送给他们一个未经启发的人。
在我的系统中,只有在没有调试执行模式的情况下发布时,一个未经启动的bool类型获得0值,但在所有其他出口模式下,它都会获得正值。
在" if"条件下进行了" if"条件,在未经启动的布尔类型上执行,0转化为false,但任何正值都会转化为true。
这是由于对Dimgrid值的错误计算而引起的。
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 正在查找文档以获得PS4平台的C++中的设备信息
- 无法找到/读取配置文件.conf-FileIOException
- 在WSL:configure_file上对config_file的每次调用都失败:配置文件时出现问题
- 一种在C++中读取TXT配置文件的简单方法
- 生成MRPT库时cmake配置失败
- FFMPEG配置文件级别id大小无效
- 如何通过Conan和CMake找到用于pkg配置的.pc文件
- 配置文件解析器仅返回以前的值
- 我的程序有一个保存配置文件的GUI,如何双击此配置文件以直接加载带有配置数据的GUI?
- 更改命令行 qt5 源代码构建配置的正确/快速方法
- 使用 CMake 为 CUDA 进行多配置/多平台构建
- 重用编译器前端的结果,以加快多个配置/平台的C++代码编译
- Visual Studio:编译每个平台和配置上的模块列表
- 发行配置的无效配置参数在X64平台上独立执行
- 将空平台配置添加到 MSBuild
- 一键构建所有配置和平台
- 为什么我不能在visual studio 2012的调试配置中将平台设置为x64
- android平台GMP库配置错误.处理步骤
- 如何在64位平台中将swig配置为将size_t映射为ulong而不是uint(c#)