是否可以从 CUDA 10.1 内核调用 cuBLAS 或 cuBLASLt 函数?

2024-02-22

关于 CUDA 10.1

我正在对几何网格进行一些计算,并在网格的每个面进行大量独立计算。我运行一个 CUDA 内核来计算每个面。

计算涉及一些矩阵乘法,因此我想使用 cuBLAS 或 cuBLASLt 来加快速度。由于我需要进行许多矩阵乘法(至少每个面几次),我想直接在内核中进行。这可能吗?

cuBLAS 或 cuBLASLt 似乎不允许您从内核(__global__)代码调用它们的函数。我从 Visual Studio 收到以下错误:

“不允许从 __device__ 函数调用 __host__ 函数”

有一些旧答案(CUDA 内核可以调用 cublas 函数吗? https://stackoverflow.com/questions/13371082/could-a-cuda-kernel-call-a-cublas-function)这意味着这是可能的?

基本上,我想要一个像这样的内核:

__global__
void calcPerFace(...)
{
    int index = blockIdx.x * blockDim.x + threadIdx.x;
    int stride = blockDim.x * gridDim.x;

    for (int i = index; i < faceCount; i += stride)
    {
        // Calculate some matrices for each face in the mesh
        ...
        // Multiply those matrices
        cublasLtMatmul(...) // <- not allowed by cuBLASLt
        // Continue calculation
        ...
    }
}

是否可以从 CUDA 10.1 中这样的内核调用 cublasLtMatmul 或 cublassgemm ?


这不可能

从 CUDA 10.0 开始,CUDA 不再支持从设备代码调用 CUBLAS 例程的功能。

A 弃用通知 https://docs.nvidia.com/cuda/archive/9.2/cuda-toolkit-release-notes/index.html#deprecated-features在 CUDA 10.0 之前给出,正式公告位于CUDA 10.0 发行说明 https://docs.nvidia.com/cuda/archive/10.0/cuda-toolkit-release-notes/index.html#deprecated-features:

从 CUDA 10.0 开始,删除了 cuBLAS 库,以支持从设备例程 (cublas_device) 中调用相同 cuBLAS API 的功能。

同样,依赖于此功能的 CUDA 示例代码,例如simpleDevLibCUBLAS从 CUDA 10.0 开始,不再是 CUDA 工具包发行版的一部分。

这仅适用于 CUBLAS,并不意味着 CUDA 动态并行性的一般功能已被删除。

我将无法回答“为什么?”的问题。或者是“为什么?”的变体我将无法回答有关未来事件或主题的问题。没有任何技术原因导致此功能无法使用或不受支持。变化的原因与发展和资源优先级有关。我无法比这更深入了。如果您希望看到 CUDA 行为的变化,无论是功能、性能还是文档方面的变化,我们鼓励您通过在以下地址提交错误来表达您的愿望:http://developer.nvidia.com http://developer.nvidia.com。具体的错误提交说明已链接here https://devtalk.nvidia.com/default/topic/1044668/cuda-programming-and-performance/-how-to-report-a-bug/.

对于执行一些准备工作,然后调用 CUBLAS,然后执行一些其他工作的 CUDA 设备代码,一般建议是将其分解为执行准备工作的内核,然后从主机启动所需的 CUBLAS 例程,然后执行后续内核中的剩余工作。这并不意味着数据必须在设备和主机之间来回移动。当执行多个 CUBLAS 调用(例如每个设备线程)时,研究可用的各种 CUBLAS 批处理功能可能会有所帮助。不可能给出一个单一的方法来重构每种类型的代码。这些建议可能无法解决所有情况。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以从 CUDA 10.1 内核调用 cuBLAS 或 cuBLASLt 函数? 的相关文章

  • 检测到 NuGet 包的版本冲突

    我正在开发 ASP Net core 2 1 Web 应用程序项目 我的解决方案中有 1 个项目和 3 个其他库 它是高级架构 数据访问层 DAL 业务层 BL 公共层 CL 所以我需要添加引用来连接一些库和项目 我已经添加了CL参考我的项
  • GCC C++ (ARM) 和指向结构体字段的 const 指针

    假设有一个简单的测试代码 typedef struct int first int second int third type t define ADDRESS 0x12345678 define REGISTER type t ADDRE
  • Tensorflow 中的自定义资源

    由于某些原因 我需要为 Tensorflow 实现自定义资源 我试图从查找表实现中获得灵感 如果我理解得好的话 我需要实现3个TF操作 创建我的资源 资源的初始化 例如 在查找表的情况下填充哈希表 执行查找 查找 查询步骤 为了促进实施 我
  • 如何进行带有偏差的浮点舍入(始终向上或向下舍入)?

    我想以偏置舍入浮动 要么总是向下 要么总是向上 代码中有一个特定的点 我需要这个 程序的其余部分应该像往常一样四舍五入到最接近的值 例如 我想四舍五入到最接近的 1 10 倍数 最接近 7 10 的浮点数约为 0 69999998807 但
  • Linux TUN/TAP:无法从 TAP 设备读回数据

    问题是关于如何正确配置想要使用 Tun Tap 模块的 Linux 主机 My Goal 利用现有的路由软件 以下为APP1和APP2 但拦截并修改其发送和接收的所有消息 由Mediator完成 我的场景 Ubuntu 10 04 Mach
  • std::map 和二叉搜索树

    我读过 std map 是使用二叉搜索树数据结构实现的 BST 是一种顺序数据结构 类似于数组中的元素 它将元素存储在 BST 节点中并按其顺序维护元素 例如如果元素小于节点 则将其存储在节点的左侧 如果元素大于节点 则将其存储在节点的右侧
  • C++11 函数局部静态 const 对象的线程安全初始化

    这个问题已在 C 98 上下文中提出 并在该上下文中得到回答 但没有明确说明有关 C 11 的内容 const some type create const thingy lock my lock some mutex static con
  • 在 C# 中将位从 ulong 复制到 long

    所以看来 NET 性能计数器类型 http msdn microsoft com en us library system diagnostics performancecounter aspx有一个恼人的问题 它暴露了long对于计数器
  • 是否有与 C++11 emplace/emplace_back 函数类似的 C# 函数?

    从 C 11 开始 可以写类似的东西 include
  • 为什么 std::allocator 在 C++17 中丢失成员类型/函数?

    一边看着std 分配器 http en cppreference com w cpp memory allocator 我看到成员 value type pointer const pointer reference const refer
  • 单元测试失败,异常代码为 c0000005

    我正在尝试使用本机单元测试项目在 Visual Studios 2012 中创建单元测试 这是我的测试 TEST METHOD CalculationsRoundTests int result Calculations Round 1 0
  • 用于从字符串安全转换的辅助函数

    回到 VB6 我编写了一些函数 让我在编码时无需关心字符串的 null 和 数字的 null 和 0 等之间的区别 编码时 没有什么比添加特殊情况更能降低我的工作效率了用于处理可能导致一些不相关错误的数据的代码 9999 10000 如果我
  • std::bind 重载解析

    下面的代码工作正常 include
  • 在 C 中复制两个相邻字节的最快方法是什么?

    好吧 让我们从最明显的解决方案开始 memcpy Ptr const char a b 2 调用库函数的开销相当大 编译器有时不会优化它 我不会依赖编译器优化 但即使 GCC 很聪明 如果我将程序移植到带有垃圾编译器的更奇特的平台上 我也不
  • 从匿名类型获取值

    我有一个方法如下 public void MyMethod object obj implement 我这样称呼它 MyMethod new myparam waoww 那么我该如何实施MyMethod 获取 myparam 值 Edit
  • C# 搜索目录中包含字符串的所有文件,然后返回该字符串

    使用用户在文本框中输入的内容 我想搜索目录中的哪个文件包含该文本 然后我想解析出信息 但我似乎找不到该字符串或至少返回信息 任何帮助将不胜感激 我当前的代码 private void btnSearchSerial Click object
  • gdb查找行号的内存地址

    假设我已将 gdb 附加到一个进程 并且在其内存布局中有一个文件和行号 我想要其内存地址 如何获取文件x中第n行的内存地址 这是在 Linux x86 上 gdb info line test c 56 Line 56 of test c
  • 以编程方式使用自定义元素创建网格

    我正在尝试以编程方式创建一个网格 并将自定义控件作为子项附加到网格中 作为 2x2 矩阵中的第 0 行第 0 列 为了让事情变得更棘手 我使用了 MVVM 设计模式 下面是一些代码可以帮助大家理解这个想法 应用程序 xaml cs base
  • boost::program_options:带有固定和可变标记的参数?

    是否可以在 boost program options 中使用此类参数 program p1 123 p2 234 p3 345 p12 678 即 是否可以使用第一个标记指定参数名称 例如 p 后跟一个数字 是动态的吗 我想避免这种情况
  • 从类模板参数为 asm 生成唯一的字符串文字

    我有一个非常特殊的情况 我需要为类模板中声明的变量生成唯一的汇编程序名称 我需要该名称对于类模板的每个实例都是唯一的 并且我需要将其传递给asm关键字 see here https gcc gnu org onlinedocs gcc 12

随机推荐

  • 移至 Web API RC,获取:找不到方法:'System.Web.Http.Services.DependencyResolver System.Web.Http.HttpConfiguration.get_ServiceResolver()'

    我将网站从 WebAPI Beta 移至 WebAPI RC 现在加载网站时出现错误 Method not found System Web Http Services DependencyResolver System Web Http
  • 如何在Java中获取HashMap的前10个键值

    我有这样的哈希图 apple 20 nanas 18 anggur 12 我的哈希图已经按值降序排序 我想从第一个元素哈希图中获取 10 个元素 谁能帮我 如果你使用 java 8 我会选择 List
  • 防止多个 Ionic 警报叠加

    如何检测离子 2警报 UI 组件 http ionicframework com docs v2 components alert实例已经打开 以免出现另一个警报 我最终为 Ionic Alertcontroller 编写了一个包装提供程序
  • XLSX 文件是否按定义采用 UTF-8 编码?

    我正在尝试使用 PHP 读取 XLSX 文件 使用gneustaetter XLSXReader https github com gneustaetter XLSXReader准确地说 但是 这些 XLSX 文件是由不同的公司使用不同的软
  • 为 Facebook 页面生成“永不过期”访问令牌

    我已成功通过 API C 发布到 Facebook 页面 但是当页面管理员注销时 出现以下错误 OAuthException 190 验证访问令牌时出错 会话无效 因为用户注销 如何生成永不过期的访问令牌 我需要一个不会打开 Faceboo
  • Kafka 在生产者 vs 主题上设置压缩类型

    在kafka中启用压缩的以下方式有什么区别 方法一 使用命令创建主题 bin kafka topics sh create zookeeper localhost 2181 config compression type gzip topi
  • Importxml 导入内容为空

    当我在谷歌电子表格中使用下面的公式时 我遇到错误消息导入的内容为空 IMPORTXML https www moh gov sg content moh web home pressRoom html div class article h
  • nginx 位置索引指令不起作用

    我是 nginx 的新手 我无法确定为什么我的 nginx 配置不能按预期工作 我想做的就是让 nginx 对于每个 Web 根 请求优先考虑 index html 而不是 index php 这是我的 nginx 配置 user www
  • 使用 R 重现 SPSS 因子分析

    我希望有人能指出我正确的方向 首先 我不是统计学家 我是一名软件开发人员 其任务是尝试使用 R 重现 SPSS 因子分析的结果 使用 PC 提取和最大方差旋转 我在过去一周才接触过 R 所以我试图找到我的方式 我确实发现 2010 年的这篇
  • 存在哪些基于 IP 进行人员地理定位的服务? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 人们使用什么来对一个人的 IP 进行地理定位以确定他们所在的城市 我已经尝试过 Google API 的
  • Hadley高级R书中的非标准评估

    在哈德利的高级R书籍 http adv r had co nz Computing on the language html 有一段代码我无法理解输出 f lt function x substitute x g lt function x
  • 是否可以按值删除队列元素?

    我想从队列中删除具有特定值的元素 这样的事该怎么办呢 我正在尝试创建映射和队列的并发混合 目前我尝试在这个答案 https stackoverflow com questions 7704526 is thare in stl or boo
  • Eclipse PyDev 完成挂起(再次)

    我在 Eclipse 中使用 PyDev 作为我的 Python 编辑器 就功能集而言 它很好 除了一件非常烦人的事情之外 一切都工作正常 代码完成本身运行速度很快 当我按 Alt Space 时 窗口几乎立即弹出 所有选项都在那里 顶部的
  • PHP DOM文档错误处理

    在我的应用程序中 我从 url 加载 xml 以便解析它 但有时该网址可能无效 在这种情况下我需要处理错误 我有以下代码 xdoc new DOMDocument try xdoc gt load url This line causes
  • 无法让 QueryDsl / APT 生成 Q 类

    我正在尝试在新的 Spring 项目中使用 QueryDsl 我对 QueryDsl 很陌生 对 Maven 和 Spring 也很陌生 所以我可能会缺少一些相当基本的东西 但我无法让 QueryDsl maven apt plugin 来
  • boost是否支持c++11的std::tuple的序列化?

    boost是否支持c 11的std tuple的序列化 我在 boost serialization 找不到 tuple hpp 头文件 我正在使用 boost 1 52 0 如果需要的话很乐意升级 但似乎1 53版本的变化 http ww
  • Silex - Twig_Error_Syntax:函数“路径”不存在

    根据Silex 文档 http silex sensiolabs org doc providers twig html symfony2 components integration Symfony 提供了一个 Twig 桥 它在一些 S
  • React-native run-android 卡在 99% appDebug

    I have previously shut down the react native run android still it gets stuck at 99 executing I don t seem to find any so
  • Gulp src 返回空文件

    我正在尝试为 sass js 编译创建 Gulp 任务 并且我还包含了用于实时重新加载的代码 它工作得很好 只是有时 gulp src 在我编辑它们时会将空文件扔到管道中 var gulp require gulp var sass req
  • 是否可以从 CUDA 10.1 内核调用 cuBLAS 或 cuBLASLt 函数?

    关于 CUDA 10 1 我正在对几何网格进行一些计算 并在网格的每个面进行大量独立计算 我运行一个 CUDA 内核来计算每个面 计算涉及一些矩阵乘法 因此我想使用 cuBLAS 或 cuBLASLt 来加快速度 由于我需要进行许多矩阵乘法