Почему делает объявление, что класс дескриптора в __ init __ функционирует, повреждают функциональность дескриптора?

РЕДАКТИРОВАТЬ

Чтобы избежать вводящих в заблуждение людей, как указывает М. Тиббитс, printf доступен в любом графическом процессоре с вычислительной способностью 2.0 и выше.

КОНЕЦ РЕДАКТИРОВАНИЯ

У вас есть выбор:

  • Использовать отладчик GPU, то есть cuda-gdb в Linux или Nexus в Windows
  • Используйте cuprintf, который доступен для зарегистрированных разработчиков (зарегистрируйтесь здесь )
  • Вручную скопируйте данные, которые вы хотите увидеть, затем выведите этот буфер на хост после завершения работы ядра (не забудьте синхронизировать)

Относительно вашего фрагмента кода:

  • Подумайте о передаче структур Matrix через указатель (т. е. cudaMemcpy) на устройство, затем передайте в указателе устройства), сейчас у вас не возникнет проблем, но если сигнатура функции станет очень большой, вы можете достичь предела в 256 байт
  • У вас неэффективное чтение из Ad, у вас будет 32-байтовая транзакция в память для каждого чтения в Melement - рассмотрите возможность использования разделяемой памяти в качестве промежуточной области (см. образец transposeNew в SDK)

7
задан user83753 16 June 2009 в 21:55
поделиться

2 ответа

Согласно документации :

Следующие методы применяются только , когда экземпляр класса, содержащего метод (так называемый дескриптор class) появляется в словаре классов другого класса нового стиля , известного как класс собственника. В примерах ниже «атрибут» относится к атрибут, имя которого является ключом свойство в классе владельца ' __ dict __ . Дескрипторы могут быть реализованы только как сами классы нового стиля.

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

Однако, поскольку дескриптор получает ссылку на экземпляр, используемый для доступа к нему, просто используйте это как ключ для сохранения состояния, и вы может вести себя по-разному в зависимости от экземпляра.

5
ответ дан 7 December 2019 в 12:24
поделиться

Вот класс, который может пройти исходные тесты, но не пытайтесь использовать его в большинстве ситуаций . он не проходит тест isinstance на самом себе!

class E(object):
    def __new__(cls, state):
        class E(object):
            a = A(state)
            def __init__(self, state):
                self.state = state
        return E(state)

#>>> isinstance(E(1), E)
#False
0
ответ дан 7 December 2019 в 12:24
поделиться
Другие вопросы по тегам:

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