Compare commits
3 Commits
399447131c
...
b11b53aca1
| Author | SHA1 | Date | |
|---|---|---|---|
| b11b53aca1 | |||
| 5f9725d515 | |||
| 1ca31f4929 |
@ -29,4 +29,7 @@ test_cublas_parallel_atrip_SOURCES = test-cublas-parallel-atrip.cxx
|
|||||||
|
|
||||||
bin_PROGRAMS += test-cuda-sanity
|
bin_PROGRAMS += test-cuda-sanity
|
||||||
test_cuda_sanity_SOURCES = test-cuda-sanity.cxx
|
test_cuda_sanity_SOURCES = test-cuda-sanity.cxx
|
||||||
|
|
||||||
|
bin_PROGRAMS += test-cublas-parallel
|
||||||
|
test_cublas_parallel_SOURCES = test-cublas-parallel.cxx
|
||||||
endif
|
endif
|
||||||
|
|||||||
@ -158,8 +158,8 @@ int main(int argc, char** argv) {
|
|||||||
MPI_Barrier(MPI_COMM_WORLD);
|
MPI_Barrier(MPI_COMM_WORLD);
|
||||||
timings["memcpy"].start();
|
timings["memcpy"].start();
|
||||||
for (size_t _s = 0; _s < slices_d.size(); _s++) {
|
for (size_t _s = 0; _s < slices_d.size(); _s++) {
|
||||||
// for (size_t _b = 0; _b < slices_h[_s].size(); _b++) {
|
for (size_t _b = 0; _b < slices_h[_s].size(); _b++) {
|
||||||
for (size_t _b = 0; _b < 1 ; _b++) {
|
// for (size_t _b = 0; _b < 1 ; _b++) {
|
||||||
auto device = (*slices_d[_s])[_b];
|
auto device = (*slices_d[_s])[_b];
|
||||||
auto host = slices_h[_s][_b].data();
|
auto host = slices_h[_s][_b].data();
|
||||||
cuMemcpyHtoD(device, host, sizes[_s]);
|
cuMemcpyHtoD(device, host, sizes[_s]);
|
||||||
|
|||||||
@ -208,15 +208,14 @@ template <typename F=double>
|
|||||||
auto dataPointer = freePointers.begin();
|
auto dataPointer = freePointers.begin();
|
||||||
freePointers.erase(dataPointer);
|
freePointers.erase(dataPointer);
|
||||||
blank.data = *dataPointer;
|
blank.data = *dataPointer;
|
||||||
//
|
WITH_CHRONO("cuda:memcpy",
|
||||||
//
|
WITH_CHRONO("cuda:memcpy:self-sufficient",
|
||||||
// TODO [#A]: do cuMemcpy of
|
_CHECK_CUDA_SUCCESS("copying mpi data to device",
|
||||||
// sources[from.source].data() ⇒ blank.data
|
cuMemcpyHtoD(blank.data,
|
||||||
// Do this when everything else is working.
|
(void*)sources[from.source].data(),
|
||||||
// This will probably be a bottleneck of the H-to-D communication,
|
sizeof(F) * sources[from.source].size()));
|
||||||
// as most slices are SelfSufficient.
|
))
|
||||||
//
|
|
||||||
//
|
|
||||||
#else
|
#else
|
||||||
blank.data = sources[from.source].data();
|
blank.data = sources[from.source].data();
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -52,6 +52,8 @@ namespace atrip {
|
|||||||
, origin_.up.data()
|
, origin_.up.data()
|
||||||
, 1.0);
|
, 1.0);
|
||||||
memcpy(v.data(), toSlice.data, sizeof(F) * v.size());
|
memcpy(v.data(), toSlice.data, sizeof(F) * v.size());
|
||||||
|
#else
|
||||||
|
# pragma message("WARNING: COMPILING WITHOUT SLICING THE TENSORS")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user