source: doc/proposals/concurrency/text/future.tex @ d67cdb7

ADTaaron-thesisarm-ehast-experimentalcleanup-dtorsdeferred_resndemanglerenumforall-pointer-decayjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-exprnew-envno_listpersistent-indexerpthread-emulationqualifiedEnumresolv-newwith_gc
Last change on this file since d67cdb7 was d67cdb7, checked in by Peter A. Buhr <pabuhr@…>, 7 years ago

merge

  • Property mode set to 100644
File size: 2.0 KB
Line 
1% ======================================================================
2% ======================================================================
3\chapter{Future Work}
4% ======================================================================
5% ======================================================================
6
7Concurrency and parallelism is still a very active field that strongly benefits from hardware advances. As such certain features that aren't necessarily mature enough in their current state could become relevant in the lifetime of \CFA.
8\section{Non-Blocking IO}
9
10
11\section{Other concurrency tools}
12
13
14\section{Implicit threading}
15% Finally, simpler applications can benefit greatly from having implicit parallelism. That is, parallelism that does not rely on the user to write concurrency. This type of parallelism can be achieved both at the language level and at the system level.
16%
17% \begin{center}
18% \begin{tabular}[t]{|c|c|c|}
19% Sequential & System Parallel & Language Parallel \\
20% \begin{lstlisting}
21% void big_sum(int* a, int* b,
22%                int* out,
23%                size_t length)
24% {
25%       for(int i = 0; i < length; ++i ) {
26%               out[i] = a[i] + b[i];
27%       }
28% }
29%
30%
31%
32%
33%
34% int* a[10000];
35% int* b[10000];
36% int* c[10000];
37% //... fill in a and b ...
38% big_sum(a, b, c, 10000);
39% \end{lstlisting} &\begin{lstlisting}
40% void big_sum(int* a, int* b,
41%                int* out,
42%                size_t length)
43% {
44%       range ar(a, a + length);
45%       range br(b, b + length);
46%       range or(out, out + length);
47%       parfor( ai, bi, oi,
48%       [](int* ai, int* bi, int* oi) {
49%               oi = ai + bi;
50%       });
51% }
52%
53% int* a[10000];
54% int* b[10000];
55% int* c[10000];
56% //... fill in a and b ...
57% big_sum(a, b, c, 10000);
58% \end{lstlisting}&\begin{lstlisting}
59% void big_sum(int* a, int* b,
60%                int* out,
61%                size_t length)
62% {
63%       for (ai, bi, oi) in (a, b, out) {
64%               oi = ai + bi;
65%       }
66% }
67%
68%
69%
70%
71%
72% int* a[10000];
73% int* b[10000];
74% int* c[10000];
75% //... fill in a and b ...
76% big_sum(a, b, c, 10000);
77% \end{lstlisting}
78% \end{tabular}
79% \end{center}
80%
81
82
83\section{Multiple Paradigms}
84
85
86\section{Transactions}
Note: See TracBrowser for help on using the repository browser.