Use our own implementation of parallel_memcopy (#7254)

This commit is contained in:
Edward Oakes
2020-02-21 11:03:50 -08:00
committed by GitHub
parent cbc808bc6b
commit d190e73727
7 changed files with 69 additions and 27 deletions
-6
View File
@@ -13,12 +13,6 @@ if "pickle5" in sys.modules:
"requires a specific version of pickle5 (which is "
"packaged along with Ray).")
if "OMP_NUM_THREADS" not in os.environ:
logger.debug("[ray] Forcing OMP_NUM_THREADS=1 to avoid performance "
"degradation with many workers (issue #6998). You can "
"override this by explicitly setting OMP_NUM_THREADS.")
os.environ["OMP_NUM_THREADS"] = "1"
# Add the directory containing pickle5 to the Python path so that we find the
# pickle5 version packaged with ray and not a pre-existing pickle5.
pickle5_path = os.path.join(
+1 -1
View File
@@ -112,7 +112,7 @@ include "includes/libcoreworker.pxi"
logger = logging.getLogger(__name__)
MEMCOPY_THREADS = 12
MEMCOPY_THREADS = 6
def set_internal_config(dict options):
+1 -1
View File
@@ -10,7 +10,7 @@ DEF kMajorBufferSize = 2048
DEF kMemcopyDefaultBlocksize = 64
DEF kMemcopyDefaultThreshold = 1024 * 1024
cdef extern from "arrow/util/memory.h" namespace "arrow::internal" nogil:
cdef extern from "ray/util/memory.h" namespace "ray" nogil:
void parallel_memcopy(uint8_t* dst, const uint8_t* src, int64_t nbytes,
uintptr_t block_size, int num_threads)
+1 -19
View File
@@ -66,12 +66,6 @@ ERROR_KEY_PREFIX = b"Error:"
# entry/init points.
logger = logging.getLogger(__name__)
# Whether we should warn about slow put performance.
if os.environ.get("OMP_NUM_THREADS") == "1":
should_warn_of_slow_puts = True
else:
should_warn_of_slow_puts = False
class ActorCheckpointInfo:
"""Information used to maintain actor checkpoints."""
@@ -275,22 +269,10 @@ class Worker:
"do this, you can wrap the ray.ObjectID in a list and "
"call 'put' on it (or return it).")
global should_warn_of_slow_puts
if should_warn_of_slow_puts:
start = time.perf_counter()
serialized_value = self.get_serialization_context().serialize(value)
result = self.core_worker.put_serialized_object(
return self.core_worker.put_serialized_object(
serialized_value, object_id=object_id, pin_object=pin_object)
if should_warn_of_slow_puts:
delta = time.perf_counter() - start
if delta > 0.1:
logger.warning("OMP_NUM_THREADS=1 is set, this may slow down "
"ray.put() for large objects (issue #6998).")
should_warn_of_slow_puts = False
return result
def deserialize_objects(self, data_metadata_pairs, object_ids):
context = self.get_serialization_context()
return context.deserialize_objects(data_metadata_pairs, object_ids)