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
Chameleon
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
Operations
Operations
Incidents
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
AGULLO Emmanuel
Chameleon
Commits
6513fcbf
Commit
6513fcbf
authored
Jul 29, 2017
by
Mathieu Faverge
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Restructure headers in cudablas directory
parent
856b8030
Changes
35
Hide whitespace changes
Inline
Side-by-side
Showing
35 changed files
with
96 additions
and
97 deletions
+96
-97
cudablas/compute/cuda_zgeadd.c
cudablas/compute/cuda_zgeadd.c
+2
-2
cudablas/compute/cuda_zgelqt.c
cudablas/compute/cuda_zgelqt.c
+2
-2
cudablas/compute/cuda_zgemerge.c
cudablas/compute/cuda_zgemerge.c
+2
-2
cudablas/compute/cuda_zgemm.c
cudablas/compute/cuda_zgemm.c
+2
-2
cudablas/compute/cuda_zgeqrt.c
cudablas/compute/cuda_zgeqrt.c
+2
-2
cudablas/compute/cuda_zgessm.c
cudablas/compute/cuda_zgessm.c
+2
-2
cudablas/compute/cuda_zgetrf.c
cudablas/compute/cuda_zgetrf.c
+2
-2
cudablas/compute/cuda_zhemm.c
cudablas/compute/cuda_zhemm.c
+2
-2
cudablas/compute/cuda_zher2k.c
cudablas/compute/cuda_zher2k.c
+2
-2
cudablas/compute/cuda_zherfb.c
cudablas/compute/cuda_zherfb.c
+2
-2
cudablas/compute/cuda_zherk.c
cudablas/compute/cuda_zherk.c
+2
-2
cudablas/compute/cuda_zlarfb.c
cudablas/compute/cuda_zlarfb.c
+2
-2
cudablas/compute/cuda_zlauum.c
cudablas/compute/cuda_zlauum.c
+2
-2
cudablas/compute/cuda_zparfb.c
cudablas/compute/cuda_zparfb.c
+2
-2
cudablas/compute/cuda_zpotrf.c
cudablas/compute/cuda_zpotrf.c
+2
-2
cudablas/compute/cuda_zssssm.c
cudablas/compute/cuda_zssssm.c
+2
-2
cudablas/compute/cuda_zsymm.c
cudablas/compute/cuda_zsymm.c
+2
-2
cudablas/compute/cuda_zsyr2k.c
cudablas/compute/cuda_zsyr2k.c
+2
-2
cudablas/compute/cuda_zsyrk.c
cudablas/compute/cuda_zsyrk.c
+2
-2
cudablas/compute/cuda_ztpmqrt.c
cudablas/compute/cuda_ztpmqrt.c
+2
-2
cudablas/compute/cuda_ztrmm.c
cudablas/compute/cuda_ztrmm.c
+2
-2
cudablas/compute/cuda_ztrsm.c
cudablas/compute/cuda_ztrsm.c
+2
-2
cudablas/compute/cuda_ztrtri.c
cudablas/compute/cuda_ztrtri.c
+2
-2
cudablas/compute/cuda_ztslqt.c
cudablas/compute/cuda_ztslqt.c
+2
-2
cudablas/compute/cuda_ztsmlq.c
cudablas/compute/cuda_ztsmlq.c
+2
-2
cudablas/compute/cuda_ztsmqr.c
cudablas/compute/cuda_ztsmqr.c
+2
-2
cudablas/compute/cuda_ztsqrt.c
cudablas/compute/cuda_ztsqrt.c
+2
-2
cudablas/compute/cuda_ztstrf.c
cudablas/compute/cuda_ztstrf.c
+2
-2
cudablas/compute/cuda_zttmqr.c
cudablas/compute/cuda_zttmqr.c
+2
-2
cudablas/compute/cuda_zunmlqt.c
cudablas/compute/cuda_zunmlqt.c
+2
-2
cudablas/compute/cuda_zunmqrt.c
cudablas/compute/cuda_zunmqrt.c
+2
-2
cudablas/compute/cudaglobal.c
cudablas/compute/cudaglobal.c
+1
-1
cudablas/include/CMakeLists.txt
cudablas/include/CMakeLists.txt
+17
-12
cudablas/include/cudablas.h
cudablas/include/cudablas.h
+16
-11
cudablas/include/cudablas/cudablas_z.h
cudablas/include/cudablas/cudablas_z.h
+0
-11
No files found.
cudablas/compute/cuda_zgeadd.c
View file @
6513fcbf
...
...
@@ -20,8 +20,8 @@
* @precisions normal z -> c d s
*
**/
#include "cudablas
/include/cudablas
.h"
#include "cudablas/
include/
cudablas_z.h"
#include "cudablas.h"
#include "cudablas/cudablas_z.h"
#if !defined(CHAMELEON_USE_CUBLAS_V2)
#error "This file requires cublas api v2 support"
...
...
cudablas/compute/cuda_zgelqt.c
View file @
6513fcbf
...
...
@@ -22,8 +22,8 @@
* @precisions normal z -> c d s
*
**/
#include "cudablas
/include/cudablas
.h"
#include "cudablas/
include/
cudablas_z.h"
#include "cudablas.h"
#include "cudablas/cudablas_z.h"
#if defined(CHAMELEON_USE_MAGMA)
int
CUDA_zgelqt
(
...
...
cudablas/compute/cuda_zgemerge.c
View file @
6513fcbf
...
...
@@ -22,8 +22,8 @@
* @precisions normal z -> c d s
*
**/
#include "cudablas
/include/cudablas
.h"
#include "cudablas/
include/
cudablas_z.h"
#include "cudablas.h"
#include "cudablas/cudablas_z.h"
int
CUDA_zgemerge
(
MORSE_enum
side
,
MORSE_enum
diag
,
...
...
cudablas/compute/cuda_zgemm.c
View file @
6513fcbf
...
...
@@ -22,8 +22,8 @@
* @precisions normal z -> c d s
*
**/
#include "cudablas
/include/cudablas
.h"
#include "cudablas/
include/
cudablas_z.h"
#include "cudablas.h"
#include "cudablas/cudablas_z.h"
int
CUDA_zgemm
(
MORSE_enum
transa
,
MORSE_enum
transb
,
int
m
,
int
n
,
int
k
,
...
...
cudablas/compute/cuda_zgeqrt.c
View file @
6513fcbf
...
...
@@ -22,8 +22,8 @@
* @precisions normal z -> c d s
*
**/
#include "cudablas
/include/cudablas
.h"
#include "cudablas/
include/
cudablas_z.h"
#include "cudablas.h"
#include "cudablas/cudablas_z.h"
#if defined(CHAMELEON_USE_MAGMA)
int
CUDA_zgeqrt
(
...
...
cudablas/compute/cuda_zgessm.c
View file @
6513fcbf
...
...
@@ -22,8 +22,8 @@
* @precisions normal z -> c d s
*
**/
#include "cudablas
/include/cudablas
.h"
#include "cudablas/
include/
cudablas_z.h"
#include "cudablas.h"
#include "cudablas/cudablas_z.h"
#if defined(CHAMELEON_USE_MAGMA)
#if defined(HAVE_MAGMA_GETRF_INCPIV_GPU)
...
...
cudablas/compute/cuda_zgetrf.c
View file @
6513fcbf
...
...
@@ -22,8 +22,8 @@
* @precisions normal z -> c d s
*
**/
#include "cudablas
/include/cudablas
.h"
#include "cudablas/
include/
cudablas_z.h"
#include "cudablas.h"
#include "cudablas/cudablas_z.h"
#if defined(CHAMELEON_USE_MAGMA)
#if defined(HAVE_MAGMA_GETRF_INCPIV_GPU)
...
...
cudablas/compute/cuda_zhemm.c
View file @
6513fcbf
...
...
@@ -22,8 +22,8 @@
* @precisions normal z -> c
*
**/
#include "cudablas
/include/cudablas
.h"
#include "cudablas/
include/
cudablas_z.h"
#include "cudablas.h"
#include "cudablas/cudablas_z.h"
int
CUDA_zhemm
(
MORSE_enum
side
,
MORSE_enum
uplo
,
int
m
,
int
n
,
...
...
cudablas/compute/cuda_zher2k.c
View file @
6513fcbf
...
...
@@ -22,8 +22,8 @@
* @precisions normal z -> c
*
**/
#include "cudablas
/include/cudablas
.h"
#include "cudablas/
include/
cudablas_z.h"
#include "cudablas.h"
#include "cudablas/cudablas_z.h"
int
CUDA_zher2k
(
MORSE_enum
uplo
,
MORSE_enum
trans
,
int
n
,
int
k
,
...
...
cudablas/compute/cuda_zherfb.c
View file @
6513fcbf
...
...
@@ -22,8 +22,8 @@
* @precisions normal z -> c d s
*
**/
#include "cudablas
/include/cudablas
.h"
#include "cudablas/
include/
cudablas_z.h"
#include "cudablas.h"
#include "cudablas/cudablas_z.h"
int
CUDA_zherfb
(
MORSE_enum
uplo
,
int
n
,
...
...
cudablas/compute/cuda_zherk.c
View file @
6513fcbf
...
...
@@ -22,8 +22,8 @@
* @precisions normal z -> c
*
**/
#include "cudablas
/include/cudablas
.h"
#include "cudablas/
include/
cudablas_z.h"
#include "cudablas.h"
#include "cudablas/cudablas_z.h"
int
CUDA_zherk
(
MORSE_enum
uplo
,
MORSE_enum
trans
,
int
n
,
int
k
,
...
...
cudablas/compute/cuda_zlarfb.c
View file @
6513fcbf
...
...
@@ -24,8 +24,8 @@
* @precisions normal z -> c d s
*
**/
#include "cudablas
/include/cudablas
.h"
#include "cudablas/
include/
cudablas_z.h"
#include "cudablas.h"
#include "cudablas/cudablas_z.h"
int
CUDA_zlarfb
(
MORSE_enum
side
,
MORSE_enum
trans
,
...
...
cudablas/compute/cuda_zlauum.c
View file @
6513fcbf
...
...
@@ -22,8 +22,8 @@
* @precisions normal z -> c d s
*
**/
#include "cudablas
/include/cudablas
.h"
#include "cudablas/
include/
cudablas_z.h"
#include "cudablas.h"
#include "cudablas/cudablas_z.h"
#if defined(CHAMELEON_USE_MAGMA)
int
CUDA_zlauum
(
...
...
cudablas/compute/cuda_zparfb.c
View file @
6513fcbf
...
...
@@ -22,8 +22,8 @@
* @precisions normal z -> c d s
*
**/
#include "cudablas
/include/cudablas
.h"
#include "cudablas/
include/
cudablas_z.h"
#include "cudablas.h"
#include "cudablas/cudablas_z.h"
/**
*****************************************************************************
...
...
cudablas/compute/cuda_zpotrf.c
View file @
6513fcbf
...
...
@@ -22,8 +22,8 @@
* @precisions normal z -> c d s
*
**/
#include "cudablas
/include/cudablas
.h"
#include "cudablas/
include/
cudablas_z.h"
#include "cudablas.h"
#include "cudablas/cudablas_z.h"
#if defined(CHAMELEON_USE_MAGMA)
int
CUDA_zpotrf
(
...
...
cudablas/compute/cuda_zssssm.c
View file @
6513fcbf
...
...
@@ -22,8 +22,8 @@
* @precisions normal z -> c d s
*
**/
#include "cudablas
/include/cudablas
.h"
#include "cudablas/
include/
cudablas_z.h"
#include "cudablas.h"
#include "cudablas/cudablas_z.h"
#if defined(CHAMELEON_USE_MAGMA)
#if defined(HAVE_MAGMA_GETRF_INCPIV_GPU)
...
...
cudablas/compute/cuda_zsymm.c
View file @
6513fcbf
...
...
@@ -22,8 +22,8 @@
* @precisions normal z -> c d s
*
**/
#include "cudablas
/include/cudablas
.h"
#include "cudablas/
include/
cudablas_z.h"
#include "cudablas.h"
#include "cudablas/cudablas_z.h"
int
CUDA_zsymm
(
MORSE_enum
side
,
MORSE_enum
uplo
,
int
m
,
int
n
,
...
...
cudablas/compute/cuda_zsyr2k.c
View file @
6513fcbf
...
...
@@ -22,8 +22,8 @@
* @precisions normal z -> c d s
*
**/
#include "cudablas
/include/cudablas
.h"
#include "cudablas/
include/
cudablas_z.h"
#include "cudablas.h"
#include "cudablas/cudablas_z.h"
int
CUDA_zsyr2k
(
MORSE_enum
uplo
,
MORSE_enum
trans
,
...
...
cudablas/compute/cuda_zsyrk.c
View file @
6513fcbf
...
...
@@ -22,8 +22,8 @@
* @precisions normal z -> c d s
*
**/
#include "cudablas
/include/cudablas
.h"
#include "cudablas/
include/
cudablas_z.h"
#include "cudablas.h"
#include "cudablas/cudablas_z.h"
int
CUDA_zsyrk
(
MORSE_enum
uplo
,
MORSE_enum
trans
,
int
n
,
int
k
,
...
...
cudablas/compute/cuda_ztpmqrt.c
View file @
6513fcbf
...
...
@@ -22,8 +22,8 @@
* @precisions normal z -> c d s
*
**/
#include "cudablas
/include/cudablas
.h"
#include "cudablas/
include/
cudablas_z.h"
#include "cudablas.h"
#include "cudablas/cudablas_z.h"
int
CUDA_ztpmqrt
(
MORSE_enum
side
,
MORSE_enum
trans
,
...
...
cudablas/compute/cuda_ztrmm.c
View file @
6513fcbf
...
...
@@ -22,8 +22,8 @@
* @precisions normal z -> c d s
*
**/
#include "cudablas
/include/cudablas
.h"
#include "cudablas/
include/
cudablas_z.h"
#include "cudablas.h"
#include "cudablas/cudablas_z.h"
int
CUDA_ztrmm
(
MORSE_enum
side
,
MORSE_enum
uplo
,
...
...
cudablas/compute/cuda_ztrsm.c
View file @
6513fcbf
...
...
@@ -22,8 +22,8 @@
* @precisions normal z -> c d s
*
**/
#include "cudablas
/include/cudablas
.h"
#include "cudablas/
include/
cudablas_z.h"
#include "cudablas.h"
#include "cudablas/cudablas_z.h"
int
CUDA_ztrsm
(
MORSE_enum
side
,
MORSE_enum
uplo
,
MORSE_enum
transa
,
MORSE_enum
diag
,
...
...
cudablas/compute/cuda_ztrtri.c
View file @
6513fcbf
...
...
@@ -22,8 +22,8 @@
* @precisions normal z -> c d s
*
**/
#include "cudablas
/include/cudablas
.h"
#include "cudablas/
include/
cudablas_z.h"
#include "cudablas.h"
#include "cudablas/cudablas_z.h"
#if defined(CHAMELEON_USE_MAGMA)
int
CUDA_ztrtri
(
...
...
cudablas/compute/cuda_ztslqt.c
View file @
6513fcbf
...
...
@@ -22,8 +22,8 @@
* @precisions normal z -> c d s
*
**/
#include "cudablas
/include/cudablas
.h"
#include "cudablas/
include/
cudablas_z.h"
#include "cudablas.h"
#include "cudablas/cudablas_z.h"
#if defined(CHAMELEON_USE_MAGMA) && 0
int
CUDA_ztslqt
(
...
...
cudablas/compute/cuda_ztsmlq.c
View file @
6513fcbf
...
...
@@ -22,8 +22,8 @@
* @precisions normal z -> c d s
*
**/
#include "cudablas
/include/cudablas
.h"
#include "cudablas/
include/
cudablas_z.h"
#include "cudablas.h"
#include "cudablas/cudablas_z.h"
int
CUDA_ztsmlq
(
MORSE_enum
side
,
MORSE_enum
trans
,
...
...
cudablas/compute/cuda_ztsmqr.c
View file @
6513fcbf
...
...
@@ -22,8 +22,8 @@
* @precisions normal z -> c d s
*
**/
#include "cudablas
/include/cudablas
.h"
#include "cudablas/
include/
cudablas_z.h"
#include "cudablas.h"
#include "cudablas/cudablas_z.h"
int
CUDA_ztsmqr
(
MORSE_enum
side
,
MORSE_enum
trans
,
...
...
cudablas/compute/cuda_ztsqrt.c
View file @
6513fcbf
...
...
@@ -22,8 +22,8 @@
* @precisions normal z -> c d s
*
**/
#include "cudablas
/include/cudablas
.h"
#include "cudablas/
include/
cudablas_z.h"
#include "cudablas.h"
#include "cudablas/cudablas_z.h"
#if defined(CHAMELEON_USE_MAGMA)
int
CUDA_ztsqrt
(
...
...
cudablas/compute/cuda_ztstrf.c
View file @
6513fcbf
...
...
@@ -22,8 +22,8 @@
* @precisions normal z -> c d s
*
**/
#include "cudablas
/include/cudablas
.h"
#include "cudablas/
include/
cudablas_z.h"
#include "cudablas.h"
#include "cudablas/cudablas_z.h"
#if defined(CHAMELEON_USE_MAGMA) && 0
int
CUDA_ztstrf
(
...
...
cudablas/compute/cuda_zttmqr.c
View file @
6513fcbf
...
...
@@ -22,8 +22,8 @@
* @precisions normal z -> c d s
*
**/
#include "cudablas
/include/cudablas
.h"
#include "cudablas/
include/
cudablas_z.h"
#include "cudablas.h"
#include "cudablas/cudablas_z.h"
int
CUDA_zttmqr
(
MORSE_enum
side
,
MORSE_enum
trans
,
...
...
cudablas/compute/cuda_zunmlqt.c
View file @
6513fcbf
...
...
@@ -22,8 +22,8 @@
* @precisions normal z -> c d s
*
**/
#include "cudablas
/include/cudablas
.h"
#include "cudablas/
include/
cudablas_z.h"
#include "cudablas.h"
#include "cudablas/cudablas_z.h"
int
CUDA_zunmlqt
(
MORSE_enum
side
,
MORSE_enum
trans
,
...
...
cudablas/compute/cuda_zunmqrt.c
View file @
6513fcbf
...
...
@@ -22,8 +22,8 @@
* @precisions normal z -> c d s
*
**/
#include "cudablas
/include/cudablas
.h"
#include "cudablas/
include/
cudablas_z.h"
#include "cudablas.h"
#include "cudablas/cudablas_z.h"
int
CUDA_zunmqrt
(
MORSE_enum
side
,
MORSE_enum
trans
,
...
...
cudablas/compute/cudaglobal.c
View file @
6513fcbf
...
...
@@ -19,7 +19,7 @@
* @date 2017-04-06
*
**/
#include "cudablas
/include/cudablas
.h"
#include "cudablas.h"
/*******************************************************************************
* LAPACK Constants
...
...
cudablas/include/CMakeLists.txt
View file @
6513fcbf
...
...
@@ -27,31 +27,36 @@
# ---------------------
set
(
CUDABLAS_HDRS_GENERATED
""
)
set
(
ZHDR
cudablas_z.h
cudablas
/cudablas
_z.h
)
precisions_rules_py
(
CUDABLAS_HDRS_GENERATED
"
${
ZHDR
}
"
PRECISIONS
"s;d;c;z;zc;ds"
)
precisions_rules_py
(
CUDABLAS_HDRS_GENERATED
"
${
ZHDR
}
"
TARGETDIR cudablas
PRECISIONS
"s;d;c;z;zc;ds"
)
# Define the list of headers
# --------------------------
set
(
CUDABLAS_HDRS
cudablas.h
${
CUDABLAS_HDRS_GENERATED
}
)
# Add generated headers
# ---------------------
foreach
(
hdr_file
${
CUDABLAS_HDRS_GENERATED
}
)
list
(
APPEND CUDABLAS_HDRS
${
CMAKE_CURRENT_BINARY_DIR
}
/
${
hdr_file
}
)
endforeach
()
# Force generation of headers
# ---------------------------
add_custom_target
(
cudablas_include ALL SOURCES
${
CUDABLAS_HDRS
}
)
set
(
HDR_INSTALL
"cudablas.h"
)
foreach
(
hdr_file
${
CUDABLAS_HDRS_GENERATED
}
)
list
(
APPEND HDR_INSTALL
${
CMAKE_CURRENT_BINARY_DIR
}
/
${
hdr_file
}
)
endforeach
()
# installation
# Installation
# ------------
install
(
FILES
${
HDR_INSTALL
}
DESTINATION include/chameleon/cudablas/include
)
install
(
FILES cudablas.h
DESTINATION include
)
install
(
FILES
${
CUDABLAS_HDRS
}
DESTINATION include/cudablas
)
###
### END CMakeLists.txt
...
...
cudablas/include/cudablas.h
View file @
6513fcbf
...
...
@@ -25,7 +25,7 @@
#ifndef _CUDA_BLAS_H_
#define _CUDA_BLAS_H_
#include "
include
/chameleon_config.h"
#include "
chameleon
/chameleon_config.h"
#if !defined(CHAMELEON_USE_CUDA)
#error "This file should not be included"
...
...
@@ -68,20 +68,21 @@
/** ****************************************************************************
* MORSE types and constants
**/
#include "morse_types.h"
#include "morse_struct.h"
#include "morse_constants.h"
//#include "control/auxiliary.h"
//#include "control/descriptor.h"
//#include "control/tile.h"
#include "chameleon/morse_types.h"
#include "chameleon/morse_struct.h"
#include "chameleon/morse_constants.h"
/** ****************************************************************************
* CUDA BLAS headers
**/
#include "cudablas/include/cudablas_z.h"
#include "cudablas/include/cudablas_d.h"
#include "cudablas/include/cudablas_c.h"
#include "cudablas/include/cudablas_s.h"
BEGIN_C_DECLS
#include "cudablas/cudablas_z.h"
#include "cudablas/cudablas_d.h"
#include "cudablas/cudablas_c.h"
#include "cudablas/cudablas_s.h"
END_C_DECLS
/** ****************************************************************************
* Coreblas Error
...
...
@@ -91,6 +92,8 @@
/** ****************************************************************************
* LAPACK Constants
**/
BEGIN_C_DECLS
extern
char
*
morse_lapack_constants
[];
#define morse_lapack_const(morse_const) morse_lapack_constants[morse_const][0]
...
...
@@ -102,4 +105,6 @@ extern int morse_cublas_constants[];
#define morse_cublas_const(morse_const) morse_lapack_constants[morse_const][0]
#endif
END_C_DECLS
#endif
cudablas/include/cudablas_z.h
→
cudablas/include/cudablas
/cudablas
_z.h
View file @
6513fcbf
...
...
@@ -25,13 +25,6 @@
#ifndef _MORSE_CUDA_ZBLAS_H_
#define _MORSE_CUDA_ZBLAS_H_
#include "include/chameleon_config.h"
#include "morse_types.h"
#ifdef __cplusplus
extern
"C"
{
#endif
/** ****************************************************************************
* Declarations of cuda kernels - alphabetical order
**/
...
...
@@ -56,8 +49,4 @@ int CUDA_zttmqr( MORSE_enum side, MORSE_enum trans, int M1, int N1, int M2, int
int
CUDA_zunmlqt
(
MORSE_enum
side
,
MORSE_enum
trans
,
int
M
,
int
N
,
int
K
,
int
IB
,
const
cuDoubleComplex
*
A
,
int
LDA
,
const
cuDoubleComplex
*
T
,
int
LDT
,
cuDoubleComplex
*
C
,
int
LDC
,
cuDoubleComplex
*
WORK
,
int
LDWORK
,
CUBLAS_STREAM_PARAM
);
int
CUDA_zunmqrt
(
MORSE_enum
side
,
MORSE_enum
trans
,
int
M
,
int
N
,
int
K
,
int
IB
,
const
cuDoubleComplex
*
A
,
int
LDA
,
const
cuDoubleComplex
*
T
,
int
LDT
,
cuDoubleComplex
*
C
,
int
LDC
,
cuDoubleComplex
*
WORK
,
int
LDWORK
,
CUBLAS_STREAM_PARAM
);
#ifdef __cplusplus
}
#endif
#endif
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