mirror of
				https://github.com/paboyle/Grid.git
				synced 2025-11-04 14:04:32 +00:00 
			
		
		
		
	Hadrons: modification of registration mechanism to allow for persistent caches
This commit is contained in:
		@@ -306,7 +306,7 @@ void Application::configLoop(void)
 | 
			
		||||
                     << " " << BIG_SEP << std::endl;
 | 
			
		||||
        env_.setTrajectory(t);
 | 
			
		||||
        env_.executeProgram(program_);
 | 
			
		||||
        env_.freeAll();
 | 
			
		||||
    }
 | 
			
		||||
    LOG(Message) << BIG_SEP << " End of measurement " << BIG_SEP << std::endl;
 | 
			
		||||
    env_.freeAll();
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -410,12 +410,19 @@ Environment::Size Environment::executeProgram(const std::vector<std::string> &p)
 | 
			
		||||
// general memory management ///////////////////////////////////////////////////
 | 
			
		||||
void Environment::addObject(const std::string name, const int moduleAddress)
 | 
			
		||||
{
 | 
			
		||||
    ObjInfo info;
 | 
			
		||||
    if (!hasObject(name))
 | 
			
		||||
    {
 | 
			
		||||
        ObjInfo info;
 | 
			
		||||
        
 | 
			
		||||
    info.name   = name;
 | 
			
		||||
    info.module = moduleAddress;
 | 
			
		||||
    object_.push_back(std::move(info));
 | 
			
		||||
    objectAddress_[name] = static_cast<unsigned int>(object_.size() - 1);
 | 
			
		||||
        info.name   = name;
 | 
			
		||||
        info.module = moduleAddress;
 | 
			
		||||
        object_.push_back(std::move(info));
 | 
			
		||||
        objectAddress_[name] = static_cast<unsigned int>(object_.size() - 1);
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
        HADRON_ERROR("object '" + name + "' already exists");
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Environment::registerObject(const unsigned int address,
 | 
			
		||||
@@ -444,6 +451,10 @@ void Environment::registerObject(const unsigned int address,
 | 
			
		||||
void Environment::registerObject(const std::string name,
 | 
			
		||||
                                 const unsigned int size, const unsigned int Ls)
 | 
			
		||||
{
 | 
			
		||||
    if (!hasObject(name))
 | 
			
		||||
    {
 | 
			
		||||
        addObject(name);
 | 
			
		||||
    }
 | 
			
		||||
    registerObject(getObjectAddress(name), size, Ls);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -573,6 +584,30 @@ bool Environment::hasRegisteredObject(const std::string name) const
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool Environment::hasCreatedObject(const unsigned int address) const
 | 
			
		||||
{
 | 
			
		||||
    if (hasObject(address))
 | 
			
		||||
    {
 | 
			
		||||
        return (object_[address].data != nullptr);
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool Environment::hasCreatedObject(const std::string name) const
 | 
			
		||||
{
 | 
			
		||||
    if (hasObject(name))
 | 
			
		||||
    {
 | 
			
		||||
        return hasCreatedObject(getObjectAddress(name));
 | 
			
		||||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool Environment::isObject5d(const unsigned int address) const
 | 
			
		||||
{
 | 
			
		||||
    return (getObjectLs(address) > 1);
 | 
			
		||||
 
 | 
			
		||||
@@ -137,7 +137,7 @@ public:
 | 
			
		||||
    Size                    executeProgram(const std::vector<std::string> &p);
 | 
			
		||||
    // general memory management
 | 
			
		||||
    void                    addObject(const std::string name,
 | 
			
		||||
                                      const int moduleAddress);
 | 
			
		||||
                                      const int moduleAddress = -1);
 | 
			
		||||
    void                    registerObject(const unsigned int address,
 | 
			
		||||
                                           const unsigned int size,
 | 
			
		||||
                                           const unsigned int Ls = 1);
 | 
			
		||||
@@ -176,6 +176,8 @@ public:
 | 
			
		||||
    bool                    hasObject(const std::string name) const;
 | 
			
		||||
    bool                    hasRegisteredObject(const unsigned int address) const;
 | 
			
		||||
    bool                    hasRegisteredObject(const std::string name) const;
 | 
			
		||||
    bool                    hasCreatedObject(const unsigned int address) const;
 | 
			
		||||
    bool                    hasCreatedObject(const std::string name) const;
 | 
			
		||||
    bool                    isObject5d(const unsigned int address) const;
 | 
			
		||||
    bool                    isObject5d(const std::string name) const;
 | 
			
		||||
    Environment::Size       getTotalSize(void) const;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user