@@ -256,7 +256,7 @@ void groupedAggregate(uint8_t **keys, uint8_t **aggregate_keys, uint64_t* count,
256256 T* row_keys = gpuBufferManager->customCudaMalloc <T>((num_keys + 1 ) * N, 0 , 0 );
257257 sort_keys_type* materialized_temp = reinterpret_cast <sort_keys_type*> (gpuBufferManager->customCudaMalloc <pointer_and_key>(N, 0 , 0 ));
258258 // T* keys_row_id[num_keys + 1];
259- T** keys_row_id = new T*[ num_keys + 1 ] ;
259+ T** keys_row_id = gpuBufferManager-> customCudaHostAlloc <T*>( num_keys + 1 ) ;
260260 for (uint64_t i = 0 ; i < num_keys; i++) {
261261 keys_row_id[i] = reinterpret_cast <T*> (keys[i]);
262262 }
@@ -267,8 +267,7 @@ void groupedAggregate(uint8_t **keys, uint8_t **aggregate_keys, uint64_t* count,
267267 sequence<BLOCK_THREADS , ITEMS_PER_THREAD ><<<(N + tile_items - 1 )/tile_items, BLOCK_THREADS >>> (row_sequence, N);
268268 keys_row_id[num_keys] = row_sequence;
269269
270- T** keys_dev;
271- cudaMalloc ((void **) &keys_dev, (num_keys + 1 ) * sizeof (T*));
270+ T** keys_dev = gpuBufferManager->customCudaMalloc <T*>(num_keys + 1 , 0 , 0 );
272271 cudaMemcpy (keys_dev, keys_row_id, (num_keys + 1 ) * sizeof (T*), cudaMemcpyHostToDevice);
273272
274273 columns_to_rows<T, BLOCK_THREADS , ITEMS_PER_THREAD ><<<(N + tile_items - 1 )/tile_items, BLOCK_THREADS >>> (keys_dev, row_keys, materialized_temp, N, num_keys + 1 );
@@ -303,13 +302,13 @@ void groupedAggregate(uint8_t **keys, uint8_t **aggregate_keys, uint64_t* count,
303302
304303 // gather the aggregates based on the row_sequence
305304 SIRIUS_LOG_DEBUG (" Gathering Aggregates" );
306- V** aggregate_keys_temp = new V*[ num_aggregates] ;
307- uint64_t ** aggregate_star_temp = new uint64_t *[ num_aggregates] ;
305+ V** aggregate_keys_temp = gpuBufferManager-> customCudaHostAlloc <V*>( num_aggregates) ;
306+ uint64_t ** aggregate_star_temp = gpuBufferManager-> customCudaHostAlloc < uint64_t *>( num_aggregates) ;
308307 sort_keys_type* group_by_rows = reinterpret_cast <sort_keys_type*> (gpuBufferManager->customCudaMalloc <pointer_and_key>(N, 0 , 0 ));
309308 uint64_t * d_num_runs_out = gpuBufferManager->customCudaMalloc <uint64_t >(1 , 0 , 0 );
310309 cudaMemset (d_num_runs_out, 0 , sizeof (uint64_t ));
311310 uint64_t * h_count = gpuBufferManager->customCudaHostAlloc <uint64_t >(1 );
312- uint8_t ** output_agg = new uint8_t *[ num_aggregates] ;
311+ uint8_t ** output_agg = gpuBufferManager-> customCudaHostAlloc < uint8_t *>( num_aggregates) ;
313312 gpuBufferManager->customCudaFree (reinterpret_cast <uint8_t *>(d_temp_storage), 0 );
314313
315314 for (int agg = 0 ; agg < num_aggregates; agg++) {
@@ -531,9 +530,8 @@ void groupedAggregate(uint8_t **keys, uint8_t **aggregate_keys, uint64_t* count,
531530 }
532531 }
533532
534- T** keys_dev_result;
535- T** keys_result = new T*[num_keys];
536- cudaMalloc ((void **) &keys_dev_result, num_keys * sizeof (T*));
533+ T** keys_dev_result = gpuBufferManager->customCudaMalloc <T*>(num_keys, 0 , 0 );
534+ T** keys_result = gpuBufferManager->customCudaHostAlloc <T*>(num_keys);
537535 for (uint64_t i = 0 ; i < num_keys; i++) {
538536 keys_result[i] = gpuBufferManager->customCudaMalloc <T>(count[0 ], 0 , 0 );
539537 }
@@ -559,9 +557,9 @@ void groupedAggregate(uint8_t **keys, uint8_t **aggregate_keys, uint64_t* count,
559557 }
560558 }
561559
562- cudaFree (keys_dev_result);
563- cudaFree (keys_dev);
564560 // call customCudaFree for all the allocated memory
561+ gpuBufferManager->customCudaFree (reinterpret_cast <uint8_t *>(keys_dev), 0 );
562+ gpuBufferManager->customCudaFree (reinterpret_cast <uint8_t *>(keys_dev_result), 0 );
565563 gpuBufferManager->customCudaFree (reinterpret_cast <uint8_t *>(row_keys), 0 );
566564 gpuBufferManager->customCudaFree (reinterpret_cast <uint8_t *>(materialized_temp), 0 );
567565 gpuBufferManager->customCudaFree (reinterpret_cast <uint8_t *>(row_sequence), 0 );
@@ -587,15 +585,14 @@ void groupedWithoutAggregate(uint8_t **keys, uint64_t* count, uint64_t N, uint64
587585 // allocate temp memory and copying keys
588586 T* row_keys = gpuBufferManager->customCudaMalloc <T>(num_keys * N, 0 , 0 );
589587 sort_keys_type* materialized_temp = reinterpret_cast <sort_keys_type*> (gpuBufferManager->customCudaMalloc <pointer_and_key>(N, 0 , 0 ));
590- T** keys_row_id = new T*[ num_keys] ;
588+ T** keys_row_id = gpuBufferManager-> customCudaHostAlloc <T*>( num_keys) ;
591589 for (uint64_t i = 0 ; i < num_keys; i++) {
592590 keys_row_id[i] = reinterpret_cast <T*> (keys[i]);
593591 }
594592
595593 // generate sequence
596594 int tile_items = BLOCK_THREADS * ITEMS_PER_THREAD ;
597- T** keys_dev;
598- cudaMalloc ((void **) &keys_dev, num_keys * sizeof (T*));
595+ T** keys_dev = gpuBufferManager->customCudaMalloc <T*>(num_keys, 0 , 0 );
599596 cudaMemcpy (keys_dev, keys_row_id, num_keys * sizeof (T*), cudaMemcpyHostToDevice);
600597
601598 columns_to_rows<T, BLOCK_THREADS , ITEMS_PER_THREAD ><<<(N + tile_items - 1 )/tile_items, BLOCK_THREADS >>> (keys_dev, row_keys, materialized_temp, N, num_keys);
@@ -669,9 +666,8 @@ void groupedWithoutAggregate(uint8_t **keys, uint64_t* count, uint64_t N, uint64
669666 gpuBufferManager->customCudaFree (reinterpret_cast <uint8_t *>(d_temp_storage), 0 );
670667 count[0 ] = h_count[0 ];
671668
672- T** keys_dev_result;
673- T** keys_result = new T*[num_keys];
674- cudaMalloc ((void **) &keys_dev_result, num_keys * sizeof (T*));
669+ T** keys_dev_result = gpuBufferManager->customCudaMalloc <T*>(num_keys, 0 , 0 );
670+ T** keys_result = gpuBufferManager->customCudaHostAlloc <T*>(num_keys);
675671 for (uint64_t i = 0 ; i < num_keys; i++) {
676672 keys_result[i] = gpuBufferManager->customCudaMalloc <T>(count[0 ], 0 , 0 );
677673 }
@@ -688,9 +684,9 @@ void groupedWithoutAggregate(uint8_t **keys, uint64_t* count, uint64_t N, uint64
688684 keys[i] = reinterpret_cast <uint8_t *> (keys_result[i]);
689685 }
690686
691- cudaFree (keys_dev_result);
692- cudaFree (keys_dev);
693687 // call customCudaFree for all the allocated memory
688+ gpuBufferManager->customCudaFree (reinterpret_cast <uint8_t *>(keys_dev), 0 );
689+ gpuBufferManager->customCudaFree (reinterpret_cast <uint8_t *>(keys_dev_result), 0 );
694690 gpuBufferManager->customCudaFree (reinterpret_cast <uint8_t *>(row_keys), 0 );
695691 gpuBufferManager->customCudaFree (reinterpret_cast <uint8_t *>(materialized_temp), 0 );
696692 gpuBufferManager->customCudaFree (reinterpret_cast <uint8_t *>(group_by_rows), 0 );
0 commit comments