!呜呼啦呼! 2024-09-06 09:53 采纳率: 81.8%
浏览 8
已结题

错误使用 gpuArray/bsxfun 无法读取文件PTX_sm_30.mat

matlab运行测试用例报错:
错误使用 gpuArray/bsxfun
无法读取文件 C:\MATLAB\R2016b\toolbox\distcomp\gpu+parallel+internal+ptx\PTX_sm_30.mat。
系统环境:matlab2016 + cuda11.6
源代码的两个文件如下:
ctImageReconstruction.m

function [ir1,ir15]=ctImageReconstruction(img)
th1=0:1:179;
r1=radon(img,th1);
ir1=iradon(r1,th1,'hann');
th15=0:15:179;
r15=radon(img,th15);
ir15=iradon(r15,th15,'hann');
end

demo.m

img=phantom(2000);
gd=gpuDevice();
tic;
A=gpuArray(img);
[ir1,ir15]=ctImageReconstruction(A);
wait(gd);
toc;

具体报错如下:

错误使用 gpuArray/bsxfun
无法读取文件 C:\MATLAB\R2016b\toolbox\distcomp\gpu\+parallel\+internal\+ptx\PTX_sm_30.mat。

出错 gpuArray/iradon>filterProjections (line 175)
p = bsxfun(@times, p, H); % faster than for-loop

出错 gpuArray/iradon (line 130)
[p,H] = filterProjections(p, filter, d);

出错 ctImageReconstruction (line 4)
ir1=iradon(r1,th1,'hann');

出错 demo (line 5)
[ir1,ir15]=ctImageReconstruction(A);

在matlab2022+cuda11.6下面运行不报错,想确认一下问题的原因在哪里

  • 写回答

1条回答 默认 最新

  • 独家记忆�� 2024-09-07 17:14
    关注

    在 MATLAB 2016b 中运行带有 GPU 加速的代码时出现错误,可能是由于 MATLAB 版本与 CUDA 版本不兼容导致的。以下是一些可能的原因和解决方法:

    可能原因

    1. CUDA 版本不兼容:MATLAB 2016b 可能不支持 CUDA 11.6。每个 MATLAB 版本通常只支持特定的 CUDA 版本。

    2. PTX 文件缺失或损坏:错误信息指出无法读取 PTX_sm_30.mat,这可能是文件缺失或损坏。

    解决方法

    1. 检查 CUDA 兼容性

      • 查看 MATLAB 2016b 的文档,确认其支持的 CUDA 版本。
      • 如果 CUDA 11.6 不受支持,考虑安装一个兼容的 CUDA 版本(例如 CUDA 8.0)。
    2. 检查 MATLAB 安装完整性

      • 确保 MATLAB 安装没有损坏。可以尝试重新安装或修复 MATLAB。
    3. 更新 MATLAB

      • 如果可能,考虑升级到 MATLAB 2022 或其他较新版本,因为它们更可能支持 CUDA 11.6。
    4. 检查文件路径

      • 确保 C:\MATLAB\R2016b\toolbox\distcomp\gpu\+parallel\+internal\+ptx\PTX_sm_30.mat 文件存在且没有损坏。
    5. 测试其他 GPU 功能

      • 运行其他简单的 GPU 示例,检查是否是全局的 GPU 配置问题。
    6. 联系 MATLAB 支持

      • 如果问题持续存在,可以联系 MathWorks 支持以获取更多帮助。

    通过这些步骤,你应该能够诊断并解决在 MATLAB 2016b 中使用 GPU 的问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月21日
  • 已采纳回答 9月13日
  • 创建了问题 9月6日