We present a simple to use, yet powerful code package called NLSEmagic to numerically integrate the nonlinear Schrödinger equation in one, two, and three dimensions. NLSEmagic is a high-order finite-difference code package which utilizes graphic processing unit (GPU) parallel architectures. The codes running on the GPU are many times faster than their serial counterparts, and are much cheaper to run than on standard parallel clusters. The codes are developed with usability and portability in mind, and therefore are written to interface with MATLAB utilizing custom GPU-enabled C codes with the MEX-compiler interface. The packages are freely distributed, including user manuals and set-up files. Program summaryProgram title: NLSEmagicCatalogue identifier: AEOJ_v1_0Program summary URL:http://cpc.cs.qub.ac.uk/summaries/AEOJ_v1_0.htmlProgram obtainable from: CPC Program Library, Queen’s University, Belfast, N. IrelandLicensing provisions: Standard CPC licence, http://cpc.cs.qub.ac.uk/licence/licence.htmlNo. of lines in distributed program, including test data, etc.: 124453No. of bytes in distributed program, including test data, etc.: 4728604Distribution format: tar.gzProgramming language: C, CUDA, MATLAB.Computer: PC, MAC.Operating system: Windows, MacOS, Linux.Has the code been vectorized or parallelized?: Yes.Number of processors used: Single CPU, number of GPU processors dependent on chosen GPU card (max is currently 3072 cores on GeForce GTX 690).Supplementary material: Setup guide, Installation guide.RAM: Highly dependent on dimensionality and grid size. For typical medium–large problem size in three dimensions, 4GB is sufficient.Keywords: Nonlinear Schröodinger Equation, GPU, high-order finite difference, Bose-Einstien condensates.Classification: 4.3, 7.7.Nature of problem:Integrate solutions of the time-dependent one-, two-, and three-dimensional cubic nonlinear Schrödinger equation.Solution method:The integrators utilize a fully-explicit fourth-order Runge–Kutta scheme in time and both second- and fourth-order differencing in space. The integrators are written to run on NVIDIA GPUs and are interfaced with MATLAB including built-in visualization and analysis tools.Restrictions:The main restriction for the GPU integrators is the amount of RAM on the GPU as the code is currently only designed for running on a single GPU.Unusual features:Ability to visualize real-time simulations through the interaction of MATLAB and the compiled GPU integrators.Additional comments:Setup guide and Installation guide provided. Program has a dedicated web site at www.nlsemagic.com.Running time:A three-dimensional run with a grid dimension of 87×87×203 for 3360 time steps (100 non-dimensional time units) takes about one and a half minutes on a GeForce GTX 580 GPU card.
Read full abstract