Я не знаю, как экспортировать матрицу из CUDA [duplicate]

Необработанный тип - это имя общего класса или интерфейса без аргументов типа. Например, с учетом общего класса Box:

public class Box {
    public void set(T t) { /* ... */ }
    // ...
}

Чтобы создать параметризованный тип Box, вы указываете фактический аргумент типа для параметра формального типа T:

Box intBox = new Box<>();

Если аргумент фактического типа опущен, вы создаете необработанный тип Box:

Box rawBox = new Box();

. Поэтому Box является необработанным типом родового типа Box. Однако не общий тип или тип интерфейса не является сырым типом.

Необработанные типы отображаются в устаревшем коде, потому что многие классы API (например, классы Collections) не были типичными до JDK 5.0. При использовании сырых типов вы, по существу, получаете поведение перед генериками - Box дает вам Object s. Для обратной совместимости допускается присвоение параметризованного типа его необработанному типу:

Box stringBox = new Box<>();
Box rawBox = stringBox;               // OK

Но если вы назначаете сырой тип параметризованному типу, вы получите предупреждение:

Box rawBox = new Box();           // rawBox is a raw type of Box
Box intBox = rawBox;     // warning: unchecked conversion

Вы также получаете предупреждение, если используете необработанный тип для вызова общих методов, определенных в соответствующем родовом типе:

Box stringBox = new Box<>();
Box rawBox = stringBox;
rawBox.set(8);  // warning: unchecked invocation to set(T)

Предупреждение показывает, что необработанные типы обходят общие проверки типа, откладывая улов небезопасных код для выполнения. Поэтому вам следует избегать использования необработанных типов.

В разделе «Тип стирания» содержится дополнительная информация о том, как компилятор Java использует необработанные типы.

Непроверенные сообщения об ошибках

As упомянутый ранее, при смешивании устаревшего кода с общим кодом вы можете столкнуться с предупреждающими сообщениями, подобными следующим:

Примечание: Example.java использует непроверенные или небезопасные операции.

Примечание. : Перекомпиляция с -Xlint: не проверяется для деталей.

blockquote>

Это может произойти при использовании более старого API, который работает с необработанными типами, как показано в следующем примере:

public class WarningDemo {
    public static void main(String[] args){
        Box bi;
        bi = createBox();
    }

    static Box createBox(){
        return new Box();
    }
}

Термин «непроверенный» означает, что компилятор не имеет достаточной информации о типе для выполнения всех проверок типа, необходимых для обеспечения безопасности типа. Предупреждение «unchecked» по умолчанию отключено, хотя компилятор дает подсказку. Чтобы просмотреть все «непроверенные» предупреждения, перекомпилируйте с помощью -Xlint: unchecked.

Повторная компиляция предыдущего примера с -Xlint: unchecked показывает следующую дополнительную информацию:

WarningDemo.java:4: warning: [unchecked] unchecked conversion
found   : Box
required: Box
        bi = createBox();
                      ^
1 warning

Чтобы полностью отключить unchecked warnings, используйте флаг -Xlint: -unchecked. Аннотации @SuppressWarnings("unchecked") подавляют непроверенные предупреждения. Если вы не знакомы с синтаксисом @SuppressWarnings, см. Аннотации.

Исходный источник: Учебники по Java

0
задан Seif 23 January 2014 в 11:07
поделиться

1 ответ

Короткий ответ: нет.

cuPrintf и встроенная поддержка printf в среде исполнения Fermi и Kepler реализована с использованием устройства для размещения копий. Этот механизм ничем не отличается от использования cudaMemcpy для передачи буфера самому хосту.

Почти все совместимые с CUDA графические процессоры поддерживают так называемую память с нулевой копией (AKA «закрепленная, отображаемая»), что позволяет GPU, чтобы отобразить буфер хоста в его адресное пространство и выполнить передачу DMA в эту карту памяти. Обратите внимание, однако, что настройка и инициализация сопоставленной памяти имеют значительно более высокие накладные расходы, чем обычное распределение памяти (поэтому вам действительно нужно много транзакций для амортизации этих накладных расходов на протяжении всего срока службы вашего приложения) и что драйвер CUDA не может использовать нуль -copy с любыми другими адресами, поддерживаемыми физической памятью. Таким образом, вы не можете mmap-файл и использовать на нем нуль-копию, т.е. вам все равно понадобится явный код ввода I-го кода для получения из буфера нулевой копии на диск.

1
ответ дан talonmies 22 August 2018 в 04:08
поделиться
  • 1
    Ну ладно, спасибо. Не уверен, что я получил все, но короткая версия была понятна! ;-) Мне нужно время, чтобы понять весь подробный ответ, но, опять же, спасибо. – Seif 23 January 2014 в 12:05
  • 2
    @Seif: Если это ответит на ваш вопрос, вы можете подумать о его принятии (галочка рядом с вопросом). Это приводит к тому, что он не отвечает на оставшийся вопрос, а также облегчает поиск другими людьми путем поиска – talonmies 23 January 2014 в 15:05
Другие вопросы по тегам:

Похожие вопросы: