Использование нескольких потоков Pycuda

Я пытаюсь запустить несколько потоков на GPU, используя пример Pycuda MultipleThreads. Когда я запускаю свой файл Python, я получаю следующее сообщение об ошибке:

(/root/anaconda3/) root@109c7b117fd7:~/pycuda# python multiplethreads.py
Exception in thread Thread-5:
Traceback (most recent call last):
  File "/root/anaconda3/lib/python3.6/threading.py", line 916, in _bootstrap_inner
    self.run()
  File "multiplethreads.py", line 22, in run
    test_kernel(self.array_gpu)
  File "multiplethreads.py", line 36, in test_kernel
    """)
TypeError: 'module' object is not callable

-------------------------------------------------------------------
PyCUDA ERROR: The context stack was not empty upon module cleanup.
-------------------------------------------------------------------
A context was still active when the context stack was being
cleaned up. At this point in our execution, CUDA may already
have been deinitialized, so there is no way we can finish
cleanly. The program will be aborted now.
Use Context.pop() to avoid this problem.
-------------------------------------------------------------------
Exception in thread Thread-6:
Traceback (most recent call last):
  File "/root/anaconda3/lib/python3.6/threading.py", line 916, in _bootstrap_inner
    self.run()
  File "multiplethreads.py", line 22, in run
    test_kernel(self.array_gpu)
  File "multiplethreads.py", line 36, in test_kernel
    """)
TypeError: 'module' object is not callable
Aborted

Я пытался изменить способ импорта threading с import threading на from threading import Thread, но ошибка по-прежнему сохраняется. Может ли кто-нибудь увидеть, в чем проблема, с которой я сталкиваюсь?


person Zhangsheng    schedule 07.08.2017    source источник
comment
Номера строк в сообщениях об ошибках кажутся на 3 строки раньше, чем в связанном примере. Хотя это может быть невинным и указывать на то, что вы просто удалили некоторые из пустых строк/комментариев с самого начала, это все равно поднимает вопрос: какие еще могут быть различия?   -  person tevemadar    schedule 08.08.2017
comment
Спасибо за указатель! Я решил свою проблему. Количество строк не имело значения. Проблема заключалась в моих командах импорта для pycuda, которые я заметил только тогда, когда сравнил свой код и код в примере рядом.   -  person Zhangsheng    schedule 08.08.2017


Ответы (1)


Проблема решена. Просто незначительная ошибка в команде импорта.

Вместо:

from pycuda.compiler import SourceModule

Я ошибочно написал:

import pycuda.compiler as SourceModule

Это была серьезная ошибка.

person Zhangsheng    schedule 08.08.2017