2#ifndef STORMM_HYBRID_UTIL_H
3#define STORMM_HYBRID_UTIL_H
6#include "DataTypes/common_types.h"
7#include "DataTypes/stormm_vector_types.h"
8#include "gpu_details.h"
11# include "hpc_hybrid_util.h"
17using data_types::isHpcVectorType;
18using data_types::isFloatingPointScalarType;
19using data_types::isSignedIntegralScalarType;
20using data_types::isUnsignedIntegralScalarType;
32void confirmCpuMemory(HybridFormat tfmt,
const std::string &message,
33 const char* class_caller =
nullptr,
34 const char* method_caller =
nullptr);
39void confirmGpuMemory(HybridFormat tfmt,
const std::string &message,
40 const char* class_caller =
nullptr,
41 const char* method_caller =
nullptr);
46void confirmHostVisibleToGpu(HybridFormat tfmt,
const std::string &message,
47 const char* class_caller,
const char* method_caller);
62void markCopyInstructions(HybridFormat dest_format, HybridFormat orig_format,
bool *do_hhc,
63 bool *do_hdc,
bool *do_dhc,
bool *do_ddc,
bool *use_kernel);
73void checkFormatCompatibility(HybridTargetLevel request, HybridFormat native,
74 const char* class_caller,
const char* method_caller);
85size_t screenHybridTransfer(
size_t destination_size,
size_t original_size,
size_t length,
86 size_t destination_offset,
size_t original_offset,
const char* caller);
105 size_t destination_offset = 0,
size_t original_offset = 0,
110 size_t length = 0,
size_t destination_offset = 0,
size_t original_offset = 0);
128template <
typename Tdest,
typename Torig>
130 size_t length = 0,
size_t destination_offset = 0,
size_t original_offset = 0,
133template <
typename Tdest,
typename Torig>
135 const Hybrid<int> &overflow,
double scale,
size_t length = 0,
136 size_t destination_offset = 0,
size_t original_offset = 0,
143#include "hybrid_util.tpp"
Pertinent aspects of one particular GPU. Condensing the data for each GPU in this manner helps to ens...
Definition gpu_details.h:27
An evolution of GpuBuffer in pmemd.cuda, the Composite array has elements that are accessible from ei...
Definition hybrid.h:202