Skip to Content.
Sympa Menu

charm - Re: [charm] Using icc/icpc with Charm

charm AT lists.cs.illinois.edu

Subject: Charm++ parallel programming system

List archive

Re: [charm] Using icc/icpc with Charm


Chronological Thread 
  • From: "Van Der Wijngaart, Rob F" <rob.f.van.der.wijngaart AT intel.com>
  • To: Phil Miller <mille121 AT illinois.edu>
  • Cc: "Kunzman, David M" <david.m.kunzman AT intel.com>, "Hammond, Jeff R" <jeff.r.hammond AT intel.com>, "Mattson, Timothy G" <timothy.g.mattson AT intel.com>, "charm AT cs.illinois.edu" <charm AT cs.illinois.edu>
  • Subject: Re: [charm] Using icc/icpc with Charm
  • Date: Mon, 22 Sep 2014 19:39:00 +0000
  • Accept-language: en-US
  • List-archive: <http://lists.cs.uiuc.edu/pipermail/charm/>
  • List-id: CHARM parallel programming system <charm.cs.uiuc.edu>

Maybe I should explain why I want to use the Intel compiler. It is not just company loyalty J. In the jacobi2d example, which I am morphing into the Stencil Parallel Research Kernel (https://github.com/tgmattso/ParResKernels), I replaced the multi-dimensional array allocation with a one-dimensional version, plus a macro (e.g. allocate temperature and use the following macro for array references: #define temp(i,j) temperature[j+LDA*i]). That usually gives a substantial performance improvement, but in this case I noticed a severe performance penalty (it was not caused by the wrong stride, I made sure that my access was equivalent to that in the original code). Then I wanted to look at the compiler optimization report (including vectorization) and also wanted to inform the compiler that there was no aliasing between pointers. It was at that time that I found out that I was using g++.

 

Rob

 

From: Van Der Wijngaart, Rob F
Sent: Monday, September 22, 2014 9:45 AM
To: 'Phil Miller'
Cc: Nikhil Jain; charm AT cs.illinois.edu
Subject: RE: [charm] Using icc/icpc with Charm

 

Thanks, Phil. I could track the following dependencies: conv-mach.sh is called by conv-config.sh, which is called by special.sh, which is called by the Makefile in src/scripts/Makefile. As far as I can tell, cc-mpicxx.sh is not called by anything. I may be able to reverse engineer the scripts, but could I ask you to give me a pointer how to tweak the build line so I can use the Intel compilers? I assume someone else has also tried to do that in the past. Thanks!

 

Rob

 

From: unmobile AT gmail.com [mailto:unmobile AT gmail.com] On Behalf Of Phil Miller
Sent: Friday, September 19, 2014 2:21 PM
To: Van Der Wijngaart, Rob F
Cc: Nikhil Jain; charm AT cs.illinois.edu
Subject: Re: [charm] Using icc/icpc with Charm

 

Have a look at src/arch/mpi-linux-x86_64/conv-mach.sh and src/arch/mpi-linux-x86_64/cc-mpicxx.sh. Between those two, you should be able to tweak the commands and arguments used by charmc to generate the overall backend compiler command line.

 

On Fri, Sep 19, 2014 at 4:17 PM, Van Der Wijngaart, Rob F <rob.f.van.der.wijngaart AT intel.com> wrote:

Hi Nikhil,

Sadly, this did not work, even though mpiicpc is indeed installed and in my path. The problem is, of course, that I do not issue the compilation commands myself, charmc does, so I cannot influence how mpiicpc is invoked. Overall, the charmc interface if fairly obscuring. I did not know I was using g++ behind the scenes, until I specified some compiler flags in my makefile that are Intel compiler specific.

Rob

../../../bin/charmc -O3 -fno-alias  jacobi2d.ci
../../../bin/charmc -O3 -fno-alias -c jacobi2d.C
g++: error: unrecognized command line option "-fno-alias"

-----Original Message-----
From: nikhil.life AT gmail.com [mailto:nikhil.life AT gmail.com] On Behalf Of Nikhil Jain
Sent: Thursday, September 18, 2014 5:11 PM
To: Van Der Wijngaart, Rob F
Cc: Phil Miller (mille121 AT illinois.edu); charm AT cs.illinois.edu
Subject: Re: [charm] Using icc/icpc with Charm

Jumping in to suggest what I think could be done.

Do you have an mpi* wrappers that default to Intel C/C++ compilers? If
yes, the following can be done:

MPICXX=mpiicpc CXX=icpc ./build charm++  mpi-linux-x86_64 mpicxx ifort
smp --with-production -j8 -DMPICH_IGNORE_CXX_SEEK -DMPICH_SKIP_MPICXX

assuming the mpi* wrapper that default to ICC is named mpiicpc, else
it can be replaced with the right name for you. You can similarly also
prefix MPICC= and CC= to let Charm pick the right names for C code.

--Nikhil

On Thu, Sep 18, 2014 at 6:28 PM, Van Der Wijngaart, Rob F
<rob.f.van.der.wijngaart AT intel.com> wrote:
> Hi Phil,
>
>
>
> Do you know how I should modify my build line to be able to use the Intel
> C/C++ compilers, in addition to mpicxx? This is what I have today:
>
> ./build charm++ mpi-linux-x86_64 ifort mpicxx smp -j8
> -DMPICH_IGNORE_CXX_SEEK -DMPICH_SKIP_MPICXX
>
>
>
> Thanks!
>
>
>
> Rob
>
>
> _______________________________________________
> charm mailing list
> charm AT cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/charm
>



--
Nikhil Jain, nikhil.jain AT acm.org, http://charm.cs.uiuc.edu/people/nikhil
Doctoral Candidate @ CS, UIUC

 




Archive powered by MHonArc 2.6.16.

Top of Page