Wouldn't it make sense to check for OMP and enable it if it's found? I'm
currently looking into autoconf to figure out a way to do this. Are you
willing to take the patch if I do that?

Regards,
Elias


On 4 April 2014 22:30, Juergen Sauermann <juergen.sauerm...@t-online.de>wrote:

>  Hi Elias,
>
> if you ./configure nothing then MULTICORE will be #undef'ed and that
> means OMP will be disabled. This is the default for backward compatibility
> so that GNU APL still compiles even if you don't have OMP installed.
>
> For the behavior that you expect below,
>
>     .,/configure CORE_COUNT_WANTED=all
>
> is the way to go.
>
> /// Jürgen
>
>
>
> On 04/04/2014 04:15 PM, Elias Mårtenson wrote:
>
> Cool, thanks for this!
>
>  Can you clarify one thing: If you don't specify anything on the command
> line, and also not specify anything at runtime, what will the default be?
>
>  Casually, I'd expect it to be set to OMP enabled, with the core count =
> the number of cores on the machine.
>
>  Regards,
> Elias
>
>
>  On 4 April 2014 21:58, Juergen Sauermann 
> <juergen.sauerm...@t-online.de>wrote:
>
>> Hi,
>>
>> I have added a few functions to support multi-core/open MP programming
>> for GNU APL, (see SVN 184.
>>
>> 1. ./configure
>>
>> You can now ./configure static and dynamic core counts:
>>
>>
>> ./configure CORE_COUNT_WANTED=N with N>0
>>
>> static maximum core count. Will
>>
>> #define MULTICORE 1
>> #define STATIC_CORE_COUNT N
>>
>>
>> ./configure CORE_COUNT_WANTED=0
>>
>> no openMP support. Will
>>
>> #undef MULTICORE
>> #define STATIC_CORE_COUNT 1
>>
>>
>> ./configure CORE_COUNT_WANTED=-1 or =all
>>
>> dynamic core count using all available cores. Will
>>
>> #define MULTICORE 1
>> #undef STATIC_CORE_COUNT
>>
>>
>> ./configure CORE_COUNT_WANTED=-2 or =argv
>>
>> dynamic core count set by command line option --cc N.
>> Same as =all if --cc is not given. Will
>>
>> #define MULTICORE 1
>> #undef STATIC_CORE_COUNT
>>
>>
>> ./configure CORE_COUNT_WANTED=-3 or =syl
>>
>> dynamic core count set in APL by ⎕SYL Will
>>
>> #define MULTICORE 1
>> #undef STATIC_CORE_COUNT
>>
>> The interpreter is started with core count 1.
>> Eg. ⎕SYL[26]←2 will set core count to 2.
>>
>> ⎕SYL[24;] is the core count used in in ./configure (read-only)
>> ⎕SYL[25;] is the core count detected by pthread_getaffinity_np()
>> (read-only)
>> ⎕SYL[26;] is the current core count (read-only unless
>> CORE_COUNT_WANTED=syl)
>>
>>
>> ---------------------------------------------------------------------------------
>>
>> In the interpreter code, the above #defines become available by:
>>
>> #include "Common.hh"
>>
>> That also declares the following functions/macros:
>>
>> CoreCount core_count() // return number of cores that will be used
>> CoreCount max_cores() // return number of cores detected by
>> pthread_getaffinity_np()
>> CoreCount setup_cores(CoreCount new_count) // set new core count, return
>> min ( new_count, max_cores )
>>
>> if STATIC_CORE_COUNT is #defined then core_count() is a macro expanding
>> to max ( CORE_COUNT_WANTED, 1).
>> In that case, max_cores() cores will be used and not core_count() cores!
>>
>> ./configure checks for presence of omp.h and libgomp and sets CXX flags
>> in Makefiles.
>>
>> omp.h is #included by Common.hh if present and needed (ie. if MULTICORE
>> is 1)
>>
>>
>> /// Jürgen
>>
>>
>>
>>
>>
>
>

Reply via email to