Photon Propagation Code
Sources

<--CPU/GPU (CUDA)-->

ini.cxx Makefile f2k.cxx
ppc.cu src pro.cu
<--CPU/GPU (OpenCL)-->
ini.cxx Makefile f2k.cxx
ppc.cxx src pro.cxx
<--icetray-->
i3ppc.cxx i3ppc.h ppc.h
<--OLD/ASM-->
ppc.cxx Makefile ice.cxx
ppc.asm dat.asm ini.asm
pro.asm rot.asm gsx.asm
geo.awk ice.awk rnd.awk
<--datafiles (SPICE MIE)-->
rnd.txt cfg.txt icemodel.dat
geo-f2k wv.dat icemodel.par
tilt.dat tilt.par as.dat
Performance comparison on Core i7 2.67 GHz. details

flasherf2k muon
Original:1/2.081/2.70
CPU c++:1.001.00
Assembly:1.251.37
GTX 295:147.157.
GTX 480:210.204.

The CPU/GPU code compiled for the CPU is taken as the 1.0 reference. GTX 295 numbers are for 1 GPU. These tests were run on the cudatest computer. Options ASENS, TILT, MKOW, ANGW, and LONG were disabled in the CPU/GPU version to match the configuration of the original and assembly versions. i3mcml achieves a comparable level of performance.

Relative performance of the OpenCL vs. CUDA versions of the code is summarized in this table. OpenCL version is on average ~ 30% slower.

South Pole ICE model
former ppc homepage
spice and ppc paper (in progress)
readme file and history of changes

Compilation notes:
  • GPU version needs the CUDA driver and toolkit. You do not need the SDK. Use the latest driver/toolkit versions available for your platform. If needed, source the src file before compiling or running the compiled executable (CUDA location in this file must match your toolkit configuration).
  • Assembly version is compiled as a 32-bit executable, which can be used on any 32- or 64-bit computer with an i386/SSE2 instruction set. The datafiles become part of the executable, so if you change any of them (e.g., icemodel.dat) be sure to recompile.