ipiv=(int*)malloc(sizeof(int)*count_1);
A=(float*)malloc(sizeof(float)*b*count_1);
Ta=(float*)malloc(sizeof(float)*count_1*count_1);
invTa=(float*)malloc(sizeof(float)*count_1*count_1);
det=(float*)malloc(sizeof(float)*1);
eigRe=(float*)malloc(sizeof(float)*count_1);
eigIm=(float*)malloc(sizeof(float)*count_1);
//大小为uu count_1*numPixel;aa numPixel; vol numPixel;
uu=(float*)malloc(sizeof(float)*count_1*numPixel);
aa=(float*)malloc(sizeof(float)*numPixel);
vol=(float*)malloc(sizeof(float)*numPixel);
uMulInv=(float*)malloc(sizeof(float)*count_1*numPixel);
//设备端申请空间;
//int *d_ipiv;
//float *d_A,*d_Ta,*d_invTa,*d_eigRe,*d_eigIm,*d_uu,*d_aa,*d_vol,*d_uMulInv;
//float *d_det;
cudaMalloc((void**)&d_ipiv,sizeof(int)*count_1);
cudaMalloc((void**)&d_A,sizeof(float)*b*count_1);
cudaMalloc((void**)&d_Ta,sizeof(float)*count_1*count_1);
cudaMalloc((void**)&d_invTa,sizeof(float)*count_1*count_1);
cudaMalloc((void**)&d_det,sizeof(float)*1);
cudaMalloc((void**)&d_eigRe,sizeof(float)*count_1);
cudaMalloc((void**)&d_eigIm,sizeof(float)*count_1);
//大小为uu count_1*numPixel;aa numPixel; vol numPixel;
cudaMalloc((void**)&d_uu,sizeof(float)*count_1*numPixel);
cudaMalloc((void**)&d_aa,sizeof(float)*numPixel);
cudaMalloc((void**)&d_vol,sizeof(float)*numPixel);
cudaMalloc((void**)&d_uMulInv,sizeof(float)*count_1*numPixel);
//计算A;
caculateA<<<1,b>>>(d_OMEGA,d_A,d_First,b,count_1);
/*cudaMemcpy(A,d_A,sizeof(float)*count_1*b,cudaMemcpyDeviceToHost);
//显示A;
char showA[64] = {0};
sprintf(showA, "%f\n %f\n %f\n %f\n %f\n %f\n %f\n %f\n %f\n", A[0],A[1],A[2],A[3],A[4],A[5],A[6],A[7],A[8]);
::MessageBox(NULL, showA,"showA", MB_OK);*/
//求ATA;
stat=cublasSgemm(handler,CUBLAS_OP_T,CUBLAS_OP_N,count_1,count_1,b,
&al,d_A,b,d_A,b,&bet,d_Ta,count_1);
cudaMemcpy(d_invTa,d_Ta,sizeof(float)*count_1*count_1,cudaMemcpyDeviceToDevice); //d_Ta复制给d_invTa,因为稍后的计算会覆盖;
/*//显示ATA;
cudaMemcpy(Ta,d_Ta,sizeof(float)*count_1*count_1,cudaMemcpyDeviceToHost);
char showATA[64] = {0};
sprintf(showATA, "%f\n %f\n %f\n %f\n %f\n %f\n %f\n %f\n %f\n", Ta[0],Ta[1],Ta[2],Ta[3],Ta[4],Ta[5],Ta[6],Ta[7],Ta[8]);
::MessageBox(NULL, showATA,"showATA", MB_OK);*/
//求特征值;
culaInitialize();
culaDeviceSgeev('N','N',count_1,d_Ta,count_1,d_eigRe,d_eigIm,NULL,count_1,NULL,count_1); //求A*A转置特征值;
//求行列式;
cudaMemcpy(eigRe,d_eigRe,sizeof(float)*count_1,cudaMemcpyDeviceToHost);
cudaMemcpy(eigIm,d_eigIm,sizeof(float)*count_1,cudaMemcpyDeviceToHost);
det[0]=detValue(eigRe,eigIm,count_1);
/*
//显示行列式;
char showDet[64] = {0};
sprintf(showDet, "%f\n %f\n %f\n %f\n %f\n %f\n %f\n %f\n %f\n", det[0],det[1],det[2],det[3],det[4],det[5],det[6],det[7],det[8]);
::MessageBox(NULL, showDet,"showDet", MB_OK);*/
//求逆矩阵;
culaDeviceSgetrf(count_1,count_1,(float *)d_invTa,count_1,(int *)d_ipiv); //LU分解;
culaDeviceSgetri(count_1,(float *)d_invTa,count_1,(int *)d_ipiv); //求逆;
/*
//显示逆矩阵;
cudaMemcpy(invTa,d_invTa,sizeof(float)*count_1*count_1,cudaMemcpyDeviceToHost);
char showInv[64] = {0};
sprintf(showInv, "%f\n %f\n %f\n %f\n %f\n %f\n %f\n %f\n %f\n", invTa[0],invTa[1],invTa[2],invTa[3],invTa[4],invTa[5],invTa[6],invTa[7],invTa[8]);
::MessageBox(NULL, showInv,"showInv", MB_OK);*/
//求体积最大;
e3=0;
caculateUu<<<dimGrid,dimBlock>>>(d_subData,d_A,d_uu,b,w,numPixel,count_1); //求uu;
//显示UU;
cudaMemcpy(uu,d_uu,sizeof(float)*count_1*numPixel,cudaMemcpyDeviceToHost);
char showUU[64] = {0};
sprintf(showUU, "%f\n %f\n %f\n %f\n %f\n %f\n %f\n %f\n %f\n", uu[0],uu[1],uu[2],uu[300],uu[400],uu[500],uu[600],uu[700],uu[800]);
::MessageBox(NULL, showUU,"showUU", MB_OK);
caculateUinv<<<dimGrid,dimBlock>>>(d_uMulInv,d_invTa,d_uu,w,count_1,numPixel); //求uMulInv;
//显示Uinv;
cudaMemcpy(uMulInv,d_uMulInv,sizeof(float)*count_1*numPixel,cudaMemcpyDeviceToHost);
char showUinv[64] = {0};
sprintf(showUinv, "%f\n %f\n %f\n %f\n %f\n %f\n %f\n %f\n %f\n", uMulInv[0],uMulInv[1],uMulInv[2],uMulInv[300],uMulInv[400],uMulInv[500],uMulInv[600],uMulInv[700],uMulInv[800]);
::MessageBox(NULL, showUinv,"showUinv", MB_OK);
caculateAa<<<dimGrid,dimBlock>>>(d_uu,d_aa,d_uMulInv,w,count_1,numPixel);//求aa;
//显示Aa;
cudaMemcpy(aa,d_aa,sizeof(float)*numPixel,cudaMemcpyDeviceToHost);
char showAa[64] = {0};
sprintf(showAa, "%f\n %f\n %f\n %f\n %f\n %f\n %f\n %f\n %f\n", aa[0],aa[1],aa[2],aa[300],aa[400],aa[500],aa[600],aa[700],aa[800]);
::MessageBox(NULL, showAa,"showAa", MB_OK);
caculateVol<<<dimGrid,dimBlock>>>(d_aa,d_vol,d_tempMt,w,det); //求体积;
//显示Vol;
cudaMemcpy(vol,d_vol,sizeof(float)*numPixel,cudaMemcpyDeviceToHost);
char showVol[64] = {0};
sprintf(showVol, "%f\n %f\n %f\n %f\n %f\n %f\n %f\n %f\n %f\n",vol[0],vol[1],vol[2],vol[300],vol[400],vol[500],vol[600],vol[700],vol[800]);
::MessageBox(NULL, showVol,"showVol", MB_OK);
stat=cublasIsamax(handler,numPixel,d_vol,1,&e3);
//e3=e3-1;
//显示部分;
char E3[8] = {0};
sprintf( E3, "%d\n ",e3);
::MessageBox(NULL,E3,"Next Duanyuan", MB_OK);
duanyuanInd[count_duanyuan]=e3;
vtKernel<<<1,b>>>(d_data,d_Vt,numPixel,b,e3);
omegaKernel<<<1,b>>>(d_Vt,d_OMEGA,b,count_duanyuan); //端元读入OMEGA中;
kernelTEST1.exe 中的 0x7544812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0019f928 处的 cudaError_enum。
kernelTEST1.exe 中的 0x7544812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0019f928 处的 cudaError_enum。
kernelTEST1.exe 中的 0x7544812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0019f928 处的 cudaError_enum。
kernelTEST1.exe 中的 0x7544812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0019f928 处的 cudaError_enum。
kernelTEST1.exe 中的 0x7544812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0019f928 处的 cudaError_enum。
kernelTEST1.exe 中的 0x7544812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0019f928 处的 cudaError_enum。
kernelTEST1.exe 中的 0x7544812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0019f928 处的 cudaError_enum。
kernelTEST1.exe 中的 0x7544812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0019f928 处的 cudaError_enum。
kernelTEST1.exe 中的 0x7544812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0019f928 处的 cudaError_enum。
kernelTEST1.exe 中的 0x7544812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0019f928 处的 cudaError_enum。
kernelTEST1.exe 中的 0x7544812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0019f928 处的 cudaError_enum。
kernelTEST1.exe 中的 0x7544812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0019f928 处的 cudaError_enum。
kernelTEST1.exe 中的 0x7544812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0019f928 处的 cudaError_enum。
kernelTEST1.exe 中的 0x7544812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0019f928 处的 cudaError_enum。
kernelTEST1.exe 中的 0x7544812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0019f928 处的 cudaError_enum。
kernelTEST1.exe 中的 0x7544812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0019f928 处的 cudaError_enum。
kernelTEST1.exe 中的 0x7544812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0019f928 处的 cudaError_enum。
kernelTEST1.exe 中的 0x7544812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0019f928 处的 cudaError_enum。
kernelTEST1.exe 中的 0x7544812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0019f928 处的 cudaError_enum。
kernelTEST1.exe 中的 0x7544812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0019f928 处的 cudaError_enum。
kernelTEST1.exe 中的 0x7544812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0019f928 处的 cudaError_enum。
kernelTEST1.exe 中的 0x7544812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0019f928 处的 cudaError_enum。
kernelTEST1.exe 中的 0x7544812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0019f928 处的 cudaError_enum。
kernelTEST1.exe 中的 0x7544812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0019f928 处的 cudaError_enum。
kernelTEST1.exe 中的 0x7544812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0019f928 处的 cudaError_enum。
kernelTEST1.exe 中的 0x7544812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0019f928 处的 cudaError_enum。
“kernelTEST1.exe”: 已加载“C:\Windows\System32\uxtheme.dll”
“kernelTEST1.exe”: 已加载“C:\Windows\System32\dwmapi.dll”
“kernelTEST1.exe”: 已加载“C:\Windows\System32\cryptbase.dll”
“kernelTEST1.exe”: 已加载“F:\Program Files\Dict\6.3.68.1111\WordStrokeHelper32.dll”
kernelTEST1.exe 中的 0x7544812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0019fa18 处的 cudaError_enum。
kernelTEST1.exe 中的 0x7544812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0019facc 处的 cudalib::CudaRuntimeException。
kernelTEST1.exe 中的 0x7544812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0019f940 处的 boost::exception_detail::clone_implcula::InfoException。
kernelTEST1.exe 中的 0x7544812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0019fab4 处的 boost::exception_detail::clone_implcula::InfoException。
kernelTEST1.exe 中的 0x7544812f 处最可能的异常: Microsoft C++ 异常: 内存位置 0x0019fa34 处的 boost::exception_detail::clone_implcula::InfoException。
程序“[5796] kernelTEST1.exe: 本机”已退出,返回值为 0 (0x0)。