Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove TTDevice mutex #524

Merged
merged 1 commit into from
Feb 13, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 0 additions & 8 deletions device/api/umd/device/tt_device/tt_device.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,6 @@ struct dynamic_tlb {
uint64_t remaining_size; // Bytes remaining between bar_offset and end of the TLB.
};

namespace boost::interprocess {
class named_mutex;
}

namespace tt::umd {

class TLBManager;
Expand Down Expand Up @@ -151,10 +147,6 @@ class TTDevice {
void memcpy_to_device(void *dest, const void *src, std::size_t num_bytes);
void memcpy_from_device(void *dest, const void *src, std::size_t num_bytes);

void create_read_write_mutex();

std::shared_ptr<boost::interprocess::named_mutex> read_write_mutex = nullptr;

ChipInfo chip_info;
};
} // namespace tt::umd
19 changes: 1 addition & 18 deletions device/tt_device/tt_device.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,20 @@
// SPDX-License-Identifier: Apache-2.0
#include "umd/device/tt_device/tt_device.h"

#include <boost/interprocess/permissions.hpp>
#include <boost/interprocess/sync/named_mutex.hpp>
#include <boost/interprocess/sync/scoped_lock.hpp>

#include "logger.hpp"
#include "umd/device/driver_atomics.h"
#include "umd/device/tt_device/blackhole_tt_device.h"
#include "umd/device/tt_device/grayskull_tt_device.h"
#include "umd/device/tt_device/wormhole_tt_device.h"

using namespace boost::interprocess;

namespace tt::umd {

TTDevice::TTDevice(
std::unique_ptr<PCIDevice> pci_device, std::unique_ptr<architecture_implementation> architecture_impl) :
pci_device_(std::move(pci_device)),
architecture_impl_(std::move(architecture_impl)),
tlb_manager_(std::make_unique<TLBManager>(this)),
arch(architecture_impl_->get_architecture()) {
create_read_write_mutex();
}
arch(architecture_impl_->get_architecture()) {}

/* static */ std::unique_ptr<TTDevice> TTDevice::create(int pci_device_number) {
auto pci_device = std::make_unique<PCIDevice>(pci_device_number);
Expand Down Expand Up @@ -216,7 +208,6 @@ void TTDevice::read_block(uint64_t byte_addr, uint64_t num_bytes, uint8_t *buffe
}

void TTDevice::read_from_device(void *mem_ptr, tt_xy_pair core, uint64_t addr, uint32_t size) {
const scoped_lock<named_mutex> lock(*read_write_mutex);
uint8_t *buffer_addr = static_cast<uint8_t *>(mem_ptr);
const uint32_t tlb_index = get_architecture_implementation()->get_small_read_write_tlb();
while (size > 0) {
Expand All @@ -231,10 +222,8 @@ void TTDevice::read_from_device(void *mem_ptr, tt_xy_pair core, uint64_t addr, u
}

void TTDevice::write_to_device(void *mem_ptr, tt_xy_pair core, uint64_t addr, uint32_t size) {
const scoped_lock<named_mutex> lock(*read_write_mutex);
uint8_t *buffer_addr = static_cast<uint8_t *>(mem_ptr);
const uint32_t tlb_index = get_architecture_implementation()->get_small_read_write_tlb();
// const scoped_lock<named_mutex> lock(*get_mutex(fallback_tlb, target.chip));

while (size > 0) {
auto [mapped_address, tlb_size] = set_dynamic_tlb(tlb_index, core, addr, tt::umd::tlb_data::Strict);
Expand Down Expand Up @@ -352,10 +341,4 @@ void TTDevice::configure_iatu_region(size_t region, uint64_t base, uint64_t targ
throw std::runtime_error("configure_iatu_region is not implemented for this device");
}

void TTDevice::create_read_write_mutex() {
permissions unrestricted_permissions;
unrestricted_permissions.set_unrestricted();
read_write_mutex = std::make_shared<named_mutex>(open_or_create, "read_write_mutex", unrestricted_permissions);
}

} // namespace tt::umd
Loading