Advertisement
Guest User

Untitled

a guest
May 9th, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. $ cat idiocy.f90
  2. module mathOps
  3.     contains
  4.     attributes(global) subroutine saxpy(x, y, a)
  5.     implicit none
  6.     real :: x(:), y(:)
  7.     real, value :: a
  8.     integer :: i, n
  9.     n = size(x)
  10.     i = blockDim%x * (blockIdx%x - 1) + threadIdx%x
  11.     if (i <= n) y(i) = y(i) + a*x(i)
  12.     end subroutine saxpy
  13. end module mathOps
  14.  
  15. program testSaxpy
  16.     use mathOps
  17.     use cudafor
  18.     implicit none
  19.     integer, parameter :: N = 40000
  20.     real :: x(N), y(N), a
  21.     real, device :: x_d(N), y_d(N)
  22.     type(dim3) :: grid, tBlock
  23.  
  24.     tBlock = dim3(256,1,1)
  25.     grid = dim3(ceiling(real(N)/tBlock%x),1,1)
  26.  
  27.     x = 1.0; y = 2.0; a = 2.0
  28.     x_d = x
  29.     y_d = y
  30.     call saxpy<<<grid, tBlock>>>(x_d, y_d, a)
  31.     y = y_d
  32.     write(*,*) 'Max error: ', maxval(abs(y-4.0))
  33. end program testSaxpy
  34.  
  35. $ ldd idiocy
  36.     linux-vdso.so.1 =>  (0x00007ffcac1e9000)
  37.     libcudafor80.so => /opt/pgi/linux86-64/18.4/lib/libcudafor80.so (0x00007f3b5be46000)
  38.     libcudafor.so => /opt/pgi/linux86-64/18.4/lib/libcudafor.so (0x00007f3b57dd1000)
  39.     libcublas.so.8.0 => /opt/pgi/linux86-64/2018/cuda/8.0/lib64/libcublas.so.8.0 (0x00007f3b55421000)
  40.     libcusparse.so.8.0 => /opt/pgi/linux86-64/2018/cuda/8.0/lib64/libcusparse.so.8.0 (0x00007f3b52913000)
  41.     libcurand.so.8.0 => /opt/pgi/linux86-64/2018/cuda/8.0/lib64/libcurand.so.8.0 (0x00007f3b4e9a9000)
  42.     libcudaforwrapblas.so => /opt/pgi/linux86-64/18.4/lib/libcudaforwrapblas.so (0x00007f3b4e770000)
  43.     libcudart.so.8.0 => /opt/pgi/linux86-64/2018/cuda/8.0/lib64/libcudart.so.8.0 (0x00007f3b4e50a000)
  44.     libcudafor2.so => /opt/pgi/linux86-64/18.4/lib/libcudafor2.so (0x00007f3b4e308000)
  45.     libpgf90rtl.so => /opt/pgi/linux86-64/18.4/lib/libpgf90rtl.so (0x00007f3b4e0e5000)
  46.     libpgf90.so => /opt/pgi/linux86-64/18.4/lib/libpgf90.so (0x00007f3b4db44000)
  47.     libpgf90_rpm1.so => /opt/pgi/linux86-64/18.4/lib/libpgf90_rpm1.so (0x00007f3b4d941000)
  48.     libpgf902.so => /opt/pgi/linux86-64/18.4/lib/libpgf902.so (0x00007f3b4d72d000)
  49.     libpgftnrtl.so => /opt/pgi/linux86-64/18.4/lib/libpgftnrtl.so (0x00007f3b4d4fc000)
  50.     libpgmp.so => /opt/pgi/linux86-64/18.4/lib/libpgmp.so (0x00007f3b4d27a000)
  51.     libnuma.so => /opt/pgi/linux86-64/18.4/lib/libnuma.so (0x00007f3b4d079000)
  52.     libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f3b4ce37000)
  53.     libpgmath.so => /opt/pgi/linux86-64/18.4/lib/libpgmath.so (0x00007f3b4c97f000)
  54.     libpgc.so => /opt/pgi/linux86-64/18.4/lib/libpgc.so (0x00007f3b4c736000)
  55.     librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f3b4c52e000)
  56.     libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f3b4c227000)
  57.     libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3b4be5e000)
  58.     libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f3b4bc47000)
  59.     /lib64/ld-linux-x86-64.so.2 (0x000055942ca2c000)
  60.     libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f3b4ba42000)
  61.     libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f3b4b72f000)
  62.  
  63. $ pgf90 -Mcuda=cc50 -o idiocy idiocy.f90
  64.  
  65. $ ./idiocy
  66.  Max error:     0.000000
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement