mirror of
https://github.com/wassname/ray.git
synced 2026-06-30 16:13:45 +08:00
Use our own implementation of parallel_memcopy (#7254)
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -112,7 +112,7 @@ include "includes/libcoreworker.pxi"
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
MEMCOPY_THREADS = 12
|
||||
MEMCOPY_THREADS = 6
|
||||
|
||||
|
||||
def set_internal_config(dict options):
|
||||
|
||||
@@ -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
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user