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

Three issues for building #27

Closed
ohsai opened this issue Jul 24, 2019 · 2 comments
Closed

Three issues for building #27

ohsai opened this issue Jul 24, 2019 · 2 comments

Comments

@ohsai
Copy link

ohsai commented Jul 24, 2019

I have attempted to build this in Ubuntu 16.04 LTS by following your build guideline, but found 3 errors.

  1. When executing ´make´ in SGXDNN directory, This error occurs.
g++ -MT bin/sgxdnn_main.o -MMD -MP -MF .d/sgxdnn_main.Td -std=c++11 -fPIC -I../Include/eigen -I../Include -Icrypto -O3 -march=native -Wno-enum-compare -fopenmp -c sgxdnn_main.cpp -o bin/sgxdnn_main.o -pthread
In file included from sgxdnn_main.cpp:13:0:
layers/eigen_maxpool.h:13:42: fatal error: unsupported/Eigen/CXX11/Tensor: No such file or directory
compilation terminated.
Makefile:26: recipe for target 'bin/sgxdnn_main.o' failed

On Makefile in SGXDNN directory, g++ include path must be ../Include/eigen3_sgx , not ../Include/eigen

  1. After fixing it, ´make´ in SGXDNN directory brings this error.
g++ -MT bin/sgxdnn_main.o -MMD -MP -MF .d/sgxdnn_main.Td -std=c++11 -fPIC -I../Include/eigen3_sgx -I../Include -Icrypto -O3 -march=native -Wno-enum-compare -fopenmp -c sgxdnn_main.cpp -o bin/sgxdnn_main.o -pthread
In file included from ../Include/eigen3_sgx/unsupported/Eigen/CXX11/ThreadPool:60:0,
                 from ../Include/eigen3_sgx/unsupported/Eigen/CXX11/Tensor:72,
                 from layers/eigen_maxpool.h:13,
                 from sgxdnn_main.cpp:13:
../Include/eigen3_sgx/unsupported/Eigen/CXX11/src/ThreadPool/NonBlockingThreadPool.h:13:24: fatal error: sgx_thread.h: No such file or directory
compilation terminated.
Makefile:26: recipe for target 'bin/sgxdnn_main.o' failed
make: *** [bin/sgxdnn_main.o] Error 1

You need to fix as following. (I just brought git diff)

--- a/Include/eigen3_sgx/unsupported/Eigen/CXX11/src/ThreadPool/NonBlockingThreadPool.h
+++ b/Include/eigen3_sgx/unsupported/Eigen/CXX11/src/ThreadPool/NonBlockingThreadPool.h
@@ -10,7 +10,8 @@
 #ifndef EIGEN_CXX11_THREADPOOL_NONBLOCKING_THREAD_POOL_H
 #define EIGEN_CXX11_THREADPOOL_NONBLOCKING_THREAD_POOL_H
 
-#include "sgx_thread.h"
+//#include "sgx_thread.h"

--- a/Include/eigen3_sgx/unsupported/Eigen/CXX11/ThreadPool
+++ b/Include/eigen3_sgx/unsupported/Eigen/CXX11/ThreadPool
@@ -41,7 +41,7 @@
 #include <condition_variable>
 #include <deque>
 #include <mutex>
-//#include <thread>
+#include <thread>
 #include <functional>
 #include <memory>
 #include <pthread.h>


  1. There are missing directory paths. on ´make´ in SGXDNN and root directory,
g++ -MT bin/sgxdnn_main.o -MMD -MP -MF .d/sgxdnn_main.Td -std=c++11 -fPIC -I../Include/eigen3_sgx -I../Include -Icrypto -O3 -march=native -Wno-enum-compare -fopenmp -c sgxdnn_main.cpp -o bin/sgxdnn_main.o -pthread
Assembler messages:
Fatal error: can't create bin/sgxdnn_main.o: No such file or directory
Makefile:26: recipe for target 'bin/sgxdnn_main.o' failed
make: *** [bin/sgxdnn_main.o] Error 1

g++ -m64 -O3 -nostdinc -fvisibility=hidden -fpie -ffunction-sections -fdata-sections -fstack-protector-strong -IEnclave -I/home/ohsai/Workspace/linux-sgx/linux/installer/bin/sgxsdk/include -I/home/ohsai/Workspace/linux-sgx/linux/installer/bin/sgxsdk/include/tlibc -I/home/ohsai/Workspace/linux-sgx/linux/installer/bin/sgxsdk/include/libcxx -IInclude -ISGXDNN -IInclude/eigen3_sgx -I/usr/lib/gcc/x86_64-linux-gnu/5.4.0/include  -std=c++11 -nostdinc++ -DUSE_SGX -DEIGEN_NO_CPUID -march=native -maes -c SGXDNN/sgxdnn_main.cpp -o SGXDNN/bin_sgx/sgxdnn_main.o
Assembler messages:
Fatal error: can't create SGXDNN/bin_sgx/sgxdnn_main.o: No such file or directory
Makefile:232: recipe for target 'SGXDNN/bin_sgx/sgxdnn_main.o' failed
make: *** [SGXDNN/bin_sgx/sgxdnn_main.o] Error 1

You need to create ´bin´ and ´bin_sgx´ directory inside SGXDNN directory.

@ftramer
Copy link
Owner

ftramer commented Jul 24, 2019

Thanks for catching the missing bin and bin_sgx directories.

It seems I messed up something with including eigen as a submodule.
The directory Include/eigen should contain a copy of the (unmodified) Eigen library which you can find here: https://github.com/eigenteam/eigen-git-mirror

The Makefile inside SGXDNN is for building the DNN library for use without SGX. So you shouldn't include eigen3_sgx, which is a slightly modified version of eigen with SGX-specific dependencies.
Your fix works for building SGXDNN without SGX, but you'll now have trouble building slalom for SGX because you modified eigen3_sgx.

@ohsai
Copy link
Author

ohsai commented Jul 24, 2019

Thanks for the fast response.. I was doing it totally the wrong way and wasted 4 hours. clone unmodified eigen library to the Include/eigen

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