fujitsu / dnnl_aarch64

Apache License 2.0
50 stars 12 forks source link

build problem #27

Closed Realtyxxx closed 1 year ago

Realtyxxx commented 1 year ago

Here's the place for your question, suggestion, a feature request or brief description of the problem. If you are submitting a defect report please fill all the sections below. For everything else feel free to remove everything below the line.


Environment

Intel MKL-DNN includes hardware-specific optimizations and may behave differently on depending on the compiler and build environment. Include the following information to help reproduce the issue:

Steps to reproduce

Please check that the issue is reproducible with the latest revision on master. Include all the steps to reproduce the issue. A short C/C++ program or modified unit tests demonstrating the issue will greatly help with the investigation.

Actual behavior

Describe the behavior you see.

Expected behavior

Describe the behavior you expect.

just follow the instructions and find this problem: /home/dev/files/binutils-2.38/bin/ld: ../src/libmkldnn.so.0.21: undefined reference to `mkldnn::impl::cpu::_ref_rnn_common_t<(mkldnn_prop_kind_t)64, (mkldnn_data_type_t)1, (mkldnn_data_type_t)1>::gemm(char, char, int, int, int, float, flo at const, int, float const, int, float, float*, int) const'

kawakami-k commented 1 year ago

This repository is currently not actively maintained, because our developments are merged into https://github.com/oneapi-src/oneDNN If you just want to use oneDNN, please visit https://github.com/oneapi-src/oneDNN

Thank you.

Realtyxxx commented 1 year ago

So merged to which version at the most begin

kawakami-k commented 1 year ago

@Realtyxxx

The first commit may be

Author: Kentaro Kawakami <kawakami.k@fujitsu.com>
Date:   Fri Oct 16 13:50:50 2020 +0900

    benchdnn: conv: avoid winograd implementation limitations check
    Winograd is not supported for AArch64 at the moment.

, which was merged into v2.1.

Our implementation is basically for AArch64 SVE 512 instruction set, which are included in src/cpu/aarch64/jit*. Note that oneDNN does not include Xbyak_translator_aarch64 If you have any questions about Xbyak_translator_aarch64 for oneDNN, please ask in this repository, not https://github.com/oneapi-src/oneDNN

Thank you!

Realtyxxx commented 1 year ago

I'm very sorry for my previous reckless reply!🤝

Your reply has helped a lot, and I have the last question: can it be used and optimized for CPUs with other SVE lengths?

kawakami-k commented 1 year ago

@Realtyxxx

oneDNN provides a suite of operation kernels required for deep learning for x64 (SSE41/AVX/AVX2/AVX512/AMX) CPUs. The types of operation kernels are listed in https://oneapi-src.github.io/oneDNN/group_dnnl_api_primitives.html#details-group-dnnl-api-primitives

At this time, Fujitsu has ported some of them for SVE 512. We have also ported only reorder, binary and eltwise for SVE128/256.

Arm developers have been also participating in developing oneDNN for AArch64. They have been targeting to SVE256, and their implementation is also merged into oneDNN. Because Arm's implementation uses Arm Compute Library, you have to build oneDNN with Arm Compute Library for that case. Here https://github.com/oneapi-src/oneDNN/blob/01e82721b0420b76f4d11361fc5e5320ac720be0/.github/automation/.drone.yml#L32-L34 is a sample build instruction of oneDNN with Arm Compute Library.

Realtyxxx commented 1 year ago

Thank you for your patient reply! really helps me a lot!