Hi Craig -
I don't think --specialize makes any sense in combination
with CHPL_TARGET_ARCH=unknown. The combination is
asking for optimization specific to a target architecture,
but the target architecture isn't specified.
You already should get optimization to a least-common-denominator
architecture (e.g. the minimum x86-64 CPU sold)
with just --fast and CHPL_TARGET_ARCH=unknown.
If your environment has multiple processor types and you'd
like to build Chapel for all of them, you might be able to:
1. Concurrently install Chapel to the same directory for the
different relevant settings of CHPL_TARGET_ARCH. This
should populate the runtime sub-directories for the
appropriate CHPL_TARGET_ARCH.
2. Build Chapel for a minimum processor type of your users,
e.g. CHPL_TARGET_ARCH=sandybridge
and then have people using your installation of Chapel
also set CHPL_TARGET_ARCH=sandybridge. Note that this
could happen in a setup script or potentially in a chplconfig file.
(It might even work for that chplconfig file to be in
the installed $CHPL_HOME directory but I havn't tried that yet;
it ought to be saved in a chplconfig when you configure...).
Cheers,
-michael
I'm having some issues with our Chapel installation and being able to
--fast/--specialize.
I build our installation with "unknown" (anticipating a
least-common-denominator) architecture.
Our installation is then NFS mounted on different hosts (with
architectures like sandybridge, ivybridge, haswell, etc...) This all
works fine until someone cares about performance. Once you try to use
--fast/--specialize it looks like chapel expects to have been built for
the special-ized architecture.
[cfreese@ucs1l play]$ chpl -o acpy acpy.chpl
[cfreese@ucs1l play]$ chpl --specialize -o acpy acpy.chpl
warning: --specialize was set, but CHPL_TARGET_ARCH is 'unknown'. If you
want any specialization to occur please set CHPL_TARGET_ARCH to a proper
value.
[cfreese@ucs1l play]$ setenv CHPL_TARGET_ARCH sandybridge
[cfreese@ucs1l play]$ chpl --specialize -o acpy acpy.chpl
/opt/chapel-1.17.1/third-party/gasnet/Makefile.setup:6:
/opt/chapel-1.17.1/third-party/gasnet/install/linux64-gnu-sandybridge/substrate-smp/seg-fast/nodbg/include/smp-conduit/smp-par.mak:
No such file or directory
gmake: *** No rule to make target
`/opt/chapel-1.17.1/third-party/gasnet/install/linux64-gnu-sandybridge/substrate-smp/seg-fast/nodbg/include/smp-conduit/smp-par.mak'.
Stop.
error: compiling generated source
I tried faking it out by making a link .../linux64-gnu-sandybridge ->
.../linux64-gnu-unknown (which isn't ideal but also isn't a completely
stupid work around). That seems to placate gasnet but then chapel seems
to choke on the runtime:
[cfreese@ucs1l play]$ chpl --specialize -o acpy acpy.chpl
/opt/chapel-1.17.1/runtime/etc/Makefile.include:149: *** The runtime has
not been built for this configuration. Check
$CHPL_HOME/util/printchplenv and try rebuilding with 'gmake' from
$CHPL_HOME. Stop.
error: compiling generated source
So, what am I missing? Is there a correct way to handle being able to
compile for multiple architectures from a single chapel installation or
do I need to build a separate version for each?
Craig
P.S. for extra credit one can ponder the effects for building/using
chapel with architecture = "native" ;^)
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Chapel-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/chapel-users
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Chapel-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/chapel-users