gaussianElim_kernels.cl 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. //#pragma OPENCL EXTENSION cl_khr_byte_addressable_store : enable
  2. typedef struct latLong
  3. {
  4. float lat;
  5. float lng;
  6. } LatLong;
  7. __kernel void Fan1(__global float *m_dev,
  8. __global float *a_dev,
  9. __global float *b_dev,
  10. const int size,
  11. const int t) {
  12. int globalId = get_global_id(0);
  13. if (globalId < size-1-t) {
  14. *(m_dev + size * (globalId + t + 1)+t) = *(a_dev + size * (globalId + t + 1) + t) / *(a_dev + size * t + t);
  15. }
  16. }
  17. __kernel void Fan2(__global float *m_dev,
  18. __global float *a_dev,
  19. __global float *b_dev,
  20. const int size,
  21. const int t) {
  22. int globalId = get_global_id(0);
  23. int globalIdx = get_global_id(0);
  24. int globalIdy = get_global_id(1);
  25. if (globalIdx < size-1-t && globalIdy < size-t) {
  26. a_dev[size*(globalIdx+1+t)+(globalIdy+t)] -= m_dev[size*(globalIdx+1+t)+t] * a_dev[size*t+(globalIdy+t)];
  27. if(globalIdy == 0){
  28. b_dev[globalIdx+1+t] -= m_dev[size*(globalIdx+1+t)+(globalIdy+t)] * b_dev[t];
  29. }
  30. }
  31. // One dimensional
  32. // int globalIdx = globalId % size;
  33. // int globalIdy = globalId / size;
  34. //
  35. // if (globalIdx < size-1-t && globalIdy < size-t) {
  36. // a_dev[size*(globalIdx+1+t)+(globalIdy+t)] -= m_dev[size*(globalIdx+1+t)+t] * a_dev[size*t+(globalIdy+t)];
  37. // }
  38. // if(globalIdy == 0){
  39. // b_dev[globalIdx+1+t] -= m_dev[size*(globalIdx+1+t)+(globalIdy+t)] * b_dev[t];
  40. // }
  41. }