@@ -317,11 +317,7 @@ static int CeedBasisApplyNonTensorCore_Magma(CeedBasis basis, bool apply_add, Ce
317317 CeedFESpace fe_space ;
318318 CeedInt q_comp_interp , q_comp_deriv ;
319319 Ceed ceed_delegate ;
320- char * basis_kernel_source ;
321- const char * basis_kernel_path , * weight_kernel_path ;
322- char * * file_paths = NULL ;
323- CeedInt num_file_paths = 0 ;
324- magma_int_t arch = magma_getdevice_arch ();
320+ magma_int_t arch = magma_getdevice_arch ();
325321
326322 // Tuning parameters for NB
327323 CeedCallBackend (CeedBasisGetFESpace (basis , & fe_space ));
@@ -346,14 +342,12 @@ static int CeedBasisApplyNonTensorCore_Magma(CeedBasis basis, bool apply_add, Ce
346342 CeedCallBackend (CeedGetDelegate (ceed , & ceed_delegate ));
347343
348344 // Compile kernels
349- CeedCallBackend (CeedGetJitAbsolutePath (ceed , "ceed/jit-source/magma/magma-basis-interp-deriv-nontensor.h" , & basis_kernel_path ));
350- CeedDebug256 (ceed , CEED_DEBUG_COLOR_SUCCESS , "----- Loading Basis Kernel Source -----\n" );
351- CeedCallBackend (CeedLoadSourceAndInitializeBuffer (ceed , basis_kernel_path , & num_file_paths , & file_paths , & basis_kernel_source ));
352- if (!impl -> Weight ) {
353- CeedCallBackend (CeedGetJitAbsolutePath (ceed , "ceed/jit-source/magma/magma-basis-weight-nontensor.h" , & weight_kernel_path ));
354- CeedCallBackend (CeedLoadSourceToInitializedBuffer (ceed , weight_kernel_path , & num_file_paths , & file_paths , & basis_kernel_source ));
355- }
356- CeedDebug256 (ceed , CEED_DEBUG_COLOR_SUCCESS , "----- Loading Basis Kernel Source Complete! -----\n" );
345+ char basis_kernel_source [] =
346+ "// Interp and grad basis source\n"
347+ "#include <ceed/jit-source/magma/magma-basis-interp-deriv-nontensor.h>\n"
348+ "// Weight basis source\n"
349+ "#include <ceed/jit-source/magma/magma-basis-weight-nontensor.h>\n" ;
350+
357351 CeedCallBackend (CeedCompileMagma (ceed_delegate , basis_kernel_source , "basis_nontensor" , & impl -> module [iN ], 8 , "BASIS_Q_COMP_INTERP" ,
358352 q_comp_interp , "BASIS_Q_COMP_DERIV" , q_comp_deriv , "BASIS_P" , P , "BASIS_Q" , Q , "BASIS_NB_INTERP_N" ,
359353 impl -> NB_interp [iN ], "BASIS_NB_INTERP_T" , impl -> NB_interp_t [iN ], "BASIS_NB_DERIV_N" , impl -> NB_deriv [iN ],
@@ -366,12 +360,7 @@ static int CeedBasisApplyNonTensorCore_Magma(CeedBasis basis, bool apply_add, Ce
366360 CeedCallBackend (CeedGetKernelMagma (ceed , impl -> module [iN ], "magma_deriv_nontensor_ta" , & impl -> DerivTransposeAdd [iN ]));
367361 if (!impl -> Weight ) {
368362 CeedCallBackend (CeedGetKernelMagma (ceed , impl -> module [iN ], "magma_weight_nontensor" , & impl -> Weight ));
369- CeedCallBackend (CeedFree (& weight_kernel_path ));
370363 }
371- CeedCallBackend (CeedFree (& basis_kernel_path ));
372- CeedCallBackend (CeedFree (& basis_kernel_source ));
373- for (CeedInt i = 0 ; i < num_file_paths ; i ++ ) CeedCallBackend (CeedFree (& file_paths [i ]));
374- CeedCallBackend (CeedFree (& file_paths ));
375364 CeedCallBackend (CeedDestroy (& ceed_delegate ));
376365 }
377366 }
@@ -532,10 +521,6 @@ int CeedBasisCreateTensorH1_Magma(CeedInt dim, CeedInt P_1d, CeedInt Q_1d, const
532521 const CeedScalar * q_ref_1d , const CeedScalar * q_weight_1d , CeedBasis basis ) {
533522 Ceed ceed , ceed_delegate ;
534523 Ceed_Magma * data ;
535- char * basis_kernel_source ;
536- const char * interp_kernel_path , * grad_kernel_path , * weight_kernel_path ;
537- char * * file_paths = NULL ;
538- CeedInt num_file_paths = 0 ;
539524 CeedInt num_comp ;
540525 CeedBasis_Magma * impl ;
541526
@@ -558,35 +543,19 @@ int CeedBasisCreateTensorH1_Magma(CeedInt dim, CeedInt P_1d, CeedInt Q_1d, const
558543
559544 // Compile kernels
560545 CeedCallBackend (CeedBasisGetNumComponents (basis , & num_comp ));
561- {
562- char * interp_kernel_name_base = "ceed/jit-source/magma/magma-basis-interp" ;
563- CeedInt interp_kernel_name_len = strlen (interp_kernel_name_base ) + 6 ;
564- char interp_kernel_name [interp_kernel_name_len ];
546+ char basis_kernel_source [CEED_MAX_RESOURCE_LEN ];
547+
548+ snprintf (basis_kernel_source , CEED_MAX_RESOURCE_LEN ,
549+ "// Interp basis source\n"
550+ "#include <ceed/jit-source/magma/magma-basis-interp-%" CeedInt_FMT
551+ "d.h>\n"
552+ "// Grad basis source\n"
553+ "#include <ceed/jit-source/magma/magma-basis-grad-%" CeedInt_FMT
554+ "d.h>\n"
555+ "// Weight basis source\n"
556+ "#include <ceed/jit-source/magma/magma-basis-weight-%" CeedInt_FMT "d.h>\n" ,
557+ num_comp , num_comp , num_comp );
565558
566- snprintf (interp_kernel_name , interp_kernel_name_len , "%s-%" CeedInt_FMT "d.h" , interp_kernel_name_base , dim );
567- CeedCallBackend (CeedGetJitAbsolutePath (ceed , interp_kernel_name , & interp_kernel_path ));
568- }
569- CeedDebug256 (ceed , CEED_DEBUG_COLOR_SUCCESS , "----- Loading Basis Kernel Source -----\n" );
570- CeedCallBackend (CeedLoadSourceAndInitializeBuffer (ceed , interp_kernel_path , & num_file_paths , & file_paths , & basis_kernel_source ));
571- {
572- char * grad_kernel_name_base = "ceed/jit-source/magma/magma-basis-grad" ;
573- CeedInt grad_kernel_name_len = strlen (grad_kernel_name_base ) + 6 ;
574- char grad_kernel_name [grad_kernel_name_len ];
575-
576- snprintf (grad_kernel_name , grad_kernel_name_len , "%s-%" CeedInt_FMT "d.h" , grad_kernel_name_base , dim );
577- CeedCallBackend (CeedGetJitAbsolutePath (ceed , grad_kernel_name , & grad_kernel_path ));
578- }
579- CeedCallBackend (CeedLoadSourceToInitializedBuffer (ceed , grad_kernel_path , & num_file_paths , & file_paths , & basis_kernel_source ));
580- {
581- char * weight_kernel_name_base = "ceed/jit-source/magma/magma-basis-weight" ;
582- CeedInt weight_kernel_name_len = strlen (weight_kernel_name_base ) + 6 ;
583- char weight_kernel_name [weight_kernel_name_len ];
584-
585- snprintf (weight_kernel_name , weight_kernel_name_len , "%s-%" CeedInt_FMT "d.h" , weight_kernel_name_base , dim );
586- CeedCallBackend (CeedGetJitAbsolutePath (ceed , weight_kernel_name , & weight_kernel_path ));
587- }
588- CeedCallBackend (CeedLoadSourceToInitializedBuffer (ceed , weight_kernel_path , & num_file_paths , & file_paths , & basis_kernel_source ));
589- CeedDebug256 (ceed , CEED_DEBUG_COLOR_SUCCESS , "----- Loading Basis Kernel Source Complete! -----\n" );
590559 CeedCallBackend (CeedCompileMagma (ceed_delegate , basis_kernel_source , "basis_h1_tensor" , & impl -> module , 5 , "BASIS_DIM" , dim , "BASIS_NUM_COMP" ,
591560 num_comp , "BASIS_P" , P_1d , "BASIS_Q" , Q_1d , "BASIS_MAX_P_Q" , CeedIntMax (P_1d , Q_1d )));
592561 switch (dim ) {
@@ -618,13 +587,6 @@ int CeedBasisCreateTensorH1_Magma(CeedInt dim, CeedInt P_1d, CeedInt Q_1d, const
618587 CeedCallBackend (CeedGetKernelMagma (ceed , impl -> module , "magma_weight_3d_kernel" , & impl -> Weight ));
619588 break ;
620589 }
621- CeedCallBackend (CeedFree (& interp_kernel_path ));
622- CeedCallBackend (CeedFree (& grad_kernel_path ));
623- CeedCallBackend (CeedFree (& weight_kernel_path ));
624- CeedCallBackend (CeedFree (& basis_kernel_source ));
625- for (CeedInt i = 0 ; i < num_file_paths ; i ++ ) CeedCallBackend (CeedFree (& file_paths [i ]));
626- CeedCallBackend (CeedFree (& file_paths ));
627-
628590 CeedCallBackend (CeedBasisSetData (basis , impl ));
629591
630592 CeedCallBackend (CeedSetBackendFunction (ceed , "Basis" , basis , "Apply" , CeedBasisApply_Magma ));
@@ -671,22 +633,16 @@ int CeedBasisCreateH1_Magma(CeedElemTopology topo, CeedInt dim, CeedInt num_node
671633
672634 // Compile the weight kernel if it won't be compiled later on
673635 if (num_nodes > MAGMA_NONTENSOR_CUSTOM_KERNEL_MAX_P || num_qpts > MAGMA_NONTENSOR_CUSTOM_KERNEL_MAX_Q ) {
674- Ceed ceed_delegate ;
675- char * basis_kernel_source ;
676- const char * weight_kernel_path ;
636+ Ceed ceed_delegate ;
677637
678638 // The RTC compilation code expects a Ceed with the common Ceed_Cuda or Ceed_Hip data
679639 CeedCallBackend (CeedGetDelegate (ceed , & ceed_delegate ));
680640
681641 // Compile weight kernel (the remainder of kernel compilation happens at first call to CeedBasisApply)
682- CeedCallBackend (CeedGetJitAbsolutePath (ceed , "ceed/jit-source/magma/magma-basis-weight-nontensor.h" , & weight_kernel_path ));
683- CeedDebug256 (ceed , CEED_DEBUG_COLOR_SUCCESS , "----- Loading Basis Kernel Source -----\n" );
684- CeedCallBackend (CeedLoadSourceToBuffer (ceed , weight_kernel_path , & basis_kernel_source ));
685- CeedDebug256 (ceed , CEED_DEBUG_COLOR_SUCCESS , "----- Loading Basis Kernel Source Complete! -----\n" );
686- CeedCallBackend (CeedCompileMagma (ceed_delegate , basis_kernel_source , "basis_h1_tensor" , & impl -> module [0 ], 1 , "BASIS_Q" , num_qpts ));
642+ const char basis_kernel_source [] = "// Weight basis source\n#include <ceed/jit-source/magma/magma-basis-weight-nontensor.h.h>\n" ;
643+
644+ CeedCallBackend (CeedCompileMagma (ceed_delegate , basis_kernel_source , "basis_h1_nontensor_weight" , & impl -> module [0 ], 1 , "BASIS_Q" , num_qpts ));
687645 CeedCallBackend (CeedGetKernelMagma (ceed , impl -> module [0 ], "magma_weight_nontensor" , & impl -> Weight ));
688- CeedCallBackend (CeedFree (& weight_kernel_path ));
689- CeedCallBackend (CeedFree (& basis_kernel_source ));
690646 CeedCallBackend (CeedDestroy (& ceed_delegate ));
691647 }
692648
@@ -735,22 +691,16 @@ int CeedBasisCreateHdiv_Magma(CeedElemTopology topo, CeedInt dim, CeedInt num_no
735691
736692 // Compile the weight kernel if it won't be compiled later on
737693 if (num_nodes > MAGMA_NONTENSOR_CUSTOM_KERNEL_MAX_P || num_qpts > MAGMA_NONTENSOR_CUSTOM_KERNEL_MAX_Q ) {
738- Ceed ceed_delegate ;
739- char * basis_kernel_source ;
740- const char * weight_kernel_path ;
694+ Ceed ceed_delegate ;
741695
742696 // The RTC compilation code expects a Ceed with the common Ceed_Cuda or Ceed_Hip data
743697 CeedCallBackend (CeedGetDelegate (ceed , & ceed_delegate ));
744698
745699 // Compile weight kernel (the remainder of kernel compilation happens at first call to CeedBasisApply)
746- CeedCallBackend (CeedGetJitAbsolutePath (ceed , "ceed/jit-source/magma/magma-basis-weight-nontensor.h" , & weight_kernel_path ));
747- CeedDebug256 (ceed , CEED_DEBUG_COLOR_SUCCESS , "----- Loading Basis Kernel Source -----\n" );
748- CeedCallBackend (CeedLoadSourceToBuffer (ceed , weight_kernel_path , & basis_kernel_source ));
749- CeedDebug256 (ceed , CEED_DEBUG_COLOR_SUCCESS , "----- Loading Basis Kernel Source Complete! -----\n" );
750- CeedCallBackend (CeedCompileMagma (ceed_delegate , basis_kernel_source , "basis_h_div" , & impl -> module [0 ], 1 , "BASIS_Q" , num_qpts ));
700+ const char basis_kernel_source [] = "// Weight basis source\n#include <ceed/jit-source/magma/magma-basis-weight-nontensor.h.h>\n" ;
701+
702+ CeedCallBackend (CeedCompileMagma (ceed_delegate , basis_kernel_source , "basis_h_div_weight" , & impl -> module [0 ], 1 , "BASIS_Q" , num_qpts ));
751703 CeedCallBackend (CeedGetKernelMagma (ceed , impl -> module [0 ], "magma_weight_nontensor" , & impl -> Weight ));
752- CeedCallBackend (CeedFree (& weight_kernel_path ));
753- CeedCallBackend (CeedFree (& basis_kernel_source ));
754704 CeedCallBackend (CeedDestroy (& ceed_delegate ));
755705 }
756706
@@ -799,22 +749,16 @@ int CeedBasisCreateHcurl_Magma(CeedElemTopology topo, CeedInt dim, CeedInt num_n
799749
800750 // Compile the weight kernel if it won't be compiled later on
801751 if (num_nodes > MAGMA_NONTENSOR_CUSTOM_KERNEL_MAX_P || num_qpts > MAGMA_NONTENSOR_CUSTOM_KERNEL_MAX_Q ) {
802- Ceed ceed_delegate ;
803- char * basis_kernel_source ;
804- const char * weight_kernel_path ;
752+ Ceed ceed_delegate ;
805753
806754 // The RTC compilation code expects a Ceed with the common Ceed_Cuda or Ceed_Hip data
807755 CeedCallBackend (CeedGetDelegate (ceed , & ceed_delegate ));
808756
809757 // Compile weight kernel (the remainder of kernel compilation happens at first call to CeedBasisApply)
810- CeedCallBackend (CeedGetJitAbsolutePath (ceed , "ceed/jit-source/magma/magma-basis-weight-nontensor.h" , & weight_kernel_path ));
811- CeedDebug256 (ceed , CEED_DEBUG_COLOR_SUCCESS , "----- Loading Basis Kernel Source -----\n" );
812- CeedCallBackend (CeedLoadSourceToBuffer (ceed , weight_kernel_path , & basis_kernel_source ));
813- CeedDebug256 (ceed , CEED_DEBUG_COLOR_SUCCESS , "----- Loading Basis Kernel Source Complete! -----\n" );
814- CeedCallBackend (CeedCompileMagma (ceed_delegate , basis_kernel_source , "basis_h_curl" , & impl -> module [0 ], 1 , "BASIS_Q" , num_qpts ));
758+ const char basis_kernel_source [] = "// Weight basis source\n#include <ceed/jit-source/magma/magma-basis-weight-nontensor.h.h>\n" ;
759+
760+ CeedCallBackend (CeedCompileMagma (ceed_delegate , basis_kernel_source , "basis_h_curl_weight" , & impl -> module [0 ], 1 , "BASIS_Q" , num_qpts ));
815761 CeedCallBackend (CeedGetKernelMagma (ceed , impl -> module [0 ], "magma_weight_nontensor" , & impl -> Weight ));
816- CeedCallBackend (CeedFree (& weight_kernel_path ));
817- CeedCallBackend (CeedFree (& basis_kernel_source ));
818762 CeedCallBackend (CeedDestroy (& ceed_delegate ));
819763 }
820764
0 commit comments