Видеокарты имеют собственные системы команд?

я использую что-то вроде этого:

import unittest

l = [["foo", "a", "a",], ["bar", "a", "b"], ["lee", "b", "b"]]

class TestSequense(unittest.TestCase):
    pass

def test_generator(a, b):
    def test(self):
        self.assertEqual(a,b)
    return test

if __name__ == '__main__':
    for t in l:
        test_name = 'test_%s' % t[0]
        test = test_generator(t[1], t[2])
        setattr(TestSequense, test_name, test)
    unittest.main()

parameterized пакет может использоваться для автоматизации этого процесса:

from parameterized import parameterized

class TestSequence(unittest.TestCase):
    @parameterized.expand([
        ["foo", "a", "a",],
        ["bar", "a", "b"],
        ["lee", "b", "b"],
    ])
    def test_sequence(self, name, a, b):
        self.assertEqual(a,b)

, Который генерирует тесты:

test_sequence_0_foo (__main__.TestSequence) ... ok
test_sequence_1_bar (__main__.TestSequence) ... FAIL
test_sequence_2_lee (__main__.TestSequence) ... ok

======================================================================
FAIL: test_sequence_1_bar (__main__.TestSequence)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/parameterized/parameterized.py", line 233, in 
    standalone_func = lambda *a: func(*(a + p.args), **p.kwargs)
  File "x.py", line 12, in test_sequence
    self.assertEqual(a,b)
AssertionError: 'a' != 'b'

40
задан Jed Smith 8 November 2009 в 20:44
поделиться

4 ответа

Да, есть. AMD даже предоставляет спецификации вплоть до серии HD4000.

Посмотрите здесь: http://developer.amd.com/wordpress/media/2012/10/R700-Family_Instruction_Set_Architecture.pdf

Существует также проект с открытым исходным кодом под названием Nouveau, который выполняет обратное проектирование наборов инструкций NV.

Обратите внимание, что NVIDIA имеет немного другую архитектуру, чем AMD, потому что они не используют VLIW, а скалярное выполнение (хотя несколько потоков дополнительно сгруппированы в так называемый Warp или Wavefront).

Также не каждый вызов OpenGL / Direct3D сопоставляется с «инструкцией GPU». Например, при привязке текстуры драйвер устанавливает только соответствующие аппаратные регистры, которые сообщают графическому процессору, какую память текстуры использовать для выборки.

35
ответ дан 27 November 2019 в 01:49
поделиться

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

PTX ISA 1.1

Программы PTX транслируются во время установки в набор команд целевого оборудования.

5
ответ дан 27 November 2019 в 01:49
поделиться

Да, у графического процессора есть свои собственные наборы команд. Команды GPU выполняются независимо от команд CPU.

4
ответ дан 27 November 2019 в 01:49
поделиться

См .: Руководство по программированию CUDA версии 3.0

Вычислительные возможности устройства определяются главным номером версии и второстепенным {{1} }номер ревизии.

Устройства с одинаковым номером основной версии имеют одинаковую архитектуру ядра. номер основной версии устройств, основанных на архитектуре Fermi, равен 2. Все устройства предыдущих версий имеют вычислительную способность 1.x (их основной номер версии - 1).

Младший номер редакции соответствует постепенному улучшению основной архитектуры, возможно, включая новые функции.

В Приложении A перечислены все устройства с поддержкой CUDA с указанием их вычислительных возможностей. В Приложении G приведены технические характеристики каждой вычислительной возможности.

2
ответ дан 27 November 2019 в 01:49
поделиться
Другие вопросы по тегам:

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