Help: Description: This version of the pm toolset is part of a university course to train students in programming of Fourier based simulation methods. It supports the VWPM, WPM and BPM. The VBPM is supported for completeness only. Students are supposed to build their own program in the your_pm.cc and your_kernel.cu files and then compile and run with a configuration file. The environment will compare the student results to the reference results and return the maximum error as well as the electric field distribution and energy energy flux for the student code. Usage: udpm ./pm [options][-i ] -b|--block-size size of thread blocks -c|--compare compare gpu results with cpu -d|--debug print debug information -f|--store-fields store refractive index distribution, electric field distributions and energy flux to separate .csv file -g|--run-gpu run on gpu -i|--config-file configuration file to be used -k|--kernel kernel to be used 0 = default kernel 1 = shared memory kernel -l|--layer layer to be used specify an interger between 0 and NZ-1 if cross-section (refer to option -x) is XY specify an interger between 0 and NY-1 if cross-section (refer to option -x) is XZ specify an interger between 0 and NX-1 if cross-section (refer to option -x) is YZ NX, NY and NZ are specified in the configuration file (refer to option -i) -m|--method method to be used 0 = vwpm 1 = wpm 2 = vbpm 3 = bpm -n|--number specify an integer value to configure the number of iterations for the propagation method to be called. this is useful for analysis of average runtimes and to eliminate runtime penalties from setup procedures or function call sequence -o|--polarization 0 = TE 1 = TM -p|--run-cpu run on cpu -q|--quiet disables text display -r|--store-results store runtime and accuracy results to .csv file -v|--version print version -x|--cross-section 0 = XY 1 = XZ 2 = YZ --skipFirst skip runtime of first iteration to avoid penalty from initialization procedures. --profOnly run reference code only to avoid potential latency benefits from previous runs. no field distributions are exported if specified. --studOnly run student code only to avoid potential latency benefits from previous runs. no field distributions are exported if specified.