Нет вызова API для одноранговой копии cuda, которая позволяет указывать потоки с обоих концов. Простой ответ на ваш вопрос - нет.
Потоки - это способ организации деятельности. Вызов cudaMemcpyPeerAsync будет отображаться в потоке (и устройстве), которому он назначен. Это уровень контроля, который у вас есть с API.
Поскольку потоки диктуют (то есть контролируют, регулируют) поведение, будучи в состоянии назначить задачу cuda для разделения потоков (в этом случае на более чем одном устройстве) это уровень управления, который не отображается в CUDA. Устройства (и потоки) предназначены для работы асинхронно и требуют, чтобы конкретная задача cuda удовлетворяла требованиям двух отдельных потоков (на двух отдельных устройствах в этом случае) вводила бы тип синхронизации, которая не подходит, и может привести к различные виды деятельности киосков и, возможно, даже тупик.
Ничто из описания здесь, ни поведение cudaMemcpyPeerAsync не должно препятствовать дублированию операций копирования в разных направлениях. На самом деле, на мой взгляд, назначение задачи cuda более чем одному потоку затруднит достижение гибкого перекрытия.
Если у вас возникли трудности с достижением определенного перекрытия, вы должны, вероятно, описать проблему (то есть предоставить простой регенератор полный компилируемый код SSCCE.org) и показать текущий сценарий перекрытия, который показывает визуальный профайлер, и описать желаемое перекрытие сценарий.
Чтобы определить целевой поток, вы должны иметь некоторую синхронизацию между потоками в отдельных графических процессорах, что, по моему мнению, не является возможным и противоречило бы «асинхронному» характеру API. Возможно, вы достигнете перекрытия между отправкой и получением сообщений в зависимости от используемых вами графических процессоров и, в частности, если у них есть два механизма копирования. – JackOLantern
Привет, Джек. Спасибо за ваш ответ. Да, у них есть два механизма копирования (я использую 4 К10 графических процессоров). Во время серфинга я обнаружил, что событие/поток одного графического процессора можно запросить у другого графического процессора. Попытка реализовать это, вернется с результатами. –
Что означает «Я просто хочу перекрывать отправку и получение связи» в этом контексте? Что такое отправка и что получает, и как они могут пересекаться? – talonmies