[x]
Вход
Amazon
AMD
ATI
brute force
bruteforce
cloud
CUDA
GPGPU
gpgpu.ru
GPU Gems
Intel
Larrabee
Linpack
MapReduce
MD5 crack
Nexus
NVidia
NVidia 8800
NVidia CUDA
NVidia G200
NVidia GTX280
NVidia Nexus
OpenCL
Parallel Nsight
signal processing
sparse matrices
Stream SDK
VISPL
VMWare
web
ВМиК МГУ
МГУ
Москва
Т-Платформы
Физфак МГУ
бенчмарки
блогосфера
вычисления
конкурсы
курсы
новости сайта
обработка изображений
подбор паролей
поиск
программирование GPU
работа
разное
сортировка
фильтрация трафика
численные методы
Navigation
Cвежие комментарии
-
1 week 6 hours ago
-
1 week 1 day ago
-
1 week 1 day ago
-
1 week 1 day ago
-
1 week 1 day ago
-
1 week 1 day ago
-
1 week 1 day ago
-
1 week 4 days ago
-
3 weeks 3 days ago
-
3 weeks 5 days ago
Новое на форуме
Популярно
- Как начать с самого начала работу с CUDA (33,816)
- Форумы NVidia CUDA: обзор за май (31,806)
- GPGPU и видеокарты AMD (18,179)
- NVidia GTX 280, Tesla T10P (15,756)
- SGEMM на видеокарте и CPU, серия 6 (14,894)
В процессе работы понял что похоже копирования на самом деле нет, просто для процессора эти функции вызываются для порядка так скажем))
Если вы собираетесь программировать на OpenCL, то все железки от AMD начиная с 5xxx - в первом приближении одинаковы.
Берите ту, где больше гигафлопс на рубль - не ошибетесь.
Ну так API такое, как же без буферов то?
Да, не вполне разумно, но с другой стороны - это дает гарантию, что в буферах никто не будет копаться в процессе работы kernel
Быстрое гугление нашло вот это: https://github.com/erwincoumans/experiments/tree/master/opencl/primitive...
Не смотрел.
Если вы имеете в виду HPL, то он живет поверх (потенциально любого) Lapack.
То и значит.
30 мультипроцессоров, по 8 SP в каждом. Каждый SP может исполнять, действительно, 768 threads, но одновременно (в SIMD-понимании) - только 16 из них, за два такта.
А что тогда значит следующее высказывание:
"Также GPU содержит ряд потоковых мультипроцессоров, каждый из которых способен одновременно выполнять 768 (1024 - для более поздних моделей) нитей. При этом количество потоковых мультипроцессоров зависит от модели GPU. Так, GTX 280 содержит 30 потоковых мультпроцессоров..."?
у меня было нечто похожее, не работали новые ядра убунты после установки драйвера 275, я зашел в старое ядро, через установщик пакетов установил драйвер 290, и старое ядро больше не запускается, зато новое 3.0 работает.
а почему так случилось долго объяснять, я с этой проблемой несколько месяцев воевал.
Всем спасибо за помощь, в моём случае проблема заключалась в конфиге компилятора nvidia. По каким-то причинам при ранее приходилось переписывать файлик nvcc.profile, вернул всё по-умолчанию, нормально заработало.
я тот, у кого этот проект заработал, у меня командная строка после построения выглядит немного в другом порядке, быть может в этом дело:
"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\bin\nvcc.exe" "C:\Users\Vasia\Documents\Visual Studio 2010\Projects\TestCuda - копия\TestCuda\mykernel.cu" --cubin --compiler-bindir="C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin" -arch=sm_21
а вообще проверь по дате он создает новый cubin или нет. а создавать его должен не при запуске, а при построении. так что внимательно.
Я рекомендую сделать dll на C++, в которой реализовать функцию вызова кода куды, и в программе C# подключить эту библиотеку. И работать будет быстрее. Возможно CUDA .Net еще сырая, да и документации по ней мало.
Да, конечно, все свойства девайса получить удаётся.
Массив в память адаптера так же копируется.
Да и при работе на С++ никаких проблем не возникало.
А как его напрямик в массив скомпилировать? Все дело в том, что при компиляции создается файл с расширением cubin - это двоичный файл, который и нужно загрузить с помощью LoadModule. Ну можно еще его загрузить из ресурса, спрятать внутри программы или передать еще каким-нибудь хитрым способом, вот для этого, видимо и сделали возможность передачи последовательности байт. Но здесь видимо что-то не так компилируется, или загружается не то, то надо. А создается устройство с инициализацией? Примерно, вот так: CUDA cuda = new CUDA(0, true);?
Тот же эксепшен, я просто думал, не связываться с файлов, а можем как-то напрямик скомпилировать его в массив.
Открыть файл cubin с помощью потока, считать массив байт ну и подсунуть его:
FileStream S = new FileStream(FileName, FileMode.Open, FileAccess.Read);
byte[] cubin = new byte[S.Length];
S.Read(cubin, 0, cubin.Length);
S.Close();
CUmodule module = cuda.LoadModule(cubin);
Ну это понятно, у меня тоже 4.0, Win 7 x64. Но кстати в cuda.net описана только поддержка CUDA API версии 3.0, странно.
Так же заметил в методе интересную перегрузку:
public CUmodule LoadModule(
byte[] binaryImage
)
Есть мысли, как содержимое компиляции cubin подсунуть в виде массива?
Я последнюю версию 4.0 скачал с официального сайта http://developer.nvidia.com/cuda-toolkit-40
Но Compute Capability зависит от видеокарты, а не от установленной версии CUDA API, если, конечно, причина именно в Compute Capability. Я свой пример только что проверил - компилируется и работает.
А какая версия CUDA API у вас установлена?
Даже и не знаю в чем причина. Может CUDA .Net ориентирован на куду версии 2.
Хм, у меня проект не заработал.
В свойствах проекта командная строка выглядит так:
"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\bin\nvcc.exe" -arch=sm_11 "C:\Users\d1\Desktop\TestCuda\TestCuda\mykernel.cu" --cubin
--compiler-bindir="C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin"
А Cuda Compute Capability 1.1
Отправил. Надеюсь, поможет.
Такая я же ошибка, причём компиляция проходит успешно при всех различных параметрах arch=sm_11.. arch=sm_20, arch=sm_22..
А при cuda.LoadModule возникает вышеописанный ексепшен:
CUDAError = GASS.CUDA.CUResult.ErrorInvalidImage
Будьте добры, перешлите и мне проектик на artesdi@gmail.com
Заранее спасибо.
Процесс (kernel) - в первом приближении один (во втором - на Fermi можно несколько kernels одновременно пускать, единица гранулярности - мультипроцессор).
"Одновременных сложений" - по числу Cuda cores, 336 на обычных GTX460 и 288 на SE.
Для тренировок в OpenCL видеокарта и вовсе не нужна.
В остальном же - берите любую серии 5xxx/6xxx (они довольно похожи). С вашим бюджетом шансов купить в ближайшие месяцы новую архитектуру (7870 или 7850) как мне кажется нет, а младшая серия 7xxx от 6xxx вроде бы архитектурно отличается слабо, если вообще отличается.
Кроме того, OpenCL прекрасно работает и на NVidia,
смотрите что в документации пишут на CUDA 4.1
"Starting with CUFFT version 4.1, CUFFT library is thread safe"
Значит, в предыдущих версиях - не thread safe. Обновляйтесь до 4.1