all:
Я узнаю, как общая память ускоряет процесс программирования на графическом процессоре. Я использую приведенные ниже коды для расчета квадрата значения каждого элемента плюс квадрата среднего значения его левого и правого соседей.
Код выполняется, однако результат не такой, как ожидалось.
Первые 10 распечатанных результатов — 0,1,2,3,4,5 ,6,7,8,9, хотя я ожидаю результата как 25,2,8, 18,32,50,72,98,128,162;
Код следующим образом, со ссылкой на здесь;
Скажите, пожалуйста, какая часть идет не так? Мы очень ценим вашу помощь.
#include
#include
#include
#include
const int N=1024;
__global__ void compute_it(float *data)
{
int tid = threadIdx.x;
__shared__ float myblock[N];
float tmp;
// load the thread's data element into shared memory
myblock[tid] = data[tid];
// ensure that all threads have loaded their values into
// shared memory; otherwise, one thread might be computing
// on unitialized data.
__syncthreads();
// compute the average of this thread's left and right neighbors
tmp = (myblock[tid>0?tid-1:(N-1)] + myblock[tid
Подробнее здесь: https://stackoverflow.com/questions/198 ... ot-working