-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Questions about __ARM_ARCH #16
Comments
Hi chauncyyoung Regarding the first question: Regarding the second question: |
Thank you for your reply. I just tried to ignore the case of ref_gemm by adding "//" before it just like follows: #ifdef __ARM_ARCH
#endif // #ifdef __ARM_ARCH And then the errors happened when built. Other source codes hadn't been modified. So I don't know whether I should modify the cmake files. |
Hi chauncyyoung-san Thank you for trying dnnl_aarch64. I tried your procedure.
All binary are successfully built in my environment,
|
Currently, dnnl_aarch64 is assumed to be run on an Armv8-A+SVE instruction set CPU. If you don't have such envrionment, you can use QEMU to emulate Armv8-A+SVE instructions. |
Thank you for your reply, I think it may be influenced by version of dnnl_aarch64. I used the branch of release_base_0.19. I'll try the latest version with QEMU later. |
I'm also not sure about xbyak whether it translates x86 assembler to aarch64 assembler? Another question occurs in gemm.cpp as follows: #ifdef __ARM_ARCH
#endif // #ifdef __ARM_ARCH As ref_gemm is before jit_avx512_common_gemm_f32, does ref_gemm has a higher priority? Or in another words, does ref_gemm has a better performance than jit_avx512_common_gemm_f32? |
chauncyyoung-san "release_base_0.19" does not output any JIT-ed code except jit_uni_reorder.cpp so that ref_gemm is always used for AArch64. Please use "release_base_0.21" to try various JIT-ed code on AArch64. This version generates some JIT-ed code directly by using Xbyak_aarch64. It is implemented src/cpu/jit_sve_*.cpp. And this version also outputs some JIT-ed code indirectly by using Xbyak_translator_aarch64, which translates x86 JIT-ed instructions to AArch64 instructions one by one. If you want to try JIT-ed gemm, replace
of
Currently, "release_base_0.21" has some bugs in JIT-ed gemm, it is disabled by default. |
I have two questions below:
First, when I used the extended_sgemm, I found it went into __ARM_ARCH acquiescently. But I can not find the place that it was defined. Could you help me solve this problem?
Second, I tried to use jit_avx512_common_gemm_f32 but was failed because of a undefined references ocuured in libmkldnn. Should I adjust other parameters to run it?
echo MKLROOT=$MKLROOT
)#ifdef __ARM_ARCH
// return ref_gemm(transa, transb, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc, bias);
//else // #ifdef __ARM_ARCH
if (mayiuse(avx512_mic)) {
printf("enter 1\n");
return jit_avx512_common_gemm_f32(transa, transb,
M, N, K, alpha, A, lda, B, ldb, beta, C, ldc, bias);
} else if (mayiuse(avx)) {
printf("enter 2\n");
float *dummy_ao = NULL;
float *dummy_bo = NULL;
#endif // #ifdef __ARM_ARCH
The text was updated successfully, but these errors were encountered: