Both sides previous revision Previous revision Next revision | Previous revision Next revisionBoth sides next revision |
index [2016/11/18 15:20] – ↷ Links adapted because of a move operation sbs | index [2018/03/10 09:55] – sbs |
---|
{{ :wall.png?nolink&600|}} | {{ :wall.png?nolink&600|}} |
**S**ingle-**A**ssignment **C** is an array programming language predominantly suited for application areas such as numerically intensive applications and signal processing. Its distinctive feature is that it combines //high-level program specifications// with //runtime efficiency// similar to that of hand-optimized low-level specifications. Key to the optimization process that facilitates these runtimes is the underlying //functional model// which also constitutes the basis for //implicit parallelization//. This makes SAC ideally suited for harnessing the full potential of a wide variety of modern architectures ranging from a few symmetric cores with shared memory to massively parallel systems that host heterogeneous components including GPUs and FPGAs. | **S**ingle-**A**ssignment **C** is an array programming language predominantly suited for application areas such as numerically intensive applications and signal processing. Its distinctive feature is that it combines //high-level program specifications// with //runtime efficiency// similar to that of hand-optimized low-level specifications. Key to the optimization process that facilitates these runtimes is the underlying //functional model// which also constitutes the basis for //implicit parallelisation//. This makes SAC ideally suited for harnessing the full potential of a wide variety of modern architectures ranging from a few symmetric cores with shared memory to massively parallel systems that host heterogeneous components including GPUs and FPGAs. |
| |
The overall philosophy of the project is to combine [[hppp|high performance, high productivity and high portability]] under the hood of one compiler: //Being able to write a program or at least the compute intensive part of a program in a high-level style quickly and letting a compiler to figure out the details of the underlying architecture and details of the code transformation that lead to a performance competitive with hand-optimised low-level codes.// This vision drives a number of research activities around SAC. | The overall philosophy of the project is to combine [[hppp|high performance, high productivity and high portability]] under the hood of one compiler: //Being able to write a program, or at least the compute intensive part of a program in a high-level style, quickly and leaving a compiler to figure out the details of the underlying architecture and details of the code transformation, leads to performance competitiveness with hand-optimised low-level codes.// This vision drives a number of research activities around SaC. |
\\ \\ | \\ \\ |
To give you a little taste and feel of SaC, here an example on how the all pair N-body problem can be almost literally transliterated from its mathematical formulation into a valid SaC program: | To give you a little taste and feel of SaC, here an example on how the all pair N-body problem can be almost literally transliterated from its mathematical formulation into a valid SaC program: |
<col sm="3"> | <col sm="3"> |
\begin{eqnarray} | \begin{eqnarray} |
\overset{\tiny k+1}{p_i} &=& \overset{k}{p_i} + \overset{k+1}{v_i} dt \\ | \overset{\tiny k+1}{p_i} &=& \overset{k}{p_i} + \overset{k}{v_i} dt \\ |
\overset{k+1}{v_i} &=& \overset{k}{v_i} + \overset{k+1}{a_i} dt \\ | \overset{k+1}{v_i} &=& \overset{k}{v_i} + \overset{k}{a_i} dt \\ |
\overset{k+1}{a_i} &=& \sum\limits_{j \neq i}^{n} | \overset{k+1}{a_i} &=& \sum\limits_{j \neq i}^{n} |
\dfrac{m_j (\overset{k}{p_j} - \overset{k}{p_i})} | \dfrac{m_j (\overset{k+1}{p_j} - \overset{k+1}{p_i})} |
{\left|\overset{k}{p_j} - \overset{k}{p_i} \right|^3} | {\left|\overset{k+1}{p_j} - \overset{k+1}{p_i} \right|^3} |
\end{eqnarray} | \end{eqnarray} |
</col> | </col> |
</col> | </col> |
</grid> | </grid> |
| |
| |
We are interested in research as well as in applications that can feed into our vision of [[hppp|high performance, high productivity and high portability]]. We are open for collaboration and contributions on various levels, be it academically or commercially motivated. | We are interested in research as well as in applications that can feed into our vision of [[hppp|high performance, high productivity and high portability]]. We are open for collaboration and contributions on various levels, be it academically or commercially motivated. |
| |
Visit our [[download:main|download]] page and the [[docs:main|docs]] section for getting started, find out about the research we have done and are doing in the ''Research'' section, or get in touch with our [[team| contributors]], either directly or via our [[mailing_lists|mailing lists]] from ''Community'' section of this web-site. | Visit our [[download:main|download]] page and the [[docs:main|docs]] section for getting started, find out about the research we have done and are doing in the ''Research'' section, or get in touch with our [[team| contributors]], either directly or via our [[mailing_lists|mailing lists]] from ''Community'' section of this web-site. |