Note that there are some explanatory texts on larger screens.

plurals
  1. POCUDA error message : unspecified launch failure
    primarykey
    data
    text
    <p>This is part of my CUDA code. But last part of this code says some error message.</p> <pre><code>unsigned int *mat_count; off_t *mat_position; unsigned int *matches_count; off_t *matches_position; ...... cudaMalloc ( (void **) &amp;mat_count, sizeof(unsigned int)*10); cudaMalloc ( (void **) &amp;mat_position, sizeof(off_t)*10); ...... matches_count = (unsigned int *)malloc(sizeof(unsigned int)*10); matches_position = (off_t *)malloc(sizeof(off_t)*10); for ( i = 0 ; i &lt; 10 ; i++ ) { matches_count [i] = 0; matches_position[i] = 0; } ...... cudaMemcpy (mat_count, matches_count , sizeof(unsigned int)*10, cudaMemcpyHostToDevice ); cudaMemcpy (mat_position, matches_position, sizeof(off_t)*10, cudaMemcpyHostToDevice ); ...... match&lt;&lt;&lt;BLK_SIZE,THR_SIZE&gt;&gt;&gt;( reference_total, indextable_total, sequences, start_sequence, sequence_length, end_sequence, ref_base, idx_base, msk_base, mat_count, mat_position, reference, first_indexes, seqmaskc ); err=cudaGetLastError(); if(err!=cudaSuccess) { printf("\n1 %s\n", cudaGetErrorString(err)); } err= cudaMemcpy (matches_count , mat_count, sizeof(unsigned int)*10, cudaMemcpyDeviceToHost ); if(err!=cudaSuccess) { printf("\n2 %s\n", cudaGetErrorString(err)); } err= cudaMemcpy (matches_position, mat_position, sizeof(off_t)*10, cudaMemcpyDeviceToHost ); if(err!=cudaSuccess) { printf("\n3 %s\n", cudaGetErrorString(err)); } </code></pre> <p>The following part of code had reported "unspecified launch failure" this error message. I don't know why this error message is reported.</p> <pre><code>err=cudaMemcpy (matches_position, mat_position, sizeof(off_t)*10, cudaMemcpyDeviceToHost ); if(err!=cudaSuccess) { printf("\n3 %s\n", cudaGetErrorString(err)); } </code></pre> <p>The followings are part of match function.</p> <pre><code>__global__ void match(...) { ...... reference_blk = (THR_SIZE * blockIdx.x + threadIdx.x) * 32 + reference; ...... //-- added for parallize --// for (p = start_p ; p != last_p ; p++) { for ( s = start_sequence, sequence = sequences ; s != end_sequence ; s++, sequence += sequence_bytes ) { ref_off = *(((unsigned int*)(idx_base)) + p); shifted_in = 0; if((int)(first_indexes[s-start_sequence] % 8 - ref_off % 8) &lt; 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)) &gt;&gt; shamt2; if( ( (*(unsigned long *)(seqmaskc + 16 * (s-start_sequence))) ^ mask_buffer ) &lt;&lt; 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)) &gt;&gt; shamt2; if( ( (*(unsigned long *)(seqmaskc + 16 * (s-start_sequence))) ^ mask_buffer ) &lt;&lt; shamt2) continue; } //full compare if((int)(first_indexes[s-start_sequence] % 4 - ref_off % 4) &lt; 0){ 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); ...... //-- 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 */ } } else if((int)(first_indexes[s-start_sequence] % 4 - ref_off % 4 )== 0){ memcpy(reference_blk, ref_base + ref_off / 4 - first_indexes[s-start_sequence] / 4, sequence_bytes); ....... //-- 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 */ } } else { int shamt = 8 - (first_indexes[s-start_sequence] % 4 - ref_off % 4) * 2; memcpy(reference_blk, ref_base + ref_off / 4 - first_indexes[s-start_sequence] / 4 - 1, 32); ...... //-- 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 */ } } } } </code></pre> <p>}</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload