Програмата ми изпълнява 2 нишки - нишка A (за въвеждане) и B (за обработка). Имам и двойка указатели към 2 буфера, така че когато нишка A приключи с копирането на данни в буфер 1, нишка B започва да обработва буфер 1 и нишка A започва да копира данни в буфер 2. След това, когато буфер 2 е пълен, нишка A копира данни в буфер 1 и поток B обработва буфер 2 и т.н.
Проблемът ми идва, когато се опитам да cudaMemcpy Buffer[] в d_Buffer (който преди това беше cudaMalloc'd от основната нишка, т.е. преди създаването на нишка. Buffer[] също бяха malloc'd от основната нишка). Получавам грешка „невалиден аргумент“, но нямам представа кой е невалидният аргумент.
Намалих програмата си до еднопоточна програма, но все още използвам 2 буфера. Тоест копирането и обработката се извършват едно след друго, вместо едновременно. Линията cudaMemcpy е точно същата като тази с двойна нишка. Програмата с една нишка работи добре.
Не съм сигурен къде е грешката.
Благодаря ти.
Поздрави, Rayne