草庐IT

cuda-c-programming-guide

全部标签

c++ - Cuda C++ 中的简单文件 I/O

我现在正在研究CudaC++。但是我在使用CUDA读写文件时遇到了问题。如何在CudaC++中实现文件输入输出过程?我想将.obj文件读入我的Cuda内核。我该怎么办? 最佳答案 使用普通主机(C++)文件操作读取文件。如果需要,然后使用普通的cudaMalloc和cudaMemcpy操作将数据传输到设备。您无法直接在CUDAC++中实现文件I/O,因为没有用于此的API,而且GPU不直接连接到文件系统。您必须通过操作系统才能获得文件系统服务。 关于c++-CudaC++中的简单文件I/

c++ - "program to interfaces"是C++项目中常见的设计原则吗?

最近几天我读了很多关于“程序到接口(interface)”和“控制反转”的内容。主要是在Java语言的上下文中。我的问题是这是否也是C++开发中的常见做法。有什么好处?有什么缺点?是否值得申请小型项目(例如15-20节课)? 最佳答案 是的,这很常见,但不是您所期望的形式。在Java中,接口(interface)是形式化和显式的,针对接口(interface)编程意味着实现特定的接口(interface)。在C++中,有时也会这样做(尽管使用抽象基类而不是接口(interface)),但在C++中,另一种常见的做法是使用模板,其中接

c++ - Cuda Hello World printf 即使使用 -arch=sm_20 也不工作

我不认为我是Cuda的新手,但显然我是。我最近将我的cuda设备升级到了1.3到2.1的一种功能(GeforceGT630)。我还想全面升级到Cuda工具包5.0。我可以编译通用的cuda内核,但即使设置了-arch=sm_20,printf也无法正常工作。代码:#include#include#include#include__global__voidtest(){printf("HiCudaWorld");}intmain(intargc,char**argv){test>>();return0;}编译器:Error2errorMSB3721:Thecommand""C:\Prog

c++ - 为什么我调用 CUDA 数学库 sqrt() 函数失败?

我是Cuda的新手,我有以下功能:__global__voidsquare(float*myArrayGPU){myArrayGPU[threadIdx.x]=sqrt(threadIdx.x);}我想使用cuda数学库,我尝试了#include"math.h"但我仍然遇到错误错误:不允许从__global__函数(“square”)调用__host__函数(“__sqrt”)知道我应该包含什么库来使用sqrt吗? 最佳答案 threadIdx.x是int类型。CUDA数学库仅针对单精度(float)和double(double)重

c++ - CUDA,使用 memset(或 fill 或 ...)将 float 数组设置为 max val possible

编辑:感谢之前的回答。但实际上我想在CUDA中进行,显然CUDA没有Fill函数。我必须为每个线程填充一次矩阵,所以我想确保我使用的是最快的方法。这是我最好的选择吗?我想将float矩阵设置为可能的最大值(在float中)。做这项工作的正确方法是什么?float*matrix=newfloat[N*N];for(inti=0;i提前致谢。 最佳答案 CUDA中最简单的方法是使用thrust::fill.Thrust包含在CUDA4.0及更高版本中,或者您可以installit如果您使用的是CUDA3.2。#include#inclu

c++ - 如何在不使用变量的情况下启用 Boost Program Options 中的其他选项?

我使用程序选项来解析我的应用程序的命令行选项。我有几个选项,例如-Ox、-Oy、-Oz,...我想要一个super选项-Oall启用Ox和Oy,另一个-Osub启用Oz和Ow。有没有办法使用BoostProgramOptions来做到这一点?一开始想查看Oall的值,然后手动启用Ox和Oy,但是解析后无法编辑值。我想避免使用变量来存储Ox、Oy的值,因为我可以有很多这些选项。谢谢 最佳答案 我在您的程序逻辑中更多地看到了这一点,所以我怀疑程序选项是否提供了这一点。简单地使用if(Oall){Ox=Oy=Oz=true;}等等

c++ - CUDA/C++ - 链接错误 : undefined reference to

我是一名新手,正在寻求有关使用g++将一些已编译的CUDA目标代码链接到C++项目的帮助。之前有一些针对此帖子的问题和解决方案(here和here),但没有一个对我有用,我似乎无法弄清楚原因。不幸的是,为此我一直在使用Windows。我尝试开始工作的简单示例如下所示://kernel.hintcuda_vec_add(float*h_a,float*h_b,float*h_c,intn);添加两个vector的CUDA代码。//kernel.cu#include__global__voidvec_add_kernel(float*a,float*b,float*c,intn){inti

c++ - 获取 OpenCV 错误 : Insufficient memory while running OpenCV Sample Program: "stitching_detailed.cpp"

我最近开始使用OpenCV,目的是将大量图像拼接在一起以创建大型全景图。为了开始我的实验,我查看了OpenCV文件附带的示例程序,以了解如何实现OpenCV库。因为我对图像拼接很感兴趣,所以我直接找到了“stitching_detailed.cpp”。代码可以在以下位置找到:https://code.ros.org/trac/opencv/browser/trunk/opencv/samples/cpp/stitching_detailed.cpp?rev=6856现在,这个程序完成了我需要它完成的大部分工作,但我遇到了一些有趣的事情。我发现对于15个可选投影变形器中的9个,我在尝试运

c++ - Qt "The program has unexpectedly finished."关闭

我有一个关于QML2(Qt5.2.1)的项目。似乎可以正常工作。但是当我在QtCreator的“应用程序输出”(底部的那个东西)中关闭正在运行的项目(ALT+F4或其他)时,在1-2秒,我收到以下消息:Theprogramhasunexpectedlyfinished.bla-bla-bla.execrashed这发生在发布和Debug模式中。我在调试下启动,但没有收到任何错误。我从最后一个析构函数开始一步一步地进行,直到返回1的returnapp.exec();。我的意思是除了这个-我没有看到任何错误。我应该为此担心吗?我可以知道此消息的原因吗?有没有办法获得更具体的消息?我尝试从c

c++ - CUDA 探查器 : Calculate memory and compute utilization

我正在尝试使用ubuntu上的CUDAnsight分析器为我的GPU加速应用程序的内存带宽利用率和计算吞吐量利用率建立两个总体测量值。该应用程序在TeslaK20cGPU上运行。我想要的两个测量值在某种程度上与此图中给出的测量值相当:问题是这里没有给出确切的数字,更重要的是我不知道这些百分比是如何计算的。内存带宽利用率Profiler告诉我我的GPU的最大全局内存带宽为208GB/s。这是指设备内存BW还是全局内存BW?它说的是全局,但第一个对我来说更有意义。对于我的内核,分析器告诉我设备内存带宽为98.069GB/s。假设最大208GB/s是指设备内存,那么我可以简单地将内存带宽利用