\begin{table}[h]
	\centering
	\small
	\vspace{-0mm}
	\begin{threeparttable}
		\caption{Capabilities and capacities of different Parsl executors and other parallel Python tools.\vspace{-3ex}}
		\vspace{0mm}
		\begin{tabular}{| c| c|c|c|}
			\hline
			\multirow{2}{*}{\textbf{Framework}} & \textbf{Maximum}   & \textbf{Maximum} & \textbf{Maximum} \\
			& \textbf{\# of workers}\tnote{\dag} & \textbf{\# of nodes}\tnote{\dag} & \textbf{tasks/second}\tnote{$\ddagger$} \\ \hline
			Parsl-IPP & \num{2048} & 64  & 330 \\ \hline
			Parsl-HTEX & \num{65536} & \num{2048}\tnote{*}  & \num{1181}\\ \hline
			Parsl-EXEX & \num{262144} & \num{8192}\tnote{*}  & \num{1176}\\ \hline
			FireWorks & \num{1024} & 32   & 4\\ \hline
			Dask distributed & \num{8192} & 256  & \num{2617}\\ \hline
		\end{tabular}
		\begin{tablenotes}\small
			\item[*] Limited by the the number of nodes we could allocate on Blue Waters during our experiments; this is not a scalability limit.
			\item[\dag] These results are specific to Blue Waters, one core per worker, and using default configuration as in each framework's documentation.
			\item[$\ddagger$] The results in this column are collected on Midway.
		\end{tablenotes}
		\label{table:maxWorkers}\vspace{-0in}
	\end{threeparttable}
\end{table}
Framework Maximum
# of workers† Maximum
# of nodes† Maximum
tasks/second‡
Parsl-IPP 2048 64 330
Parsl-HTEX 65 536 2048* 1181
Parsl-EXEX 262 144 8192* 1176
FireWorks 1024 32 4
Dask distributed 8192 256 2617