Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
elpa
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
11
Issues
11
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
Operations
Operations
Incidents
Environments
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
elpa
elpa
Commits
c7144e6c
Commit
c7144e6c
authored
Jul 05, 2017
by
Andreas Marek
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Gitlab CI: single node test on skylake
parent
a20c48e2
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
257 additions
and
0 deletions
+257
-0
.gitlab-ci.yml
.gitlab-ci.yml
+257
-0
No files found.
.gitlab-ci.yml
View file @
c7144e6c
...
...
@@ -3393,6 +3393,263 @@ gfortran-single-precision-no-mpi-noomp-no-assumed-size-skylake-jobs:
# - coverage_data
########################################################################################
#
# jobs for intel/gfortran double/single precision no mpi and openmp no cuda SKYLAKE
# - all runners on "cpu"
# - including coverage runs
#
########################################################################################
# intel double precision nompi omp skylake
intel-double-precision-no-mpi-omp-skylake-jobs
:
tags
:
-
skylake
script
:
-
./autogen.sh
-
module purge
-
module load gcc/6.3 intel/17.0 impi/2017.2 mkl/2017
-
export MKL_INTEL_SCALAPACK_LDFLAGS_NO_MPI_OMP="-L$MKLROOT/lib/intel64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -Wl,-rpath,$MKLROOT/lib/intel64"
-
export MKL_INTEL_SCALAPACK_FCFLAGS_NO_MPI_OMP="-L$MKLROOT/lib/intel64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -I$MKLROOT/include/intel64/lp64"
-
./configure FC=ifort CC=icc --enable-option-checking=fatal CFLAGS="-O3 -xCORE-AVX512" FCFLAGS="-O3 -xCORE-AVX512" SCALAPACK_LDFLAGS="$MKL_INTEL_SCALAPACK_LDFLAGS_NO_MPI_OMP" SCALAPACK_FCFLAGS="$MKL_INTEL_SCALAPACK_FCFLAGS_NO_MPI_OMP" --enable-avx512 --with-mpi=0 --enable-openmp
-
/home/elpa/wait_until_midnight.sh
-
make -j
8
-
export LD_LIBRARY_PATH=$MKLROOT/lib/intel64:$LD_LIBRARY_PATH
-
export OMP_NUM_THREADS=2
-
export ELPA_FORCE_complex_kernel=ELPA_2STAGE_COMPLEX_AVX512_BLOCK1
-
export ELPA_FORCE_real_kernel=ELPA_2STAGE_REAL_AVX512_BLOCK2
-
make check TEST_FLAGS='150 50 16' || { cat test-suite.log; exit 1; }
-
export ELPA_FORCE_complex_kernel=ELPA_2STAGE_COMPLEX_AVX512_BLOCK2
-
export ELPA_FORCE_real_kernel=ELPA_2STAGE_REAL_AVX512_BLOCK4
-
make check TEST_FLAGS='150 50 16' || { cat test-suite.log; exit 1; }
-
export ELPA_FORCE_complex_kernel=ELPA_2STAGE_COMPLEX_AVX512_BLOCK2
-
export ELPA_FORCE_real_kernel=ELPA_2STAGE_REAL_AVX512_BLOCK6
-
make check TEST_FLAGS='150 50 16' || { cat test-suite.log; exit 1; }
-
grep -i "Expected %stop" test-suite.log && exit 1 ||
true
;
# intel double precision no-mpi omp skylake large
intel-double-precision-no-mpi-omp-large-skylake-jobs
:
tags
:
-
skylake
script
:
-
./autogen.sh
-
module purge
-
module load gcc/6.3 intel/17.0 impi/2017.2 mkl/2017
-
export MKL_INTEL_SCALAPACK_LDFLAGS_NO_MPI_OMP="-L$MKLROOT/lib/intel64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -Wl,-rpath,$MKLROOT/lib/intel64"
-
export MKL_INTEL_SCALAPACK_FCFLAGS_NO_MPI_OMP="-L$MKLROOT/lib/intel64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -I$MKLROOT/include/intel64/lp64"
-
./configure FC=ifort CC=icc --enable-option-checking=fatal CFLAGS="-O3 -xCORE-AVX512" FCFLAGS="-O3 -xCORE-AVX512" SCALAPACK_LDFLAGS="$MKL_INTEL_SCALAPACK_LDFLAGS_NO_MPI_OMP" SCALAPACK_FCFLAGS="$MKL_INTEL_SCALAPACK_FCFLAGS_NO_MPI_OMP" --enable-avx512 --with-mpi=0 --enable-openmp
-
/home/elpa/wait_until_midnight.sh
-
make -j
8
-
export LD_LIBRARY_PATH=$MKLROOT/lib/intel64:$LD_LIBRARY_PATH
-
export OMP_NUM_THREADS=2
-
export ELPA_FORCE_complex_kernel=ELPA_2STAGE_COMPLEX_AVX512_BLOCK1
-
export ELPA_FORCE_real_kernel=ELPA_2STAGE_REAL_AVX512_BLOCK2
-
make check TEST_FLAGS='1500 500 16' || { cat test-suite.log; exit 1; }
-
export ELPA_FORCE_complex_kernel=ELPA_2STAGE_COMPLEX_AVX512_BLOCK2
-
export ELPA_FORCE_real_kernel=ELPA_2STAGE_REAL_AVX512_BLOCK4
-
make check TEST_FLAGS='1500 500 16' || { cat test-suite.log; exit 1; }
-
export ELPA_FORCE_complex_kernel=ELPA_2STAGE_COMPLEX_AVX512_BLOCK2
-
export ELPA_FORCE_real_kernel=ELPA_2STAGE_REAL_AVX512_BLOCK6
-
make check TEST_FLAGS='1500 500 16' || { cat test-suite.log; exit 1; }
-
grep -i "Expected %stop" test-suite.log && exit 1 ||
true
;
# intel single precision no mpi omp SKYLAKE
intel-single-precision-no-mpi-omp-skylake-jobs
:
tags
:
-
skylake
script
:
-
./autogen.sh
-
module purge
-
module load gcc/6.3 intel/17.0 impi/2017.2 mkl/2017
-
export MKL_INTEL_SCALAPACK_LDFLAGS_NO_MPI_OMP="-L$MKLROOT/lib/intel64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -Wl,-rpath,$MKLROOT/lib/intel64"
-
export MKL_INTEL_SCALAPACK_FCFLAGS_NO_MPI_OMP="-L$MKLROOT/lib/intel64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -I$MKLROOT/include/intel64/lp64"
-
./configure FC=ifort CC=icc --enable-option-checking=fatal CFLAGS="-O3 -xCORE-AVX512" FCFLAGS="-O3 -xCORE-AVX512" SCALAPACK_LDFLAGS="$MKL_INTEL_SCALAPACK_LDFLAGS_NO_MPI_OMP" SCALAPACK_FCFLAGS="$MKL_INTEL_SCALAPACK_FCFLAGS_NO_MPI_OMP" --enable-avx512 --enable-single-precision --with-mpi=0 --enable-openmp
-
/home/elpa/wait_until_midnight.sh
-
make -j
8
-
export LD_LIBRARY_PATH=$MKLROOT/lib/intel64:$LD_LIBRARY_PATH
-
export OMP_NUM_THREADS=2
-
export ELPA_FORCE_complex_kernel=ELPA_2STAGE_COMPLEX_AVX512_BLOCK1
-
export ELPA_FORCE_real_kernel=ELPA_2STAGE_REAL_AVX512_BLOCK2
-
make check TEST_FLAGS='150 50 16' || { cat test-suite.log; exit 1; }
-
export ELPA_FORCE_complex_kernel=ELPA_2STAGE_COMPLEX_AVX512_BLOCK2
-
export ELPA_FORCE_real_kernel=ELPA_2STAGE_REAL_AVX512_BLOCK4
-
make check TEST_FLAGS='150 50 16' || { cat test-suite.log; exit 1; }
-
export ELPA_FORCE_complex_kernel=ELPA_2STAGE_COMPLEX_AVX512_BLOCK2
-
export ELPA_FORCE_real_kernel=ELPA_2STAGE_REAL_AVX512_BLOCK6
-
make check TEST_FLAGS='150 50 16' || { cat test-suite.log; exit 1; }
-
grep -i "Expected %stop" test-suite.log && exit 1 ||
true
;
# gfortran double precision no mpi omp SKYLAKE
gfortran-double-precision-no-mpi-omp-skylake-jobs
:
tags
:
-
skylake
script
:
-
./autogen.sh
-
module purge
-
module load gcc/6.3 intel/17.0 impi/2017.2 mkl/2017
-
export MKL_GFORTRAN_SCALAPACK_LDFLAGS_NO_MPI_OMP="-L$MKLROOT/lib/intel64 -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -Wl,-rpath,$MKLROOT/lib/intel64"
-
export MKL_GFORTRAN_SCALAPACK_FCFLAGS_NO_MPI_OMP="-L$MKLROOT/lib/intel64 -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -I$MKLROOT/include/intel64/lp64"
-
./configure FC=gfortran CC=gcc --enable-option-checking=fatal CFLAGS="-O3 -march=skylake-avx512" FCFLAGS="-O3 -march=skylake-avx512" SCALAPACK_LDFLAGS="$MKL_GFORTRAN_SCALAPACK_LDFLAGS_NO_MPI_OMP" SCALAPACK_FCFLAGS="$MKL_GFORTRAN_SCALAPACK_FCFLAGS_NO_MPI_OMP" --enable-avx512 --with-mpi=0 --disable-mpi-module --enable-openmp
-
/home/elpa/wait_until_midnight.sh
-
make -j
8
-
export LD_LIBRARY_PATH=$MKL_HOME/lib/intel64:$LD_LIBRARY_PATH
-
export OMP_NUM_THREADS=2
-
export ELPA_FORCE_complex_kernel=ELPA_2STAGE_COMPLEX_AVX512_BLOCK1
-
export ELPA_FORCE_real_kernel=ELPA_2STAGE_REAL_AVX512_BLOCK2
-
make check TEST_FLAGS='150 50 16' || { cat test-suite.log; exit 1; }
-
export ELPA_FORCE_complex_kernel=ELPA_2STAGE_COMPLEX_AVX512_BLOCK2
-
export ELPA_FORCE_real_kernel=ELPA_2STAGE_REAL_AVX512_BLOCK4
-
make check TEST_FLAGS='150 50 16' || { cat test-suite.log; exit 1; }
-
export ELPA_FORCE_complex_kernel=ELPA_2STAGE_COMPLEX_AVX512_BLOCK2
-
export ELPA_FORCE_real_kernel=ELPA_2STAGE_REAL_AVX512_BLOCK6
-
make check TEST_FLAGS='150 50 16' || { cat test-suite.log; exit 1; }
-
grep -i "Expected %stop" test-suite.log && exit 1 ||
true
;
# gfortran single precision no mpi omp SKYLAKE
gfortran-single-precision-no-mpi-omp-skylake-jobs
:
tags
:
-
skylake
script
:
-
./autogen.sh
-
module purge
-
module load gcc/6.3 intel/17.0 impi/2017.2 mkl/2017
-
export MKL_GFORTRAN_SCALAPACK_LDFLAGS_NO_MPI_OMP="-L$MKLROOT/lib/intel64 -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -Wl,-rpath,$MKLROOT/lib/intel64"
-
export MKL_GFORTRAN_SCALAPACK_FCFLAGS_NO_MPI_OMP="-L$MKLROOT/lib/intel64 -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -I$MKLROOT/include/intel64/lp64"
-
./configure FC=gfortran CC=gcc --enable-option-checking=fatal CFLAGS="-O3 -march=skylake-avx512" FCFLAGS="-O3 -march=skylake-avx512" SCALAPACK_LDFLAGS="$MKL_GFORTRAN_SCALAPACK_LDFLAGS_NO_MPI_OMP" SCALAPACK_FCFLAGS="$MKL_GFORTRAN_SCALAPACK_FCFLAGS_NO_MPI_OMP" --enable-avx512 --enable-single-precision --with-mpi=0 --disable-mpi-module --enable-openmp
-
/home/elpa/wait_until_midnight.sh
-
make -j
8
-
export LD_LIBRARY_PATH=$MKL_HOME/lib/intel64:$LD_LIBRARY_PATH
-
export OMP_NUM_THREADS=2
-
export ELPA_FORCE_complex_kernel=ELPA_2STAGE_COMPLEX_AVX512_BLOCK1
-
export ELPA_FORCE_real_kernel=ELPA_2STAGE_REAL_AVX512_BLOCK2
-
make check TEST_FLAGS='150 50 16' || { cat test-suite.log; exit 1; }
-
export ELPA_FORCE_complex_kernel=ELPA_2STAGE_COMPLEX_AVX512_BLOCK2
-
export ELPA_FORCE_real_kernel=ELPA_2STAGE_REAL_AVX512_BLOCK4
-
make check TEST_FLAGS='150 50 16' || { cat test-suite.log; exit 1; }
-
export ELPA_FORCE_complex_kernel=ELPA_2STAGE_COMPLEX_AVX512_BLOCK2
-
export ELPA_FORCE_real_kernel=ELPA_2STAGE_REAL_AVX512_BLOCK6
-
make check TEST_FLAGS='150 50 16' || { cat test-suite.log; exit 1; }
-
grep -i "Expected %stop" test-suite.log && exit 1 ||
true
;
# gfortran double precision no mpi omp skylake, no assumed size
gfortran-double-precision-no-mpi-omp-no-assumed-size-skylake-jobs
:
tags
:
-
skylake
script
:
-
./autogen.sh
-
module purge
-
module load gcc/6.3 intel/17.0 impi/2017.2 mkl/2017
-
export MKL_GFORTRAN_SCALAPACK_LDFLAGS_NO_MPI_OMP="-L$MKLROOT/lib/intel64 -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -Wl,-rpath,$MKLROOT/lib/intel64"
-
export MKL_GFORTRAN_SCALAPACK_FCFLAGS_NO_MPI_OMP="-L$MKLROOT/lib/intel64 -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -I$MKLROOT/include/intel64/lp64"
-
./configure FC=gfortran CC=gcc --enable-option-checking=fatal CFLAGS="-O3 -march=skylake-avx512" FCFLAGS="-O3 -march=skylake-avx512" SCALAPACK_LDFLAGS="$MKL_GFORTRAN_SCALAPACK_LDFLAGS_NO_MPI_OMP" SCALAPACK_FCFLAGS="$MKL_GFORTRAN_SCALAPACK_FCFLAGS_NO_MPI_OMP" --enable-avx512 --disable-assumed-size --with-mpi=0 --disable-mpi-module --enable-openmp
-
/home/elpa/wait_until_midnight.sh
-
make -j
8
-
export LD_LIBRARY_PATH=$MKL_HOME/lib/intel64:$LD_LIBRARY_PATH
-
export OMP_NUM_THREADS=2
-
export ELPA_FORCE_complex_kernel=ELPA_2STAGE_COMPLEX_AVX512_BLOCK1
-
export ELPA_FORCE_real_kernel=ELPA_2STAGE_REAL_AVX512_BLOCK2
-
make check TEST_FLAGS='150 50 16' || { cat test-suite.log; exit 1; }
-
export ELPA_FORCE_complex_kernel=ELPA_2STAGE_COMPLEX_AVX512_BLOCK2
-
export ELPA_FORCE_real_kernel=ELPA_2STAGE_REAL_AVX512_BLOCK4
-
make check TEST_FLAGS='150 50 16' || { cat test-suite.log; exit 1; }
-
export ELPA_FORCE_complex_kernel=ELPA_2STAGE_COMPLEX_AVX512_BLOCK2
-
export ELPA_FORCE_real_kernel=ELPA_2STAGE_REAL_AVX512_BLOCK6
-
make check TEST_FLAGS='150 50 16' || { cat test-suite.log; exit 1; }
-
grep -i "Expected %stop" test-suite.log && exit 1 ||
true
;
# gfortran single precision no mpi omp skylake, no assumed size
gfortran-single-precision-no-mpi-omp-no-assumed-size-skylake-jobs
:
tags
:
-
skylake
script
:
-
./autogen.sh
-
module purge
-
module load gcc/6.3 intel/17.0 impi/2017.2 mkl/2017
-
export MKL_GFORTRAN_SCALAPACK_LDFLAGS_NO_MPI_OMP="-L$MKLROOT/lib/intel64 -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -Wl,-rpath,$MKLROOT/lib/intel64"
-
export MKL_GFORTRAN_SCALAPACK_FCFLAGS_NO_MPI_OMP="-L$MKLROOT/lib/intel64 -lmkl_gf_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -I$MKLROOT/include/intel64/lp64"
-
./configure FC=gfortran CC=gcc --enable-option-checking=fatal CFLAGS="-O3 -march=skylake-avx512" FCFLAGS="-O3 -march=skylake-avx512" SCALAPACK_LDFLAGS="$MKL_GFORTRAN_SCALAPACK_LDFLAGS_NO_MPI_OMP" SCALAPACK_FCFLAGS="$MKL_GFORTRAN_SCALAPACK_FCFLAGS_NO_MPI_OMP" --enable-avx512 --disable-assumed-size --enable-single-precision --with-mpi=0 --disable-mpi-module --enable-openmp
-
/home/elpa/wait_until_midnight.sh
-
make -j
8
-
export LD_LIBRARY_PATH=$MKL_HOME/lib/intel64:$LD_LIBRARY_PATH
-
export OMP_NUM_THREADS=2
-
export ELPA_FORCE_complex_kernel=ELPA_2STAGE_COMPLEX_AVX512_BLOCK1
-
export ELPA_FORCE_real_kernel=ELPA_2STAGE_REAL_AVX512_BLOCK2
-
make check TEST_FLAGS='150 50 16' || { cat test-suite.log; exit 1; }
-
export ELPA_FORCE_complex_kernel=ELPA_2STAGE_COMPLEX_AVX2_BLOCK2
-
export ELPA_FORCE_real_kernel=ELPA_2STAGE_REAL_AVX512_BLOCK4
-
make check TEST_FLAGS='150 50 16' || { cat test-suite.log; exit 1; }
-
export ELPA_FORCE_complex_kernel=ELPA_2STAGE_COMPLEX_AVX512_BLOCK2
-
export ELPA_FORCE_real_kernel=ELPA_2STAGE_REAL_AVX512_BLOCK6
-
make check TEST_FLAGS='150 50 16' || { cat test-suite.log; exit 1; }
-
grep -i "Expected %stop" test-suite.log && exit 1 ||
true
;
# no coverage on system with tag AVX2
#
## gfortran double precision mpi noomp AVX2 COVERAGE
#gfortran-double-precision-mpi-noomp-coverage-avx2-jobs
:
# tags:
# - avx2
# script:
# - ./autogen.sh
# - ./configure --enable-option-checking=fatal CFLAGS="--coverage -O3 -mavx2 -mfma" FCFLAGS="--coverage -O3 -mavx2 -mfma" SCALAPACK_LDFLAGS="$MKL_GFORTRAN_SCALAPACK_LDFLAGS_MPI_NO_OMP" SCALAPACK_FCFLAGS="$MKL_GFORTRAN_SCALAPACK_FCFLAGS_MPI_NO_OMP" FC=mpif90
# - make -j 8
# - export LD_LIBRARY_PATH=$MKL_HOME/lib/intel64:$LD_LIBRARY_PATH
# - make check TEST_FLAGS='150 50 16' || { cat test-suite.log; exit 1; }
# - grep -i "Expected %stop" test-suite.log && exit 1 || true ;
# - ./ci_coverage_collect
# artifacts:
# paths:
# - coverage_data
#
## gfortran single precision mpi noomp AVX2 COVERAGE
#gfortran-double-precision-mpi-noomp-coverage-avx2-jobs:
# tags:
# - avx2
# script:
# - ./autogen.sh
# - ./configure --enable-option-checking=fatal CFLAGS="--coverage -O3 -mavx2 -mfma" FCFLAGS="--coverage -O3 -mavx2 -mfma" SCALAPACK_LDFLAGS="$MKL_GFORTRAN_SCALAPACK_LDFLAGS_MPI_NO_OMP" SCALAPACK_FCFLAGS="$MKL_GFORTRAN_SCALAPACK_FCFLAGS_MPI_NO_OMP" FC=mpif90 --enable-single-precision
# - make -j 8
# - export LD_LIBRARY_PATH=$MKL_HOME/lib/intel64:$LD_LIBRARY_PATH
# - make check TEST_FLAGS='150 50 16' || { cat test-suite.log; exit 1; }
# - grep -i "Expected %stop" test-suite.log && exit 1 || true ;
# - ./ci_coverage_collect
# artifacts:
# paths:
# - coverage_data
#
## gfortran double precision mpi noomp AVX2, no assumed size COVERAGE
#gfortran-double-precision-mpi-noomp-no-assumed-size-coverage-avx2-jobs:
# tags:
# - avx2
# script:
# - ./autogen.sh
# - ./configure --enable-option-checking=fatal CFLAGS="--coverage -O3 -mavx2 -mfma" FCFLAGS="--coverage -O3 -mavx2 -mfma" SCALAPACK_LDFLAGS="$MKL_GFORTRAN_SCALAPACK_LDFLAGS_MPI_NO_OMP" SCALAPACK_FCFLAGS="$MKL_GFORTRAN_SCALAPACK_FCFLAGS_MPI_NO_OMP" FC=mpif90 --disable-assumed-size
# - make -j 8
# - export LD_LIBRARY_PATH=$MKL_HOME/lib/intel64:$LD_LIBRARY_PATH
# - make check TEST_FLAGS='150 50 16' || { cat test-suite.log; exit 1; }
# - grep -i "Expected %stop" test-suite.log && exit 1 || true ;
# - ./ci_coverage_collect
# artifacts:
# paths:
# - coverage_data
#
## gfortran single precision mpi noomp AVX2 no assumed size COVERAGE
#gfortran-double-precision-mpi-noomp-no-assumed-size-coverage-avx2-jobs:
# tags:
# - avx2
# script:
# - ./autogen.sh
# - ./configure --enable-option-checking=fatal CFLAGS="--coverage -O3 -mavx2 -mfma" FCFLAGS="--coverage -O3 -mavx2 -mfma" SCALAPACK_LDFLAGS="$MKL_GFORTRAN_SCALAPACK_LDFLAGS_MPI_NO_OMP" SCALAPACK_FCFLAGS="$MKL_GFORTRAN_SCALAPACK_FCFLAGS_MPI_NO_OMP" FC=mpif90 --enable-single-precision --disable-assumed-size
# - make -j 8
# - export LD_LIBRARY_PATH=$MKL_HOME/lib/intel64:$LD_LIBRARY_PATH
# - make check TEST_FLAGS='150 50 16' || { cat test-suite.log; exit 1; }
# - grep -i "Expected %stop" test-suite.log && exit 1 || true ;
# - ./ci_coverage_collect
# artifacts:
# paths:
# - coverage_data
static-build
:
tags
:
-
cpu
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment