|
@@ -200,11 +200,19 @@ int main(int argc, char **argv)
|
|
|
{
|
|
|
int ret;
|
|
|
unsigned devices;
|
|
|
+#ifdef STARPU_USE_CUDA
|
|
|
+ int cublas_version;
|
|
|
+#endif
|
|
|
|
|
|
ret = starpu_init(NULL);
|
|
|
if (ret == -ENODEV) return STARPU_TEST_SKIPPED;
|
|
|
STARPU_CHECK_RETURN_VALUE(ret, "starpu_init");
|
|
|
- starpu_cublas_init();
|
|
|
+#ifdef STARPU_USE_CUDA
|
|
|
+ /* cublasSasum has synchronization issues when using a non-blocking stream */
|
|
|
+ cublasGetVersion(&cublas_version);
|
|
|
+ if (cublas_version >= 7050)
|
|
|
+ starpu_cublas_init();
|
|
|
+#endif
|
|
|
|
|
|
devices = starpu_cpu_worker_get_count();
|
|
|
if (devices)
|
|
@@ -227,7 +235,11 @@ int main(int argc, char **argv)
|
|
|
|
|
|
error:
|
|
|
if (ret == -ENODEV) ret=STARPU_TEST_SKIPPED;
|
|
|
- starpu_cublas_shutdown();
|
|
|
+#ifdef STARPU_USE_CUDA
|
|
|
+ if (cublas_version >= 7050)
|
|
|
+ starpu_cublas_shutdown();
|
|
|
+#endif
|
|
|
+
|
|
|
starpu_shutdown();
|
|
|
STARPU_RETURN(ret);
|
|
|
}
|