Skip to content
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

Compile errors with yolo2_light #10

Closed
georgeokelly opened this issue Apr 9, 2018 · 4 comments
Closed

Compile errors with yolo2_light #10

georgeokelly opened this issue Apr 9, 2018 · 4 comments

Comments

@georgeokelly
Copy link

I have some trouble with yolo2_light,

in README.md, it says
To compile for CPU just do make on Linux

when I do that it turns out

find . -name "*.sh" -exec chmod +x {} \;
gcc  -Wall -Wfatal-errors -Ofast obj/main.o obj/additionally.o obj/box.o obj/yolov2_forward_network.o -o bin/darknet -lm -pthread 
obj/main.o: In function `test_detector_cpu':
main.c:(.text+0x4e0): undefined reference to `network_predict_quantized'
collect2: error: ld returned 1 exit status
make: *** [bin/darknet] Error 1

I wonder if I should do sth. to Makefile or there're any other solutions?

@AlexeyAB
Copy link
Owner

AlexeyAB commented Apr 9, 2018

Hi, I fixed it. Try to update your code from github.

@georgeokelly
Copy link
Author

thank you for your reply.
but it goes like this:

In file included from ./src/yolov2_forward_network_quantized.c:210:0:
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/ammintrin.h: At top level:
/usr/lib/gcc/x86_64-linux-gnu/4.8/include/ammintrin.h:31:3: error: #error "SSE4A instruction set not enabled"
 # error "SSE4A instruction set not enabled"
   ^
compilation terminated due to -Wfatal-errors.
make: *** [obj/yolov2_forward_network_quantized.o] Error 1

and my ammintrin.h is as follows.

#ifndef _AMMINTRIN_H_INCLUDED
#define _AMMINTRIN_H_INCLUDED

#ifndef __SSE4A__
# error "SSE4A instruction set not enabled"
#else

/* We need definitions from the SSE3, SSE2 and SSE header files*/
#include <pmmintrin.h>

extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_stream_sd (double * __P, __m128d __Y)
{
  __builtin_ia32_movntsd (__P, (__v2df) __Y);
}

extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_stream_ss (float * __P, __m128 __Y)
{
  __builtin_ia32_movntss (__P, (__v4sf) __Y);
}

extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_extract_si64 (__m128i __X, __m128i __Y)
{
  return (__m128i) __builtin_ia32_extrq ((__v2di) __X, (__v16qi) __Y);
}

#ifdef __OPTIMIZE__
extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_extracti_si64 (__m128i __X, unsigned const int __I, unsigned const int __L)
{
  return (__m128i) __builtin_ia32_extrqi ((__v2di) __X, __I, __L);
}
#else
#define _mm_extracti_si64(X, I, L)					\
  ((__m128i) __builtin_ia32_extrqi ((__v2di)(__m128i)(X),		\
				    (unsigned int)(I), (unsigned int)(L)))
#endif

extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_insert_si64 (__m128i __X,__m128i __Y)
{
  return (__m128i) __builtin_ia32_insertq ((__v2di)__X, (__v2di)__Y);
}

#ifdef __OPTIMIZE__
extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
_mm_inserti_si64(__m128i __X, __m128i __Y, unsigned const int __I, unsigned const int __L)
{
  return (__m128i) __builtin_ia32_insertqi ((__v2di)__X, (__v2di)__Y, __I, __L);
}
#else
#define _mm_inserti_si64(X, Y, I, L)					\
  ((__m128i) __builtin_ia32_insertqi ((__v2di)(__m128i)(X),		\
				      (__v2di)(__m128i)(Y),		\
				      (unsigned int)(I), (unsigned int)(L)))
#endif

#endif /* __SSE4A__ */

#endif /* _AMMINTRIN_H_INCLUDED */

@AlexeyAB
Copy link
Owner

AlexeyAB commented Apr 9, 2018

@georgeokelly Now I fixed it and tested on both Windows and Linux.

@georgeokelly
Copy link
Author

Well it works now,
Thanks for the help!

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

2 participants