я использую что-то вроде этого:
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'
Да, есть. 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». Например, при привязке текстуры драйвер устанавливает только соответствующие аппаратные регистры, которые сообщают графическому процессору, какую память текстуры использовать для выборки.
В настоящее время карты NVIDIA используют какой-то промежуточный ISA, называемый PTX. Вы можете прочитать об этом в этом документе:
Программы PTX транслируются во время установки в набор команд целевого оборудования.
Да, у графического процессора есть свои собственные наборы команд. Команды GPU выполняются независимо от команд CPU.
См .: Руководство по программированию CUDA версии 3.0
Вычислительные возможности устройства определяются главным номером версии и второстепенным {{1} }номер ревизии.
Устройства с одинаковым номером основной версии имеют одинаковую архитектуру ядра. номер основной версии устройств, основанных на архитектуре Fermi, равен 2. Все устройства предыдущих версий имеют вычислительную способность 1.x (их основной номер версии - 1).
Младший номер редакции соответствует постепенному улучшению основной архитектуры, возможно, включая новые функции.
В Приложении A перечислены все устройства с поддержкой CUDA с указанием их вычислительных возможностей. В Приложении G приведены технические характеристики каждой вычислительной возможности.