Hi Åke,

Thanks anyway for the tips regarding the hooks.

Cheers,

Loris

Åke Sandgren <[email protected]> writes:

> Ahhh R package.... no I think that's a lot harder.
> Not sure how R packages are built so can't currently help there.
>
> Anyway, you should use this way of changing things like buildopts
>
> self.cfg.update('buildopts', "BIGNUMA=1 ")
>
> And in pre_configure_hook you should only change opts related to
> configure step. build step opts should be done in pre_build_hook
>
> On 11/27/19 1:29 PM, Loris Bennett wrote:
>> Åke Sandgren <[email protected]> writes:
>> 
>>> What does your hooks look like?
>> 
>>   def pre_configure_hook(self, *args, **kwargs):
>> 
>>       """Pre-configure hook"""
>> 
>>       # Build RStan with threading
>>       ##################################################
>>       if self.name == 'RStan':
>>           self.cfg['buildopts'] = self.cfg['buildopts'] \
>>               + 'CXX14FLAGS="$CXX14FLAGS -DSTAN_THREADS"'
>>           self.log.info("[pre-build hook] Added -DSTAN_THREADS to CXX14FLAGS 
>> to buildopts")
>>           return
>> 
>>   def pre_extensions_hook(self, *args, **kwargs):
>> 
>>       """Pre-extensions hook"""
>> 
>>       # Build RStan with threading
>>       ##################################################
>>       if self.name == 'RStan':
>>           self.cfg['buildopts'] = self.cfg['buildopts'] \
>>               + 'CXX14FLAGS="$CXX14FLAGS -DSTAN_THREADS"'
>>           self.log.info("[pre-extensions hook] Added -DSTAN_THREADS to 
>> CXX14FLAGS to buildopts")
>>           return
>> 
>> I have also tried this with CXXFLAGS.
>> 
>> In my own copy of the EC I have tried various things:
>> 
>>   #preconfigopts = "-DSTAN_THREADS"
>>   #buildopts = "-DSTAN_THREADS"
>>   #preconfigopts = 'CXXFLAGS="$CXXFLAGS -DSTAN_THREADS" '
>>   #buildopts = 'CXXFLAGS="$CXXFLAGS -DSTAN_THREADS" '
>>   buildopts = ' -DSTAN_THREADS CC="$CC" FC="$F77"'
>> 
>> My impression is that none of these things affect the way the R packages
>> are build.
>> 
>> Cheers,
>> 
>> Loris
>> 
>>> And in what hook are you trying to do this? (Which i'll see when you
>>> show me the hook ...)
>>>
>>> On 11/27/19 10:19 AM, Loris Bennett wrote:
>>>> Hi Åke,
>>>>
>>>> Åke Sandgren <[email protected]> writes:
>>>>
>>>>> You might need to add it to the configopts (preconfigopts). Not sure
>>>>> which steps that easyconfig/block is going through.
>>>>
>>>> I have tried tweaking the EC directly with
>>>>
>>>>   preconfigopts = 'CXXFLAGS="$CXXFLAGS -DSTAN_THREADS" '
>>>>
>>>> but this doesn't help.  In the log I see
>>>>
>>>>   == 2019-11-27 10:01:00,566 easyconfig.py:583 INFO setting easyconfig
>>>>   parameter preconfigopts: value CXXFLAGS="$CXXFLAGS -DSTAN_THREADS"
>>>>   (type: <type 'str'>)
>>>>
>>>> but subsequently
>>>>
>>>>   == 2019-11-27 10:01:01,750 environment.py:97 INFO Environment variable
>>>>   CXXFLAGS set to -O2 -ftree-vectorize -march=native -fno-math-errno
>>>>   (previously undefined)
>>>>
>>>> A heavy-handed approach would seem to be redefining the default value of
>>>> CXXFLAGS global.  Is that possible?
>>>>
>>>> Otherwise it looks like I'll have to patch the Makefiles in the sources.
>>>>
>>>> Cheers,
>>>>
>>>> Loris
>>>>
>>>>> On 11/21/19 10:05 AM, Loris Bennett wrote:
>>>>>> Loris Bennett <[email protected]> writes:
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> I am trying to install
>>>>>>>
>>>>>>>   RStan-2.18.2-foss-2018b-R-3.5.1.eb
>>>>>>>
>>>>>>> with the additional compiler flag:
>>>>>>>
>>>>>>>   -DSTAN_THREADS
>>>>>>>
>>>>>>> I want to us a hook and tried
>>>>>>>
>>>>>>>   def pre_configure_hook(self, *args, **kwargs):
>>>>>>>
>>>>>>>       """Pre-build hook"""
>>>>>>>
>>>>>>>       # Build RStan with threading
>>>>>>>       ##################################################
>>>>>>>       if self.name == 'RStan':
>>>>>>>           self.cfg['buildopts'] = self.cfg['buildopts'] \
>>>>>>>               + 'CXXFLAGS="$CXXFLAGS -DSTAN_THREADS"'
>>>>>>>           self.log.info("[pre-build hook] Added -DSTAN_THREADS to 
>>>>>>> CXXFLAGS to buildopts")
>>>>>>>           return
>>>>>>>
>>>>>>> In the log file I can see that  the hooks is called, but the flag
>>>>>>> doesn't seem to be used.
>>>>>>>
>>>>>>> What am I doing wrong?
>>>>>>
>>>>>> I have also tried adding
>>>>>>
>>>>>>   buildopts = "-DSTAN_THREADS"
>>>>>>
>>>>>> to my own copy of the easyconfig. This does appear in
>>>>>> the log file has having been set:
>>>>>>
>>>>>>   == 2019-11-21 09:20:23,543 easyconfig.py:583 INFO setting easyconfig
>>>>>>   parameter buildopts: value -DSTAN_THREADS (type: <type 'str'>)
>>>>>>
>>>>>> but it is not passed to the compiler.  The compile lines do contain
>>>>>> other macros, but these are obviously coming from elsewhere:
>>>>>>
>>>>>>  g++ -std=gnu++14
>>>>>>  
>>>>>> -I"/trinity/shared/easybuild/software/R/3.5.1-foss-2018b/lib64/R/include"
>>>>>>  -DNDEBUG -I"../inst/include"
>>>>>>  
>>>>>> -I"`"/trinity/shared/easybuild/software/R/3.5.1-foss-2018b/lib64/R/bin/Rscript"
>>>>>>  --vanilla -e "cat(system.file('include', 'src', package =
>>>>>>  'StanHeaders'))"`" -DBOOST_DISABLE_ASSERTS
>>>>>>  -DBOOST_PHOENIX_NO_VARIADIC_EXPRESSION ...
>>>>>>
>>>>>> Any ideas how I could insert "-DSTAN_THREADS"?  Or can this kind of
>>>>>> thing only be done by patching the Makefile?
>>>>>>
>>>>>> Cheers,
>>>>>>
>>>>>> Loris
>>>>>>
>>>>>> --
>>>>>> Dr. Loris Bennett (Mr.)
>>>>>> ZEDAT, Freie Universität Berlin         Email [email protected]
>>>>>>
-- 
Dr. Loris Bennett (Mr.)
ZEDAT, Freie Universität Berlin         Email [email protected]

Reply via email to