@@ -25,11 +25,11 @@ module m_igr
2525 s_finalize_igr_module
2626
2727#ifdef __NVCOMPILER_GPU_UNIFIED_MEM
28- integer , dimension (3 ) :: temp_on_gpu
28+ integer , dimension (3 ) :: nv_uvm_temp_on_gpu
2929 real (wp), pointer, contiguous, dimension (:, :, :) :: jac,jac_rhs,jac_old
30- real (wp), allocatable, dimension (:, :, :), pinned, target :: pool_host1
31- real (wp), allocatable, dimension (:, :, :), pinned, target :: pool_host2
32- real (wp), allocatable, dimension (:, :, :), pinned, target :: pool_host3
30+ real (wp), allocatable, dimension (:, :, :), pinned, target :: jac_host_pool
31+ real (wp), allocatable, dimension (:, :, :), pinned, target :: jac_rhs_host_pool
32+ real (wp), allocatable, dimension (:, :, :), pinned, target :: jac_old_host_pool
3333#else
3434 real (wp), allocatable, dimension (:, :, :) :: jac, jac_rhs, jac_old
3535 $:GPU_DECLARE(create= ' [jac, jac_rhs, jac_old]' )
@@ -81,7 +81,6 @@ module m_igr
8181 5._wp / 6._wp , & ! Index 0
8282 2._wp / 6._wp & ! Index 1
8383 ]
84-
8584 #:endif
8685 #:endif
8786
@@ -90,29 +89,6 @@ module m_igr
9089contains
9190
9291 subroutine s_initialize_igr_module ()
93- #ifdef __NVCOMPILER_GPU_UNIFIED_MEM
94- integer :: igr_temps_on_gpu = 3
95- character (len= 10 ) :: igr_temps_on_gpu_str
96-
97- call get_environment_variable(" NVIDIA_IGR_TEMPS_ON_GPU" , igr_temps_on_gpu_str)
98-
99- if (trim (igr_temps_on_gpu_str) == " 0" ) then
100- igr_temps_on_gpu = 0 ! jac, jac_rhs and jac_old on CPU
101- else if (trim (igr_temps_on_gpu_str) == " 1" ) then
102- igr_temps_on_gpu = 1 ! jac on GPU, jac_rhs on CPU, jac_old on CPU
103- else if (trim (igr_temps_on_gpu_str) == " 2" ) then
104- igr_temps_on_gpu = 2 ! jac and jac_rhs on GPU, jac_old on CPU
105- else if (trim (igr_temps_on_gpu_str) == " 3" ) then
106- igr_temps_on_gpu = 3 ! jac, jac_rhs and jac_old on GPU
107- else ! default on GPU
108- igr_temps_on_gpu = 3
109- end if
110-
111- ! create map
112- temp_on_gpu(1 :3 ) = 0
113- temp_on_gpu(1 :igr_temps_on_gpu) = 1
114- !print * , temp_on_gpu(1 :3 )
115- #endif
11692
11793 if (viscous) then
11894 @:ALLOCATE(Res(1 :2 , 1 :maxval (Re_size)))
@@ -138,48 +114,47 @@ contains
138114 idwbuff(3 )%beg:idwbuff(3 )%end))
139115 end if
140116#else
117+ ! create map
118+ nv_uvm_temp_on_gpu(1 :3 ) = 0
119+ nv_uvm_temp_on_gpu(1 :nv_uvm_igr_temps_on_gpu) = 1
141120
142- if ( temp_on_gpu (1 ) == 1 ) then
121+ if (nv_uvm_temp_on_gpu (1 ) == 1 ) then
143122 @:ALLOCATE(jac(idwbuff(1 )%beg:idwbuff(1 )%end, &
144123 idwbuff(2 )%beg:idwbuff(2 )%end, &
145124 idwbuff(3 )%beg:idwbuff(3 )%end))
146125 @:PREFER_GPU(jac)
147126 else
148- !print * , ' jac on CPU'
149- allocate(pool_host1(idwbuff(1 )%beg:idwbuff(1 )%end, &
127+ allocate(jac_host_pool(idwbuff(1 )%beg:idwbuff(1 )%end, &
150128 idwbuff(2 )%beg:idwbuff(2 )%end, &
151129 idwbuff(3 )%beg:idwbuff(3 )%end))
152130
153131 jac(idwbuff(1 )%beg:idwbuff(1 )%end, &
154132 idwbuff(2 )%beg:idwbuff(2 )%end, &
155- idwbuff(3 )%beg:idwbuff(3 )%end) = > pool_host1 (:,:,:)
133+ idwbuff(3 )%beg:idwbuff(3 )%end) = > jac_host_pool (:,:,:)
156134 end if
157135
158- if ( temp_on_gpu (2 ) == 1 ) then
136+ if (nv_uvm_temp_on_gpu (2 ) == 1 ) then
159137 @:ALLOCATE(jac_rhs(- 1 :m,- 1 :n,- 1 :p))
160138 @:PREFER_GPU(jac_rhs)
161139 else
162- !print * , ' jac_rhs on CPU'
163- allocate(pool_host2(- 1 :m,- 1 :n,- 1 :p))
164-
165- jac_rhs(- 1 :m,- 1 :n,- 1 :p) = > pool_host2(:,:,:)
140+ allocate(jac_rhs_host_pool(- 1 :m,- 1 :n,- 1 :p))
141+ jac_rhs(- 1 :m,- 1 :n,- 1 :p) = > jac_rhs_host_pool(:,:,:)
166142 end if
167143
168144 if (igr_iter_solver == 1 ) then ! Jacobi iteration
169- if ( temp_on_gpu (3 ) == 1 ) then
145+ if (nv_uvm_temp_on_gpu (3 ) == 1 ) then
170146 @:ALLOCATE(jac_old(idwbuff(1 )%beg:idwbuff(1 )%end, &
171147 idwbuff(2 )%beg:idwbuff(2 )%end, &
172148 idwbuff(3 )%beg:idwbuff(3 )%end))
173149 @:PREFER_GPU(jac_old)
174150 else
175- !print * , ' jac_old on CPU'
176- allocate(pool_host3(idwbuff(1 )%beg:idwbuff(1 )%end, &
151+ allocate(jac_old_host_pool(idwbuff(1 )%beg:idwbuff(1 )%end, &
177152 idwbuff(2 )%beg:idwbuff(2 )%end, &
178153 idwbuff(3 )%beg:idwbuff(3 )%end))
179154
180155 jac_old(idwbuff(1 )%beg:idwbuff(1 )%end, &
181156 idwbuff(2 )%beg:idwbuff(2 )%end, &
182- idwbuff(3 )%beg:idwbuff(3 )%end) = > pool_host3 (:,:,:)
157+ idwbuff(3 )%beg:idwbuff(3 )%end) = > jac_old_host_pool (:,:,:)
183158 end if
184159 end if
185160#endif
@@ -203,7 +178,7 @@ contains
203178
204179 #:if not MFC_CASE_OPTIMIZATION
205180 if (igr_order == 3 ) then
206- vidxb = - 1 ; vidxe = 2 ;
181+ vidxb = - 1 ; vidxe = 2 ;
207182 $:GPU_UPDATE(device= ' [vidxb, vidxe]' )
208183
209184 @:ALLOCATE(coeff_L(0 :2 ))
@@ -219,7 +194,7 @@ contains
219194 $:GPU_UPDATE(device= ' [coeff_R]' )
220195
221196 elseif (igr_order == 5 ) then
222- vidxb = - 2 ; vidxe = 3 ;
197+ vidxb = - 2 ; vidxe = 3 ;
223198 $:GPU_UPDATE(device= ' [vidxb, vidxe]' )
224199
225200 @:ALLOCATE(coeff_L(- 1 :3 ))
@@ -2699,26 +2674,26 @@ contains
26992674 @:DEALLOCATE(jac_old)
27002675 end if
27012676#else
2702- if (temp_on_gpu (1 ) == 1 ) then
2677+ if (nv_uvm_temp_on_gpu (1 ) == 1 ) then
27032678 @:DEALLOCATE(jac)
27042679 else
27052680 nullify(jac)
2706- deallocate(pool_host1 )
2681+ deallocate(jac_host_pool )
27072682 end if
27082683
2709- if (temp_on_gpu (2 ) == 1 ) then
2684+ if (nv_uvm_temp_on_gpu (2 ) == 1 ) then
27102685 @:DEALLOCATE(jac_rhs)
27112686 else
27122687 nullify(jac_rhs)
2713- deallocate(pool_host2 )
2688+ deallocate(jac_rhs_host_pool )
27142689 end if
27152690
27162691 if (igr_iter_solver == 1 ) then ! Jacobi iteration
2717- if (temp_on_gpu (3 ) == 1 ) then
2692+ if (nv_uvm_temp_on_gpu (3 ) == 1 ) then
27182693 @:DEALLOCATE(jac_old)
27192694 else
27202695 nullify(jac_old)
2721- deallocate(pool_host3 )
2696+ deallocate(jac_old_host_pool )
27222697 end if
27232698 end if
27242699#endif
0 commit comments