blob: 446aceb3b920f170bd95c80e49a42ebfbb025e9b [file] [log] [blame]
// Copyright 2022 The IREE Authors
//
// Licensed under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#ifndef IREE_PJRT_PLUGIN_PJRT_CPU_CLIENT_H_
#define IREE_PJRT_PLUGIN_PJRT_CPU_CLIENT_H_
#include "iree/hal/drivers/local_task/task_driver.h"
#include "iree/hal/local/loaders/registration/init.h"
#include "iree_pjrt/common/api_impl.h"
namespace iree::pjrt::cpu {
class CPUClientInstance final : public ClientInstance {
public:
CPUClientInstance(std::unique_ptr<Platform> platform);
~CPUClientInstance();
iree_status_t CreateDriver(iree_hal_driver_t** out_driver) override;
bool SetDefaultCompilerFlags(CompilerJob* compiler_job) override;
private:
iree_status_t InitializeDeps();
// Instance scoped options.
bool single_threaded_debug_ = false;
iree_task_topology_t task_topology_options_;
// Deps.
iree_hal_executable_plugin_manager_t* plugin_manager_ = nullptr;
iree_hal_executable_loader_t* loaders_[8] = {nullptr};
iree_host_size_t loader_count_ = 0;
iree_task_executor_t* executor_ = nullptr;
iree_hal_allocator_t* device_allocator_ = nullptr;
};
} // namespace iree::pjrt::cpu
#endif // IREE_PJRT_PLUGIN_PJRT_CPU_CLIENT_H_