两个命令都可以试试,没影响。

cudnn版本在8.0以前

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

cudnn版本在8.0以前,这个命令会输出。但是8.0版本后就没有输出,需要用下面的命令。

cudnn版本在8.0以后

在8.0版本之后用上面的命令就没有输出了。因为这个头文件内容变了。用下面的命令可以看到

cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

输出

#define CUDNN_MAJOR 8
#define CUDNN_MINOR 0
#define CUDNN_PATCHLEVEL 5
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)

cudnn版本为8.0.5

发现原本命令无法使用,debug过程

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

没有输出,但是并没有提示文件不存在。说明文件在,但grep没有输出。即在文件中没有找到CUDNN_MAJOR这个字符串。
使用cat 单独打开文件看看

#if !defined(CUDNN_H_)
#define CUDNN_H_

#include <cuda_runtime.h>
#include <stdint.h>

#include "cudnn_version.h"
#include "cudnn_ops_infer.h"
#include "cudnn_ops_train.h"
#include "cudnn_adv_infer.h"
#include "cudnn_adv_train.h"
#include "cudnn_cnn_infer.h"
#include "cudnn_cnn_train.h"

#include "cudnn_backend.h"

#if defined(__cplusplus)
extern "C" {
#endif

#if defined(__cplusplus)
}
#endif

#endif /* CUDNN_H_ */

注意到文件中 有 #include “cudnn_version.h”,这应该是cudnn 的version文件。并且应该是同一个文件夹下。去这个文件中查找CUDNN_MAJOR试试。

cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

有版本输出,大胆猜测是cudnn8.0开始做了修改。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐