{{ :wall.png?nolink&600|}} ==== About SaC ==== **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 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: \begin{eqnarray} \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}{a_i} dt \\ \overset{k+1}{a_i} &=& \sum\limits_{j \neq i}^{n} \dfrac{m_j (\overset{k+1}{p_j} - \overset{k+1}{p_i})} {\left|\overset{k+1}{p_j} - \overset{k+1}{p_i} \right|^3} \end{eqnarray} \\ p = p + v * dt; v = v + a * dt; a = {[i] -> vsum ({[j] -> (i == j ? [0.0, 0.0, 0.0] : m[j] * (p[j] - p[i]) / (l2norm (p[j] - p[i]) ^ 3) }) }; ==== Getting Started ==== For an interactive, no-install experience, you can try out our experimental [[https://jupyter.oi.pe|Jupyter Notebook]] or you can play around with SaC on [[ https://glot.io/|glot.io]]. For installing the SaC eco-system, visit our [[download:main|download]] page and the [[docs:main|docs]] section, 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 by email or via our [[slack|Slack Server]] or our [[mailing_lists|mailing lists]] from ''Community'' section of this web-site. ==== SaC User Fora ==== We try to bring together SaC users through various platforms. Besides our [[slack|Slack Server]] and our [[mailing_lists|mailing lists]] we now also have a mini-blog [[saczilla|SaCzilla]] in the ''Community'' section of this web-site where users can post their SaC experiences. ==== Collaboration ==== 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. Just get in touch!