You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ArrayFire C++稀疏矩阵乘法触发访问违例问题求助

ArrayFire稀疏矩阵乘法触发af.dll访问违例(错误码0xC0000005)

问题描述

使用ArrayFire处理稀疏矩阵时,af.dll内部触发访问违例(错误码0xC0000005),该问题在CUDA和CPU后端均可复现。执行稀疏矩阵与自身相乘,或与非稀疏矩阵相乘时均会失败。

测试代码

af::info();
af_print(af::randu(5, 4));

float v[]   = {5, 8, 3, 6};
int r[]     = {0, 0, 2, 3, 4};
int c[]     = {0, 1, 2, 1};
const int M = 4, N = 4, nnz = 4;
af::array vals    = af::array(af::dim4(nnz), v);
af::array row_ptr = af::array(af::dim4(M + 1), r);
af::array col_idx = af::array(af::dim4(nnz), c);
 
af_print(vals);
af_print(row_ptr);
af_print(col_idx);

// Create sparse array (CSR) from af::arrays containing values,
// row pointers, and column indices.
auto sparseM = af::sparse(M, N, vals, row_ptr, col_idx, AF_STORAGE_CSR);
af_print(sparseM);

auto res = sparseM * sparseM;
af_print(res);

环境配置

  • 操作系统:Windows 11
  • 编译工具链:Visual Studio Build tool 2022 + VSCode CMake
  • 硬件设备:NVIDIA GTX 1050 Ti 及 Intel UHD Graphics 630 双GPU
  • ArrayFire版本:v3.8.3

报错详情

代码执行到auto res = sparseM * sparseM;时触发访问违例,调试调用栈指向af.dll中的乘法运算符实现。

已尝试方案

  • 切换CUDA、GPU、OpenCL后端,问题未解决
  • 更换稀疏矩阵存储格式,报错时机有差异,但核心问题依旧存在

内容的提问来源于stack exchange,提问作者Daniel Rohrbach

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 23:52:41