6 #ifndef TURI_LAMBDA_LAMBDA_MASTER_HPP 7 #define TURI_LAMBDA_LAMBDA_MASTER_HPP 10 #include <core/globals/globals.hpp> 11 #include <core/system/lambda/lambda_interface.hpp> 12 #include <core/system/lambda/worker_pool.hpp> 80 static void shutdown_instance();
91 size_t make_lambda(
const std::string& lambda_str);
96 void release_lambda(
size_t lambda_hash) noexcept;
101 void bulk_eval(
size_t lambda_hash,
const std::vector<flexible_type>& args,
102 std::vector<flexible_type>& out,
103 bool skip_undefined, uint64_t
seed);
108 void bulk_eval(
size_t lambda_hash,
110 std::vector<flexible_type>& out,
111 bool skip_undefined, uint64_t seed);
117 void bulk_eval(
size_t lambda_hash,
118 const std::vector<std::string>&
keys,
119 const std::vector<std::vector<flexible_type>>& args,
120 std::vector<flexible_type>& out,
121 bool skip_undefined, uint64_t seed);
126 void bulk_eval(
size_t lambda_hash,
127 const std::vector<std::string>& keys,
129 std::vector<flexible_type>& out,
130 bool skip_undefined, uint64_t seed);
132 inline size_t num_workers() {
return m_worker_pool->num_workers(); }
134 static void set_lambda_worker_binary(
const std::vector<std::string>& path) {
135 lambda_worker_binary_and_args = path;
136 std::ostringstream ss;
138 for(
size_t i = 0; i < path.size(); ++i) {
139 if(i != 0) ss <<
' ';
146 static void set_lambda_worker_binary(
const std::string& path) {
147 lambda_worker_binary_and_args = {path};
151 static const std::vector<std::string>& get_lambda_worker_binary() {
152 return lambda_worker_binary_and_args;
162 std::shared_ptr<worker_pool<lambda_evaluator_proxy>> m_worker_pool;
163 std::map<void*, std::shared_ptr<shmipc::client>> m_shared_memory_worker_connections;
165 std::unordered_map<size_t, size_t> m_lambda_object_counter;
170 static std::vector<std::string> lambda_worker_binary_and_args;
182 void set_pylambda_worker_binary_from_environment_variables();
std::set< Key > keys(const std::map< Key, T > &map)