Objet : Developers list for StarPU
Archives de la liste
- From: Samuel Thibault <samuel.thibault@ens-lyon.org>
- To: Xavier Lacoste <xavier.lacoste@inria.fr>
- Cc: starpu-devel@lists.gforge.inria.fr
- Subject: Re: [Starpu-devel] GPU issue with r12137
- Date: Wed, 2 Apr 2014 12:56:02 +0200
- List-archive: <http://lists.gforge.inria.fr/pipermail/starpu-devel>
- List-id: "Developers list. For discussion of new features, code changes, etc." <starpu-devel.lists.gforge.inria.fr>
Xavier Lacoste, le Mon 31 Mar 2014 15:31:27 +0200, a écrit :
> I applied the patch on top of starpu-1.1 (r12511) and this seems to work.
Ok. I discussed a bit with Cedric about it, he thinks it could be a mere
threadsafety issue in CUDA. Could you try the attached patch instead?
Samuel
Index: src/drivers/cuda/driver_cuda.c
===================================================================
--- src/drivers/cuda/driver_cuda.c (révision 12509)
+++ src/drivers/cuda/driver_cuda.c (copie de travail)
@@ -42,8 +42,8 @@
static size_t global_mem[STARPU_NMAXWORKERS];
#ifdef STARPU_USE_CUDA
static cudaStream_t streams[STARPU_NMAXWORKERS];
-static cudaStream_t out_transfer_streams[STARPU_MAXCUDADEVS];
-static cudaStream_t in_transfer_streams[STARPU_MAXCUDADEVS];
+static cudaStream_t
out_transfer_streams[STARPU_NMAXWORKERS][STARPU_MAXCUDADEVS];
+static cudaStream_t
in_transfer_streams[STARPU_NMAXWORKERS][STARPU_MAXCUDADEVS];
static cudaStream_t
peer_transfer_streams[STARPU_MAXCUDADEVS][STARPU_MAXCUDADEVS];
static struct cudaDeviceProp props[STARPU_MAXCUDADEVS];
#endif /* STARPU_USE_CUDA */
@@ -118,15 +118,17 @@
cudaStream_t starpu_cuda_get_in_transfer_stream(unsigned node)
{
int devid = _starpu_memory_node_get_devid(node);
+ int worker = starpu_worker_get_id();
- return in_transfer_streams[devid];
+ return in_transfer_streams[worker][devid];
}
cudaStream_t starpu_cuda_get_out_transfer_stream(unsigned node)
{
int devid = _starpu_memory_node_get_devid(node);
+ int worker = starpu_worker_get_id();
- return out_transfer_streams[devid];
+ return out_transfer_streams[worker][devid];
}
cudaStream_t starpu_cuda_get_peer_transfer_stream(unsigned src_node,
unsigned dst_node)
@@ -199,6 +201,7 @@
{
cudaError_t cures;
int workerid;
+ int nworkers = starpu_worker_get_count();
int i;
/* TODO: cudaSetDeviceFlag(cudaDeviceMapHost) */
@@ -208,7 +211,6 @@
#ifdef HAVE_CUDA_MEMCPY_PEER
if (starpu_get_env_number("STARPU_ENABLE_CUDA_GPU_GPU_DIRECT") != 0)
{
- int nworkers = starpu_worker_get_count();
for (workerid = 0; workerid < nworkers; workerid++)
{
struct _starpu_worker *worker =
_starpu_get_worker_struct(workerid);
@@ -256,13 +258,16 @@
if (STARPU_UNLIKELY(cures))
STARPU_CUDA_REPORT_ERROR(cures);
- cures = cudaStreamCreate(&in_transfer_streams[devid]);
- if (STARPU_UNLIKELY(cures))
- STARPU_CUDA_REPORT_ERROR(cures);
+ for (workerid = 0; workerid < nworkers; workerid++)
+ {
+ cures =
cudaStreamCreate(&in_transfer_streams[workerid][devid]);
+ if (STARPU_UNLIKELY(cures))
+ STARPU_CUDA_REPORT_ERROR(cures);
- cures = cudaStreamCreate(&out_transfer_streams[devid]);
- if (STARPU_UNLIKELY(cures))
- STARPU_CUDA_REPORT_ERROR(cures);
+ cures =
cudaStreamCreate(&out_transfer_streams[workerid][devid]);
+ if (STARPU_UNLIKELY(cures))
+ STARPU_CUDA_REPORT_ERROR(cures);
+ }
for (i = 0; i < ncudagpus; i++)
{
@@ -277,10 +282,14 @@
cudaError_t cures;
int devid = starpu_worker_get_devid(workerid);
int i;
+ int nworkers = starpu_worker_get_count();
cudaStreamDestroy(streams[workerid]);
- cudaStreamDestroy(in_transfer_streams[devid]);
- cudaStreamDestroy(out_transfer_streams[devid]);
+ for (i = 0; i < nworkers; i++)
+ {
+ cudaStreamDestroy(in_transfer_streams[i][devid]);
+ cudaStreamDestroy(out_transfer_streams[i][devid]);
+ }
for (i = 0; i < ncudagpus; i++)
cudaStreamDestroy(peer_transfer_streams[i][devid]);
- Re: [Starpu-devel] GPU issue with r12137, Samuel Thibault, 02/04/2014
- Re: [Starpu-devel] GPU issue with r12137, Xavier Lacoste, 02/04/2014
- Re: [Starpu-devel] GPU issue with r12137, Samuel Thibault, 02/04/2014
- Re: [Starpu-devel] GPU issue with r12137, Xavier Lacoste, 02/04/2014
- Re: [Starpu-devel] GPU issue with r12137, Samuel Thibault, 02/04/2014
- Re: [Starpu-devel] GPU issue with r12137, Samuel Thibault, 02/04/2014
- Re: [Starpu-devel] GPU issue with r12137, Xavier Lacoste, 03/04/2014
- Re: [Starpu-devel] GPU issue with r12137, Xavier Lacoste, 03/04/2014
- Re: [Starpu-devel] GPU issue with r12137, Samuel Thibault, 03/04/2014
- Re: [Starpu-devel] GPU issue with r12137, Xavier Lacoste, 03/04/2014
- Re: [Starpu-devel] GPU issue with r12137, Samuel Thibault, 03/04/2014
- Re: [Starpu-devel] GPU issue with r12137, Xavier Lacoste, 03/04/2014
- Re: [Starpu-devel] GPU issue with r12137, Samuel Thibault, 02/04/2014
- Re: [Starpu-devel] GPU issue with r12137, Samuel Thibault, 02/04/2014
- Re: [Starpu-devel] GPU issue with r12137, Xavier Lacoste, 02/04/2014
- Re: [Starpu-devel] GPU issue with r12137, Samuel Thibault, 02/04/2014
- Re: [Starpu-devel] GPU issue with r12137, Xavier Lacoste, 02/04/2014
Archives gérées par MHonArc 2.6.19+.