我正在 Windows 10 和 CUDA 9.2 上的 GeForce 1080 Ti (Pascal) 上运行玩具 CUDA 示例。
目标是测试CPU 的cudaMemPrefetchAsync ,因为它应该可以工作。
但是,我在该特定行上收到 CUDA 错误(无效的设备序号)。
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <cstdio>
#include <cstdlib>
void fill(int* a, int val, int N) {
for (int k = 0; k < N; ++k) {
a[k] = val;
}
}
__global__ void add(int* a, int* b, int N)
{
for (int i = threadIdx.x + blockIdx.x * blockDim.x; i < N; i += blockDim.x * gridDim.x) {
a[i] …Run Code Online (Sandbox Code Playgroud) 如果我问了一个愚蠢的问题,我很抱歉。我是 CUDA 的新手。使用 Runfile 方法安装了 CUDA 10.1 并根据 Nvidia 说明进行了以下导出:
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64:$LD_LIBRARY_PATH
export PATH=$PATH:/usr/local/cuda-10.1/bin
Run Code Online (Sandbox Code Playgroud)
然后我尝试添加 cuDNN 库。但是我在下面找到了两个 CUDA 文件夹/use/local:
cuda
cuda-10.1
Run Code Online (Sandbox Code Playgroud)
我nvcc -V在两个文件夹中运行,它们都是 10.1 版。所以现在我有两个问题:
我应该cuDNN库复制到cuda/include或cuda-10.1/include或两者兼而有之?
为什么我得到两个文件夹?似乎它们包含完全相同的文件。我应该删除其中之一以使事情干净吗?
当我尝试加载 pytorch 检查点时:
checkpoint = torch.load(pathname)
Run Code Online (Sandbox Code Playgroud)
我懂了:
RuntimeError: cuda runtime error (35) : CUDA 驱动程序版本对于 Torch/csrc/cuda/Module.cpp:51 中的 CUDA 运行时版本不足
我用可用的 GPU 创建了检查点,但现在只有 CPU 可用。
如何加载检查点?
我正在尝试使用 cuda 10.2 构建 opencv'。当执行以下命令时:
cmake -DCMAKE_BUILD_TYPE=RELEASE \
-DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
-DWITH_TBB=ON -DWITH_CUDA=ON \
-DBUILD_opencv_cudacodec=OFF \
-DENABLE_FAST_MATH=1 \
-DWITH_CUBLAS=1 \
-DWITH_V4L=ON \
-DWITH_OPENGL=ON \
-DWITH_GSTREAMER=ON \
-DOPENCV_GENERATE_PKGCONFIG=ON \
-DOPENCV_ENABLE_NONFREE=ON \
-DBUILD_EXAMPLES=TRUE \
-DBUILD_PERF_TESTS=FALSE \
-DEBUILD_TESTS=FALSE ../../opencv
Run Code Online (Sandbox Code Playgroud)
我有以下问题:
Could NOT find CUDNN (missing: CUDNN_LIBRARY CUDNN_INCLUDE_DIR) (Required is at least version "6")
Run Code Online (Sandbox Code Playgroud)
当然我已经安装了cuda 10.2对应的cudnn7,我安装测试通过了。
有人可以帮忙吗?
我正在尝试使用推力库的 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) 我正在阅读答案并且有冲突的想法:在此链接https://www.3dgep.com/cuda-thread-execution-model/ 中,两个经线(64 个线程)可以在 SM(32 个 CUDA)上同时运行核)。所以,我知道经纱上的线程被拆分并在 16 个 CUDA 核心上进行处理。这个想法对我来说很有意义,因为每个 CUDA 核心都有 1 个 32bitALU。
然而,在其他链接中,他们声称 1 个 CUDA 核心能够处理 32 个并发线程(与扭曲大小相同)(https://cvw.cac.cornell.edu/GPU/simt_warp)。因此,1 个 CUDA 扭曲只能由一个 CUDA 核心处理。这也是有道理的,因为同一经线上的所有线程都使用相同的 PC 计数器。
所以,我的问题是如何将 CUDA 扭曲与 CUDA 核心映射?
到目前为止,我已经编写了在程序中只调用一次内核的程序
所以我有一个内核
__global__ void someKernel(float * d_in ){ //Any parameters
//some operation
}
Run Code Online (Sandbox Code Playgroud)
我基本上是这样做的
main()
{
//create an array in device memory
cudaMalloc(......);
//move host data to that array
cudaMemcpy(......,cudaMemcpyHostToDevice);
//call the kernel
someKernel<< <nblocks,512>> >(.......);
//copy results to host memory
cudaMemcpy(......,cudaMemcpyDeviceToHost);
// Point to notice HERE
}
Run Code Online (Sandbox Code Playgroud)
它工作正常。但是这次我想不仅一次而且多次调用内核 类似
main()
{
//create an array in device memory
cudaMalloc(......);
//move host data to that array
cudaMemcpy(......,cudaMemcpyHostToDevice);
//call the kernel
someKernel<< <nblocks,512>> >(.......);
//copy results to host memory
cudaMemcpy(......,cudaMemcpyDeviceToHost);
// From …Run Code Online (Sandbox Code Playgroud) 我有一个 Numba cuda 内核,可以在 RTX 3090 上启动最多 640 个线程和 64 个块。
如果我尝试使用 641 个线程,则会失败并显示:
Traceback (most recent call last):
File "/home/stark/Work/mmr6/mmr/algos/company_analysis/_analysis_gpu_backup.py", line 905, in <module>
load()
File "/home/stark/Work/mmr6/mmr/algos/company_analysis/_analysis_gpu_backup.py", line 803, in load_markets
run_simulations[algo_configs.BLOCK_COUNT, algo_configs.THREAD_COUNT, stream](
File "/home/stark/anaconda3/envs/mmr-env/lib/python3.9/site-packages/numba/cuda/compiler.py", line 821, in __call__
return self.dispatcher.call(args, self.griddim, self.blockdim,
File "/home/stark/anaconda3/envs/mmr-env/lib/python3.9/site-packages/numba/cuda/compiler.py", line 966, in call
kernel.launch(args, griddim, blockdim, stream, sharedmem)
File "/home/stark/anaconda3/envs/mmr-env/lib/python3.9/site-packages/numba/cuda/compiler.py", line 693, in launch
driver.launch_kernel(cufunc.handle,
File "/home/stark/anaconda3/envs/mmr-env/lib/python3.9/site-packages/numba/cuda/cudadrv/driver.py", line 2094, in launch_kernel
driver.cuLaunchKernel(cufunc_handle,
File "/home/stark/anaconda3/envs/mmr-env/lib/python3.9/site-packages/numba/cuda/cudadrv/driver.py", line 300, in safe_cuda_api_call
self._check_error(fname, retcode)
File "/home/stark/anaconda3/envs/mmr-env/lib/python3.9/site-packages/numba/cuda/cudadrv/driver.py", …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的 Windows 11 计算机上安装支持 CUDA 的 PyTorch,该计算机已安装 CUDA 12 和 python 3.10。当我运行 nvcc --version 时,我得到以下输出:
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Tue_Aug_15_22:09:35_Pacific_Daylight_Time_2023
Cuda compilation tools, release 12.2, V12.2.140
Build cuda_12.2.r12.2/compiler.33191640_0
Run Code Online (Sandbox Code Playgroud)
我想安装具有 CUDA 支持的 PyTorch 版本 2.0.0,因此我尝试运行以下命令:
python -m pip install torch==2.0.0+cu117
Run Code Online (Sandbox Code Playgroud)
但是,我遇到了以下错误:
ERROR: Could not find a version that satisfies the requirement torch==2.0.0+cu117 (from versions: 1.11.0, 1.12.0, 1.12.1, 1.13.0, 1.13.1, 2.0.0, 2.0.1)
ERROR: No matching distribution found for torch==2.0.0+cu117
Run Code Online (Sandbox Code Playgroud)
有没有人有什么建议?
我的数据有2个问题,任何人都可以帮助我:
我怎么能得到这个:
1.
k=[['1','7', 'U1'],
['1.5', '8', 'U1'],
['2', '5.5', 'U1']]
Run Code Online (Sandbox Code Playgroud)
得到这个
1,7,U1
1.5,8,U1
2,5.5,U1
Run Code Online (Sandbox Code Playgroud)
编辑2我在第二种情况下做了一些改变:仍然在寻找这个解决方案:
2.如何从中获得
l=array([[[ 4.24231542], 'U1'],
[[ 3.41424819], 'U1'],
[[ 2.17214734], 'U1'],], dtype=object)
Run Code Online (Sandbox Code Playgroud)
得到
4.24231542,U1
3.41424819,U1
2.17214734,U1
Run Code Online (Sandbox Code Playgroud)
谢谢