나는 CUDA 코드를 프로그래밍했다.CUDA가 예상대로 작동하지 않습니까?
unsigned long mask_buffer;
int s;
off_t p,
for(p=0;p!=5000;p++)
{
for(s=start;s!=end;s++)
{
ref_off = *(((unsigned int*)(idx_base)) + p);
if((int)(first_indexes[s-start_sequence] % 8 - ref_off % 8) < 0)
{
int shamt2 = (ref_off % 8 - first_indexes[s-start_sequence] % 8);
mask_buffer = *((unsigned long *)(msk_base + (ref_off - first_indexes[s-start_sequence])/8)) >> shamt2;
if(((*(unsigned long *)(seqmaskc + 16 * (s-start_sequence)))^mask_buffer) << shamt2)
continue;
}
else if((int)(first_indexes[s-start_sequence] % 8 - ref_off % 8) == 0)
{
mask_buffer = *((unsigned long *)(msk_base + (ref_off)/8));
if((*(unsigned long *)(seqmaskc + 16 * (s-start_sequence))^mask_buffer))
continue;
}
else
{
int shamt2 = 8 - (first_indexes[s-start_sequence] % 8 - ref_off % 8);
mask_buffer = *((unsigned long *)(msk_base + (ref_off/8- first_indexes[s-start_sequence]/8) - 1)) >> shamt2;
if(((*(unsigned long *)(seqmaskc + 16 * (s-start_sequence)))^mask_buffer) << shamt2)
continue;
}
int shamt = (ref_off % 4 - first_indexes[s-start_sequence] % 4) * 2;
memcpy(reference_blk, ref_base + ref_off/4 - first_indexes[s-start_sequence]/4, sequence_bytes);
for (rp = last_rp ; rp != (unsigned long *) reference_blk ; rp--)
{
unsigned long tmp = ((*rp) & ((1 << shamt) - 1)) << (8 * sizeof(unsigned long) - shamt);
*rp = (*rp >> shamt) | shifted_in;
shifted_in = tmp;
}
*rp = (*rp >> shamt) | shifted_in;
if (sequence_length & 0x3)
reference_blk[sequence_length >> 2] &= (1 << ((sequence_length & 0x3) << 1)) - 1;
for (i = sequence_length >> 2 ; i & (SEQUENCE_ALIGN - 1) ; i++)
reference_blk[i] = 0;
//-- instead of memcmp --//
int v = 0;
char *p1 = (char *)sequence;
char *p2 = (char *)reference_blk;
int tmp_asd = sequence_bytes;
while(tmp_asd!=0)
{
v = *(p1++) - *(p2++);
if(v!=0)
break;
tmp_asd--;
}
if(v == 0)
{
mat_count[s - (int)start_sequence]++; /* Maintain count */
mat_position[s - (int)start_sequence] = ref_off-first_indexes[s-start_sequence]; /* Record latest position */
}
}
}
이 for 루프는 내 코드의 주요 기능입니다. 그러나 문제는 변수 "p"가 5 또는 6 이상으로 증가하지 않는다는 것입니다. 내 컴퓨터에 GT530이 있고 내 CUDA 드라이버 버전과 런타임 버전도 4.0입니다. 이 코드의 문제점은 무엇입니까 ???
전체 코드 또는 적어도 코드의 일부와 함께 유형을 포함 할 수 있습니까? –
더 많은 문맥이 없으면 우리가 대단히 도움을 줄 수 있다고 생각하지 않습니다. 더 많은 코드를 붙여 넣을 수 있습니까? –
내 코드 소스 편집 – Jimmy