我正在尝试在我的 Django Rest 框架项目中导入和使用 ultralytics 库,我使用诗歌作为我的依赖项管理器,我使用安装了 ultralytics,poetry add ultralytics
并在尝试在我的代码中导入该库时收到此错误
ValueError: libcublas.so.*[0-9] not found in the system path [my project and virtual environment paths]
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
对于矩阵A
,文档仅声明相应的前导维度参数lda
引用:
用于存储矩阵A的二维阵列的前导维度
因此,我认为这只是A
给定CUBLAS列主要存储格式的行数.但是,当我们考虑时Op(A)
,领导维度现在指的是什么?
我正在使用一个简单的MINST神经网络程序在Windows 10上运行tensorflow-gpu.当它试图运行时,它遇到CUBLAS_STATUS_ALLOC_FAILED
错误.谷歌搜索没有发现任何东西.
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runtime\gpu\gpu_device.cc:885] Found device 0 with properties:
name: GeForce GTX 970
major: 5 minor: 2 memoryClockRate (GHz) 1.253
pciBusID 0000:0f:00.0
Total memory: 4.00GiB
Free memory: 3.31GiB
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runtime\gpu\gpu_device.cc:906] DMA: 0
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runtime\gpu\gpu_device.cc:916] 0: Y
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runtime\gpu\gpu_device.cc:975] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 970, pci bus id: 0000:0f:00.0)
E c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_blas.cc:372] failed to create cublas handle: CUBLAS_STATUS_ALLOC_FAILED
W c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\stream.cc:1390] attempting to perform BLAS operation using StreamExecutor without BLAS support
Traceback (most recent call last): …
Run Code Online (Sandbox Code Playgroud) 我正试图在Anaconda的Numba软件包中使用cuBLAS功能并遇到问题.我需要输入矩阵为C顺序.输出可以是Fortran顺序.
我可以在这里运行随包提供的示例脚本.该脚本有两个功能,gemm_v1
和gemm_v2
.在gemm_v1
,用户必须以Fortran顺序创建输入矩阵.在gemm_v2
,它们可以传递给GEMM的cuda实现并转换到设备上.我可以使用这些示例来处理方形矩阵.但是,我无法弄清楚如何gemm_v2
使用非方形输入矩阵.有没有办法使用非正方形的C阶输入矩阵?
注意:
理想情况下,在调用GEMM以用于其他计算之后,输入和输出矩阵都将保留在设备上(这是迭代方法的一部分).
我知道这听起来很奇怪,但这是我的情景:
我需要进行矩阵 - 矩阵乘法(A(n*k)*B(k*n)),但我只需要对输出矩阵求对角元素.我搜索了cublas库,并没有找到任何能够做到这一点的2级或3级功能.所以,我决定将A的每一行和B的每一列分配到CUDA线程中.对于每个线程(idx),我需要计算点积"A [idx,:]*B [:,idx]"并将其保存为相应的对角线输出.现在因为这个点产品也需要一些时间,我想知道我是否可以在某种程度上调用cublas函数(比如cublasSdot)来实现它.
如果我错过了一些可以直接实现我的目标的cublas函数(只计算矩阵 - 矩阵乘法的对角元素),这个问题可能会被丢弃.
我正在用一些新的基准测试结果更新我的问题(我还重新提出了更具体的问题并更新了代码)...
我使用共享内存遵循CUDA C编程指南,在CUDA C中实现了用于矩阵向量乘法的内核.让我首先介绍一些我在Jetson TK1(GPU:Tegra K1,计算能力3.2)上做的基准测试结果以及与cuBLAS的比较:
在这里,我猜cuBLAS做了一些魔术,因为它的执行似乎不受列数的影响A
,这反过来暗示了沿着列的某种并行化A
.
现在,这是我的内核的源代码和一个调用它的主机函数(文件:mv.cuh):
#include <cuda_runtime.h>
#define BLOCK_SIZE 16
/* Set to __restric__ */
#define RESTRICT
/**
* Performs matrix-vector multiplication on the device.
*
* @param dA Address of matrix `A` on the device
* @param dx Address of vector `x` on the device
* @param dev_ptr_y Address of result y = A*x
* @param nRows Number of rows of `A`
* @param nx Size of `x` (number of …
Run Code Online (Sandbox Code Playgroud) 我正在为CUBLAS寻找一个非常简单的骨骼矩阵乘法示例,它可以将M乘以N并将结果放在P中,用于以下代码,使用高性能GPU操作:
float M[500][500], N[500][500], P[500][500];
for(int i = 0; i < Width; i++){
for(int j = 0; j < Width; j++)
{
M[i][j] = 500;
N[i][j] = 500;
P[i][j] = 0;
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我发现使用CUBLAS进行任何类型的矩阵乘法的大多数代码(看似?)过于复杂.
我正在尝试设计一个基础实验室,学生可以在其中比较GPU上的矩阵乘法与CPU上的矩阵乘法的性能,可能是GPU上的性能提升.
我正在做一些计算,并对不同BLAS实现的力量和弱点进行一些分析.但是我遇到了一个问题.
我正在测试cuBlas,在GPU上做linAlg似乎是个好主意,但是有一个问题.
使用列主格式的cuBlas实现,因为这不是我最终需要的,我很好奇是否有一种方法可以让BLAS做矩阵转置?
我正在尝试使用 cublasSgemm 来乘以两个以行主序存储的非方阵。我知道这个函数有一个参数,您可以在其中指定是否要转置矩阵(CUBLAS_OP_T),但结果以列优先顺序存储,我也需要以行优先顺序存储。
另外,我的代码无法将非方阵与参数 CUBLAS_OP_T 相乘。仅具有 CUBLAS_OP_N 的方形或非方形。
此外,我知道可以选择按列顺序声明矩阵
define IDX2C(i,j,ld) (((j)*(ld))+(i))
Run Code Online (Sandbox Code Playgroud)
但这不是一个选项,因为我必须使用的矩阵将在其他程序中设置。
我想互联网上有很多信息,但我无法找到我的问题的任何答案。
我的代码如下:
int m = 2;
int k = 3;
int n = 4;
int print = 1;
cudaError_t cudaStat; // cudaMalloc status
cublasStatus_t stat; // CUBLAS functions status
cublasHandle_t handle; // CUBLAS context
int i,j;
float *a, *b,*c;
//malloc for a,b,c...
// define a mxk matrix a row by row
int ind =11;
for(j=0;j<m*k;j++){
a[j]=(float)ind++;
}
// define a kxn matrix b column by column
ind …
Run Code Online (Sandbox Code Playgroud)