瀏覽代碼

Fix multiformat support on MIC

Samuel Thibault 12 年之前
父節點
當前提交
4f48e6a2ef
共有 1 個文件被更改,包括 18 次插入3 次删除
  1. 18 3
      src/datawizard/interfaces/multiformat_interface.c

+ 18 - 3
src/datawizard/interfaces/multiformat_interface.c

@@ -294,16 +294,26 @@ static starpu_ssize_t allocate_multiformat_buffer_on_node(void *data_interface_,
 		goto fail_opencl;
 	multiformat_interface->opencl_ptr = (void *) addr;
 #endif
+#ifdef STARPU_USE_MIC
+	size = multiformat_interface->nx * multiformat_interface->ops->mic_elemsize;
+	allocated_memory += size;
+	addr = starpu_malloc_on_node(dst_node, size);
+	if (!addr)
+		goto fail_mic;
+	multiformat_interface->mic_ptr = (void *) addr;
+#endif
 
 	return allocated_memory;
 
+#ifdef STARPU_USE_MIC
+fail_mic:
+#endif
 #ifdef STARPU_USE_OPENCL
+	starpu_free_on_node(dst_node, (uintptr_t) multiformat_interface->opencl_ptr, multiformat_interface->nx * multiformat_interface->ops->opencl_elemsize);
 fail_opencl:
-#ifdef STARPU_USE_CUDA
-	starpu_free_on_node(dst_node, (uintptr_t) multiformat_interface->cuda_ptr, multiformat_interface->nx * multiformat_interface->ops->cuda_elemsize);
-#endif
 #endif
 #ifdef STARPU_USE_CUDA
+	starpu_free_on_node(dst_node, (uintptr_t) multiformat_interface->cuda_ptr, multiformat_interface->nx * multiformat_interface->ops->cuda_elemsize);
 fail_cuda:
 #endif
 	starpu_free_on_node(dst_node, (uintptr_t) multiformat_interface->cpu_ptr, multiformat_interface->nx * multiformat_interface->ops->cpu_elemsize);
@@ -329,6 +339,11 @@ static void free_multiformat_buffer_on_node(void *data_interface, unsigned node)
 				   multiformat_interface->nx * multiformat_interface->ops->opencl_elemsize);
 	multiformat_interface->opencl_ptr = NULL;
 #endif
+#ifdef STARPU_USE_MIC
+	starpu_free_on_node(node, (uintptr_t) multiformat_interface->mic_ptr,
+				   multiformat_interface->nx * multiformat_interface->ops->mic_elemsize);
+	multiformat_interface->mic_ptr = NULL;
+#endif
 }