Intel MKL-DNN 开源项目使用教程

Intel MKL-DNN 开源项目使用教程

oneDNN项目地址:https://gitcode.com/gh_mirrors/mk/mkl-dnn

1. 项目的目录结构及介绍

Intel MKL-DNN 项目的目录结构如下:

mkl-dnn/
├── cmake/
├── contrib/
├── examples/
├── include/
├── LICENSE
├── Makefile
├── README.md
├── scripts/
├── src/
├── test/
└── tools/

目录结构介绍

  • cmake/: 包含用于 CMake 构建系统的配置文件。
  • contrib/: 包含第三方贡献的代码和工具。
  • examples/: 包含使用 Intel MKL-DNN 的示例代码。
  • include/: 包含项目的头文件。
  • LICENSE: 项目的许可证文件。
  • Makefile: 用于构建项目的 Makefile。
  • README.md: 项目的基本介绍和使用说明。
  • scripts/: 包含一些辅助脚本。
  • src/: 包含项目的源代码。
  • test/: 包含项目的测试代码。
  • tools/: 包含一些辅助工具。

2. 项目的启动文件介绍

Intel MKL-DNN 项目的启动文件通常是 examples/ 目录下的示例代码。以下是一个典型的启动文件示例:

// examples/simple_net.cpp

#include "mkldnn.hpp"
#include <iostream>
#include <numeric>

using namespace mkldnn;

void simple_net() {
    // 初始化引擎
    engine cpu_engine(engine::kind::cpu, 0);

    // 创建内存对象
    memory::dims src_dims = {2, 3, 227, 227};
    memory::desc src_md(src_dims, memory::data_type::f32, memory::format_tag::nchw);
    memory src_mem(src_md, cpu_engine);

    // 创建卷积层
    memory::dims weights_dims = {96, 3, 11, 11};
    memory::desc weights_md(weights_dims, memory::data_type::f32, memory::format_tag::oihw);
    memory weights_mem(weights_md, cpu_engine);

    // 创建卷积操作
    convolution_forward::desc conv_desc(prop_kind::forward_training,
                                        algorithm::convolution_direct, src_md, weights_md,
                                        memory::dims{96, 55, 55}, memory::dims{1, 1},
                                        memory::dims{0, 0}, memory::dims{0, 0});
    convolution_forward::primitive_desc conv_pd(conv_desc, cpu_engine);

    // 创建卷积操作的执行对象
    convolution_forward conv(conv_pd);

    // 执行卷积操作
    stream s(cpu_engine);
    conv.execute(s, {{MKLDNN_ARG_SRC, src_mem}, {MKLDNN_ARG_WEIGHTS, weights_mem}});
    s.wait();
}

int main() {
    try {
        simple_net();
    } catch (error &e) {
        std::cerr << "Intel MKL-DNN error: " << e.message << std::endl;
        return 1;
    }
    return 0;
}

启动文件介绍

  • simple_net.cpp: 这是一个简单的神经网络示例,展示了如何使用 Intel MKL-DNN 创建和执行卷积操作。
  • 初始化引擎: 使用 engine 类初始化 CPU 引擎。
  • 创建内存对象: 使用 memory 类创建输入和权重内存对象。
  • 创建卷积层: 使用 convolution_forward::descconvolution_forward::primitive_desc 创建卷积层描述和原语描述。
  • 创建卷积操作的执行对象: 使用 convolution_forward 类创建卷积操作的执行对象。
  • 执行卷积操作: 使用 stream 类执行卷积操作并等待完成。

3. 项目的配置文件介绍

Intel MKL-DNN 项目的配置文件通常是 cmake/ 目录下的 CMake 配置文件。以下是一个典型的配置文件示例:

# cmake

oneDNN项目地址:https://gitcode.com/gh_mirrors/mk/mkl-dnn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水珊习Gale

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值