@@ -858,136 +858,6 @@ void update_nrnthreads_on_host(NrnThread* threads, int nthreads) {
858858#endif 
859859}
860860
861- void  update_nrnthreads_on_device (NrnThread* threads, int  nthreads) {
862- #ifdef  _OPENACC
863- 
864-     for  (int  i = 0 ; i < nthreads; i++) {
865-         NrnThread* nt = threads + i;
866- 
867-         if  (nt->compute_gpu  && (nt->end  > 0 )) {
868-             /*  -- copy data to device -- */ 
869- 
870-             int  ne = nrn_soa_padded_size (nt->end , 0 );
871- 
872-             nrn_pragma_acc (update device (
873-                         nt->_actual_rhs [:ne],
874-                         nt->_actual_d [:ne],
875-                         nt->_actual_a [:ne],
876-                         nt->_actual_b [:ne],
877-                         nt->_actual_v [:ne],
878-                         nt->_actual_area [:ne]))
879-             nrn_pragma_omp (target update to (
880-                         nt->_actual_rhs [:ne],
881-                         nt->_actual_d [:ne],
882-                         nt->_actual_a [:ne],
883-                         nt->_actual_b [:ne],
884-                         nt->_actual_v [:ne],
885-                         nt->_actual_area [:ne]))
886- 
887-             nrn_pragma_acc (update device (nt->_actual_diam [:ne]) if  (nt->_actual_diam  != nullptr ))
888-             nrn_pragma_omp (target update to (nt->_actual_diam [:ne]) if  (nt->_actual_diam  != nullptr ))
889- 
890-             /*  @todo: nt._ml_list[tml->index] = tml->ml; */ 
891- 
892-             /*  -- copy NrnThreadMembList list ml to host -- */ 
893-             for  (auto  tml = nt->tml ; tml; tml = tml->next ) {
894-                 Memb_list* ml = tml->ml ;
895-                 int  type = tml->index ;
896-                 int  n = ml->nodecount ;
897-                 int  szp = corenrn.get_prop_param_size ()[type];
898-                 int  szdp = corenrn.get_prop_dparam_size ()[type];
899- 
900-                 int  pcnt = nrn_soa_padded_size (n, SOA_LAYOUT) * szp;
901- 
902-                 nrn_pragma_acc (update device (ml->data [:pcnt]))
903-                 nrn_pragma_omp (target update to (ml->data [:pcnt]))
904- 
905-                 nrn_pragma_acc (update device (ml->nodeindices [:n])
906-                         if  (!corenrn.get_is_artificial ()[type]))
907-                 nrn_pragma_omp (target update to (ml->nodeindices [:n])
908-                         if  (!corenrn.get_is_artificial ()[type]))
909-                 int  dpcnt = nrn_soa_padded_size (n, SOA_LAYOUT) * szdp;
910-                 nrn_pragma_acc (update device (ml->pdata [:dpcnt]) if  (szdp))
911-                 nrn_pragma_omp (target update to (ml->pdata [:dpcnt]) if  (szdp))
912- 
913-                 auto  nrb = tml->ml ->_net_receive_buffer ;
914-                 nrn_pragma_acc (update device (nrb->_cnt ,
915-                             nrb->_size ,
916-                             nrb->_pnt_offset ,
917-                             nrb->_displ_cnt ,
918-                             nrb->_pnt_index [:nrb->_size ],
919-                             nrb->_weight_index [:nrb->_size ],
920-                             nrb->_displ [:nrb->_size ],
921-                             nrb->_nrb_index [:nrb->_size ])
922-                         if  (nrb != nullptr ))
923-                 nrn_pragma_omp (target update to (nrb->_cnt ,
924-                             nrb->_size ,
925-                             nrb->_pnt_offset ,
926-                             nrb->_displ_cnt ,
927-                             nrb->_pnt_index [:nrb->_size ],
928-                             nrb->_weight_index [:nrb->_size ],
929-                             nrb->_displ [:nrb->_size ],
930-                             nrb->_nrb_index [:nrb->_size ])
931-                         if  (nrb != nullptr ))
932-             }
933-             int  pcnt = nrn_soa_padded_size (nt->shadow_rhs_cnt , 0 );
934-             /*  copy shadow_rhs to host */ 
935-             nrn_pragma_acc (update device (nt->_shadow_rhs [:pcnt],
936-                         /*  copy shadow_d to host */ 
937-                         nt->_shadow_d [:pcnt])
938-                     if  (nt->shadow_rhs_cnt ))
939-             nrn_pragma_omp (target update to (nt->_shadow_rhs [:pcnt],
940-                         /*  copy shadow_d to host */ 
941-                         nt->_shadow_d [:pcnt])
942-                     if  (nt->shadow_rhs_cnt ))
943- 
944- 
945-             nrn_pragma_acc (update device (nt->nrn_fast_imem ->nrn_sav_rhs [:nt->end ],
946-                         nt->nrn_fast_imem ->nrn_sav_d [:nt->end ])
947-                     if  (nt->nrn_fast_imem  != nullptr ))
948-             nrn_pragma_omp (target update to (nt->nrn_fast_imem ->nrn_sav_rhs [:nt->end ],
949-                         nt->nrn_fast_imem ->nrn_sav_d [:nt->end ])
950-                     if  (nt->nrn_fast_imem  != nullptr ))
951- 
952-                 nrn_pragma_acc (update device (nt->pntprocs [:nt->n_pntproc ])
953-                         if  (nt->n_pntproc ))
954-                 nrn_pragma_omp (target update to (nt->pntprocs [:nt->n_pntproc ])
955-                         if  (nt->n_pntproc ))
956- 
957-             nrn_pragma_acc (update device (nt->weights [:nt->n_weight ]) if  (nt->n_weight ))
958-             nrn_pragma_omp (target update to (nt->weights [:nt->n_weight ]) if  (nt->n_weight ))
959- 
960-                 nrn_pragma_acc (update device (nt->presyns_helper [:nt->n_presyn ],
961-                             nt->presyns [:nt->n_presyn ])
962-                         if  (nt->n_presyn ))
963-                 nrn_pragma_omp (target update to (nt->presyns_helper [:nt->n_presyn ],
964-                             nt->presyns [:nt->n_presyn ])
965-                         if  (nt->n_presyn ))
966- 
967-             {
968-                 TrajectoryRequests* tr = nt->trajec_requests ;
969-                 if  (tr && tr->varrays ) {
970-                     //  The full buffers have `bsize` entries, but only `vsize`
971-                     //  of them are valid.
972-                     for  (int  i = 0 ; i < tr->n_trajec ; ++i) {
973-                         nrn_pragma_acc (update device (tr->varrays [i][:tr->vsize ]))
974-                         nrn_pragma_omp (target update to (tr->varrays [i][:tr->vsize ]))
975-                     }
976-                 }
977-             }
978- 
979-             /*  don't and don't update vdata, its pointer array
980-                nrn_pragma_acc(update device(nt->_vdata[:nt->_nvdata) if nt->_nvdata) 
981-                nrn_pragma_omp(target update tp(nt->_vdata[:nt->_nvdata) if (nt->_nvdata)) 
982-              */  
983-         }
984-     }
985- #else 
986-     (void ) threads;
987-     (void ) nthreads;
988- #endif 
989- }
990- 
991861/* *
992862 * Copy weights from GPU to CPU 
993863 * 
0 commit comments