Здравствуйте, PanychY, Вы писали:
PY> (Между прочим DirectX проблему решил: либо устройство поддерживает все фичи спецификации, либо скатертью дорожка)
И это офигенно удобно, потому как сильно уменьшило фрагментацию рынка. Теперь движки надо делать под "некое" устройство с FEATURE_LEVEL_10, FEATURE_LEVEL_10_1 и FEATURE_LEVEL_11, а не сто разных версий под разные комбинации поддерживаемых фич, как это было во времена DX9...
Здравствуйте, PanychY, Вы писали:
PY>ибо это не OpenCL — а vendor-locked решения, что является абсолютной противоположностью OpenCL.
Что? OpenCL — это стандарт на API, призванный обеспечить совместимость программ на уровне исходных текстов. Если программу нужно портировать на другую платформу, то берётся нужный SDK и программа собирается с ним. В этом случае следование стандарту OpenCL является некой гарантией, что программа не только соберётся, но даже заработает. Разумеется, наличие реализаций от производителей ничему тут не противоречит (собственно, обычно только такие реализации и нужны). Так же не противоречило бы и наличие канонической публичной реализации, если бы она была (вот только она практически никому не нужна).
Собственно сабж. Ищется OpenCL либа/хидеры/SDK.
CUDA, AMD APP SDK, Intel SDK for OpenCL Applications не предлагать, ибо это не OpenCL — а vendor-locked решения, что является абсолютной противоположностью OpenCL.
Нужны платформы Windows и Linux(или хотя бы одна).
Здравствуйте, Mauller, Вы писали:
M>http://www.khronos.org/opencl/resources
M>this?
Да, там нашлось именно то что мне нужно. Спасибо. Как-то я мимо него почему-то прошел.
Здравствуйте, watch-maker, Вы писали:
WM>Здравствуйте, PanychY, Вы писали:
PY>>ибо это не OpenCL — а vendor-locked решения, что является абсолютной противоположностью OpenCL.
WM>Что? OpenCL — это стандарт на API, WM>Пока не ясно, что же именно вы хотите скачать.
Чего же тут не понятного? Нужно что-бы я один раз откомпилировал свой HelloWorld, и запускал его с разным железом без дополнительно геморроя. Принес на машину с NVidia на борту — заработало на нем, с AMD Radeon на борту — заработало, Intel Graphics/MIC — заработало, железка с названием "Шайтан устройство" производства фирмы "Рога-энд-копыта" — заработало без малейшей заминки, да хоть все вместе взятые, в любой комбинации — софтина нашла их все, выбрала одно или все сразу и заработала.
Впрочем, господин Mauller уже сильно мне помог пнув в нужную сторону.
Здравствуйте, PanychY, Вы писали:
PY>Чего же тут не понятного? Нужно что-бы я один раз откомпилировал свой HelloWorld, и запускал его с разным железом без дополнительно геморроя. Принес на машину с NVidia на борту — заработало на нем, с AMD Radeon на борту — заработало, Intel Graphics/MIC — заработало, железка с названием "Шайтан устройство" производства фирмы "Рога-энд-копыта" — заработало без малейшей заминки, да хоть все вместе взятые, в любой комбинации — софтина нашла их все, выбрала одно или все сразу и заработала.
1. Не факт, что у тебя получится. Не все устройства одинаково поддерживают стандарт, даже если он в них заявлен.
2. Кроме того, программа на OpenCL может компилироваться динамически драйвером конкретного устройства. Тогда какая разница с использованием какого SDK ты её написал?
3. Оптимально твоя программа будет работать только на том устройстве, под которое ты будешь писать. Даже если взять только видеокарты, то под AMD и Nvidia надо оптимизировать по-разному. Более того, надо оптимизировать под конкретную архитектуру даже внутри модельного ряда одного производителя. Например, Nvidia зарезала в последних сеирях карточек скорость выполнения операций с двойной точностью. И AMD изменила архитектуру своих видеокарт. Я не говорю уже про работу на х86 или АРМах.
Здравствуйте, Nuzhny, Вы писали:
N>1. Не факт, что у тебя получится. Не все устройства одинаково поддерживают стандарт, даже если он в них заявлен.
Ну собственно это глобальная проблема, касающаяся всех технологий. Не думаю что мне суждено заниматься её решением. Думаю ядра спецификации реализованного на большинстве устройств мне хватит с головой. (Между прочим DirectX проблему решил: либо устройство поддерживает все фичи спецификации, либо скатертью дорожка) N>2. Кроме того, программа на OpenCL может компилироваться динамически драйвером конкретного устройства.
Я в курсе, пункт 5.6.1 спецификации OpenCL 1.2. Собственно на это и рассчитано. Я бы даже сказал "обязана компилироваться" в целью максимальной оптимизацию под устройство. Но это не мне решать. N>Тогда какая разница с использованием какого SDK ты её написал?
Для меня достоверный источник — исключительно Khronos group. Не хочу ломать голову потому-что, NVidia, AMD и, как пить дать, Intel налепили отсебятины в хидеры и либы. Но вот почему-то именно от Khronos group я их так и не нашел. И да, а с какого перепугу Intel-овское SDK на отрез отказывается устанавливаться на XP, в то время как NVidia и AMD-ные спокойно стали и работают без лишних вопросов? Либо они чего-то прячут, либо я — полный идиот. N>3. Оптимально твоя программа будет работать только на том устройстве, под которое ты будешь писать. Даже если взять только видеокарты, то под AMD и Nvidia надо оптимизировать по-разному. Более того, надо оптимизировать под конкретную архитектуру даже внутри модельного ряда одного производителя. Например, Nvidia зарезала в последних сеирях карточек скорость выполнения операций с двойной точностью. И AMD изменила архитектуру своих видеокарт. Я не говорю уже про работу на х86 или АРМах.
Я буду писать в соответствии с OpenCL. Да, в отдельных случаях стоит предусмотреть те или иные вариации кода ядер, но не святые горшки лепят, и эта задача вполне себе выполнима. Если OpenCL-железка в состоянии отрапортовать о своих тараканах, то проблем нету. В крайнем случае на моём HelloWorld будет написано большими красными буквами "Такая-то железка такого-то производителя имеет такие-то тараканы, и заявленные качества работы продукта при её использовании не гарантированы". Что мне из шкуры вылазить? Пусть вендор вылазит, это его продукт, его репутации и прибыль от продаж.