我最近更新了我的VS 2017,现在我甚至无法构建默认的CUDA项目(添加了矢量的项目).
我怀疑这是由于以下错误:
Severity Code Description Project File Line Suppression State
Error C1189 #error: -- unsupported Microsoft Visual Studio version!
Only the versions 2012, 2013, 2015 and 2017 are supported! ver2
c:\program files\nvidia gpu computing
toolkit\cuda\v9.0\include\crt\host_config.h 133
Run Code Online (Sandbox Code Playgroud)
其他错误是无关紧要的,一旦我解决了这个错误就会消失.请注意,我能够从CUDA示例构建并运行simpleCUFFT.
在更新之前,我能够构建默认的CUDA项目,但是我无法构建CUDA Sample项目.我使用VS安装程序更新了我的VS2017并安装了CUDA SDK 10.0.15063.0.附件是截图
安装组件.
如果需要任何其他信息,请与我们联系.我知道以下主题,因为我使用的是最新的CUDA工具包,所以我不需要在host_config.h中进行更改.
谢谢,米哈伊尔
编辑:我的VS版本(在VS安装程序中显示)是15.5.0我的nvcc版本是9.0版,V9.0.176
Edit2:我试图将host_config.h第133行更改为:
#if _MSC_VER < 1600 || _MSC_VER > 1912
Run Code Online (Sandbox Code Playgroud)
此错误不再显示,但是,文件type_trails中会出现一堆错误"表达式必须具有常量值".我不知道如何解决它.
我曾经在 Matlab 中工作,在使用函数进行调试期间可视化中间结果非常方便(当使用大数组/矩阵和嵌套函数时)plot。
在Python中,我无法在调试模式下绘制任何内容:带有图形图的窗口永远不会加载(我使用Spyder IDE进行编码和matplotlib.pyplot绘图)。
在调试嵌套函数和类时,这确实很烦人。有谁知道一个好的解决方案吗?当然,我总是可以输出中间结果,但这并不方便。
谢谢,米哈伊尔
我换了一个新的 GPU GeForce GTX 980 cc 5.2,所以它必须支持动态并行。但是,我什至无法编译一个简单的代码(来自编程指南)。我不会在这里提供它(没有必要,只是有一个全局内核调用另一个全局内核)。
1)我使用VS2013进行编码。在 中property pages -> CUDA C/C++ -> device,我将code generation属性更改为compute_35,sm_35,这是输出:
1>------ Build started: Project: testCublas3, Configuration: Debug Win32 ------
1> Compiling CUDA source file kernel.cu...
1>
1> C:\programs\misha\cuda\Projects\test projects\testCublas3\testCublas3>"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\bin\nvcc.exe" -gencode=arch=compute_35,code=\"sm_35,compute_35\" --use-local-env --cl-version 2013 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5\include" -G --keep-dir Debug -maxrregcount=0 --machine 32 --compile -cudart static -g -DWIN32 -D_DEBUG -D_CONSOLE -D_MBCS …Run Code Online (Sandbox Code Playgroud) 我正在使用Visual Studio 2017 ver 15.5.0(最新版)来开发一些CUDA/C++代码.问题是,在代码更改时,我必须手动选择重建解决方案.当我按f5按钮时,它不会构建新版本.当我按下build时,它说该解决方案是最新的(尽管代码已经更改).
我注意到这件事也发生在其他项目中,所以它应该与全局VS设置有关.我熟悉 这个主题,并确保选择"始终构建"选项.
谢谢,米哈伊尔
我最近开始用 Python 编码。在我的脚本开始时,我总是有以下导入:import numpy as np.
在我的一个脚本中,我使用了np.matlib.repmat函数。它曾经可以正常工作,但是最近它无法运行并显示以下错误:
AttributeError: module 'numpy' has no attribute 'matlib'
Run Code Online (Sandbox Code Playgroud)
我搜索了这个问题,如果一个人在他的工作目录中有一个名为 numpy.py 的脚本,或者如果安装的版本不同并且不包含被调用的模块,看起来就会出现这样的错误。
我没有命名任何文件 numpy.py。我还发现,在我打电话之后:
from numpy import matlib as mb
Run Code Online (Sandbox Code Playgroud)
我可以使用mb.repmat. 因此,我的 numpy 模块确实包含matlib模块。有人可以提示我,为什么我不能打电话np.matlib?
我试图在我的玩具示例中使用cublas函数cublasSgemmBatched.在这个例子中,我首先分配2D数组:h_AA, h_BBsize [ 6] [ 5]和h_CCsize [ 6] [ 1].之后,我将其复制到设备,执行cublasSgemmBatched并尝试将阵列复制d_CC回主机阵列h_CC.但是,我收到了一个错误(cudaErrorLaunchFailure)设备主机复制,我不确定我是否正确地将数组复制到设备中:
int main(){
cublasHandle_t handle;
cudaError_t cudaerr;
cudaEvent_t start, stop;
cublasStatus_t stat;
const float alpha = 1.0f;
const float beta = 0.0f;
float **h_AA, **h_BB, **h_CC;
h_AA = new float*[6];
h_BB = new float*[6];
h_CC = new float*[6];
for (int i = 0; i < 6; i++){
h_AA[i] = new float[5]; …Run Code Online (Sandbox Code Playgroud) 我刚刚安装了openCV ver.在我的计算机上测试3.00 beta,我正试图用VS2013测试它.我按照快速入门指南:
1)使用预构建库安装Windows.
2)Microsoft VS内部的OpenCV,使用本地方法和x64/vc12目录库.
因此,他们的示例(在链接#2中列出)产生了一个错误:
#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
if (argc != 2)
{
cout << " Usage: display_image ImageToLoadAndDisplay" << endl;
return -1;
}
Mat image;
image = imread(argv[1], IMREAD_COLOR); // Read the file
if (image.empty()) // Check for invalid input
{
cout << "Could not open or find the image" << std::endl;
return -1; …Run Code Online (Sandbox Code Playgroud) 我试图估计Python性能与C++相比有多好.
这是我的Python代码:
a=np.random.rand(1000,1000) #type is automaically float64
b=np.random.rand(1000,1000)
c=np.empty((1000,1000),dtype='float64')
%timeit a.dot(b,out=c)
#15.5 ms ± 560 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
Run Code Online (Sandbox Code Playgroud)
这是我在发布机制中使用Xcode编译的C++代码:
#include <iostream>
#include <Dense>
#include <time.h>
using namespace Eigen;
using namespace std;
int main(int argc, const char * argv[]) {
//RNG generator
unsigned int seed = clock();
srand(seed);
int Msize=1000, Nloops=10;
MatrixXd m1=MatrixXd::Random(Msize,Msize);
MatrixXd m2=MatrixXd::Random(Msize,Msize);
MatrixXd m3=MatrixXd::Random(Msize,Msize);
cout << "Starting matrix multiplication test with " << Msize <<
"matrices" << endl; …Run Code Online (Sandbox Code Playgroud) 我在周期性域(框)中进行了大量粒子(最多100000)的模拟,并且为了使粒子留在盒子内,我使用浮点数或双数的模数函数.
在功能上,Matlab一切都很棒mod.但是在C++我发现,该函数fmod并不完全等于Matlab的mod函数:
mod(-0.5,10)=9.5 - 我想要这个结果 C++
fmod(-0.5,10)=-0.5 - 我不想要这个.
当然,我可以用if语句解决我的问题.但是,我认为,它会影响效率(如果在关键循环中声明).有没有办法在没有if声明的情况下实现这个功能?可能是其他一些功能?
谢谢.
我正在使用迭代方法,因此使用大型稀疏矩阵.例如,我想设置一个这样的矩阵:
1 1 0 0 1 0 0 0 0 0
1 1 1 0 0 1 0 0 0 0
0 1 1 1 0 0 1 0 0 0
0 0 1 1 1 0 0 1 0 0
1 0 0 1 1 1 0 0 1 0
0 1 0 0 1 1 1 0 0 1
Run Code Online (Sandbox Code Playgroud)
因此,只有某些对角线不为零.在我的编程中,我将使用更大的矩阵大小,但是Idea是相同的:只有少数对角线非零,所有其他条目都是零.
我知道,如何在for循环中做到这一点,但如果矩阵大小很大,它似乎没有效果.我也使用对称矩阵.如果您为我的样本矩阵和描述提供代码,我将不胜感激.