Как мне дать указание процессору переместить данные на более высокий/нижний уровень кэша без предварительной очистки?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как мне дать указание процессору переместить данные на более высокий/нижний уровень кэша без предварительной очистки?

Сообщение Anonymous »

Я пишу программу, поддерживающую кеширование, с большим количеством случайных операций чтения и записи, и, скажем, я использую встроенную функцию _mm_prefetch _MM_HINT_T0 для загрузки некоторых данных в кеш L1. Затем я хочу предварительно загрузить другие данные в кеш L1, но я не хочу сбрасывать предыдущие данные из кеша, а просто временно переместить их на более высокий уровень (например, кеш L2), чтобы позже вернуть их в кеш L1. Я не хочу сбрасывать данные из кэша, потому что между ними я выполняю тяжелую вычислительную нагрузку CUDA, чтобы устранить накладные расходы и сделать их более «потоковыми».
Примерно это выглядит так:

Код: Выделить всё

batch:
prefetch [data] into L1
*CPU processing on [data]*

cudaLoad [data]
prefetch [data] from L1 into L2
prefetch [anotherData] to L1

*GPU processing on [data]*
*CPU processing on [anotherData]*

output GPU result into [anotherData]
flush [anotherData] from cache

goto batch;

// and it goes again in a cycle
Я не смог найти однозначного решения по этому вопросу, поэтому буду благодарен за любую помощь!

Подробнее здесь: https://stackoverflow.com/questions/798 ... lushing-it
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»