Class program_cache
boost::compute::program_cache
Synopsis
class program_cache : private noncopyable {
public:
program_cache(size_t);
~program_cache();
size_t size() const;
size_t capacity() const;
void clear();
boost::optional< program > get(const std::string &);
boost::optional< program > get(const std::string &, const std::string &);
void insert(const std::string &, const program &);
void insert(const std::string &, const std::string &, const program &);
program get_or_build(const std::string &, const std::string &,
const std::string &, const context &);
static boost::shared_ptr< program_cache > get_global_cache(const context &);
};
Description
Программа_cacheкласс хранит объекты программы в кэше LRU.
Этот класс может быть использован для смягчения накладных расходов модели компиляции ядра во время выполнения OpenCL. Обычно используемые программы могут постоянно храниться в кэше и компилироваться только один раз при их первом использовании.
Объекты программы хранятся и извлекаются на основе ключа кэша, определенного пользователем, а также опций, используемых для создания программы (если таковые имеются).
Например, вставить программу в кэш:
cache.insert("foo", foo_program);
И отозвать программу позже:
boost::optional<program> p = cache.get("foo");
if(p){
}
См. также:
программа
program_cache
public
construct/copy/destruct
программа_кэшразмер_tемкость];
Создает новый программный кэш с пространством дляемкость
количества программных объектов.
~program_cache();
Уничтожает кэш программы.
program_cache
public member functions
size_tsize()const;
Возвращает количество программных объектов, хранящихся в кэше.size_tcapacity()const;
Возвращает общую емкость кэша.пустотаясно;
Очистить кэш программы.boost::optional<program>get(conststd::string&key);
Возвращает объект программы сkey
. Возвращает нулевую опцию, если в кэше не существует программы сkey
.
boost::optional<program>
get(conststd::string&key,conststd::string&options);
Возвращает объект программыkey
иoptions
. Возвращает нулевую опцию, если в кэше нет программы сkey
иoptions
.
voidinsert(conststd::string&key,constprogram&program);
Вставитьprogram
в кэшkey
.voidвставитьstd::строка&ключ,conststd::строка&опции,констпрограмма&программа;
Вставкапрограмма
в кэш сключ
иопции
.programget_or_build(conststd::string&key,conststd::string&options,
conststd::string&source,constcontext&context);
Загружает программуkey
из кэша, если она существует. В противном случае строится новая программа сsource
иoptions
, хранит ее в кэше и возвращает.
Это удобная функция для упрощения общей схемы попытки загрузки программы из кэша и, если ее нет, создания программы из источника и хранения ее в кэше.
Эквивалентно:
boost::optional<program>p=get(key,options);
if(!p){
p=program::create_with_source(source,context);
p->build(options);
insert(key,options,*p);
}
return*p;
program_cache
public static functions
статическийимпульс::shared_ptr<program_cache>get_global_cacheconstконтекст&контекст;
Возвращает глобальный кэш программы дляконтекста
.
Этот глобальный кэш используется внутри Boost. Вычислить для хранения скомпилированных объектов программы, используемых ее алгоритмами. Всем подняться. Вычислительные программы хранятся с кэш-ключом, начинающимся с«__boost»
. Пользовательские программы должны избегать использования одного и того же префикса для предотвращения столкновений.