Skip to content

'amax.S' causing problems in building OpenBLAS-0.2.13 for ARM #523

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

Closed
ShehabElsayed opened this issue Mar 23, 2015 · 24 comments
Closed

'amax.S' causing problems in building OpenBLAS-0.2.13 for ARM #523

ShehabElsayed opened this issue Mar 23, 2015 · 24 comments

Comments

@ShehabElsayed
Copy link

Hi everyone,

I have been trying to build OpenBLAS-0.2.13 for ARM using this command "make BINARY=64 TARGET=ARMV7 USE_THREAD=1", but the building stops with this error:

make[1]: *** No rule to make target ../kernel/arm64/amax.S', needed bysamax_k.o'. Stop.

Any ideas how to fix this problem ??

Thank you very much in advance.

@xianyi
Copy link
Collaborator

xianyi commented Mar 23, 2015

The ARMV7 is 32-bit. Please try make BINARY=32 TARGET=ARMV7 USE_THREAD=1

@ShehabElsayed
Copy link
Author

Thank you very much for your reply. So what if I needed to build 64-bit versions of OpenBLAS for ARM. ARMV8 is not mentioned in the TargetList. Is it supported? If yes, which TARGET would be the correct one to choose?

@xianyi
Copy link
Collaborator

xianyi commented Mar 23, 2015

We support ARMV8 by APM's patch. However, I didn't test it since lacking the ARMV8 hardware.

make TARGET=ARMV8 BINARY=64

@ShehabElsayed
Copy link
Author

Thank you very much for the prompt reply. I will give it a try

@wernsaar
Copy link
Contributor

Hi,

make TARGET=ARMV7 USE_THREAD=1

ARMV7 is a 32-bit processor

Werner

On 03/23/2015 06:21 PM, ShehabElsayed wrote:

Hi everyone,

I have been trying to build OpenBLAS-0.2.13 for ARM using this command
"make BINARY=64 TARGET=ARMV7 USE_THREAD=1", but the building stops
with this error:

make[1]: *** No rule to make target |../kernel/arm64/amax.S', needed
by|samax_k.o'. Stop.

Any ideas how to fix this problem ??

Thank you very much in advance.


Reply to this email directly or view it on GitHub
#523.

@ShehabElsayed
Copy link
Author

I am afraid the problem still exists even when I use "make TARGET=ARMV7 BINARY=32 USE_THREAD=1" for building

@xianyi
Copy link
Collaborator

xianyi commented Mar 24, 2015

@ShehabElsayed what's the output?

@ShehabElsayed
Copy link
Author

The build stops with the same error as before:
"make[1]: *** No rule to make target ../kernel/arm64/amax.S', needed bysamax_k.o'. Stop."
which is strange as I specify BINARY=32 and it still goes to arm64 !!!!!

@xianyi
Copy link
Collaborator

xianyi commented Mar 24, 2015

Please try the following.

  1. make clean
  2. make TARGET=ARMV7 USE_THREAD=1

@ShehabElsayed
Copy link
Author

This is what I did, every time I "make clean" before changing the make options. I just added the "BINARY=32" option to make sure that it is building the 32 version not the 64 one.

I am not sure if this piece of information makes any difference or not but I am trying to do the build on an image of ubuntu-trusty 64-bit for ARM mounted through the qemu emulator.

@xianyi
Copy link
Collaborator

xianyi commented Mar 24, 2015

@ShehabElsayed , please don't add "BINARY=32".

@ShehabElsayed
Copy link
Author

Ok, I am doing so right now and will update the thread when it is done. Thank you very much for your help.

@ShehabElsayed
Copy link
Author

It still gives the exact same error "make[1]: *** No rule to make target ../kernel/arm64/amax.S', needed bysamax_k.o'. Stop."

@xianyi
Copy link
Collaborator

xianyi commented Mar 24, 2015

Please provide config.h and Makefile.conf

@ShehabElsayed
Copy link
Author

This is config.h:

#define OS_LINUX 1
#define ARCH_ARM64 1
#define C_GCC 1
#define 64BIT 1
#define PTHREAD_CREATE_FUNC pthread_create
#define BUNDERSCORE _
#define NEEDBUNDERSCORE 1
#define ARMV7
#define L1_DATA_SIZE 65536
#define L1_DATA_LINESIZE 32
#define L2_SIZE 512488
#define L2_LINESIZE 32
#define DTB_DEFAULT_ENTRIES 64
#define DTB_SIZE 4096
#define L2_ASSOCIATIVE 4
#define HAVE_VFPV3
#define HAVE_VFP
#define CORE_ARMV7

#define CHAR_CORENAME "ARMV7"
#define SLOCAL_BUFFER_SIZE 15360
#define DLOCAL_BUFFER_SIZE 7680
#define CLOCAL_BUFFER_SIZE 7680
#define ZLOCAL_BUFFER_SIZE 7680
#define GEMM_MULTITHREAD_THRESHOLD 4


and this is Makefile.conf

OSNAME=Linux
ARCH=arm64
C_COMPILER=GCC
BINARY32=
BINARY64=1
CROSS=1
CEXTRALIB=-L/usr/lib/gcc/aarch64-linux-gnu/4.8 -L/usr/lib/gcc/aarch64-linux-gnu/4.8/../../../aarch64-linux-gnu -L/usr/lib/gcc/aarch64-linux-gnu/4.8/../../../../lib -L/lib/aarch64-linux-gnu -L/lib/../lib -L/usr/lib/aarch64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/aarch64-linux-gnu/4.8/../../.. -lc
F_COMPILER=GFORTRAN
FC=gfortran
BU=_
CORE=ARMV7
LIBCORE=armv7
NUM_CORES=2
MAKE += -j 2
SGEMM_UNROLL_M=4
SGEMM_UNROLL_N=4
DGEMM_UNROLL_M=4
DGEMM_UNROLL_N=4
QGEMM_UNROLL_M=2
QGEMM_UNROLL_N=2
CGEMM_UNROLL_M=2
CGEMM_UNROLL_N=2
ZGEMM_UNROLL_M=2
ZGEMM_UNROLL_N=2
XGEMM_UNROLL_M=2
XGEMM_UNROLL_N=2
CGEMM3M_UNROLL_M=4
CGEMM3M_UNROLL_N=4
ZGEMM3M_UNROLL_M=4
ZGEMM3M_UNROLL_N=4
XGEMM3M_UNROLL_M=2
XGEMM3M_UNROLL_N=2

@xianyi
Copy link
Collaborator

xianyi commented Mar 24, 2015

Are you on real ARM machine or simulator? It looks like AARCH64 (ARM 64-bit).

@ShehabElsayed
Copy link
Author

No, it is not a real ARM machine, an emulator/simulator called qemu

@xianyi
Copy link
Collaborator

xianyi commented Mar 24, 2015

I think your gcc toolchain is AARCH64. You can check the predefined macros from this link.
http://www.commandlinefu.com/commands/view/3918/display-gcc-predefined-macros

Please use make TARGET=ARMV8.

@ShehabElsayed
Copy link
Author

I tried "make TARGET=ARMV8" before and it still gave the same error message. Is the APM patch you mentioned before for ARMV8 already included in OpenBLAS-0.2.13 or do I have to apply it?

@xianyi
Copy link
Collaborator

xianyi commented Mar 24, 2015

@ShehabElsayed , did you try develop branch?

@ShehabElsayed
Copy link
Author

I do not think I tried the latest one. I will check and if I hadn't, I will try it.

@ShehabElsayed
Copy link
Author

I got the develop branch and tried "make TARGET=ARMV8" but still the same error exists

@xianyi
Copy link
Collaborator

xianyi commented Mar 24, 2015

I update the develop. I think it can fix this issue. Please try it.

@ShehabElsayed
Copy link
Author

This seems to work. Thank you very much.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants