Skip to content

Commit

Permalink
Add cublas v2 support code
Browse files Browse the repository at this point in the history
  • Loading branch information
devjeonghwan committed May 31, 2023
1 parent 4959984 commit f350b10
Showing 1 changed file with 134 additions and 2 deletions.
136 changes: 134 additions & 2 deletions cuda/src/main/java/org/bytedeco/cuda/presets/cublas.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,18 +34,150 @@
* @author Samuel Audet
*/
@Properties(inherit = cudart.class, value = {
@Platform(define = {"CUBLASAPI", /*"CUBLAS_V2_H_"*/}, include = {"<cublas_api.h>", "<cublas.h>", "<cublasLt.h>", "<cublasXt.h>"},
@Platform(define = {"CUBLASAPI", /*"CUBLAS_V2_H_"*/}, include = {"<cublas_api.h>", "<cublas_v2.h>", "<cublasLt.h>", "<cublasXt.h>"},
link = {"cublasLt@.12", "cublas@.12"}),
@Platform(value = "windows-x86_64", preload = {"cublasLt64_12", "cublas64_12"})},
target = "org.bytedeco.cuda.cublas", global = "org.bytedeco.cuda.global.cublas")
@NoException
public class cublas implements InfoMapper {
final static String[][] CUBLAS_V2_FUNCTIONS = {
{"cublasCreate_v2", "cublasCreate"}, {"cublasDestroy_v2", "cublasDestroy"},
{"cublasGetVersion_v2", "cublasGetVersion"}, {"cublasSetWorkspace_v2", "cublasSetWorkspace"},
{"cublasSetStream_v2", "cublasSetStream"}, {"cublasGetStream_v2", "cublasGetStream"},
{"cublasGetPointerMode_v2", "cublasGetPointerMode"}, {"cublasSetPointerMode_v2", "cublasSetPointerMode"},

/* Blas1 Routines for 32-bit Integer */
{"cublasSnrm2_v2", "cublasSnrm2"}, {"cublasDnrm2_v2", "cublasDnrm2"}, {"cublasScnrm2_v2", "cublasScnrm2"},
{"cublasDznrm2_v2", "cublasDznrm2"}, {"cublasSdot_v2", "cublasSdot"}, {"cublasDdot_v2", "cublasDdot"},
{"cublasCdotu_v2", "cublasCdotu"}, {"cublasCdotc_v2", "cublasCdotc"}, {"cublasZdotu_v2", "cublasZdotu"},
{"cublasZdotc_v2", "cublasZdotc"}, {"cublasSscal_v2", "cublasSscal"}, {"cublasDscal_v2", "cublasDscal"},
{"cublasCscal_v2", "cublasCscal"}, {"cublasCsscal_v2", "cublasCsscal"}, {"cublasZscal_v2", "cublasZscal"},
{"cublasZdscal_v2", "cublasZdscal"}, {"cublasSaxpy_v2", "cublasSaxpy"}, {"cublasDaxpy_v2", "cublasDaxpy"},
{"cublasCaxpy_v2", "cublasCaxpy"}, {"cublasZaxpy_v2", "cublasZaxpy"}, {"cublasScopy_v2", "cublasScopy"},
{"cublasDcopy_v2", "cublasDcopy"}, {"cublasCcopy_v2", "cublasCcopy"}, {"cublasZcopy_v2", "cublasZcopy"},
{"cublasSswap_v2", "cublasSswap"}, {"cublasDswap_v2", "cublasDswap"}, {"cublasCswap_v2", "cublasCswap"},
{"cublasZswap_v2", "cublasZswap"}, {"cublasIsamax_v2", "cublasIsamax"}, {"cublasIdamax_v2", "cublasIdamax"},
{"cublasIcamax_v2", "cublasIcamax"}, {"cublasIzamax_v2", "cublasIzamax"}, {"cublasIsamin_v2", "cublasIsamin"},
{"cublasIdamin_v2", "cublasIdamin"}, {"cublasIcamin_v2", "cublasIcamin"}, {"cublasIzamin_v2", "cublasIzamin"},
{"cublasSasum_v2", "cublasSasum"}, {"cublasDasum_v2", "cublasDasum"}, {"cublasScasum_v2", "cublasScasum"},
{"cublasDzasum_v2", "cublasDzasum"}, {"cublasSrot_v2", "cublasSrot"}, {"cublasDrot_v2", "cublasDrot"},
{"cublasCrot_v2", "cublasCrot"}, {"cublasCsrot_v2", "cublasCsrot"}, {"cublasZrot_v2", "cublasZrot"},
{"cublasZdrot_v2", "cublasZdrot"}, {"cublasSrotg_v2", "cublasSrotg"}, {"cublasDrotg_v2", "cublasDrotg"},
{"cublasCrotg_v2", "cublasCrotg"}, {"cublasZrotg_v2", "cublasZrotg"}, {"cublasSrotm_v2", "cublasSrotm"},
{"cublasDrotm_v2", "cublasDrotm"}, {"cublasSrotmg_v2", "cublasSrotmg"}, {"cublasDrotmg_v2", "cublasDrotmg"},

/* Blas2 Routines for 32-bit Integer */
{"cublasSgemv_v2", "cublasSgemv"}, {"cublasDgemv_v2", "cublasDgemv"}, {"cublasCgemv_v2", "cublasCgemv"},
{"cublasZgemv_v2", "cublasZgemv"}, {"cublasSgbmv_v2", "cublasSgbmv"}, {"cublasDgbmv_v2", "cublasDgbmv"},
{"cublasCgbmv_v2", "cublasCgbmv"}, {"cublasZgbmv_v2", "cublasZgbmv"}, {"cublasStrmv_v2", "cublasStrmv"},
{"cublasDtrmv_v2", "cublasDtrmv"}, {"cublasCtrmv_v2", "cublasCtrmv"}, {"cublasZtrmv_v2", "cublasZtrmv"},
{"cublasStbmv_v2", "cublasStbmv"}, {"cublasDtbmv_v2", "cublasDtbmv"}, {"cublasCtbmv_v2", "cublasCtbmv"},
{"cublasZtbmv_v2", "cublasZtbmv"}, {"cublasStpmv_v2", "cublasStpmv"}, {"cublasDtpmv_v2", "cublasDtpmv"},
{"cublasCtpmv_v2", "cublasCtpmv"}, {"cublasZtpmv_v2", "cublasZtpmv"}, {"cublasStrsv_v2", "cublasStrsv"},
{"cublasDtrsv_v2", "cublasDtrsv"}, {"cublasCtrsv_v2", "cublasCtrsv"}, {"cublasZtrsv_v2", "cublasZtrsv"},
{"cublasStpsv_v2", "cublasStpsv"}, {"cublasDtpsv_v2", "cublasDtpsv"}, {"cublasCtpsv_v2", "cublasCtpsv"},
{"cublasZtpsv_v2", "cublasZtpsv"}, {"cublasStbsv_v2", "cublasStbsv"}, {"cublasDtbsv_v2", "cublasDtbsv"},
{"cublasCtbsv_v2", "cublasCtbsv"}, {"cublasZtbsv_v2", "cublasZtbsv"}, {"cublasSsymv_v2", "cublasSsymv"},
{"cublasDsymv_v2", "cublasDsymv"}, {"cublasCsymv_v2", "cublasCsymv"}, {"cublasZsymv_v2", "cublasZsymv"},
{"cublasChemv_v2", "cublasChemv"}, {"cublasZhemv_v2", "cublasZhemv"}, {"cublasSsbmv_v2", "cublasSsbmv"},
{"cublasDsbmv_v2", "cublasDsbmv"}, {"cublasChbmv_v2", "cublasChbmv"}, {"cublasZhbmv_v2", "cublasZhbmv"},
{"cublasSspmv_v2", "cublasSspmv"}, {"cublasDspmv_v2", "cublasDspmv"}, {"cublasChpmv_v2", "cublasChpmv"},
{"cublasZhpmv_v2", "cublasZhpmv"}, {"cublasSger_v2", "cublasSger"}, {"cublasDger_v2", "cublasDger"},
{"cublasCgeru_v2", "cublasCgeru"}, {"cublasCgerc_v2", "cublasCgerc"}, {"cublasZgeru_v2", "cublasZgeru"},
{"cublasZgerc_v2", "cublasZgerc"}, {"cublasSsyr_v2", "cublasSsyr"}, {"cublasDsyr_v2", "cublasDsyr"},
{"cublasCsyr_v2", "cublasCsyr"}, {"cublasZsyr_v2", "cublasZsyr"}, {"cublasCher_v2", "cublasCher"},
{"cublasZher_v2", "cublasZher"}, {"cublasSspr_v2", "cublasSspr"}, {"cublasDspr_v2", "cublasDspr"},
{"cublasChpr_v2", "cublasChpr"}, {"cublasZhpr_v2", "cublasZhpr"}, {"cublasSsyr2_v2", "cublasSsyr2"},
{"cublasDsyr2_v2", "cublasDsyr2"}, {"cublasCsyr2_v2", "cublasCsyr2"}, {"cublasZsyr2_v2", "cublasZsyr2"},
{"cublasCher2_v2", "cublasCher2"}, {"cublasZher2_v2", "cublasZher2"}, {"cublasSspr2_v2", "cublasSspr2"},
{"cublasDspr2_v2", "cublasDspr2"}, {"cublasChpr2_v2", "cublasChpr2"}, {"cublasZhpr2_v2", "cublasZhpr2"},

/* Blas3 Routines for 32-bit Integer */
{"cublasSgemm_v2", "cublasSgemm"}, {"cublasDgemm_v2", "cublasDgemm"}, {"cublasCgemm_v2", "cublasCgemm"},
{"cublasZgemm_v2", "cublasZgemm"}, {"cublasSsyrk_v2", "cublasSsyrk"}, {"cublasDsyrk_v2", "cublasDsyrk"},
{"cublasCsyrk_v2", "cublasCsyrk"}, {"cublasZsyrk_v2", "cublasZsyrk"}, {"cublasCherk_v2", "cublasCherk"},
{"cublasZherk_v2", "cublasZherk"}, {"cublasSsyr2k_v2", "cublasSsyr2k"}, {"cublasDsyr2k_v2", "cublasDsyr2k"},
{"cublasCsyr2k_v2", "cublasCsyr2k"}, {"cublasZsyr2k_v2", "cublasZsyr2k"}, {"cublasCher2k_v2", "cublasCher2k"},
{"cublasZher2k_v2", "cublasZher2k"}, {"cublasSsymm_v2", "cublasSsymm"}, {"cublasDsymm_v2", "cublasDsymm"},
{"cublasCsymm_v2", "cublasCsymm"}, {"cublasZsymm_v2", "cublasZsymm"}, {"cublasChemm_v2", "cublasChemm"},
{"cublasZhemm_v2", "cublasZhemm"}, {"cublasStrsm_v2", "cublasStrsm"}, {"cublasDtrsm_v2", "cublasDtrsm"},
{"cublasCtrsm_v2", "cublasCtrsm"}, {"cublasZtrsm_v2", "cublasZtrsm"}, {"cublasStrmm_v2", "cublasStrmm"},
{"cublasDtrmm_v2", "cublasDtrmm"}, {"cublasCtrmm_v2", "cublasCtrmm"}, {"cublasZtrmm_v2", "cublasZtrmm"},

/* Blas1 Routines for 64-bit Integer */
{"cublasSnrm2_v2_64", "cublasSnrm2_64"}, {"cublasDnrm2_v2_64", "cublasDnrm2_64"}, {"cublasScnrm2_v2_64", "cublasScnrm2_64"},
{"cublasDznrm2_v2_64", "cublasDznrm2_64"}, {"cublasSdot_v2_64", "cublasSdot_64"}, {"cublasDdot_v2_64", "cublasDdot_64"},
{"cublasCdotu_v2_64", "cublasCdotu_64"}, {"cublasCdotc_v2_64", "cublasCdotc_64"}, {"cublasZdotu_v2_64", "cublasZdotu_64"},
{"cublasZdotc_v2_64", "cublasZdotc_64"}, {"cublasSscal_v2_64", "cublasSscal_64"}, {"cublasDscal_v2_64", "cublasDscal_64"},
{"cublasCscal_v2_64", "cublasCscal_64"}, {"cublasCsscal_v2_64", "cublasCsscal_64"}, {"cublasZscal_v2_64", "cublasZscal_64"},
{"cublasZdscal_v2_64", "cublasZdscal_64"}, {"cublasSaxpy_v2_64", "cublasSaxpy_64"}, {"cublasDaxpy_v2_64", "cublasDaxpy_64"},
{"cublasCaxpy_v2_64", "cublasCaxpy_64"}, {"cublasZaxpy_v2_64", "cublasZaxpy_64"}, {"cublasScopy_v2_64", "cublasScopy_64"},
{"cublasDcopy_v2_64", "cublasDcopy_64"}, {"cublasCcopy_v2_64", "cublasCcopy_64"}, {"cublasZcopy_v2_64", "cublasZcopy_64"},
{"cublasSswap_v2_64", "cublasSswap_64"}, {"cublasDswap_v2_64", "cublasDswap_64"}, {"cublasCswap_v2_64", "cublasCswap_64"},
{"cublasZswap_v2_64", "cublasZswap_64"}, {"cublasIsamax_v2_64", "cublasIsamax_64"}, {"cublasIdamax_v2_64", "cublasIdamax_64"},
{"cublasIcamax_v2_64", "cublasIcamax_64"}, {"cublasIzamax_v2_64", "cublasIzamax_64"}, {"cublasIsamin_v2_64", "cublasIsamin_64"},
{"cublasIdamin_v2_64", "cublasIdamin_64"}, {"cublasIcamin_v2_64", "cublasIcamin_64"}, {"cublasIzamin_v2_64", "cublasIzamin_64"},
{"cublasSasum_v2_64", "cublasSasum_64"}, {"cublasDasum_v2_64", "cublasDasum_64"}, {"cublasScasum_v2_64", "cublasScasum_64"},
{"cublasDzasum_v2_64", "cublasDzasum_64"}, {"cublasSrot_v2_64", "cublasSrot_64"}, {"cublasDrot_v2_64", "cublasDrot_64"},
{"cublasCrot_v2_64", "cublasCrot_64"}, {"cublasCsrot_v2_64", "cublasCsrot_64"}, {"cublasZrot_v2_64", "cublasZrot_64"},
{"cublasZdrot_v2_64", "cublasZdrot_64"}, {"cublasSrotg_v2_64", "cublasSrotg_64"}, {"cublasDrotg_v2_64", "cublasDrotg_64"},
{"cublasCrotg_v2_64", "cublasCrotg_64"}, {"cublasZrotg_v2_64", "cublasZrotg_64"}, {"cublasSrotm_v2_64", "cublasSrotm_64"},
{"cublasDrotm_v2_64", "cublasDrotm_64"}, {"cublasSrotmg_v2_64", "cublasSrotmg_64"}, {"cublasDrotmg_v2_64", "cublasDrotmg_64"},

/* Blas2 Routines for 64-bit Integer */
{"cublasSgemv_v2_64", "cublasSgemv_64"}, {"cublasDgemv_v2_64", "cublasDgemv_64"}, {"cublasCgemv_v2_64", "cublasCgemv_64"},
{"cublasZgemv_v2_64", "cublasZgemv_64"}, {"cublasSgbmv_v2_64", "cublasSgbmv_64"}, {"cublasDgbmv_v2_64", "cublasDgbmv_64"},
{"cublasCgbmv_v2_64", "cublasCgbmv_64"}, {"cublasZgbmv_v2_64", "cublasZgbmv_64"}, {"cublasStrmv_v2_64", "cublasStrmv_64"},
{"cublasDtrmv_v2_64", "cublasDtrmv_64"}, {"cublasCtrmv_v2_64", "cublasCtrmv_64"}, {"cublasZtrmv_v2_64", "cublasZtrmv_64"},
{"cublasStbmv_v2_64", "cublasStbmv_64"}, {"cublasDtbmv_v2_64", "cublasDtbmv_64"}, {"cublasCtbmv_v2_64", "cublasCtbmv_64"},
{"cublasZtbmv_v2_64", "cublasZtbmv_64"}, {"cublasStpmv_v2_64", "cublasStpmv_64"}, {"cublasDtpmv_v2_64", "cublasDtpmv_64"},
{"cublasCtpmv_v2_64", "cublasCtpmv_64"}, {"cublasZtpmv_v2_64", "cublasZtpmv_64"}, {"cublasStrsv_v2_64", "cublasStrsv_64"},
{"cublasDtrsv_v2_64", "cublasDtrsv_64"}, {"cublasCtrsv_v2_64", "cublasCtrsv_64"}, {"cublasZtrsv_v2_64", "cublasZtrsv_64"},
{"cublasStpsv_v2_64", "cublasStpsv_64"}, {"cublasDtpsv_v2_64", "cublasDtpsv_64"}, {"cublasCtpsv_v2_64", "cublasCtpsv_64"},
{"cublasZtpsv_v2_64", "cublasZtpsv_64"}, {"cublasStbsv_v2_64", "cublasStbsv_64"}, {"cublasDtbsv_v2_64", "cublasDtbsv_64"},
{"cublasCtbsv_v2_64", "cublasCtbsv_64"}, {"cublasZtbsv_v2_64", "cublasZtbsv_64"}, {"cublasSsymv_v2_64", "cublasSsymv_64"},
{"cublasDsymv_v2_64", "cublasDsymv_64"}, {"cublasCsymv_v2_64", "cublasCsymv_64"}, {"cublasZsymv_v2_64", "cublasZsymv_64"},
{"cublasChemv_v2_64", "cublasChemv_64"}, {"cublasZhemv_v2_64", "cublasZhemv_64"}, {"cublasSsbmv_v2_64", "cublasSsbmv_64"},
{"cublasDsbmv_v2_64", "cublasDsbmv_64"}, {"cublasChbmv_v2_64", "cublasChbmv_64"}, {"cublasZhbmv_v2_64", "cublasZhbmv_64"},
{"cublasSspmv_v2_64", "cublasSspmv_64"}, {"cublasDspmv_v2_64", "cublasDspmv_64"}, {"cublasChpmv_v2_64", "cublasChpmv_64"},
{"cublasZhpmv_v2_64", "cublasZhpmv_64"}, {"cublasSger_v2_64", "cublasSger_64"}, {"cublasDger_v2_64", "cublasDger_64"},
{"cublasCgeru_v2_64", "cublasCgeru_64"}, {"cublasCgerc_v2_64", "cublasCgerc_64"}, {"cublasZgeru_v2_64", "cublasZgeru_64"},
{"cublasZgerc_v2_64", "cublasZgerc_64"}, {"cublasSsyr_v2_64", "cublasSsyr_64"}, {"cublasDsyr_v2_64", "cublasDsyr_64"},
{"cublasCsyr_v2_64", "cublasCsyr_64"}, {"cublasZsyr_v2_64", "cublasZsyr_64"}, {"cublasCher_v2_64", "cublasCher_64"},
{"cublasZher_v2_64", "cublasZher_64"}, {"cublasSspr_v2_64", "cublasSspr_64"}, {"cublasDspr_v2_64", "cublasDspr_64"},
{"cublasChpr_v2_64", "cublasChpr_64"}, {"cublasZhpr_v2_64", "cublasZhpr_64"}, {"cublasSsyr2_v2_64", "cublasSsyr2_64"},
{"cublasDsyr2_v2_64", "cublasDsyr2_64"}, {"cublasCsyr2_v2_64", "cublasCsyr2_64"}, {"cublasZsyr2_v2_64", "cublasZsyr2_64"},
{"cublasCher2_v2_64", "cublasCher2_64"}, {"cublasZher2_v2_64", "cublasZher2_64"}, {"cublasSspr2_v2_64", "cublasSspr2_64"},
{"cublasDspr2_v2_64", "cublasDspr2_64"}, {"cublasChpr2_v2_64", "cublasChpr2_64"}, {"cublasZhpr2_v2_64", "cublasZhpr2_64"},

/* Blas3 Routines for 64-bit Integer */
{"cublasSgemm_v2_64", "cublasSgemm_64"}, {"cublasDgemm_v2_64", "cublasDgemm_64"}, {"cublasCgemm_v2_64", "cublasCgemm_64"},
{"cublasZgemm_v2_64", "cublasZgemm_64"}, {"cublasSsyrk_v2_64", "cublasSsyrk_64"}, {"cublasDsyrk_v2_64", "cublasDsyrk_64"},
{"cublasCsyrk_v2_64", "cublasCsyrk_64"}, {"cublasZsyrk_v2_64", "cublasZsyrk_64"}, {"cublasCherk_v2_64", "cublasCherk_64"},
{"cublasZherk_v2_64", "cublasZherk_64"}, {"cublasSsyr2k_v2_64", "cublasSsyr2k_64"}, {"cublasDsyr2k_v2_64", "cublasDsyr2k_64"},
{"cublasCsyr2k_v2_64", "cublasCsyr2k_64"}, {"cublasZsyr2k_v2_64", "cublasZsyr2k_64"}, {"cublasCher2k_v2_64", "cublasCher2k_64"},
{"cublasZher2k_v2_64", "cublasZher2k_64"}, {"cublasSsymm_v2_64", "cublasSsymm_64"}, {"cublasDsymm_v2_64", "cublasDsymm_64"},
{"cublasCsymm_v2_64", "cublasCsymm_64"}, {"cublasZsymm_v2_64", "cublasZsymm_64"}, {"cublasChemm_v2_64", "cublasChemm_64"},
{"cublasZhemm_v2_64", "cublasZhemm_64"}, {"cublasStrsm_v2_64", "cublasStrsm_64"}, {"cublasDtrsm_v2_64", "cublasDtrsm_64"},
{"cublasCtrsm_v2_64", "cublasCtrsm_64"}, {"cublasZtrsm_v2_64", "cublasZtrsm_64"}, {"cublasStrmm_v2_64", "cublasStrmm_64"},
{"cublasDtrmm_v2_64", "cublasDtrmm_64"}, {"cublasCtrmm_v2_64", "cublasCtrmm_64"}, {"cublasZtrmm_v2_64", "cublasZtrmm_64"}
};


public void map(InfoMap infoMap) {
infoMap.put(new Info("CUBLASAPI", "CUBLASWINAPI").cppTypes().annotations().cppText(""))
.put(new Info("cublasLtDisableCpuInstructionsSetMask").skip())
.put(new Info("cublasHandle_t").valueTypes("cublasContext").pointerTypes("@ByPtrPtr cublasContext"))
.put(new Info("cublasStatus").cppTypes())

.put(new Info("cublasLtHandle_t").valueTypes("cublasLtContext").pointerTypes("@ByPtrPtr cublasLtContext"))
.put(new Info("cublasXtHandle_t").valueTypes("cublasXtContext").pointerTypes("@ByPtrPtr cublasXtContext"));

for (String[] functionNames : CUBLAS_V2_FUNCTIONS) {
String v2Name = functionNames[0];
String v1Name = functionNames[1];

infoMap.put(new Info(v1Name).cppTypes())
.put(new Info(v2Name).javaNames(v1Name));
}
}
}

0 comments on commit f350b10

Please sign in to comment.