Skip to content

Latest commit

 

History

History
1008 lines (931 loc) · 45.1 KB

CHANGELOG.md

File metadata and controls

1008 lines (931 loc) · 45.1 KB

Change Log / Release Log for PIConGPU

0.2.0 "Beta"

Date: 2016-11-24

Beta release: full multiple species support & openPMD

This release of PIConGPU, providing "beta" status for users, implements full multi-species support for an arbitrary number of particle species and refactors our main I/O to be formatted as openPMD (see http://openPMD.org). Several major features have been implemented and stabilized, highlights include refactored ADIOS support (including checkpoints), a classical radiation reaction pusher (based on the work of M. Vranic/IST), parallel particle-IDs, generalized on-the-fly particle creation, advanced field ionization schemes and unification of plugin and file names.

This is our last C++98 compatible release (for CUDA 5.5-7.0). Upcoming releases will be C++11 only (CUDA 7.5+), which is already supported in this release, too.

Thank you to Axel Huebl, René Widera, Alexander Grund, Richard Pausch, Heiko Burau, Alexander Debus, Marco Garten, Benjamin Worpitz, Erik Zenker, Frank Winkler, Carlchristian Eckert, Stefan Tietze, Benjamin Schneider, Maximilian Knespel and Michael Bussmann for contributions to this release!

Changes to "0.1.0"

Input file changes: the generalized versions of input files are as always in src/picongpu/include/simulation_defines/.

.param file changes:

  • all const parameters are now BOOST_CONSTEXPR_OR_CONST
  • add pusher with radiation reaction (Reduced Landau Lifshitz) #1216
  • add manipulator for setting boundElectrons<> attribute #768
  • add PMACC_CONST_VECTOR for ionization energies #768 #1022
  • ionizationEnergies.param #865
  • speciesAttributes.param: add ionization model ADK (Ammosov-Delone-Krainov) for lin. pol. and circ. pol cases #922 #1541
  • speciesAttributes.param: rename BSI to BSIHydrogenLike, add BSIStarkShifted and BSIEffectiveZ #1423
  • laserConfig.param: documentation fixed and clearified #1043 #1232 #1312 #1477
  • speciesAttributes.param: new required traits for for each attribute #1483
  • species*.param: refactor species mass/charge definition (relatve to base mass/charge) #948
  • seed.param: added for random number generator seeds #951
  • remove use of native double and float #984 #991
  • speciesConstants.param: move magic gamma cutoff value from radition plugin here #713
  • remove invalid typename #926 #944

.unitless file changes:

  • add pusher with radiation reaction (Reduced Landau Lifshitz) #1216
  • pusher traits simplified #1515
  • fieldSolver: numericalCellType is now a namespace not a class #1319
  • remove usage of native double and float #983 #991
  • remove invalid typename #926
  • add new param file: synchrotronPhotons.param #1354
  • improve the CFL condition depending on dimension in KHI example #774
  • add laserPolynom as option to componentsConfig.param #772

tbg: template syntax

Please be aware that templates (.tpl) used by tbg for job submission changed slightly. Simply use the new system-wise templates from src/picongpu/submit/. #695 #1609 #1618

Due to unifications in our command line options (plugins) and multi-species support, please update your .cfg files with the new namings. Please visit doc/TBG_macros.cfg and our wiki for examples.

New Features:

  • description of 2D3V simulations is now scaled to a user-defined "dZ" depth looking like a one-z-cell 3D simulation #249 #1569 #1601
  • current interpolation/smoothing added #888
  • add synchrotron radiation of photons from QED- and classical spectrum #1354 #1299 #1398
  • species attributes:
    • particle ids for tracking #1410
    • self-describing units and dimensionality #1261
    • add trait GetDensityRatio, add attribute densityRatio
    • current solver is now a optinal for a species #1228
    • interpolation is now a optional attribute for a species #1229
    • particle pusher is now a optional attribute for a species #1226
    • add species shape piecewise biqudratic spline P4S #781
  • species initialization:
    • add general particle creation module #1353
    • new manipulators to clone electrons from ions #1018
    • add manipulator to change the in cell position after gas creation #947 #959
    • documentation #961
  • species pushers:
    • enable the way for substepping particle pushers as RLL
      • add pusher with radiation reaction (Reduced Landau Lifshitz) #1216
      • enable substepping in pushers #1201 #1215 #1339 #1210 #1202 #1221
      • add Runge Kutta solver #1177
      • enable use of macro-particle weighting in pushers #1213
    • support 2D for all pushers #1126
  • refactor gas profile definitions #730 #980 #1265
  • extend FieldToParticleInterpolation to 1D- and 2D-valued fields #1452
  • command line options:
    • parameter validation #863
    • support for --softRestarts <n> to loop simulations #1305
    • a simulation --author can be specified (I/O, etc.) #1296 #1297
    • calling ./picongpu without arguments triggers --help #1294
  • FieldTmp:
    • scalar fields renamed #1259 #1387 #1523
    • momentum over component #1481
  • new traits:
    • GetStringProperties for all solvers and species flags #1514 #1519
    • MacroWeighted and WeightingPower #1445
  • speedup current deposition solver ZigZag #927
  • speedup particle operations with collective atomics #1016
  • refactor particle update call #1377
  • enable 2D for single particle test #1203
  • laser implementations:
    • add phase to all laser implementations #708
    • add in-plane polarization to TWTS laser #852
    • refactor specific float use in laser polynom #782
    • refactored TWTS laser #704
  • checkpoints: now self-test if any errors occured before them #897
  • plugins:
    • add 2D support for SliceFieldPrinter plugin #845
    • notify plugins on particles leaving simulation #1394
    • png: threaded, less memory hungry in 2D3V, with author information #995 #1076 #1086 #1251 #1281 #1292 #1298 #1311 #1464 #1465
    • openPMD support in I/O
      • HDF5 and ADIOS plugin refactored #1427 #1428 #1430 #1478 #1517 #1520 #1522 #1529
      • more helpers added #1321 #1323 #1518
      • both write now in a sub-directory in simOutput: h5/ and bp/ #1530
      • getUnit and getUnitDimension in all fields & attributes #1429
    • ADIOS:
      • prepare particles on host side befor dumping #907
      • speedup with OpenMP #908
      • options to control striping & meta file creation #1062
      • update to 1.10.0+ #1063 #1557
      • checkpoints & restarts implemented #679 #828 #900
    • speedup radioation #996
    • add charge conservation plugin #790
    • add calorimeter plugin #1376
    • radiation:
      • ease restart on command line #866
      • output is now openPMD compatible #737 #1053
      • enable compression for hdf5 output #803
      • refactor specific float use #778
      • refactor radiation window function for 2D/3D #799
  • tools:
    • add error when trying to compile picongpu with CUDA 7.5 w/o C++11 #1384
    • add tool to load hdf5 radiation data into python #1332
    • add uncrustify tool (format the code) #767
    • live visualisation client: set fps panal always visible #1240
    • tbg:
      • simplify usage of -p|--project #1267
      • transfers UNIX-permisions from *.tpl to submit.start #1140
    • new charge conservation tools #1102, #1118, #1132, #1178
    • improve heating tool to support unfinished and single simulations #729
    • support for python3 #1134
    • improve graphics of numerical heating tool #742
    • speed up sliceFieldReader.py #1399
  • ionization models:
    • add possibility for starting simulation with neutral atoms #768
    • generalize BSI: rename BSI to BSIHydrogenLike, add BSIStarkShifted and BSIEffectiveZ #1423
    • add ADK (Ammosov-Delone-Krainov) for lin. pol. and circ. pol cases #922 #1490 #1541 #1542
    • add Keldysh #1543
    • make use of faster RNG for Monte-Carlo with ionization #1542 #1543
  • support radiation + ionization in LWFA example #868
  • libPMacc:
    • running with synchronized (blocking) kernels now adds more useful output #725
    • add RNGProvider for persistent PRNG states #1236, #1493
    • add MRG32k3a RNG generator #1487
    • move readCheckpointMasterFile to PMacc #1498
    • unify cuda error printing #1484
    • add particle ID provider #1409 #1373
    • split off HostDeviceBuffer from GridBuffer #1370
    • add a policy to GetKeyFromAlias #1252
    • Add border mapping #1133, #1169 #1224
    • make cuSTL gather accept CartBuffers and handle pitches #1196
    • add reference accessors to complex type #1198
    • add more rounding functions #1099
    • add conversion operator from uint3 to Dataspace #1145
    • add more specializations to GetMPI_StructAsArray #1088
    • implement cartBuffer conversion for HostBuffer #1092
    • add a policy for async communication #1079
    • add policies for handling particles in guard cells #1077
    • support more types in atomicAddInc and warpBroadcast #1078
    • calculate better seeds #1040 #1046
    • move MallocMCBuffer to PMacc #1034
    • move TypeToPointerPair to PMacc #1033
    • add 1D, 2D and 3D linear interpolation cursor #1217 #1448
    • add method 'getPluginFromType()' to PluginConnector #1393
    • math:
      • add abs, asin, acos, atan, log10, fmod, modf, floor to algorithms::math #837 #1218 #1334 #1362 #1363 #1374 #1473
      • precisionCast<> for PMacc::math::Vector<> #746
      • support for boost::mpl::integral_c<> in math::CT::Vector<> #802
      • add complex support #664
    • add cuSTL/MapTo1DNavigator #940
    • add 2D support for cuSTL::algorithm::mpi::Gather #844
    • names for exchanges #1511
    • rename EnvMemoryInfo to MemoryInfo #1301
    • mallocMC (Memory Allocator for Many Core Architectures) #640 #747 #903 #977 #1171 #1148
      • remove HeapDataBox, RingDataBox, HeapBuffer, RingBuffer #640
      • out of heap memory detection #756
      • support to read mallocMC heap on host side #905
    • add multi species support for plugins #794
    • add traits:
      • GetDataBoxType #728
      • FilterByFlag #1219
      • GetUniqueTypeId #957 #962
      • GetDefaultConstructibleType #1045
      • GetInitializedInstance #1447
      • ResolveAliasFromSpecies #1451
      • GetStringProperties #1507
    • add pointer class for particles FramePointer #1055
    • independent sizes on device for GridBuffer<>::addExchange
    • Communicator: query periodic directions #1510
    • add host side support for kernel index mapper #902
    • optimize size of particle frame for border frames #949
    • add pre-processor macro for struct generation #972
    • add warp collective atomic function #1013
    • speedup particle operations with collective atomics #1014
    • add support to deselect unknown attributes in a particle #1524
    • add boost.test #1245
      • test for HostBufferIntern #1258
      • test for setValue() #1268
  • add resource monitor #1456
  • add MSVC compatibility #816 #821 #931
  • const box'es return const pointer #945
  • refactor host/device identifier #946

Bug Fixes:

  • laser implementations:
    • make math calls more robust & portable #1160
    • amplitude of Gaussian beam in 2D3V simulations #1052 #1090
    • avoid non zero E-field integral in plane wave #851
    • fix length setup of plane wave laser #881
    • few-cycle wavepacket #875
    • fix documentaion of a_0 conversation #1043
  • FieldTmp Lamor power calculation #1287
  • field solver:
    • stricter condition checks #880
    • 2D3V NoSolver did not compile #1073
    • more experimental methods for DS #894
    • experimental: possible out of memory access in directional splitting #890
  • moving window moved not exactly with c #1273 #1337 #1549
  • 2D3V: possible race conditions for very small, non-default super-cells in current deposition (StrideMapping) #1405
  • experimental: 2D3V zigzag current deposition fix for v_z != 0 #823
  • vaccuum: division by zero in Quiet particle start #1527
  • remove variable length arrays #932
  • gas (density) profiles:
    • gasFreeFormula #988 #899
    • gaussianCloud #807 #1136 #1265
  • C++ should catch by const reference #1295
  • fix possible underflow on low memory situations #1188
  • C++11 compatibility: use BOOST_STATIC_CONSTEXPR where possible #1165
  • avoid CUDA 6.5 int(bool) cast bug #680
  • PMacc detection in CMake #808
  • libPMacc:
    • EventPool could run out of free events, potential deadlock #1631
    • Particle<>: avoid using CUDA lmem #1579
    • possible deadlock in event system could freeze simulation #1326
    • HostBuffer includes & constructor #1255 #1596
    • const references in Foreach #1593
    • initialize pointers with NULL before cudaMalloc #1180
    • report device properties of correct GPU #1115
    • rename types.h to pmacc_types.hpp #1367
    • add missing const for getter in GridLayout #1492
    • Cuda event fix to avoid deadlock #1485
    • use Host DataBox in Hostbuffer #1467
    • allow 1D in CommunicatorMPI #1412
    • use better type for params in vector #1223
    • use correct sqrt function for abs(Vector) #1461
    • fix CMAKE_PREFIX_PATHs #1391, #1390
    • remove unnecessary floating point ops from reduce #1212
    • set pointers to NULL before calling cudaMalloc #1180
    • do not allocate memory if not gather root #1181
    • load plugins in registered order #1174
    • C++11 compatibility: use BOOST_STATIC_CONSTEXPR where possible #1176 #1175
    • fix usage of boost::result_of #1151
    • use correct device number #1115
    • fix vector shrink function #1113
    • split EventSystem.hpp into hpp and tpp #1068
    • fix move operators of CartBuffer #1091
    • missing includes in MapTuple #627
    • GoL example: fix offset #1023
    • remove deprecated throw declarations #1000
    • cuSTL:
      • cudaPitchedPtr.xsize used wrong #1234
      • gather for supporting static load balancing #1244
      • reduce #936
      • throw exception on cuda error #1235
      • DeviceBuffer assign operator #1375, #1308, #1463, #1435, #1401, #1220, #1197
      • Host/DeviceBuffers: Contructors (Pointers) #1094
      • let kernel/runtime/Foreach compute best BlockDim #1309
    • compile with CUDA 7.0 #748
    • device selection with process exclusive enabled #757
    • math::Vector<> assignment #806
    • math::Vector<> copy constructor #872
    • operator[] in ConstVector #981
    • empty AllCombinations<...> #1230
    • racecondition in kernelShiftParticles #1049
    • warning in FieldManipulator #1254
    • memory pitch bug in MultiBox and PitchedBox #1096
    • math::abs() for the type double #1470
    • invalid kernel call in kernelSetValue<> #1407
    • data alignment for kernel parameter #1566
    • rsqrt usage on host #967
    • invalid namespace qualifier #968
    • missing namespace prefix #971
  • plugins:
    • radiation:
      • enable multi species for radiation plugin #1454
      • compile issues with math in radiation #1552
      • documentation of radiation observer setup #1422
      • gamma filter in radiation plugin #1421
      • improve vector type name encapsuling #998
      • saveguard restart #716
    • CUDA 7.0+ warning in PhaseSpace #750
    • racecondition in ConcatListOfFrames #1278
    • illegal memory acces in Visualisation #1526
    • HDF5 restart: particle offset overflow fixed #721
  • tools:
    • mpiInfo: add missing include #786
    • actually exit when pression no in compilesuite #1411
    • fix incorrect mangling of params #1385
    • remove deprecated throw declarations #1003
    • make tool python3 compatible #1416
    • trace generating tool #1264
    • png2gas memory leak fixed #1222
    • tbg:
      • quoting interpretation #801
      • variable assignments stay in .start files #695 #1609
      • multiple variable use in one line possible #699 #1610
      • failing assignments at template evaluation time keep vars undefined #1611
    • heating tool supports multi species #729
    • fix numerical heating tool normalization #825
    • fix logic behind fill color of numerical heating tool #779
  • libSplash minimum version check #1284

Misc:

  • 2D3V simulations are now honoring the cell "depth" in z to make density interpretations easier #1569
  • update documentation for dependencies and installation #1556, 1557, #1559, #1127
  • refactor usage of several math functions #1462, #1468
  • FieldJ interface clear() replaced with an explicit assign(x) #1335
  • templates for known systems updated:
    • renaming directories into "cluster-insitutition"
    • tbg copies cmakeFlags now #1101
    • tbg aborts if mkdir fails #797
    • *tpl & *.profile.example files updated
    • system updates: #937 #1266 #1297 #1329 #1364 #1426 #1512 #1443 #1493
      • Lawrencium (LBNL)
      • Titan/Rhea (ORNL)
      • Piz Daint (CSCS)
      • Taurus (TUD) #1081 #1130 #1114 #1116 #1111 #1137
  • replace deprecated CUDA calls #758
  • remove support for CUDA devices with sm_10, sm_11, sm_12 and sm_13 #813
  • remove unused/unsupported/broken plugins #773 843
    • IntensityPlugin, LiveViewPlugin(2D), SumCurrents, divJ #843
  • refactor value_identifier #964
  • remove native type double and float #985 #990
  • remove __startAtomicTransaction() #1233
  • remove __syncthreads() after shared memory allocation #1082
  • refactor ParticleBox interface #1243
  • rotating root in GatherSlice (reduce load of master node) #992
  • reduce GatherSlice memory footprint #1282
  • remove None type of ionize, pusher #1238 #1227
  • remove math function implementations from Vector.hpp
  • remove unused defines #921
  • remove deprecated thow declaration #918
  • remove invalid typename #917 #933
  • rename particle algorithms from ...clone... to ...derive... #1525
  • remove math functions from Vector.hpp #1472
  • raditation plugin remove unint with uint32_t #1007
  • GoL example: CMake modernized #1138
  • INSTALL.md
    • moved from /doc/ to /
    • now in root of the repo #1521
    • add environment variable $PICHOME #1162
    • more portable #1164
    • arch linux instructions #1065
  • refactor ionization towards independence from Particle class #874
  • update submit templates for hypnos #860 #861 #862
  • doxygen config and code modernized #1371 #1388
  • cleanup of stdlib includes #1342 #1346 #1347 #1348 #1368 #1389
  • boost 1.60.0 only builds in C++11 mode #1315 #1324 #1325
  • update minimal CMake version to 3.1.0 #1289
  • simplify HostMemAssigner #1320
  • add asserts to cuSTL containers #1248
  • rename TwistVectorAxes -> TwistComponents (cuSTL) #893
  • add more robust namespace qualifiers #839 #969 #847 #974
  • cleanup code #885 #814 #815 #915 #920 #1027 #1011 #1009
  • correct spelling #934 #938 #941
  • add compile test for ALL pushers #1205
  • tools:
    • adjust executable rights and shebang #1110 #1107 #1104 #1085 #1143
    • live visualization client added #681 #835 #1408
  • CMake
    • modernized #1139
    • only allow out-of-source builds #1119
    • cleanup score-p section #1413
    • add OpenMP support #904
  • shipped third party updates:
    • restructured #717
    • cuda_memtest #770 #1159
    • CMake modules #1087 #1310 #1533
  • removed several -Wshadow warnings #1039 #1061 #1070 #1071

0.1.0

Date: 2015-05-21

This is version 0.1.0 of PIConGPU, a pre-beta version.

Initial field ionization support was added, including the first model for BSI. The code-base was substantially hardened, fixing several minor and major issues. Especially, several restart related issues, an issue with 2D3V zigzack current calculation and a memory issue with Jetson TK1 boards were fixed. A work-around for a critical CUDA 6.5 compiler bug was applied to all affected parts of the code.

Changes to "Open Beta RC6"

.param file changes: See full syntax for each file at https://github.com/ComputationalRadiationPhysics/picongpu/tree/0.1.0/src/picongpu/include/simulation_defines/param

  • componentsConfig.param & gasConfig.param fix typo gasHomogeneous #577
  • physicalConstants.param: new variable GAMMA_THRESH #669
  • speciesAttributes.param: new identifier boundElectrons and new aliases ionizer, atomicNumbers
  • ionizationEnergies.param, ionizerConfig.param: added

.unitless file changes: See full syntax for each file at https://github.com/ComputationalRadiationPhysics/picongpu/tree/0.1.0/src/picongpu/include/simulation_defines/unitless

  • gasConfig.unitless: typo in gasHomogeneous #577
  • speciesAttributes.unitless: new unit for boundElectrons identifier
  • speciesDefinition.unitless: new traits GetCharge, GetMass, GetChargeState and added ionizers
  • ionizerConfig.unitless: added

New Features:

  • initial support for field ionization:
    • basic framework and BSI #595
    • attribute (constant flag) for proton and neutron number #687 #731
    • attribute boundElectrons #706
  • tools:
    • python scripts:
      • new reader for SliceFieldPrinter plugin #578
      • new analyzer tool for numerical heating #672 #692
    • cuda_memtest:
      • 32bit host system support (Jetson TK1) #583
      • works without nvidia-smi, grep or gawk - optional with NVML for GPU serial number detection (Jetson TK1) #626
    • splash2txt:
      • removed build option S2T_RELEASE and uses CMAKE_BUILD_TYPE #591
    • tbg:
      • allows for defaults for -s, -t, -c via env vars #613 #622
    • 3D live visualization: server tool that collects clients and simulations was published #641
  • new/updated particle traits and attributes:
    • getCharge, getMass #596
    • attributes are now automatically initialized to their generic defaults #607 #615
  • libPMacc:
    • machine-dependent UInt vector class is now split in explicit UInt32 and UInt64 classes #665
    • nvidia random number generators (RNG) refactored #711
  • plugins:
    • background fields do now affect plugins/outputs #600
    • Radiation uses/requires HDF5 output #419 #610 #628 #646 #716
    • SliceFieldPrinter supports FieldJ, output in one file, updated command-line syntax #548
    • CountParticles, EnergyFields, EnergyParticles support restarts without overwriting their previous output #636 #703

Bug Fixes:

  • CUDA 6.5: int(bool) casts were broken (affects plugins BinEnergyParticles, PhaseSpace and might had an effect on methods of the basic PIC cycle) #570 #651 #656 #657 #678 #680
  • the ZigZag current solver was broken for 2D3V if non-zero momentum-components in z direction were used (e.g. warm plasmas or purely transversal KHI) #823
  • host-device-shared memory (SoC) support was broken (Jetson TK1) #633
  • boost 1.56.0+ support via Resolve<T> trait #588 #593 #594
  • potential race condition in field update and pusher #604
  • using --gridDist could cause a segfault when adding additional arguments, e.g., in 2D3V setups #638
  • MessageHeader (used in png and 2D live visualization) leaked memory #683
  • restarts with HDF5:
    • static load-balancing via --gridDist in y-direction was broken #639
    • parallel setups with particle-empty GPUs hung with HDF5 #609 #611 #642
    • 2D3V field reads were broken (each field's z-component was not initialized with the checkpointed values again, e.g., B_z) #688 #689
    • loading more than 4 billion global particles was potentially broken #721
  • plugins:
    • Visualization (png & 2D live sim) memory bug in double precision runs #621
    • ADIOS
      • storing more than 4 billion particles was broken #666
      • default of adios.aggregators was broken (now = MPI_Size) #662
      • parallel setups with particle-empty GPUs did hang #661
    • HDF5/ADIOS output of grid-mapped particle energy for non-relativistic particles was zero #669
  • libPMacc:
    • CMake: path detection could fail #796 #808
    • DeviceBuffer<*,DIM3>::getPointer() was broken (does not affect PIConGPU) #647
    • empty super-cell memory foot print reduced #648
    • float2int return type should be int #623
    • CUDA 7:
      • cuSTL prefixed templates with _ are not allowed; usage of static dim member #630
      • explicit call to template-ed operator() to avoid waring #750
      • EnvironmentController caused a warning about extendend friend syntax #644
    • multi-GPU nodes might fail to start up when not using default compute mode with CUDA 7 drivers #643

Misc:

  • HDF5 support requires libSplash 1.2.4+ #642 #715
  • various code clean-up for MSVC #563 #564 #566 #624 #625
  • plugins:
    • removed LineSliceFields #590
    • png plugin write speedup 2.3x by increasing file size about 12% #698
  • updated contribution guidelines, install, cfg examples #601 #598 #617 #620 #673 #700 #714
  • updated module examples and cfg files for:
    • lawrencium (LBL) #612
    • titan (ORNL) #618
    • hypnos (HZDR) #670
  • an Empty example was added, which defaults to the setup given by all .param files in default mode (a standard PIC cycle without lasers nor particles), see src/picongpu/include/simulation_defines/ #634
  • some source files had wrong file permissions #668

Open Beta RC6

Date: 2014-11-25

This is the 6th release candidate, a pre-beta version.

Initial "multiple species" support was added for flexible particles, but is yet still limited to two species. The checkpoint system was refactored and unified, also incooperating extreme high file I/O bandwidth with ADIOS 1.7+ support. The JetsonTK1 development kit (32bit ARM host side) is now experimentally supported by libPMacc/PIConGPU. The ZigZag current deposition scheme was implemented providing 40% to 50% speedup over our optimized Esirkepov implementation.

Changes to "Open Beta RC5"

.param file changes:

  • Restructured file output control (HDF5/ADIOS), new fileOutput.param #495
  • componentsConfig.param: particle pushers and current solvers moved to new files:
    • species.param: general definitions to change all species at once (pusher, current solver)
    • pusherConfig.param: special tweaks for individual particle pushers, forward declarations restructured
    • particleConfig.param: shapes moved to species.param, still defines initial momentum/temperature
    • speciesAttributes.param: defines unique attributes that can be used across all particle species
    • speciesDefinition.param: finally, assign common attributes from speciesAttributes.param and methods from species.param to define individual species, also defines a general compile time "list" of all available species
  • currentConfig.param: removed (contained only forward declarations)
  • particleDefinition.param: removed, now in speciesAttributes.param
  • laserConfig.param: new polarization/focus sections for plane wave and wave-packet: git diff --ignore-space-change beta-rc5..beta-rc6 src/picongpu/include/simulation_defines/param/laserConfig.param
  • memory.param: remove TILE_ globals and define general SuperCellSize and MappingDesc instead #435

.unitless file changes:

  • fileOutput.unitless: restructured and moved to fileOutput.param
  • checkpoint.unitless: removed some includes
  • currentConfig.unitless: removed
  • gasConfig.unitless: calculate 3D gas density (per volume) and 2D surface charge density (per area) #445
  • gridConfig.unitless: include changed
  • laserConfig.unitless: added ellipsoid for wave packet
  • physicalConstatns.unitless: GAS_DENSITY_NORMED fixed for 2D #445
  • pusherConfig.unitless: restructured, according to pusherConfig.param
  • memory.unitless: removed #435
  • particleDefinition.unitless: removed
  • speciesAttributes.unitless: added, contains traits to access species attributes (e.g., position)
  • speciesDefinition.unitless: added, contains traits to access quasi-fixed attributes (e.g., charge/mass)

New Features:

  • ZigZag current deposition scheme #436 #476
  • initial multi/generic particle species support #457 #474 #516
  • plugins
    • BinEnergy supports clean restarts without loosing old files #540
    • phase space now works in 2D3V, with arbitrary super cells and with multiple species #463 #470 #480
    • radiation: 2D support #527 #530
  • tools
    • splash2txt now supports ADIOS files #531 #545
  • plane wave & wave packet lasers support user-defined polarization #534 #535
  • wave packet lasers can be ellipses #434 #446
  • central restart file to store available checkpoints #455
  • libPMacc
    • added math::erf #525
    • experimental 32bit host-side support (JetsonTK1 dev kits) #571
    • CT::Vector refactored and new methods added #473
    • cuSTL: better 2D container support #461

Bug Fixes:

  • esirkepov + CIC current deposition could cause a deadlock in some situations #475
  • initialization for kernelSetDrift was broken (traversal of frame lists, CUDA 5.5+) #538 #539
  • the particleToField deposition (e.g. in FieldTmp solvers for analysis) forgot a small fraction of the particle #559
  • libPMacc
    • no static keyword for non-storage class functions/members (CUDA 6.5+) #483 #484
    • fix a game-of-life compile error #550
    • ParticleBox setAsLastFrame/setAsFirstFrame race condition (PIConGPU was not affected) #514
  • tools
    • tbg caused errors on empty variables, tabs, ampersands, comments #485 #488 #528 #529
  • dt/CFL ratio in stdout corrected #512
  • 2D live view: fix out-of-mem access #439 #452

Misc:

  • updated module examples and cfg files for:
    • hypnos (HZDR) #573 #575
    • taurus (ZIH/TUDD) #558
    • titan (ORNL) #489 #490 #492
  • Esirkepov register usage (stack frames) reduced #533
  • plugins
    • EnergyFields output refactored and clarified #447 #502
    • warnings fixed #479
    • ADIOS
      • upgraded to 1.7+ support #450 #494
      • meta attributes synchronized with HDF5 output #499
  • tools
    • splash2txt updates
      • requires libSplash 1.2.3+ #565
      • handle exceptions more transparently #556
      • fix listing of data sets #549 #555
      • fix warnings #553
    • BinEnergyPlot: refactored #542
    • memtest: warnings fixed #521
    • pic2xdmf: refactor XDMF output format #503 #504 #505 #506 #507 #508 #509
    • paraview config updated for hypnos #493
  • compile suite
    • reduce verbosity #467
    • remove virtual machine and add access-control list #456 #465
  • upgraded to ADIOS 1.7+ support #450 #494
  • boost 1.55.0 / nvcc <6.5 work around only applied for affected versions #560
  • boost::mkdir is now used where necessary to increase portability #460
  • libPMacc
    • ForEach refactored #427
    • plugins: notify() is now called before checkpoint() and a getter method was added to retrieve the last call's time step #541
    • DomainInfo and SubGrid refactored and redefined #416 #537
    • event system overhead reduced by 3-5% #536
    • warnings fixed #487 #515
    • cudaSetDeviceFlags: uses cudaDeviceScheduleSpin now #481 #482
    • __delete makro used more consequently #443
    • static asserts refactored and messages added #437
  • coding style / white space cleanups #520 #522 #519
  • git / GitHub / documentation
    • pyc (compiled python files) are now ignored #526
    • pull requests: description is mandatory #524
  • mallocMC cmake find_package module added #468

Open Beta RC5

Date: 2014-06-04

This is the 5th release candidate, a pre-beta version.

We rebuild our complete plugin and restart scheme, most of these changes are not backwards compatible and you will have to upgrade to libSplash 1.2+ for HDF5 output (this just means: you can not restart from a beta-rc4 checkpoint with this release).

HDF5 output with libSplash does not contain ghost/guard data any more. These information are just necessary for checkpoints (which are now separated from the regular output).

Changes to "Open Beta RC4"

.param file changes:

  • Added selection of optional window functions in radiationConfig.param #286
  • Added more window functions in radiationConfig.param #320
  • removed double #define __COHERENTINCOHERENTWEIGHTING__ 1 in some examples radiationConfig.param #323
  • new file: seed.param allows to vary the starting conditions of "identical" runs #353
  • Updated a huge amount of .param files to remove outdated comments #384
  • Update gasConfig.param/gasConfig.unitless and doc string in componentsConfig.param with new gasFromHdf5 profile #280

.unitless file changes:

  • update fileOutput.unitless and add new file checkpoints.unitless #387
  • update fieldSolver.unitless #314
  • Update radiationConfig.unitless: adjust to new supercell size naming #394
  • Corrected CFL criteria (to be less conservative) in gridConfig.unitless #371

New Features:

  • Radiation plugin: add optional window functions to reduce ringing effects caused by sharp boundaries #286 #323 #320
  • load gas profiles from png #280
  • restart mechanism rebuild #326 #375 #358 #387 #376 #417
  • new unified naming scheme for domain and window sizes/offsets #128 #334 #396 #403 #413 #421
  • base seed for binary idential simulations now exposed in seed.param #351 #353
  • particle kernels without "early returns" #359 #360
  • lowered memory foot print during shiftParticles #367
  • ShiftCoordinateSystem refactored #414
  • tools:
    • tbg warns about broken line continuations in tpl files #259
    • new CMake modules for: ADIOS, libSplash, PNGwriter #271 #304 #307 #308 #406
    • pic2xdmf
      • supports information tags #290 #294
      • one xdmf for grids and one for particles #318 #345
    • Vampir and Score-P support updated/added #293 #291 #399 #422
    • ParaView remote server description for Hypnos (HZDR) added #355 #397
  • plugins
    • former name: "modules" #283
    • completely refactored #287 #336 #342 #344
    • restart capabilites added (partially) #315 #326 #425
    • new 2D phase space analysis added (for 3D sims and one species at a time) #347 #364 #391 #407
    • libSplash 1.2+ upgrade (incompatible output to previous versions) #388 #402
  • libPMacc
    • new Environment class provides all singletons #254 #276 #404 #405
    • new particle traits, methods and flags #279 #306 #311 #314 #312
    • cuSTL ForEach on 1-3D data sets #335
    • cuSTL twistVectorAxes refactored #370
    • NumberOfExchanges replaced numberOfNeighbors implementation #362
    • new math functions: tan, float2int_rd (host) #374 #410
    • CT::Vector now supports ::shrink #392

Bug fixes:

  • CUDA 5.5 and 6.0 support was broken #401
  • command line argument parser messages were broken #281 #270 #309
  • avoid deadlock in computeCurrent, remove early returns #359
  • particles that move in the absorbing GUARD are now cleaned up #363
  • CFL criteria fixed (the old one was too conservative) #165 #371 #379
  • non-GPU-aware (old-stable) MPI versions could malform host-side pinned/page-locked buffers for subsequent cudaMalloc/cudaFree calls (core routines not affected) #438
  • ADIOS
    • particle output was broken #296
    • CMake build was broken #260 #268
  • libSplash
    • output performance drastically improved #297
  • libPMacc
    • GameOfLife example was broken #295
    • log compile broken for high log level #372
    • global reduce did not work for references/const #448
    • cuSTL assign was broken for big data sets #431
    • cuSTL reduce minor memory leak fixed #433
  • compile suite updated and messages escaped #301 #385
  • plugins
    • BinEnergyParticles header corrected #317 #319
    • PNG undefined buffer values fixed #339
    • PNG in 2D did not ignore invalid slides #432
  • examples
    • Kelvin-Helmholtz example box size corrected #352
    • Bunch/SingleParticleRadiationWithLaser observation angle fixed #424

Misc:

  • more generic 2 vs 3D algorithms #255
  • experimental PGI support removed #257
  • gcc 4.3 support dropped #264
  • various gcc warnings fixed #266 #284
  • CMake 3.8.12-2 warnings fixed #366
  • picongpu.profile example added for
    • Titan (ORNL) #263
    • Hypnos (HZDR) #415
  • documentation updated #275 #337 #338 #357 #409
  • wiki started: plugins, developer hints, simulation control, examples #288 #321 #328
  • particle interfaces clened up #278
  • ParticleToGrid kernels refactored #329
  • slide log is now part of the SIMULATION_STATE level #354
  • additional NGP current implementation removed #429
  • libPMacc
    • GameOfLife example documented #305
    • compile time vector refactored #349
    • shortened compile time template error messages #277
    • cuSTL inline documentation added #365
    • compile time operators and ForEach refactored #380
    • TVec removed in preference of CT::Vector #394
  • new developers added #331 #373
  • Attribution text updated and BibTex added #428

Open Beta RC4

Date: 2014-03-07

This is the 4th release candidate, a pre-beta version.

Changes to "Open Beta RC3"

.param file changes:

New Features:

  • 2D support for basic PIC cycle #212
  • hdf5 output xdmf meta description added: ParaView/VisIt support #219
  • background current (FieldJ) can be added now #245

Bug fixes:

  • beta-rc3 was broken for some clusters due to an init bug #239
  • examples/WeibelTransverse 4 GPU example was broken #221
  • smooth script was broken for 1D fields #223
  • configure non-existing path did not throw an error #229
  • compile time vector "max" was broken #224
  • cuda_memtest did throw false negatives on hypnos #231 #236
  • plugin "png" did not compile for missing freetype #248

Misc:

  • documentation updates
    • radiation post processing scripts #222
    • more meta data in hdf5 output #216
    • tbg help extended and warnings to errors #226
    • doc/PARTICIPATE.md is now GitHub's CONTRIBUTING.md #247 #252
    • slurm interactive queue one-liner added #250
    • developers updated #251
  • clean up / refactoring
    • cell_size -> cellSize #227
    • typeCast -> precisionCast #228
    • param file includes (see above for details) #234
    • DataConnector interface redesign #218 #232
    • Esirkepov implementation "paper-like" #238

Open Beta RC3

Date: 2014-02-14

This is the third release candidate, a pre-beta version.

Changes to "Open Beta RC2"

.param and .cfg file changes:

  • componentsConfig.param:
  • dimension.param: new file with simDim setting #134
    • only add this file to your example/test/config if you want to change it from the default value (3D)
  • fieldConfig.param: renamed to fieldSolver.param #131
  • fieldBackground.param: new file to add external background fields #131
  • cfg files cleaned up #153 #193

New Features:

  • background fields for E and B #131
  • write parallel hdf5 with libSplash 1.1 #141 #151 #156 #191 #196
  • new plugins
    • ADIOS output support #179 #196
    • makroParticleCounter/PerSuperCell #163
  • cuda_memtest can check mapped memory now #173
  • EnergyDensity works for 2-3D now #175
  • new type floatD_X shall be used for position types (2-3D) #184
  • libPMacc
    • new functors for multiplications and substractions #135
    • opened more interfaces to old functors #197
    • MappedMemoryBuffer added #169 #182
    • unary transformations can be performed on DataBox'es now, allowing for non-commutative operations in reduces #204

Bug fixes:

  • libPMacc
    • GridBuffer could deadlock if called uninitialized #149
    • TaskSetValue was broken for all arrays with x-size != n*256 #174
    • CUDA 6.0 runs crashed during cudaSetDeviceFlags #200
    • extern shared mem could not be used with templated types #199
  • tbg
    • clearify error message if the tpl file does not exist #130
  • HDF5Writer did not write ions any more #188
  • return type of failing Slurm runs fixed #198 #205
  • particles in-cell position fixed with cleaner algorithm #209

Misc:

  • documentation improved for
    • cuSTL #116
    • gasConfig.param describe slopes better (no syntax changes) #126
    • agreed on coding guide lines #155 #161 #140
    • example documentation started #160 #162 #176
    • taurus (slurm based HPC cluster) updates #206
  • IDE: ignore Code::Blocks files #125
  • Esirkepov performance improvement by 30% #139
  • MySimulation asserts refactored for nD #187
  • Fields.def with field forward declarations added, refactored to provide common ValueType #178
  • icc warnings in cuda_memcheck fixed #210
  • libPMacc
    • refactored math::vector to play with DataSpace #138 #147
    • addLicense script updated #167
    • MPI_CHECK writes to stderr now #168
    • TVec from/to CT::Int conversion #185
    • PositionFilter works for 2-3D now #189 #207
    • DeviceBuffer cudaPitchedPtr handling clean up #186
    • DataBoxDim1Access refactored #202

Open Beta RC2

Date: 2013-11-27

This is the second release candidate, a pre-beta version.

Changes to "Open Beta RC1"

.param file changes:

New Features:

  • A change log was introduced for master releases #93
  • new gas profile "gasFreeFormula" for user defined profiles #96
  • CMake (config) #79
    • checks for minimal required versions of dependent libraries #92
    • checks for libSplash version #85
    • update to v2.8.5+ #52
    • implicit plugin selection: enabled if found #52
    • throw more warnings #37
    • experimental support for icc 12.1 and PGI 13.6 #37
  • libPMacc
    • full rewrite of the way we build particle frames # 86
    • cuSTL: ForEach works on host 1D and 2D data now #44
    • math::pow added #54
    • compile time ForEach added #50
  • libSplash
    • dependency upgraded to beta (v1.0) release #80
    • type traits for types PIConGPU - libSplash #69
    • splash2txt update to beta interfaces #83
  • new particle to grid routines calculating the Larmor energy #68
  • dumping multiple FieldTmp to hdf5 now possible #50
  • new config for SLURM batch system (taurus) #39

Bug fixes:

  • libPMacc
    • cuSTL
      • assign was broken for deviceBuffers #103
      • lambda expressions were broken #42 #46 #100
      • icc support was broken #100 #101
      • views were broken #62
    • InheritGenerator and deselect: icc fix #101
    • VampirTrace (CUPTI) support: cudaDeviceReset added #90
    • GameOfLife example fixed #53 #55
    • warnings in __cudaKernel fixed #51
  • picongpu
    • removed all non-ascii chars from job scripts #95 #98
    • CMake
      • keep ptx code was broken #82
      • PGI: string compare broken #75
      • MPI: some libs require to load the C++ dependencies, too #64
      • removed deprecated variables #52
      • Threads: find package was missing #34
    • various libSplash bugs #78 #80 #84
    • current calculation speedup was broken #72
    • Cell2Particle functor missed to provide static methods #49
  • tools
    • compile: script uses -q now implicit for parallel (-j N) tests
    • plotDensity: update to new binary format #47
  • libraries
    • boost 1.55 work around, see trac #9392 (nvcc #391854)

Misc:

  • new reference: SC13 paper, Gordon Bell Finals #106
  • new flavoured logo for alpha
  • Compile Suite: GitHub integration #33 #35
  • dropped CUDA sm_13 support (now sm_20+ is required) #42

Open Beta RC1

Date: 2013-09-05 07:47:03 -0700

This is the first release candidate, a pre-beta version. We tagged this state since we started to support sm_20+ only.

Changes to "Open Alpha"

n/a

Open Alpha

Date: 2013-08-14 02:25:36 -0700

That's our our open alpha release. The alpha release is developer and power user release only! Users should wait for our beta release!