Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > Проблема с ATI streams


Автор: borisbn 5.3.2012, 15:39
Здравствуйте.
Скорее всего я ошибся разделом, но не нашёл ничего более подходящего. Модераторам: если знаете - перенесите тему, пожалуйста.
Итак. Имеется программа (не моя, слитая из интернета) на ATI Streams (я могу ошибаться в названии, потому, что никогда не работал с этим).
Если это имеет значение, то она лежит в подкаталоге brook и расширение *.br
имеется питоновский скрипт (см. ниже), который компилирует эту программу SDK-шным компилятором. Получается файл *.il, который потом зипуется с расширением Z.
В Makefile основной (Си-шной) программы указано следующее
Цитата
my_kernel_dp11.o: my_kernel_dp11.Z
    ld -s -r -o my_kernel_dp11.o -b binary my_kernel_dp11.Z

а полученный объектник просто линкуется к основной программе.
В Си-шной программе эти данные передаются в функцию calclCompile (насколько я понял это - из OpenCL).
Так вот. На видеокартах AMD серии 6970 всё отлично работает, а на серии 7970 функция calclCompile возвращает ошибку
Цитата
Unsupported program construct detected in back-end

Подскажите, пожалуйста, что нужно подправить в программе, чтобы она стала supported ?
P.S. Исходник прилагаю. А вот питоновский скрипт
Код

#!/usr/bin/python
import sys
import zlib
import os

#if len(sys.argv)<2:
#    print "usage ", sys.argv[0], " IL file"
#    sys.exit(-1)

def makebrz(dp_bits):
    try:
        os.unlink("a_slice_dpX_a_slicer.il")
    except OSError:
        pass
    dpdefs=""
    for i in range(dp_bits-11):
        dpdefs = dpdefs + " -D DP_BIT_%i" % (i+12,)
    print "DP_DEFS: ", dpdefs
    os.system("/usr/local/atibrook/sdk/bin/brcc -k -pp %s a_slice_dpX.br" % (dpdefs,) )
    f = open("a_slice_dpX_a_slicer.il")
    if f==None:
        print "Could not read ", sys.argv[1]
        sys.exit(-1)

    data = f.read()
    f.close()

    oname = "../my_kernel_dp%i.Z" % (dp_bits,)
    data2 = zlib.compress(data)
    fo = open( oname, "wb" )
    fo.write(data2)
    fo.close()
    #os.system("ld -s -r -o ../%s.o -b binary %s" % (oname[:-2],oname))

makebrz(11)
makebrz(12)
makebrz(13)
makebrz(14)

P.P.S. Дело осложняется тем, что я с этим ATI streams вообще не работал, так что мне нужна не подсказка в чём проблема, а готовое решение(((
Спасибо.

Автор: borisbn 7.3.2012, 10:35
Судя по всему, ничего не выйдет...
http://stackoverflow.com/questions/9571951/ati-streams-failed-on-amd-7970-series

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)