Just sent out version 2. The root cause is llvm::shutdown(). -----Original Message----- From: Zhigang Gong [mailto:[email protected]] Sent: Thursday, November 7, 2013 2:53 PM To: Xing, Homer Cc: Yang, Rong R; [email protected] Subject: Re: [Beignet] [PATCH] improve multithread calling of llvm
Considering that many of us is using clang/llvm 3.3, I will not merge this patch directly. Two possible options I can think: 1. Use macro to make it not break 3.3. 2. Fix it with 3.3 if there is a easy fix. What do you think? On Thu, Nov 07, 2013 at 07:17:28AM +0000, Xing, Homer wrote: > Oops, I am using llvm 3.4-svn. On llvm 3.4-svn this patch works fine ... > > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of Zhigang > Gong > Sent: Thursday, November 7, 2013 2:41 PM > To: Yang, Rong R > Cc: Xing, Homer; [email protected] > Subject: Re: [Beignet] [PATCH] improve multithread calling of llvm > > This patch seems introduce a regression. If you run all the utest, it may > trigger the following error: > pure virtual method called > terminate called without an active exception > > then segfault. I'm using clang/llvm 3.3. > > On Wed, Nov 06, 2013 at 08:09:43AM +0000, Yang, Rong R wrote: > > LGTM, thanks. > > > > -----Original Message----- > > From: [email protected] > > [mailto:[email protected]] On Behalf Of Homer > > Hsing > > Sent: Tuesday, November 05, 2013 1:28 PM > > To: [email protected] > > Subject: [Beignet] [PATCH] improve multithread calling of llvm > > > > call llvm multithread function instead of using a semaphore. > > also exit llvm multithread mode at the end of life. > > > > Signed-off-by: Homer Hsing <[email protected]> > > --- > > backend/src/backend/gen_program.cpp | 7 ------- > > backend/src/backend/gen_program.h | 2 -- > > backend/src/backend/program.cpp | 11 ++++++++--- > > 3 files changed, 8 insertions(+), 12 deletions(-) > > > > diff --git a/backend/src/backend/gen_program.cpp > > b/backend/src/backend/gen_program.cpp > > index 781152d..40ab176 100644 > > --- a/backend/src/backend/gen_program.cpp > > +++ b/backend/src/backend/gen_program.cpp > > @@ -159,10 +159,3 @@ void genSetupCallBacks(void) > > - > > -sem_t llvm_semaphore; > > gbe_program_new_from_binary = gbe::genProgramNewFromBinary; > > > gbe_program_new_from_llvm = gbe::genProgramNewFromLLVM; } > > - > > -void genSetupLLVMSemaphore(void) > > -{ > > - sem_init(&llvm_semaphore, 0, 1); > > -} > > diff --git a/backend/src/backend/gen_program.h > > b/backend/src/backend/gen_program.h > > index a498a5d..8d37a70 100644 > > --- a/backend/src/backend/gen_program.h > > +++ b/backend/src/backend/gen_program.h > > @@ -33,8 +33,6 @@ > > > > /*! This will make the compiler output Gen ISA code */ extern void > > genSetupCallBacks(void); -extern sem_t llvm_semaphore; -extern void > > genSetupLLVMSemaphore(void); > > > > #endif /* __GBE_GEN_PROGRAM_H__ */ > > > > diff --git a/backend/src/backend/program.cpp > > b/backend/src/backend/program.cpp index 937f95b..281b0b8 100644 > > --- a/backend/src/backend/program.cpp > > +++ b/backend/src/backend/program.cpp > > @@ -32,6 +32,8 @@ > > #include "ir/unit.hpp" > > #include "llvm/llvm_to_gen.hpp" > > #include "llvm/Config/config.h" > > +#include "llvm/Support/Threading.h" > > +#include "llvm/Support/ManagedStatic.h" > > #include <cstring> > > #include <algorithm> > > #include <fstream> > > @@ -557,9 +559,7 @@ namespace gbe { > > > > // Create an action and make the compiler instance carry it out > > llvm::OwningPtr<clang::CodeGenAction> Act(new > > clang::EmitLLVMOnlyAction()); > > - sem_wait(&llvm_semaphore); > > auto retVal = Clang.ExecuteAction(*Act); > > - sem_post(&llvm_semaphore); > > if (!retVal) > > return; > > > > @@ -854,7 +854,12 @@ namespace gbe > > gbe_get_image_base_index = gbe::getImageBaseIndex; > > gbe_set_image_base_index = gbe::setImageBaseIndex; > > genSetupCallBacks(); > > - genSetupLLVMSemaphore(); > > + llvm::llvm_start_multithreaded(); > > + } > > + > > + ~CallBackInitializer() { > > + llvm::llvm_stop_multithreaded(); > > + llvm::llvm_shutdown(); > > } > > }; > > > > -- > > 1.8.3.2 > > > > _______________________________________________ > > Beignet mailing list > > [email protected] > > http://lists.freedesktop.org/mailman/listinfo/beignet > > _______________________________________________ > > Beignet mailing list > > [email protected] > > http://lists.freedesktop.org/mailman/listinfo/beignet > _______________________________________________ > Beignet mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/beignet _______________________________________________ Beignet mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/beignet
