  On the path toward developing the first fusion energy devices, plasma
simulations have become indispensable tools for supporting the design and
development of fusion machines. Among these critical simulation tools, BIT1 is
an advanced Particle-in-Cell code with Monte Carlo collisions, specifically
designed for modeling plasma-material interaction and, in particular, analyzing
the power load distribution on tokamak divertors. The current implementation of
BIT1 relies exclusively on MPI for parallel communication and lacks support for
GPUs. In this work, we address these limitations by designing and implementing
a hybrid, shared-memory version of BIT1 capable of utilizing GPUs. For
shared-memory parallelization, we rely on OpenMP and OpenACC, using a
task-based approach to mitigate load-imbalance issues in the particle mover. On
an HPE Cray EX computing node, we observe an initial performance improvement of
approximately 42%, with scalable performance showing an enhancement of about
38% when using 8 MPI ranks. Still relying on OpenMP and OpenACC, we introduce
the first version of BIT1 capable of using GPUs. We investigate two different
data movement strategies: unified memory and explicit data movement. Overall,
we report BIT1 data transfer findings during each PIC cycle. Among BIT1 GPU
implementations, we demonstrate performance improvement through concurrent GPU
utilization, especially when MPI ranks are assigned to dedicated GPUs. Finally,
we analyze the performance of the first BIT1 GPU porting with the NVIDIA Nsight
tools to further our understanding of BIT1 computational efficiency for
large-scale plasma simulations, capable of exploiting current supercomputer
infrastructures.
