Skip to main content

Lund University Publications

LUND UNIVERSITY LIBRARIES

Next-generation acceleration and code optimization for light transport in turbid media using GPUs

Alerstam, Erik LU ; Lo, W.C.Y ; Han, T.D ; Rose, J ; Andersson-Engels, Stefan LU and Lilge, L (2010) In Biomedical Optics Express 1(2). p.658-675
Abstract
A highly optimized Monte Carlo (MC) code package for simulating light transport is developed on the latest graphics processing unit (GPU) built for general-purpose computing from NVIDIA - the Fermi GPU. In biomedical optics, the MC method is the gold standard approach for simulating light transport in biological tissue, both due to its accuracy and its flexibility in modelling realistic, heterogeneous tissue geometry in 3-D. However, the widespread use of MC simulations in inverse problems, such as treatment planning for PDT, is limited by their long computation time. Despite its parallel nature, optimizing MC code on the GPU has been shown to be a challenge, particularly when the sharing of simulation result matrices among many parallel... (More)
A highly optimized Monte Carlo (MC) code package for simulating light transport is developed on the latest graphics processing unit (GPU) built for general-purpose computing from NVIDIA - the Fermi GPU. In biomedical optics, the MC method is the gold standard approach for simulating light transport in biological tissue, both due to its accuracy and its flexibility in modelling realistic, heterogeneous tissue geometry in 3-D. However, the widespread use of MC simulations in inverse problems, such as treatment planning for PDT, is limited by their long computation time. Despite its parallel nature, optimizing MC code on the GPU has been shown to be a challenge, particularly when the sharing of simulation result matrices among many parallel threads demands the frequent use of atomic instructions to access the slow GPU global memory. This paper proposes an optimization scheme that utilizes the fast shared memory to resolve the performance bottleneck caused by atomic access, and discusses numerous other optimization techniques needed to harness the full potential of the GPU. Using these techniques, a widely accepted MC code package in biophotonics, called MCML, was successfully accelerated on a Fermi GPU by approximately 600x compared to a state-of-the-art Intel Core i7 CPU. A skin model consisting of 7 layers was used as the standard simulation geometry. To demonstrate the possibility of GPU cluster computing, the same GPU code was executed on four GPUs, showing a linear improvement in performance with an increasing number of GPUs. The GPU-based MCML code package, named GPU-MCML, is compatible with a wide range of graphics cards and is released as an open-source software in two versions: an optimized version tuned for high performance and a simplified version for beginners (http://code.google.com/p/gpumcml). (Less)
Please use this url to cite or link to this publication:
author
; ; ; ; and
organization
publishing date
type
Contribution to journal
publication status
published
subject
keywords
Light propagation in tissues, Photon migration, Turbid media, Multiple scattering
in
Biomedical Optics Express
volume
1
issue
2
pages
658 - 675
publisher
Optical Society of America
external identifiers
  • scopus:79953117377
  • pmid:21258498
ISSN
2156-7085
DOI
10.1364/BOE.1.000658
language
English
LU publication?
yes
id
f6d90fc0-11f6-4269-ba04-6795307b9a93 (old id 2257154)
date added to LUP
2016-04-04 10:26:51
date last changed
2022-02-28 18:26:17
@article{f6d90fc0-11f6-4269-ba04-6795307b9a93,
  abstract     = {{A highly optimized Monte Carlo (MC) code package for simulating light transport is developed on the latest graphics processing unit (GPU) built for general-purpose computing from NVIDIA - the Fermi GPU. In biomedical optics, the MC method is the gold standard approach for simulating light transport in biological tissue, both due to its accuracy and its flexibility in modelling realistic, heterogeneous tissue geometry in 3-D. However, the widespread use of MC simulations in inverse problems, such as treatment planning for PDT, is limited by their long computation time. Despite its parallel nature, optimizing MC code on the GPU has been shown to be a challenge, particularly when the sharing of simulation result matrices among many parallel threads demands the frequent use of atomic instructions to access the slow GPU global memory. This paper proposes an optimization scheme that utilizes the fast shared memory to resolve the performance bottleneck caused by atomic access, and discusses numerous other optimization techniques needed to harness the full potential of the GPU. Using these techniques, a widely accepted MC code package in biophotonics, called MCML, was successfully accelerated on a Fermi GPU by approximately 600x compared to a state-of-the-art Intel Core i7 CPU. A skin model consisting of 7 layers was used as the standard simulation geometry. To demonstrate the possibility of GPU cluster computing, the same GPU code was executed on four GPUs, showing a linear improvement in performance with an increasing number of GPUs. The GPU-based MCML code package, named GPU-MCML, is compatible with a wide range of graphics cards and is released as an open-source software in two versions: an optimized version tuned for high performance and a simplified version for beginners (http://code.google.com/p/gpumcml).}},
  author       = {{Alerstam, Erik and Lo, W.C.Y and Han, T.D and Rose, J and Andersson-Engels, Stefan and Lilge, L}},
  issn         = {{2156-7085}},
  keywords     = {{Light propagation in tissues; Photon migration; Turbid media; Multiple scattering}},
  language     = {{eng}},
  number       = {{2}},
  pages        = {{658--675}},
  publisher    = {{Optical Society of America}},
  series       = {{Biomedical Optics Express}},
  title        = {{Next-generation acceleration and code optimization for light transport in turbid media using GPUs}},
  url          = {{https://lup.lub.lu.se/search/files/5541138/2365651.pdf}},
  doi          = {{10.1364/BOE.1.000658}},
  volume       = {{1}},
  year         = {{2010}},
}