当前位置: 首页 > news >正文

临沂网站推广大安市建设局网站

临沂网站推广,大安市建设局网站,wordpress ssl部署,芒市网站建设公司文章目录 前言一、搭建环境二、简单介绍三、 具体例子四、疑问 前言 CUBLAS库是NVIDIA CUDA用于线性代数计算的库。使用CUBLAS库的原因是我不想去直接写核函数。 #xff08;当然#xff0c;你还是得学习核函数该怎么写。但是人家写好的肯定比我自己写的更准确#xff01;当然你还是得学习核函数该怎么写。但是人家写好的肯定比我自己写的更准确 一、搭建环境 安装CUDA库具体可以看我上一篇文章在C项目中集成CUDA程序加速从环境配置讲起如果你是装在默认路径下那么 CUBLAS库的头文件就在C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.0\include 路径下面以cublas开头的.h文件。所以还是按照步骤1的文章进行环境配置然后只需要多在添加依赖项中增加一个cublas.lib就可以了。 二、简单介绍 CUBLAS Introdution 是官方文档。全英文的还有不少数学公式。大家有不理解的可以直接留言区问相关API我们一起讨论学习。CUBLAS Samples 是官方示例所有API都有。对于API名称都是cublaslt...其中有下述类型选择 CUBLAS库的矩阵是列向量的跟glm一致。CUBLAS对于矩阵或者向量的index是从1开始的。所以如果有函数的返回结果是个index比如查找矩阵中的最大值记得要index - 1才是我们要的。 三、 具体例子 下面我以矩阵与向量相乘的函数进行举例看看是怎么用的。 首先通过查找官方文档知道是如下的函数 cublasStatus_t cublasDgemv(cublasHandle_t handle, cublasOperation_t trans,int m, int n,const double *alpha,const double *A, int lda,const double *x, int incx,const double *beta,double *y, int incy) /* * handle : CUBLAS的句柄用以管理CUBLAS库的上下文和资源 * CUBLAS_OP_N : 指定矩阵操作模式。CUBLAS_OP_N代表正常模式列向量CUBLAS_OP_T代表转置模式行向量 * m : 矩阵A的行数 * n : 矩阵A的列数 * alpha : 与矩阵A相乘的标量 * A : 指向存储在device上面的矩阵数据指针 * lda : 矩阵的列数代表矩阵在内存中的存储方式 * x : 向量X * incx : 向量x中相邻两个元素的index间隔一般为1 * beta : 与向量y相乘的标量 * y : 向量y * incy : 向量y中相邻两个元素的index间隔一般为1 */具体计算公式如下 如果我们只是想计算矩阵和向量相乘那么我们只需要令 α 1.0, β 0.0然后传入我们要的A和x就行了。最后具体代码如下 /// MyCublas.cuh#pragma once#include cuda_runtime.h #include device_launch_parameters.h #include cublas_v2.hextern C void MatrixMulVectorCublas(const double* matrix, const int row, const int col, const double* vector, double* result );/// MyCublas.cu#include MyCublas.cuh #include CublasUtility.hvoid MatrixMulVectorCublas(const double* matrix, const int row, const int col,const double* vector, double* result) {// 1. 初始化句柄cublasHandle_t handle;CUBLAS_CHECK(cublasCreate(handle));// 2. 分配内存double* dev_matrix NULL;double* dev_vector NULL;CUDA_CHECK(cudaMalloc((void**)dev_matrix, sizeof(double) * row * col));CUDA_CHECK(cudaMalloc((void**)dev_vector, sizeof(double) * row));CUDA_CHECK(cudaMemcpy(dev_matrix, matrix, sizeof(double) * row * col, cudaMemcpyHostToDevice));CUDA_CHECK(cudaMemcpy(dev_vector, vector, sizeof(double) * row, cudaMemcpyHostToDevice));// 3. 执行矩阵乘法double* dev_result NULL;CUDA_CHECK(cudaMalloc((void**)dev_result, sizeof(double) * col));CUDA_CHECK(cudaMemset(dev_result, 0, sizeof(double) * col));const double alpha 1.0;const double beta 0.0;CUBLAS_CHECK(cublasDgemv(handle, CUBLAS_OP_N, row, col, alpha, dev_matrix, col, dev_vector, 1, beta, dev_result, 1));CUDA_CHECK(cudaMemcpy(result, dev_result, sizeof(double) * col, cudaMemcpyDeviceToHost));// 4. 释放内存CUDA_CHECK(cudaFree(dev_matrix));CUDA_CHECK(cudaFree(dev_vector));CUDA_CHECK(cudaFree(dev_result));CUBLAS_CHECK(cublasDestroy(handle));}/// CublasUtility.h#pragma once #include string #include stdexcept // CUDA API error checking #define CUDA_CHECK(err) \do { \cudaError_t err_ (err); \if (err_ ! cudaSuccess) { \std::printf(CUDA error %d at %s:%d\n, err_, __FILE__, __LINE__); \throw std::runtime_error(CUDA error); \} \} while (0)// cublas API error checking #define CUBLAS_CHECK(err) \do { \cublasStatus_t err_ (err); \if (err_ ! CUBLAS_STATUS_SUCCESS) { \std::printf(cublas error %d at %s:%d\n, err_, __FILE__, __LINE__); \throw std::runtime_error(cublas error); \} \} while (0) /// main.cpp#include MyCublas.cuh#include iostreamint main() {double matrix[12] { 1.0, 2.0, 3.0, 4.0,5.0, 6.0, 7.0, 8.0,9.0, 10.0, 11.0, 12.0};double vector[4] { 1.0, 2.0, 3.0};double result[4] { 0.0 };MatrixMulVectorCublas(matrix, 3, 4, vector, result);for (int i 0; i 4; i){std::cout result[i] , ;}return 0; }四、疑问 对于上述代码我还有以下的疑问 我在运行下面这句的时候VS显示我的进程内存会到2.2GB左右难道真的需要这么大吗 CUBLAS_CHECK(cublasCreate(handle));上述代码运行的结果是38, 44, 50, 0。但是实际结果应该是38, 44, 50, 56。查了很久还是没差出来为什么。希望有细心的小伙伴帮我检查一下
http://www.zqtcl.cn/news/597676/

相关文章:

  • 中山网页网站设计模板access 数据库做网站
  • 阿里云网站做网站的服务器用什么系统
  • 什么公司做网站最好怎么给网站做快照
  • 官方网站建设的方法有哪些方面邮箱号码大全
  • 电商app软件山东网络推广优化排名
  • 国内产品网站w源码1688网站关键词描述字数
  • 网站404 模板wordpress 文字插件下载
  • 河南民基建设工程有限公司网站齐齐哈尔建设局网站首页
  • 响应式网站建设推荐乐云践新三丰云免费云服务器
  • 长沙网站建设模板uc浏览器访问网站
  • 擼擼擼做最好的导航网站陕西政务服务网注册公司流程
  • 怎样做商城网站的推广wordpress用php哪个版本好
  • 网站功能模块建设建设网站考证
  • 网站代码结构成都住建局官网报名入口
  • 吴桥县网站建设房产门户网站模板
  • 标签化网站网络服务类型及其所采用的网络协议
  • 做网站服务器应该怎么配置网页美工设计实践性教案
  • 响应式网站导航栏内容泰安网站营销推广
  • 南通营销网站开发软件开发工具名词解释
  • 吉林企业网站模板建站哪个好wordpress后台新建慢
  • 整合营销的成功案例肇庆seo优化
  • 网站关键字标签合肥高端网站建设设计公司哪家好
  • 大型企业网站设计案例免费在线看片
  • 云南网站开发公司找哪家网站弹出式链接后台怎么做
  • 电商网站的支付模块怎么做企业网站建设招标文件
  • 旅游在线网站开发十八个免费的舆情网站
  • 网站怎么申请百度小程序火车头采集发布wordpress
  • 外贸网站的推广技巧有哪些莱芜网吧
  • 溧阳城乡建设局网站ps中网站页面做多大的
  • sns社交网站 有哪些wordpress开发分类筛选