You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I would like to see if fast-carpenter can support and be accelerated with GPUs, especially as GPUs are appearing more (and in larger numbers) in HEP computing clusters and supercomputers. I'm testing fast-carpenter with the Nvidia RAPIDS framework as that's a simple implementation of python GPU support which uses CUDA under the hood asnaylor@755ea35.
Using rapids=0.14 python=3.6.
I replaced import pandas with import cudf and ran pytest:
As demonstrated by the pytest results currently cudf does not have implementations for every pandas function as not every function is faster on GPU (so should just fall back to cpu pandas) and some implementations are still being written.
I also tried CuPy, replacing import numpy with import cupy and ran pytest:
Again CuPy doesn't have all the functions Numpy does (comparison table here) and sometimes the behaviour is slightly different. One of the issues is that it seems like it might not play well with awkward arrays.
Although initial testing has proven unsuccessful to provide GPU support to fast-carpenter through Nvidia RAPIDS, I think potentially with some tweaking of the code we might be able to use cuDF to accelerate parts of the code or maybe if other people know of any other libraries that run pandas or numpy on GPUs we could use that. I would suggest having a separate pip package (e.g. fast-carpenter-gpu) for GPU support like TensorFlow does, this way we could code some of the functions slightly differently to take advantage of the GPU.
It might be worth also investigating Dask-cuDF as cuDF is only supports single GPUs where as Dask-cuDF allows you to use cuDF across multiple GPUs on a single machine or multiple GPUs across many machines in a cluster.
I appreciate this is a long git issue but what are your thoughts?
The text was updated successfully, but these errors were encountered:
With awkward 1 (#141) we will get CUDA kernels for the individual arrays.
This, combined with improved Numba compatibility should give us a lot of flexibility for the implementation:
Once the transition to awkward 1 is done, it would be good to revisit this issue and move the core-algorithms to GPU. Recently tensorflow has merged the GPU and CPU packages - maybe we can go the same route. One of the Swift-HEP propositions was for code to select the best implementation based on hardware available - I think this would make sense here as well. Having one package and identical interface (YAML) to both CPU and GPU versions is nice from a user perspective. To start we could add a --gpu flag to fast_carpenter.
I would like to see if
fast-carpenter
can support and be accelerated with GPUs, especially as GPUs are appearing more (and in larger numbers) in HEP computing clusters and supercomputers. I'm testingfast-carpenter
with the Nvidia RAPIDS framework as that's a simple implementation of python GPU support which uses CUDA under the hood asnaylor@755ea35.Using
rapids=0.14 python=3.6
.I replaced
import pandas
withimport cudf
and ran pytest:As demonstrated by the pytest results currently cudf does not have implementations for every pandas function as not every function is faster on GPU (so should just fall back to cpu pandas) and some implementations are still being written.
I also tried CuPy, replacing
import numpy
withimport cupy
and ran pytest:Again CuPy doesn't have all the functions Numpy does (comparison table here) and sometimes the behaviour is slightly different. One of the issues is that it seems like it might not play well with awkward arrays.
Although initial testing has proven unsuccessful to provide GPU support to
fast-carpenter
through Nvidia RAPIDS, I think potentially with some tweaking of the code we might be able to use cuDF to accelerate parts of the code or maybe if other people know of any other libraries that run pandas or numpy on GPUs we could use that. I would suggest having a separate pip package (e.g.fast-carpenter-gpu
) for GPU support like TensorFlow does, this way we could code some of the functions slightly differently to take advantage of the GPU.It might be worth also investigating Dask-cuDF as cuDF is only supports single GPUs where as Dask-cuDF allows you to use cuDF across multiple GPUs on a single machine or multiple GPUs across many machines in a cluster.
I appreciate this is a long git issue but what are your thoughts?
The text was updated successfully, but these errors were encountered: