我正在使用matrixMulCUBLAS示例代码,并尝试将默认矩阵大小更改为稍微更有趣的 rows=5k x cols=2.5k ,然后Failed to synchronize on the stop event (error code unknown error)!当所有计算完成时,该示例失败,并在第 #377 行出现错误,它是显然是在清理古巴人。这是什么意思?以及如何修复?
我已经安装了 cuda 5.0,EVGA FTW nVidia GeForce GTX 670内存为 2GB。截至目前,驱动程序版本为最新版本 314.22。
在 CUDA 中,流 0 与其他流有何关系?流 0(默认流)是否与上下文中的其他流同时执行?
考虑以下示例:
cudaMemcpy(Dst, Src, sizeof(float)*datasize, cudaMemcpyHostToDevice);//stream 0;
cudaStream_t stream1;
/...creating stream1.../
somekernel<<<blocks, threads, 0, stream1>>>(Dst);//stream 1;
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,编译器能否确保始终在完成后somekernel启动或与 并发执行? cudaMemcpysomekernelcudaMemcpy
正如我所看到的,在Google 和许多网站上, nVidia Quadro KXXXXM - 移动 GPU (MXM)都有“共享内存:否” 。
但如果我想为这些卡编写 CUDA C/C++,我可以在代码中使用共享内存吗?如果我可以,那么如果我这样做会发生什么 - 它会使用全局 GPU-RAM 吗?
我正在寻找一种在没有 NVIDIA GPU 的系统上运行 CUDA 程序的方法。
我尝试安装 MCUDA 和 gpuOcelot,但似乎在安装时遇到了一些问题。
我已经完成了如何使用软件实现在没有 GPU 的情况下运行 CUDA 中给出的答案?. 那里的答案建议更改系统硬件,使用模拟器(现已弃用)或切换到 OpenCL。这些都不能充分满足我的要求
为了在系统上利用 GPU,我希望能够绘制框图并理解“nvidia-smi topo -m”输出表示的连接。
有人可以提供一个系统级框图吗?连接的描述也会很棒。我相信这会帮助很多人利用他们的多 GPU 系统。
的nvidia-smi显示了在指示在GPU0利用3.77GB但没有进程被列出为GPU0:
(base) ~/.../fast-autoaugment$ nvidia-smi
Fri Dec 20 13:48:12 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 430.50 Driver Version: 430.50 CUDA Version: 10.1 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 TITAN Xp Off | 00000000:03:00.0 Off | N/A |
| 23% 34C P8 9W / 250W | 3771MiB / 12196MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
| 1 TITAN Xp Off | 00000000:84:00.0 …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用推力库的 partition_copy 函数对数组进行分区。
我看过传递指针的例子,但我需要知道每个分区中有多少元素。
我尝试过的是将设备向量作为 OutputIterator 参数传递,如下所示:
#include <thrust/device_vector.h>
#include <thrust/device_ptr.h>
#include <thrust/partition.h>
struct is_even {
__host__ __device__ bool operator()(const int &x) {
return (x % 2) == 0;
}
};
int N;
int *d_data;
cudaMalloc(&d_data, N*sizeof(int));
//... Some data is put in the d_data array
thrust::device_ptr<int> dptr_data(d_data);
thrust::device_vector<int> out_true(N);
thrust::device_vector<int> out_false(N);
thrust::partition_copy(dptr_data, dptr_data + N, out_true, out_false, is_even());
Run Code Online (Sandbox Code Playgroud)
当我尝试编译时出现此错误:
error: class "thrust::iterator_system<thrust::device_vector<int, thrust::device_allocator<int>>>" has no member "type"
detected during instantiation of "thrust::pair<OutputIterator1, OutputIterator2> thrust::partition_copy(InputIterator, InputIterator, OutputIterator1, OutputIterator2, Predicate) [with …Run Code Online (Sandbox Code Playgroud) 我曾经历过,对于小输入大小,CPU 的执行速度比 GPU 快。为什么是这样?准备,数据传输还是什么?
例如对于内核和 CPU 功能(CUDA 代码):
__global__ void squareGPU(float* d_in, float* d_out, unsigned int N) {
unsigned int lid = threadIdx.x;
unsigned int gid = blockIdx.x*blockDim.x+lid;
if(gid < N) {
d_out[gid] = d_in[gid]*d_in[gid];
}
}
void squareCPU(float* d_in, float* d_out, unsigned int N) {
for(unsigned int i = 0; i < N; i++) {
d_out[i] = d_in[i]*d_in[i];
}
}
Run Code Online (Sandbox Code Playgroud)
在 5000 个 32 位浮点数的数组上运行这些函数 100 次,我使用一个小测试程序得到以下结果
Size of array:
5000
Block size:
256
You chose N=5000 and block …Run Code Online (Sandbox Code Playgroud) 我想在 GPU 上使用 Tensorflow。所以我安装了所有需要的工具并安装如下 -
我使用 deviseQuery 示例测试了我的 cuda,cudnn 是否正在工作。但是 Tensorflow 没有使用 GPU。然后我发现版本兼容性问题是可能的,所以我在 Tensorflow 网站上安装了 CudaToolkit,cudnn,使用 conda 环境检查版本兼容性,如下所示。
但是在尝试了 Tensorflow-GPU 之后,还没有使用 GPU。所以我现在在做什么?任何步骤或建议都需要。
我在 Windows 上使用 openFrameworks,它使用 GLFW 和 GLEW,我在不同 GPU 品牌上的扩展可用性方面遇到问题。
基本上,如果我在 openGL 2 上运行我的程序,扩展是可用的。但是,如果我更改为 openGL 3.2 或更高版本,则所有扩展在 Nvida(在 * GTX1080 上测试)和 Intel (*UHD) 上都不可用,但在 AMD(*Vega Mobile GL/GH 和 RX 5700)上不可用。
这意味着无法使用 GL_ARB_texture_float,因此我的计算着色器无法按预期工作。
我正在使用 openGL 4.3,用于计算着色器支持和英特尔 GPU 支持。所有驱动程序都是最新的,所有 GPU 都支持 GL_ARB_texture_float。
此外,在 GLSL 上启用扩展没有任何作用。
这就是 openFrameworks 制作上下文的方式:
glfwWindowHint(GLFW_CLIENT_API, GLFW_OPENGL_API);
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, settings.glVersionMajor);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, settings.glVersionMinor);
if((settings.glVersionMajor==3 && settings.glVersionMinor>=2) || settings.glVersionMajor>=4)
{
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
}
if(settings.glVersionMajor>=3)
{
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
}
Run Code Online (Sandbox Code Playgroud)
不确定发生了什么,也不知道如何搜索这样的问题。欢迎任何指点!