Skip to content

Commit b7fc47c

Browse files
authored
Merge pull request #12 from ngimel/magma-cuda9
Files for magma cuda9 build
2 parents 8145afc + c8e8432 commit b7fc47c

File tree

5 files changed

+383
-0
lines changed

5 files changed

+383
-0
lines changed

conda/magma-cuda90-2.2.0/build.sh

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
export CMAKE_LIBRARY_PATH=$PREFIX/lib:$PREFIX/include:$CMAKE_LIBRARY_PATH
2+
export CMAKE_PREFIX_PATH=$PREFIX
3+
export PATH=$PREFIX/bin:$PATH
4+
5+
CUDA__VERSION=$(nvcc --version|tail -n1|cut -f5 -d" "|cut -f1 -d",")
6+
if [ "$CUDA__VERSION" != "9.0" ]; then
7+
echo "CUDA Version is not 9.0. CUDA Version found: $CUDA__VERSION"
8+
exit 1
9+
fi
10+
11+
mkdir build
12+
cd build
13+
cmake .. -DUSE_FORTRAN=OFF -DGPU_TARGET="All" -DCMAKE_INSTALL_PREFIX=$PREFIX
14+
make -j$(getconf _NPROCESSORS_CONF)
15+
make install
16+
cd ..
Lines changed: 193 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,193 @@
1+
--- magma-2.2.0/CMakeLists.txt 2016-11-20 20:20:02.000000000 -0500
2+
+++ magma-2.2.0/CMakeLists.txt 2017-07-17 01:10:32.161739159 -0400
3+
@@ -60,6 +60,7 @@
4+
message( WARNING "The compiler ${CMAKE_C_COMPILER} doesn't support the -std=c99 flag. Some code may not compile.")
5+
endif()
6+
7+
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libstdc++ -fno-exceptions")
8+
9+
# ----------------------------------------
10+
# check Fortran name mangling
11+
@@ -79,14 +80,14 @@
12+
13+
# ----------------------------------------
14+
# locate OpenMP
15+
-find_package( OpenMP )
16+
-if ( OPENMP_FOUND )
17+
- message( STATUS "Found OpenMP" )
18+
- message( STATUS " OpenMP_C_FLAGS ${OpenMP_C_FLAGS}" )
19+
- message( STATUS " OpenMP_CXX_FLAGS ${OpenMP_CXX_FLAGS}" )
20+
- set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}" )
21+
- set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}" )
22+
-endif()
23+
+# find_package( OpenMP )
24+
+# if ( OPENMP_FOUND )
25+
+# message( STATUS "Found OpenMP" )
26+
+# message( STATUS " OpenMP_C_FLAGS ${OpenMP_C_FLAGS}" )
27+
+# message( STATUS " OpenMP_CXX_FLAGS ${OpenMP_CXX_FLAGS}" )
28+
+# set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}" )
29+
+# set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}" )
30+
+# endif()
31+
32+
33+
# ----------------------------------------
34+
@@ -164,13 +165,20 @@
35+
set( NV_SM "${NV_SM} -gencode arch=compute_50,code=sm_50" )
36+
set( NV_COMP "-gencode arch=compute_50,code=compute_50" )
37+
message( STATUS " compile for CUDA arch 5.0 (Maxwell)" )
38+
- endif()
39+
+ endif()
40+
+
41+
+ if ( ${GPU_TARGET} MATCHES "All")
42+
+ set( MIN_ARCH 200)
43+
+ SET( NV_SM "-gencode arch=compute_30,code=sm_30 -gencode arch=compute_35,code=sm_35 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_32,code=sm_32 -gencode arch=compute_37,code=sm_37 -gencode arch=compute_53,code=sm_53 -gencode arch=compute_60,code=sm_60 -gencode arch=compute_61,code=sm_61 -gencode arch=compute_70,code=sm_70 ")
44+
+ SET( NV_COMP "")
45+
+ endif()
46+
47+
if ( NOT MIN_ARCH )
48+
message( FATAL_ERROR "GPU_TARGET must contain one or more of Fermi, Kepler, Maxwell, or sm{20,30,35,50}." )
49+
endif()
50+
51+
- set( CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -DHAVE_CUBLAS ${NV_SM} ${NV_COMP} ${FORTRAN_CONVENTION}" )
52+
+ set( CUDA_NVCC_FLAGS "${CUDA_NVCC_FLAGS} -DHAVE_CUBLAS -Xcompiler -fPIC ${NV_SM} ${NV_COMP} ${FORTRAN_CONVENTION}" )
53+
+ MESSAGE(STATUS "CUDA_NVCC_FLAGS: ${CUDA_NVCC_FLAGS}")
54+
add_definitions( "-DHAVE_CUBLAS -DMIN_CUDA_ARCH=${MIN_ARCH}" )
55+
message( STATUS "Define -DHAVE_CUBLAS -DMIN_CUDA_ARCH=${MIN_ARCH}" )
56+
endif()
57+
@@ -181,7 +189,7 @@
58+
set( LAPACK_LIBRARIES "" CACHE STRING "Libraries for LAPACK and BLAS, to manually override search" )
59+
if ( "${LAPACK_LIBRARIES}" STREQUAL "" )
60+
message( STATUS "Searching for BLAS and LAPACK. To override, set LAPACK_LIBRARIES using ccmake." )
61+
- find_package( LAPACK )
62+
+ # find_package( LAPACK )
63+
else()
64+
message( STATUS "User set LAPACK_LIBRARIES. To change, edit LAPACK_LIBRARIES using ccmake (set to empty to enable search)." )
65+
# Check existence -- but this may be okay, if the user entered, e.g., -llapack instead of /path/to/lapack.a
66+
@@ -228,7 +236,8 @@
67+
# ----------------------------------------
68+
# common flags
69+
70+
-set( LIBS tester lapacktest magma )
71+
+# set( LIBS tester lapacktest magma )
72+
+set( LIBS magma)
73+
74+
if ( WIN32 )
75+
# On Windows:
76+
@@ -336,32 +345,33 @@
77+
)
78+
endif()
79+
80+
+set_target_properties(magma PROPERTIES POSITION_INDEPENDENT_CODE ON)
81+
82+
# ----------------------------------------
83+
# compile tester library
84+
-add_library( tester ${libtest_all} )
85+
+# add_library( tester ${libtest_all} )
86+
87+
88+
# ----------------------------------------
89+
# compile lapacktest library
90+
# If use fortran, compile only Fortran files, not magma_[sdcz]_no_fortran.cpp
91+
# else, compile only C++ files, not Fortran files
92+
-if ( USE_FORTRAN )
93+
- foreach( f ${liblapacktest_all} )
94+
- if ( ${f} MATCHES "\\.(f|f90)$" )
95+
- list( APPEND liblapacktest_all_f ${f} )
96+
- endif()
97+
- endforeach()
98+
- add_library( lapacktest ${liblapacktest_all_f} )
99+
-else()
100+
- # alternatively, use only C/C++/CUDA files, including magma_[sdcz]_no_fortran.cpp
101+
- foreach( f ${liblapacktest_all} )
102+
- if ( ${f} MATCHES "\\.(c|cu|cpp)$" )
103+
- list( APPEND liblapacktest_all_cpp ${f} )
104+
- endif()
105+
- endforeach()
106+
- add_library( lapacktest ${liblapacktest_all_cpp} )
107+
-endif()
108+
+# if ( USE_FORTRAN )
109+
+# foreach( f ${liblapacktest_all} )
110+
+# if ( ${f} MATCHES "\\.(f|f90)$" )
111+
+# list( APPEND liblapacktest_all_f ${f} )
112+
+# endif()
113+
+# endforeach()
114+
+# add_library( lapacktest ${liblapacktest_all_f} )
115+
+# else()
116+
+# # alternatively, use only C/C++/CUDA files, including magma_[sdcz]_no_fortran.cpp
117+
+# foreach( f ${liblapacktest_all} )
118+
+# if ( ${f} MATCHES "\\.(c|cu|cpp)$" )
119+
+# list( APPEND liblapacktest_all_cpp ${f} )
120+
+# endif()
121+
+# endforeach()
122+
+# add_library( lapacktest ${liblapacktest_all_cpp} )
123+
+# endif()
124+
125+
126+
# ----------------------------------------
127+
@@ -380,42 +390,42 @@
128+
${CUDA_cusparse_LIBRARY}
129+
)
130+
set( LIBS_SPARSE ${LIBS} magma_sparse )
131+
-
132+
+set_target_properties(magma_sparse PROPERTIES POSITION_INDEPENDENT_CODE ON)
133+
134+
# ----------------------------------------
135+
# compile each tester
136+
137+
# save testers to testing/
138+
# save tester lib files to testing_lib/ to avoid cluttering lib/
139+
-set( CMAKE_RUNTIME_OUTPUT_DIRECTORY testing )
140+
-set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY testing_lib )
141+
-set( CMAKE_LIBRARY_OUTPUT_DIRECTORY testing_lib )
142+
+# set( CMAKE_RUNTIME_OUTPUT_DIRECTORY testing )
143+
+# set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY testing_lib )
144+
+# set( CMAKE_LIBRARY_OUTPUT_DIRECTORY testing_lib )
145+
146+
# skip Fortran testers, which require an extra file from CUDA
147+
-foreach( f ${testing_all} )
148+
- if ( ${f} MATCHES "\\.(c|cu|cpp)$" )
149+
- list( APPEND testing_all_cpp ${f} )
150+
- endif()
151+
-endforeach()
152+
-foreach( TEST ${testing_all_cpp} )
153+
- string( REGEX REPLACE "\\.(cpp|f90|F90)" "" EXE ${TEST} )
154+
- string( REGEX REPLACE "testing/" "" EXE ${EXE} )
155+
- #message( "${TEST} --> ${EXE}" )
156+
- add_executable( ${EXE} ${TEST} )
157+
- target_link_libraries( ${EXE} ${LIBS} )
158+
-endforeach()
159+
+# foreach( f ${testing_all} )
160+
+# if ( ${f} MATCHES "\\.(c|cu|cpp)$" )
161+
+# list( APPEND testing_all_cpp ${f} )
162+
+# endif()
163+
+# endforeach()
164+
+# foreach( TEST ${testing_all_cpp} )
165+
+# string( REGEX REPLACE "\\.(cpp|f90|F90)" "" EXE ${TEST} )
166+
+# string( REGEX REPLACE "testing/" "" EXE ${EXE} )
167+
+# #message( "${TEST} --> ${EXE}" )
168+
+# add_executable( ${EXE} ${TEST} )
169+
+# target_link_libraries( ${EXE} ${LIBS} )
170+
+# endforeach()
171+
172+
173+
# ----------------------------------------
174+
# compile each sparse tester
175+
-set( CMAKE_RUNTIME_OUTPUT_DIRECTORY sparse/testing )
176+
-foreach( TEST ${sparse_testing_all} )
177+
- string( REGEX REPLACE "\\.(cpp|f90|F90)" "" EXE ${TEST} )
178+
- string( REGEX REPLACE "sparse/testing/" "" EXE ${EXE} )
179+
- #message( "${TEST} --> ${EXE}" )
180+
- add_executable( ${EXE} ${TEST} )
181+
- target_link_libraries( ${EXE} ${LIBS_SPARSE} )
182+
-endforeach()
183+
+# set( CMAKE_RUNTIME_OUTPUT_DIRECTORY sparse/testing )
184+
+# foreach( TEST ${sparse_testing_all} )
185+
+# string( REGEX REPLACE "\\.(cpp|f90|F90)" "" EXE ${TEST} )
186+
+# string( REGEX REPLACE "sparse/testing/" "" EXE ${EXE} )
187+
+# #message( "${TEST} --> ${EXE}" )
188+
+# add_executable( ${EXE} ${TEST} )
189+
+# target_link_libraries( ${EXE} ${LIBS_SPARSE} )
190+
+# endforeach()
191+
192+
193+
# ----------------------------------------

conda/magma-cuda90-2.2.0/meta.yaml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package:
2+
name: magma-cuda90
3+
version: 2.2.0
4+
5+
source:
6+
url: http://icl.cs.utk.edu/projectsfiles/magma/downloads/magma-2.2.0.tar.gz
7+
patches:
8+
- cmakelists.patch
9+
- thread_queue.patch
10+
11+
12+
build:
13+
number: 1
14+
15+
about:
16+
home: http://icl.cs.utk.edu/magma/software/index.html
17+
license: BSD
18+
license_file: COPYRIGHT

conda/magma-cuda90-2.2.0/run_test.sh

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
#build/testing/testing_cgegqr_gpu
2+
#build/testing/testing_cgelqf_gpu
3+
#build/testing/testing_cgels3_gpu
4+
#build/testing/testing_cgels_gpu
5+
#build/testing/testing_cgeqp3_gpu
6+
#build/testing/testing_cgeqr2_gpu
7+
#build/testing/testing_cgeqr2x_gpu
8+
#build/testing/testing_cgeqrf_gpu
9+
#build/testing/testing_cgeqrf_mgpu
10+
#build/testing/testing_cgesv_gpu
11+
#build/testing/testing_cgetf2_gpu
12+
#build/testing/testing_cgetrf_gpu
13+
#build/testing/testing_cgetrf_mgpu
14+
#build/testing/testing_cgetri_gpu
15+
#build/testing/testing_cheevd_gpu
16+
#build/testing/testing_chegst_gpu
17+
#build/testing/testing_chemm_mgpu
18+
#build/testing/testing_chemv_mgpu
19+
#build/testing/testing_cher2k_mgpu
20+
#build/testing/testing_chesv_nopiv_gpu
21+
#build/testing/testing_chetrd_gpu
22+
#build/testing/testing_chetrd_mgpu
23+
#build/testing/testing_clarfb_gpu
24+
#build/testing/testing_cposv_gpu
25+
#build/testing/testing_cpotf2_gpu
26+
#build/testing/testing_cpotrf_gpu
27+
#build/testing/testing_cpotrf_mgpu
28+
#build/testing/testing_cpotri_gpu
29+
#build/testing/testing_csysv_nopiv_gpu
30+
#build/testing/testing_ctrtri_gpu
31+
#build/testing/testing_cungqr_gpu
32+
#build/testing/testing_cunmql_gpu
33+
#build/testing/testing_cunmqr_gpu
34+
#build/testing/testing_dgegqr_gpu
35+
#build/testing/testing_dgelqf_gpu
36+
#build/testing/testing_dgels3_gpu
37+
#build/testing/testing_dgels_gpu
38+
#build/testing/testing_dgeqp3_gpu
39+
#build/testing/testing_dgeqr2_gpu
40+
#build/testing/testing_dgeqr2x_gpu
41+
#build/testing/testing_dgeqrf_gpu
42+
#build/testing/testing_dgeqrf_mgpu
43+
#build/testing/testing_dgesv_gpu
44+
#build/testing/testing_dgetf2_gpu
45+
#build/testing/testing_dgetrf_gpu
46+
#build/testing/testing_dgetrf_mgpu
47+
#build/testing/testing_dgetri_gpu
48+
#build/testing/testing_dlarfb_gpu
49+
#build/testing/testing_dorgqr_gpu
50+
#build/testing/testing_dormql_gpu
51+
#build/testing/testing_dormqr_gpu
52+
#build/testing/testing_dposv_gpu
53+
#build/testing/testing_dpotf2_gpu
54+
#build/testing/testing_dpotrf_gpu
55+
#build/testing/testing_dpotrf_mgpu
56+
#build/testing/testing_dpotri_gpu
57+
#build/testing/testing_dsgeqrsv_gpu
58+
#build/testing/testing_dsgesv_gpu
59+
#build/testing/testing_dsposv_gpu
60+
#build/testing/testing_dsyevd_gpu
61+
#build/testing/testing_dsygst_gpu
62+
#build/testing/testing_dsymm_mgpu
63+
#build/testing/testing_dsymv_mgpu
64+
#build/testing/testing_dsyr2k_mgpu
65+
#build/testing/testing_dsysv_nopiv_gpu
66+
#build/testing/testing_dsytrd_gpu
67+
#build/testing/testing_dsytrd_mgpu
68+
#build/testing/testing_dtrtri_gpu
69+
#build/testing/testing_sgegqr_gpu
70+
#build/testing/testing_sgelqf_gpu
71+
#build/testing/testing_sgels3_gpu
72+
#build/testing/testing_sgels_gpu
73+
#build/testing/testing_sgeqp3_gpu
74+
#build/testing/testing_sgeqr2_gpu
75+
#build/testing/testing_sgeqr2x_gpu
76+
#build/testing/testing_sgeqrf_gpu
77+
#build/testing/testing_sgeqrf_mgpu
78+
#build/testing/testing_sgesv_gpu
79+
#build/testing/testing_sgetf2_gpu
80+
#build/testing/testing_sgetrf_gpu
81+
#build/testing/testing_sgetrf_mgpu
82+
#build/testing/testing_sgetri_gpu
83+
#build/testing/testing_slarfb_gpu
84+
#build/testing/testing_sorgqr_gpu
85+
#build/testing/testing_sormql_gpu
86+
#build/testing/testing_sormqr_gpu
87+
#build/testing/testing_sposv_gpu
88+
#build/testing/testing_spotf2_gpu
89+
#build/testing/testing_spotrf_gpu
90+
#build/testing/testing_spotrf_mgpu
91+
#build/testing/testing_spotri_gpu
92+
#build/testing/testing_ssyevd_gpu
93+
#build/testing/testing_ssygst_gpu
94+
#build/testing/testing_ssymm_mgpu
95+
#build/testing/testing_ssymv_mgpu
96+
#build/testing/testing_ssyr2k_mgpu
97+
#build/testing/testing_ssysv_nopiv_gpu
98+
#build/testing/testing_ssytrd_gpu
99+
#build/testing/testing_ssytrd_mgpu
100+
#build/testing/testing_strtri_gpu
101+
#build/testing/testing_zcgeqrsv_gpu
102+
#build/testing/testing_zcgesv_gpu
103+
#build/testing/testing_zcposv_gpu
104+
#build/testing/testing_zgegqr_gpu
105+
#build/testing/testing_zgelqf_gpu
106+
#build/testing/testing_zgels3_gpu
107+
#build/testing/testing_zgels_gpu
108+
#build/testing/testing_zgeqp3_gpu
109+
#build/testing/testing_zgeqr2_gpu
110+
#build/testing/testing_zgeqr2x_gpu
111+
#build/testing/testing_zgeqrf_gpu
112+
#build/testing/testing_zgeqrf_mgpu
113+
#build/testing/testing_zgesv_gpu
114+
#build/testing/testing_zgetf2_gpu
115+
#build/testing/testing_zgetrf_gpu
116+
#build/testing/testing_zgetrf_mgpu
117+
#build/testing/testing_zgetri_gpu
118+
#build/testing/testing_zheevd_gpu
119+
#build/testing/testing_zhegst_gpu
120+
#build/testing/testing_zhemm_mgpu
121+
#build/testing/testing_zhemv_mgpu
122+
#build/testing/testing_zher2k_mgpu
123+
#build/testing/testing_zhesv_nopiv_gpu
124+
#build/testing/testing_zhetrd_gpu
125+
#build/testing/testing_zhetrd_mgpu
126+
#build/testing/testing_zlarfb_gpu
127+
#build/testing/testing_zposv_gpu
128+
#build/testing/testing_zpotf2_gpu
129+
#build/testing/testing_zpotrf_gpu
130+
#build/testing/testing_zpotrf_mgpu
131+
#build/testing/testing_zpotri_gpu
132+
#build/testing/testing_zsysv_nopiv_gpu
133+
#build/testing/testing_ztrtri_gpu
134+
#build/testing/testing_zungqr_gpu
135+
#build/testing/testing_zunmql_gpu
136+
#build/testing/testing_zunmqr_gpu
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
--- magma-2.2.0/control/thread_queue.cpp 2016-08-30 06:37:49.000000000 -0700
2+
+++ magma-2.2.0/control/thread_queue.cpp 2016-10-10 19:47:28.911580965 -0700
3+
@@ -15,7 +15,7 @@
4+
{
5+
if ( err != 0 ) {
6+
fprintf( stderr, "Error: %s (%d)\n", strerror(err), err );
7+
- throw std::exception();
8+
+ // throw std::exception();
9+
}
10+
}
11+
12+
@@ -172,7 +172,7 @@
13+
check( pthread_mutex_lock( &mutex ));
14+
if ( quit_flag ) {
15+
fprintf( stderr, "Error: push_task() called after quit()\n" );
16+
- throw std::exception();
17+
+ // throw std::exception();
18+
}
19+
q.push( task );
20+
ntask += 1;

0 commit comments

Comments
 (0)