GPU集群运行OpenCL矩阵乘法脚本遇权限错误及版本适配问题
问题解决办法
一、修复"bash: ./run_performance.sh: Permission denied"错误
- 给脚本添加可执行权限,执行以下命令:
chmod +x run_performance.sh - 如果执行后仍报错,检查脚本开头的shebang(解释器路径)是否正确:
- 先查看集群上bash的实际路径:
which bash - 将脚本第一行的
#!/bin/bash替换为上一步得到的路径(比如#!/usr/bin/bash)。
- 先查看集群上bash的实际路径:
二、OpenCL版本宏适配调整
NVIDIA TITAN RTX支持OpenCL 3.0,原代码中#define CL_TARGET_OPENCL_VERSION 120是针对OpenCL 1.2的配置,可按以下方式调整:
- 修改源码宏定义:将matmul.c中的版本宏改为OpenCL 3.0对应的数值:
(如果代码中使用了C++ OpenCL绑定,需额外添加#define CL_TARGET_OPENCL_VERSION 300#define CL_HPP_TARGET_OPENCL_VERSION 300) - 编译时覆盖宏定义:若不想修改源码,可在编译命令中通过参数指定版本:
(gcc matmul.c -o matmul -lOpenCL -DCL_TARGET_OPENCL_VERSION=300 -L/usr/local/cuda/lib64-L/usr/local/cuda/lib64是指定NVIDIA OpenCL库的路径,若集群库路径不同需对应调整) - 验证兼容性:OpenCL 3.0向下兼容1.2的API,修改版本宏后无需大幅调整原有代码,若存在1.2特有的废弃API调用,可参考OpenCL 3.0规范替换为等效接口。
内容的提问来源于stack exchange,提问作者심정훈
相关产品推荐
相关产品推荐

