| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				 | 
				
					@ -177,15 +177,15 @@ class OpKernelRegistrar : public Registrar {
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					/**
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					 * Macro to register OperatorKernel.
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					 */
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					#define REGISTER_OP_KERNEL(op_type, DEVICE_TYPE, place_class, ...)        \
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					#define REGISTER_OP_KERNEL(op_type, LIBRARY_TYPE, place_class, ...)        \
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					  STATIC_ASSERT_GLOBAL_NAMESPACE(                                          \
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					      __reg_op_kernel_##op_type##_##DEVICE_TYPE##__,                      \
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					      __reg_op_kernel_##op_type##_##LIBRARY_TYPE##__,                      \
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					      "REGISTER_OP_KERNEL must be called in global namespace");            \
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					  static ::paddle::framework::OpKernelRegistrar<place_class, __VA_ARGS__>  \
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					      __op_kernel_registrar_##op_type##_##DEVICE_TYPE##__(#op_type,       \
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					                                                          #DEVICE_TYPE);  \
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					  int TouchOpKernelRegistrar_##op_type##_##DEVICE_TYPE() {                \
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					    __op_kernel_registrar_##op_type##_##DEVICE_TYPE##__.Touch();          \
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					      __op_kernel_registrar_##op_type##_##LIBRARY_TYPE##__(#op_type,       \
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					                                                           #LIBRARY_TYPE); \
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					  int TouchOpKernelRegistrar_##op_type##_##LIBRARY_TYPE() {                \
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					    __op_kernel_registrar_##op_type##_##LIBRARY_TYPE##__.Touch();          \
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					    return 0;                                                              \
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					  }
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					
 | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				 | 
				
					@ -208,14 +208,14 @@ class OpKernelRegistrar : public Registrar {
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					  static int use_op_itself_##op_type##_ __attribute__((unused)) = \
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					      TouchOpRegistrar_##op_type()
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					#define USE_OP_DEVICE_KERNEL(op_type, DEVICE_TYPE)               \
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					#define USE_OP_DEVICE_KERNEL(op_type, LIBRARY_TYPE)               \
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					  STATIC_ASSERT_GLOBAL_NAMESPACE(                                 \
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					      __use_op_kernel_##op_type##_##DEVICE_TYPE##__,             \
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					      __use_op_kernel_##op_type##_##LIBRARY_TYPE##__,             \
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					      "USE_OP_DEVICE_KERNEL must be in global namespace");        \
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					  extern int TouchOpKernelRegistrar_##op_type##_##DEVICE_TYPE(); \
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					  static int use_op_kernel_##op_type##_##DEVICE_TYPE##_          \
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					  extern int TouchOpKernelRegistrar_##op_type##_##LIBRARY_TYPE(); \
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					  static int use_op_kernel_##op_type##_##LIBRARY_TYPE##_          \
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					      __attribute__((unused)) =                                   \
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					          TouchOpKernelRegistrar_##op_type##_##DEVICE_TYPE()
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					          TouchOpKernelRegistrar_##op_type##_##LIBRARY_TYPE()
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					// TODO(fengjiayi): The following macros
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				 | 
				
					// seems ugly, do we have better method?
 | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				 | 
				
					
 
 |