summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomas Farago <sensej007@email.cz>2020-02-05 10:42:01 +0100
committerTomas Farago <sensej007@email.cz>2020-02-05 10:42:01 +0100
commit64a980599dbbbc01866cf7cb2560694522e02155 (patch)
tree129d70276a6a540b798691475b7bf0efc67af560
parent076ef3b717c58ae1fca593ab936c649aa14936a9 (diff)
downloadufo-filters-64a980599dbbbc01866cf7cb2560694522e02155.tar.gz
ufo-filters-64a980599dbbbc01866cf7cb2560694522e02155.tar.bz2
ufo-filters-64a980599dbbbc01866cf7cb2560694522e02155.tar.xz
ufo-filters-64a980599dbbbc01866cf7cb2560694522e02155.zip
genreco: limit memory to 4 GB
because even if a card claims to be able to allocate more we get errors if that number is larger than 4 GB.
-rw-r--r--src/ufo-general-backproject-task.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/ufo-general-backproject-task.c b/src/ufo-general-backproject-task.c
index 56fb66e..b72f8e1 100644
--- a/src/ufo-general-backproject-task.c
+++ b/src/ufo-general-backproject-task.c
@@ -1509,7 +1509,9 @@ ufo_general_backproject_task_get_requisition (UfoTask *task,
slice_size = requisition->dims[0] * requisition->dims[1] * get_type_size (priv->store_type);
volume_size = slice_size * priv->num_slices;
max_mem_alloc_size_gvalue = ufo_gpu_node_get_info (node, UFO_GPU_NODE_INFO_MAX_MEM_ALLOC_SIZE);
- max_mem_alloc_size = g_value_get_ulong (max_mem_alloc_size_gvalue);
+ /* Even if a card claims to be able to allocate more than 4 GB (e.g. RTX
+ * 8000) we get OpenCL errors, so limit it to 4 GB */
+ max_mem_alloc_size = MIN (g_value_get_ulong (max_mem_alloc_size_gvalue), ((cl_ulong) 1) << 32);
g_value_unset (max_mem_alloc_size_gvalue);
priv->num_slices_per_chunk = (guint) floor ((gdouble) MIN (max_mem_alloc_size, volume_size) / ((gdouble) slice_size));
if (projections_size + volume_size > max_global_mem_size) {