[Cplex] Cplex: suggested topics for discussion on the next teleconf.

Nelson, Clark clark.nelson at intel.com
Wed Jun 19 00:07:57 CEST 2013

> It is also worth thinking about why people use C instead of C++ in
> the
> same manner as we think about HPC vs. non-HPC w.r.t. low level.

> My hope is that Cplex can provide a mechanism for C programs to
> achieve what they can only today achieve with non-portable
> language
> constructs like inline assembly.  I see absolutely no value in
> putting
> into the language that which is already provided for by libraries
> like
> Pthreads unless it is provable that compiler interaction provides
> a
> measurable _performance_ benefit.

It's also worth thinking about the fact that pthreads and OpenMP already
exist, and of course they aren't going away. In some ways, the problems that
they solve have already been solved.

But they don't solve all problems. Writing correct programs with pthreads
is not particularly easy. Writing programs with OpenMP is easier, but it's
still too easy to write an program using OpenMP that isn't scalable. The
value that I'm hoping to bring to the table has more to do with programmer
productivity than application performance.

Personally, I have no problem at all with any of the tuning dials and knobs
that OpenMP provides; I'd be happy to include them all in what we do, if
that's the consensus.

But writing a program and tuning it are two different things. I want to
avoid lumping the tuning parameters in with the programming model. 

Specifically, I'd like whatever syntax is used to specify tuning parameters
to be distinct and noticeably different from the syntax that's used to point
out opportunities for parallel execution. For example, if parallel execution
is invoked by a keyword syntax, perhaps tuning parameters could be specified
with a pragma, or with a macro or function call, for which it is necessary
to include a header.

A specification that gives the implementation maximum latitude -- unless the
programmer goes at least a little bit out of his way to specify otherwise --
seems to me like the right balance. I'd like to make the programmer go just
a little bit out of his way, to increase the likelihood that he doesn't try
tuning without thinking about it, at least a little bit. (HPC programmers
think about tuning a lot more than just a little bit.)


More information about the Cplex mailing list