Advertisement
Guest User

Untitled

a guest
Apr 20th, 2014
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.32 KB | None | 0 0
  1. #pragma OPENCL EXTENSION cl_khr_fp64 : enable
  2. #pragma OPENCL EXTENSION cl_khr_3d_image_writes : enable
  3.  
  4. const sampler_t smp = CLK_NORMALIZED_COORDS_FALSE | //Natural coordinates
  5.                       CLK_ADDRESS_CLAMP | //Clamp to zeros
  6.                       CLK_FILTER_NEAREST; //Don't interpolate
  7.  
  8. __inline void PreSystem(int tsysSystemType, double* tsysNumberProperties)
  9. {{
  10. {1}
  11. }}
  12.  
  13. __inline void PostInteraction(int tsysSystemType, double* tsysNumberProperties, double* fsysNumberProperties)
  14. {{
  15. {2}
  16. }}
  17.  
  18. __inline void PostSystem(int tsysSystemType, double* tsysNumberProperties)
  19. {{
  20. {3}
  21. }}
  22.  
  23. __inline void Interaction(int tsysSystemType, int fsysSystemType, double* tsysNumberProperties, double* fsysNumberProperties)
  24. {{
  25. {4}
  26. }}
  27.  
  28. __kernel void PreInteractionForward(__global int* systemTypeBuffer, __read_only image3d_t numberPropertiesBuffer1, __write_only image3d_t numberPropertiesBuffer2)
  29. {{
  30.     int tsys = get_global_id(0);
  31.     int size = get_global_size(0);
  32.  
  33.     double tsysNumberProperties[{0}];
  34.  
  35.     for(int i = 0; i < {0}; i++)
  36.     {{
  37.         tsysNumberProperties[i] = as_double2(read_imagei(numberPropertiesBuffer1, smp, (int4)(tsys, i, tsys, 0))).x;
  38.     }}
  39.  
  40.     PreSystem(systemTypeBuffer[tsys], tsysNumberProperties);
  41.    
  42.     for(int i = 0; i < {0}; i++)
  43.     {{
  44.         write_imagei(numberPropertiesBuffer2, (int4)(tsys, i, tsys, 0), as_int4((double2)(tsysNumberProperties[i], 0.0)));
  45.     }}
  46. }}
  47.  
  48. __kernel void PostInteractionForward(__global int* systemTypeBuffer, __read_only image3d_t numberPropertiesBuffer1, __write_only image3d_t numberPropertiesBuffer2)
  49. {{
  50.     int tsys = get_global_id(0);
  51.     int size = get_global_size(0);
  52.  
  53.     double tsysNumberProperties[{0}];
  54.     double fsysNumberProperties[{0}];
  55.    
  56.     for(int i = 0; i < {0}; i++)
  57.     {{
  58.         tsysNumberProperties[i] = as_double2(read_imagei(numberPropertiesBuffer1, smp, (int4)(tsys, i, tsys, 0))).x;
  59.     }}
  60.  
  61.     for(int fsys = 0; fsys < size; fsys++)
  62.     {{
  63.         if(tsys != fsys)
  64.         {{
  65.             for (int i = 0; i < {0}; i++)
  66.             {{
  67.                 fsysNumberProperties[i] = as_double2(read_imagei(numberPropertiesBuffer1, smp, (int4)(tsys, i, fsys, 0))).x;
  68.             }}
  69.  
  70.             PostInteraction(systemTypeBuffer[tsys], tsysNumberProperties, fsysNumberProperties);
  71.  
  72.             for(int i = 0; i < {0}; i++)
  73.             {{
  74.                 write_imagei(numberPropertiesBuffer2, (int4)(tsys, i, fsys, 0), as_int4((double2)(fsysNumberProperties[i], 0.0)));
  75.             }}
  76.         }}
  77.     }}
  78.  
  79.     PostSystem(systemTypeBuffer[tsys], tsysNumberProperties);
  80.    
  81.     for(int i = 0; i < {0}; i++)
  82.     {{
  83.         write_imagei(numberPropertiesBuffer2, (int4)(tsys, i, tsys, 0), as_int4((double2)(tsysNumberProperties[i], 0.0)));
  84.     }}
  85. }}
  86.  
  87. __kernel void InteractionForward(__global int* systemTypeBuffer, __read_only image3d_t numberPropertiesBuffer1, __write_only image3d_t numberPropertiesBuffer2)
  88. {{
  89.     int tsys = get_global_id(0);
  90.     int fsys = get_global_id(1);
  91.    
  92.     if(tsys != fsys)
  93.     {{
  94.         double tsysNumberProperties[{0}];
  95.         double fsysNumberProperties[{0}];
  96.  
  97.         for(int i = 0; i < {0}; i++)
  98.         {{
  99.             tsysNumberProperties[i] = as_double2(read_imagei(numberPropertiesBuffer1, smp, (int4)(tsys, i, tsys, 0))).x;
  100.             fsysNumberProperties[i] = as_double2(read_imagei(numberPropertiesBuffer1, smp, (int4)(fsys, i, fsys, 0))).x;
  101.         }}
  102.  
  103.         Interaction(systemTypeBuffer[tsys], systemTypeBuffer[fsys], tsysNumberProperties, fsysNumberProperties);
  104.        
  105.         for(int i = 0; i < {0}; i++)
  106.         {{
  107.             write_imagei(numberPropertiesBuffer2, (int4)(tsys, i, fsys, 0), as_int4((double2)(tsysNumberProperties[i], 0.0)));
  108.             write_imagei(numberPropertiesBuffer2, (int4)(fsys, i, fsys, 0), as_int4((double2)(fsysNumberProperties[i], 0.0)));
  109.         }}
  110.     }}
  111. }}
  112.  
  113. __kernel void PreInteractionReverse(__global int* systemTypeBuffer, __write_only image3d_t numberPropertiesBuffer1, __read_only image3d_t numberPropertiesBuffer2)
  114. {{
  115.     int tsys = get_global_id(0);
  116.     int size = get_global_size(0);
  117.    
  118.     double tsysNumberProperties[{0}];
  119.  
  120.     for(int i = 0; i < {0}; i++)
  121.     {{
  122.         tsysNumberProperties[i] = as_double2(read_imagei(numberPropertiesBuffer2, smp, (int4)(tsys, i, tsys, 0))).x;
  123.     }}
  124.  
  125.     PreSystem(systemTypeBuffer[tsys], tsysNumberProperties);
  126.    
  127.     for(int i = 0; i < {0}; i++)
  128.     {{
  129.         write_imagei(numberPropertiesBuffer1, (int4)(tsys, i, tsys, 0), as_int4((double2)(tsysNumberProperties[i], 0.0)));
  130.     }}
  131. }}
  132.  
  133. __kernel void PostInteractionReverse(__global int* systemTypeBuffer, __write_only image3d_t numberPropertiesBuffer1, __read_only image3d_t numberPropertiesBuffer2)
  134. {{
  135.     int tsys = get_global_id(0);
  136.     int size = get_global_size(0);
  137.  
  138.     double tsysNumberProperties[{0}];
  139.     double fsysNumberProperties[{0}];
  140.    
  141.     for(int i = 0; i < {0}; i++)
  142.     {{
  143.         tsysNumberProperties[i] = as_double2(read_imagei(numberPropertiesBuffer2, smp, (int4)(tsys, i, tsys, 0))).x;
  144.     }}
  145.  
  146.     for(int fsys = 0; fsys < size; fsys++)
  147.     {{
  148.         if(tsys != fsys)
  149.         {{
  150.             for (int i = 0; i < {0}; i++)
  151.             {{
  152.                 fsysNumberProperties[i] = as_double2(read_imagei(numberPropertiesBuffer2, smp, (int4)(tsys, i, fsys, 0))).x;
  153.             }}
  154.  
  155.             PostInteraction(systemTypeBuffer[tsys], tsysNumberProperties, fsysNumberProperties);
  156.  
  157.             for(int i = 0; i < {0}; i++)
  158.             {{
  159.                 write_imagei(numberPropertiesBuffer1, (int4)(tsys, i, fsys, 0), as_int4((double2)(fsysNumberProperties[i], 0.0)));
  160.             }}
  161.         }}
  162.     }}
  163.  
  164.     PostSystem(systemTypeBuffer[tsys], tsysNumberProperties);
  165.    
  166.     for(int i = 0; i < {0}; i++)
  167.     {{
  168.         write_imagei(numberPropertiesBuffer1, (int4)(tsys, i, tsys, 0), as_int4((double2)(tsysNumberProperties[i], 0.0)));
  169.     }}
  170. }}
  171.  
  172. __kernel void InteractionReverse(__global int* systemTypeBuffer, __write_only image3d_t numberPropertiesBuffer1, __read_only image3d_t numberPropertiesBuffer2)
  173. {{
  174.     int tsys = get_global_id(0);
  175.     int fsys = get_global_id(1);
  176.    
  177.     if(tsys != fsys)
  178.     {{
  179.         double tsysNumberProperties[{0}];
  180.         double fsysNumberProperties[{0}];
  181.  
  182.         for(int i = 0; i < {0}; i++)
  183.         {{
  184.             tsysNumberProperties[i] = as_double2(read_imagei(numberPropertiesBuffer2, smp, (int4)(tsys, i, tsys, 0))).x;
  185.             fsysNumberProperties[i] = as_double2(read_imagei(numberPropertiesBuffer2, smp, (int4)(fsys, i, fsys, 0))).x;
  186.         }}
  187.  
  188.         Interaction(systemTypeBuffer[tsys], systemTypeBuffer[fsys], tsysNumberProperties, fsysNumberProperties);
  189.        
  190.         for(int i = 0; i < {0}; i++)
  191.         {{
  192.             write_imagei(numberPropertiesBuffer1, (int4)(tsys, i, fsys, 0), as_int4((double2)(tsysNumberProperties[i], 0.0)));
  193.             write_imagei(numberPropertiesBuffer1, (int4)(fsys, i, fsys, 0), as_int4((double2)(fsysNumberProperties[i], 0.0)));
  194.         }}
  195.     }}
  196. }}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement