Here's my GitHub account for academic and professional projects. Up to now, it's mainly about C++ and CUDA university projects.
I currently live in Japan, but when a good opportunity comes out, I'm always ready to move.
BWA-MEM program accelerated with the GASAL2 library
License: GNU General Public License v3.0
In order to match the way results are computed in bwa-mem, the KSW kernel must enforce computation in the beginning of both query and target. To do so, a filter is set depending on the values of the score for each cell.
After discussion with @nahmedraja we agreed on removing the tile-based computing since this would make impossible to reproduce the per-cell filtering.
This is done by the following code that ksw_extend runs after computing every column of te matrix, to check where to begin the next column:
for (i = 0; LIKELY(i < tlen); ++i) {
int t, f = 0, h1, m = 0, mj = -1;
int8_t *q = &qp[target[i] * qlen];
// apply the band and the constraint (if provided)
if (beg < i - w) beg = i - w;
if (end > i + w + 1) end = i + w + 1;
if (end > qlen) end = qlen;
if (beg == 0) {
h1 = h0 - (o_del + e_del * (i + 1));
if (h1 < 0) h1 = 0;
} else h1 = 0;
for (j = beg; LIKELY(j < end); ++j) {
// compute cell
}
[...]
for (j = beg; j < end && eh[j].h == 0 && eh[j].e == 0; ++j)
;
beg = j;
for (j = end; j >= beg && eh[j].h == 0 && eh[j].e == 0; --j)
;
end = j + 2 < ref_len ? j + 2 : query_len;
[...]
}
Implementing it should provide better results
Hi, I encoutered an error when try to compile with make.
First I clone GASAL2 and then compile it successfully by running ./configure.sh and ./run_all.sh
But when I compile bwa-gasal2, I encountered this error:
If you donot see anything below this line then there is nothing to "make"
g++ -c -g -Wall -Wno-unused-function -O2 -msse4.2 -std=c++11 -fpermissive -DHAVE_PTHREAD -DUSE_MALLOC_WRAPPERS -I./GASAL2/include/ src/bwamem.c -o ./obj/bwamem.o
In file included from src/bwamem.c:18:
src/vector_filter.h:12:36: error: ‘aligned’ was not declared in this scope
#define __aligned__ __attribute__((aligned(16)))
^~~~~~~
src/vector_filter.h:12:36: note: suggested alternative: ‘signed’
In file included from /usr/lib/gcc/x86_64-linux-gnu/8/include/xmmintrin.h:31,
from /usr/lib/gcc/x86_64-linux-gnu/8/include/emmintrin.h:31,
from /usr/lib/gcc/x86_64-linux-gnu/8/include/pmmintrin.h:31,
from /usr/lib/gcc/x86_64-linux-gnu/8/include/tmmintrin.h:31,
from /usr/lib/gcc/x86_64-linux-gnu/8/include/smmintrin.h:32,
from /usr/lib/gcc/x86_64-linux-gnu/8/include/nmmintrin.h:31,
from src/vector_filter.h:16,
from src/bwamem.c:18:
/usr/lib/gcc/x86_64-linux-gnu/8/include/mmintrin.h:45:85: error: expected ‘)’ before ‘(’ token
typedef int __m64_u __attribute__ ((__vector_size__ (8), __may_alias__, __aligned__ (1)));
~ ^
/usr/lib/gcc/x86_64-linux-gnu/8/include/mmintrin.h:45:85: error: expected ‘)’ before ‘(’ token
In file included from src/bwamem.c:18:
src/vector_filter.h:12:36: error: ‘aligned’ was not declared in this scope
#define __aligned__ __attribute__((aligned(16)))
^~~~~~~
src/vector_filter.h:12:36: note: suggested alternative: ‘signed’
In file included from /usr/lib/gcc/x86_64-linux-gnu/8/include/emmintrin.h:31,
from /usr/lib/gcc/x86_64-linux-gnu/8/include/pmmintrin.h:31,
from /usr/lib/gcc/x86_64-linux-gnu/8/include/tmmintrin.h:31,
from /usr/lib/gcc/x86_64-linux-gnu/8/include/smmintrin.h:32,
from /usr/lib/gcc/x86_64-linux-gnu/8/include/nmmintrin.h:31,
from src/vector_filter.h:16,
from src/bwamem.c:18:
/usr/lib/gcc/x86_64-linux-gnu/8/include/xmmintrin.h:72:89: error: expected ‘)’ before ‘(’ token
typedef float __m128_u __attribute__ ((__vector_size__ (16), __may_alias__, __aligned__ (1)));
~ ^
/usr/lib/gcc/x86_64-linux-gnu/8/include/xmmintrin.h:72:89: error: expected ‘)’ before ‘(’ token
In file included from src/bwamem.c:18:
src/vector_filter.h:12:36: error: ‘aligned’ was not declared in this scope
#define __aligned__ __attribute__((aligned(16)))
^~~~~~~
src/vector_filter.h:12:36: note: suggested alternative: ‘signed’
In file included from /usr/lib/gcc/x86_64-linux-gnu/8/include/pmmintrin.h:31,
from /usr/lib/gcc/x86_64-linux-gnu/8/include/tmmintrin.h:31,
from /usr/lib/gcc/x86_64-linux-gnu/8/include/smmintrin.h:32,
from /usr/lib/gcc/x86_64-linux-gnu/8/include/nmmintrin.h:31,
from src/vector_filter.h:16,
from src/bwamem.c:18:
/usr/lib/gcc/x86_64-linux-gnu/8/include/emmintrin.h:57:94: error: expected ‘)’ before ‘(’ token
typedef long long __m128i_u __attribute__ ((__vector_size__ (16), __may_alias__, __aligned__ (1)));
~ ^
/usr/lib/gcc/x86_64-linux-gnu/8/include/emmintrin.h:57:94: error: expected ‘)’ before ‘(’ token
In file included from src/bwamem.c:18:
src/vector_filter.h:12:36: error: ‘aligned’ was not declared in this scope
#define __aligned__ __attribute__((aligned(16)))
^~~~~~~
src/vector_filter.h:12:36: note: suggested alternative: ‘signed’
In file included from /usr/lib/gcc/x86_64-linux-gnu/8/include/pmmintrin.h:31,
from /usr/lib/gcc/x86_64-linux-gnu/8/include/tmmintrin.h:31,
from /usr/lib/gcc/x86_64-linux-gnu/8/include/smmintrin.h:32,
from /usr/lib/gcc/x86_64-linux-gnu/8/include/nmmintrin.h:31,
from src/vector_filter.h:16,
from src/bwamem.c:18:
/usr/lib/gcc/x86_64-linux-gnu/8/include/emmintrin.h:58:91: error: expected ‘)’ before ‘(’ token
typedef double __m128d_u __attribute__ ((__vector_size__ (16), __may_alias__, __aligned__ (1)));
~ ^
/usr/lib/gcc/x86_64-linux-gnu/8/include/emmintrin.h:58:91: error: expected ‘)’ before ‘(’ token
In file included from src/kstring.h:8,
from src/bwamem.c:11:
src/bwamem.c: In function ‘mem_opt_t* mem_opt_init()’:
src/malloc_wrap.h:28:36: warning: invalid conversion from ‘void*’ to ‘mem_opt_t*’ [-fpermissive]
# define calloc(n, s) wrap_calloc( (n), (s), __FILE__, __LINE__, __func__)
~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:52:6: note: in expansion of macro ‘calloc’
o = calloc(1, sizeof(mem_opt_t));
^~~~~~
src/bwamem.c: In function ‘smem_aux_t* smem_aux_init()’:
src/malloc_wrap.h:28:36: warning: invalid conversion from ‘void*’ to ‘smem_aux_t*’ [-fpermissive]
# define calloc(n, s) wrap_calloc( (n), (s), __FILE__, __LINE__, __func__)
~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:110:6: note: in expansion of macro ‘calloc’
a = calloc(1, sizeof(smem_aux_t));
^~~~~~
src/malloc_wrap.h:28:36: warning: invalid conversion from ‘void*’ to ‘bwtintv_v*’ [-fpermissive]
# define calloc(n, s) wrap_calloc( (n), (s), __FILE__, __LINE__, __func__)
~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:111:15: note: in expansion of macro ‘calloc’
a->tmpv[0] = calloc(1, sizeof(bwtintv_v));
^~~~~~
src/malloc_wrap.h:28:36: warning: invalid conversion from ‘void*’ to ‘bwtintv_v*’ [-fpermissive]
# define calloc(n, s) wrap_calloc( (n), (s), __FILE__, __LINE__, __func__)
~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:112:15: note: in expansion of macro ‘calloc’
a->tmpv[1] = calloc(1, sizeof(bwtintv_v));
^~~~~~
src/bwamem.c: In function ‘void mem_collect_intv(mem_opt_t*, const bwt_t*, int, const uint8_t*, smem_aux_t*)’:
src/bwamem.c:202:18: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
for (i = 0; i < a->mem1.n; ++i) {
~~^~~~~~~~~~~
src/bwamem.c:217:43: warning: comparison of integer expressions of different signedness: ‘bwtint_t’ {aka ‘long unsigned int’} and ‘int’ [-Wsign-compare]
if (end - start < split_len || p->x[2] > opt->split_width)
~~~~~~~~^~~~~~~~~~~~~~~~~~
src/bwamem.c:220:18: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
for (i = 0; i < a->mem1.n; ++i)
~~^~~~~~~~~~~
src/bwamem.c:221:66: warning: comparison of integer expressions of different signedness: ‘bwtint_t’ {aka ‘long unsigned int’} and ‘int’ [-Wsign-compare]
if ((uint32_t) a->mem1.a[i].info - (a->mem1.a[i].info >> 32) >= opt->min_seed_len)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
src/bwamem.c:236:21: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
for (i = 0; i < a->mem1.n; ++i)
~~^~~~~~~~~~~
src/bwamem.c:164:26: warning: unused variable ‘max’ [-Wunused-variable]
int i, k, x = 0, old_n, max, max_i;
^~~
src/bwamem.c:164:31: warning: unused variable ‘max_i’ [-Wunused-variable]
int i, k, x = 0, old_n, max, max_i;
^~~~~
src/bwamem.c:167:6: warning: unused variable ‘min_miss_match’ [-Wunused-variable]
int min_miss_match = 0;
^~~~~~~~~~~~~~
src/bwamem.c:168:19: warning: unused variable ‘w’ [-Wunused-variable]
bwt_mem_width_t *w;
^
In file included from src/kstring.h:8,
from src/bwamem.c:11:
src/bwamem.c: In function ‘int test_and_merge(const mem_opt_t*, int64_t, mem_chain_t*, const mem_seed_t*, int)’:
src/malloc_wrap.h:38:37: warning: invalid conversion from ‘void*’ to ‘mem_seed_t*’ [-fpermissive]
# define realloc(p, s) wrap_realloc((p), (s), __FILE__, __LINE__, __func__)
~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:374:16: note: in expansion of macro ‘realloc’
c->seeds = realloc(c->seeds, c->m * sizeof(mem_seed_t));
^~~~~~~
src/bwamem.c: In function ‘void mem_print_chain(const bntseq_t*, mem_chain_v*)’:
src/bwamem.c:409:16: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
for (i = 0; i < chn->n; ++i) {
~~^~~~~~~~
src/bwamem.c: In function ‘mem_chain_v mem_chain(const mem_opt_t*, const bwt_t*, const bntseq_t*, int, const uint8_t*, void*)’:
src/bwamem.c:438:19: warning: invalid conversion from ‘const mem_opt_t*’ to ‘mem_opt_t*’ [-fpermissive]
mem_collect_intv(opt, bwt, len, seq, aux);
^~~
src/bwamem.c:163:41: note: initializing argument 1 of ‘void mem_collect_intv(mem_opt_t*, const bwt_t*, int, const uint8_t*, smem_aux_t*)’
static void mem_collect_intv(mem_opt_t *opt, const bwt_t *bwt, int len, const uint8_t *seq, smem_aux_t *a) {
~~~~~~~~~~~^~~
src/bwamem.c:439:35: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
for (i = 0, b = e = l_rep = 0; i < aux->mem.n; ++i) { // compute frac_rep
~~^~~~~~~~~~~~
src/bwamem.c:442:15: warning: comparison of integer expressions of different signedness: ‘bwtint_t’ {aka ‘long unsigned int’} and ‘const int’ [-Wsign-compare]
if (p->x[2] <= opt->max_occ)
~~~~~~~~^~~~~~~~~~~~~~~
src/bwamem.c:450:16: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
for (i = 0; i < aux->mem.n; ++i) {
~~^~~~~~~~~~~~
src/bwamem.c:455:18: warning: comparison of integer expressions of different signedness: ‘bwtint_t’ {aka ‘long unsigned int’} and ‘const int’ [-Wsign-compare]
step = p->x[2] > opt->max_occ ? p->x[2] / opt->max_occ : 1;
~~~~~~~~^~~~~~~~~~~~~~
src/bwamem.c:456:25: warning: comparison of integer expressions of different signedness: ‘int64_t’ {aka ‘long int’} and ‘bwtint_t’ {aka ‘long unsigned int’} [-Wsign-compare]
for (k = count = 0; k < p->x[2] && count < opt->max_occ; k += step, ++count) {
~~^~~~~~~~~
In file included from src/kstring.h:8,
from src/bwamem.c:11:
src/malloc_wrap.h:28:36: warning: invalid conversion from ‘void*’ to ‘mem_seed_t*’ [-fpermissive]
# define calloc(n, s) wrap_calloc( (n), (s), __FILE__, __LINE__, __func__)
~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:476:17: note: in expansion of macro ‘calloc’
tmp.seeds = calloc(tmp.m, sizeof(mem_seed_t));
^~~~~~
src/bwamem.c:493:16: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
for (i = 0; i < chain.n; ++i)
~~^~~~~~~~~
src/bwamem.c: In function ‘int mem_chain_flt(const mem_opt_t*, int, mem_chain_t*)’:
src/bwamem.c:536:18: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
for (k = 0; k < chains.n; ++k) {
~~^~~~~~~~~~
src/bwamem.c:555:10: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
if (k == chains.n) {
~~^~~~~~~~~~~
src/bwamem.c:560:17: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
for (i = 0; i < chains.n; ++i) {
~~^~~~~~~~~~
src/bwamem.c: In function ‘void mem_mark_primary_se_core(const mem_opt_t*, int, mem_alnreg_t*, int_v*)’:
src/bwamem.c:717:18: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
for (k = 0; k < z->n; ++k) {
~~^~~~~~
src/bwamem.c:732:10: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
if (k == z->n)
~~^~~~~~~
In file included from src/kstring.h:8,
from src/bwamem.c:11:
src/bwamem.c: In function ‘void mem_chain2aln(const mem_opt_t*, const bntseq_t*, const uint8_t*, int, const uint8_t*, const mem_chain_t*, mem_alnreg_v*, int*, int*, gpu_batch*)’:
src/malloc_wrap.h:33:36: warning: invalid conversion from ‘void*’ to ‘uint64_t*’ {aka ‘long unsigned int*’} [-fpermissive]
# define malloc(s) wrap_malloc( (s), __FILE__, __LINE__, __func__)
~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:1087:8: note: in expansion of macro ‘malloc’
srt = malloc(c->n * 8);
^~~~~~
src/bwamem.c:1098:17: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
for (i = 0; i < av->n; ++i) // test whether extension has been made before
~~^~~~~~~
src/bwamem.c:1119:9: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
if (i < av->n)
~~^~~~~~~
src/bwamem.c:1226:40: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
if (curr_gpu_batch->n_target_batch < curr_gpu_batch->gpu_storage->host_max_target_batch_bytes)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:1246:31: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
if (curr_gpu_batch->n_seqs < curr_gpu_batch->gpu_storage->host_max_n_alns)
~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:1253:31: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
if (curr_gpu_batch->n_seqs < curr_gpu_batch->gpu_storage->host_max_n_alns)
~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:1260:31: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
if (curr_gpu_batch->n_seqs < curr_gpu_batch->gpu_storage->host_max_n_alns)
~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:1267:31: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
if (curr_gpu_batch->n_seqs < curr_gpu_batch->gpu_storage->host_max_n_alns)
~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:1211:8: warning: unused variable ‘j’ [-Wunused-variable]
int j;
^
src/bwamem.c:1048:12: warning: unused variable ‘rid’ [-Wunused-variable]
int i, k, rid, max_off[2], aw[2]; // aw: actual bandwidth used in extension
^~~
src/bwamem.c:1048:17: warning: unused variable ‘max_off’ [-Wunused-variable]
int i, k, rid, max_off[2], aw[2]; // aw: actual bandwidth used in extension
^~~~~~~
src/bwamem.c:1049:39: warning: unused variable ‘tmp’ [-Wunused-variable]
int64_t l_pac = bns->l_pac, rmax[2], tmp, max = 0;
^~~
src/bwamem.c:1051:11: warning: unused variable ‘rseq’ [-Wunused-variable]
uint8_t *rseq = NULL;
^~~~
src/bwamem.c: In function ‘void mem_aln2sam(const mem_opt_t*, const bntseq_t*, kstring_t*, bseq1_t*, int, const mem_aln_t*, int, const mem_aln_t*)’:
src/bwamem.c:1563:25: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
for (i = tmp; i < str->l; ++i) // replace TAB in the comment to SPACE
~~^~~~~~~~
src/bwamem.c: In function ‘void mem_reg2sam(const mem_opt_t*, const bntseq_t*, const uint8_t*, bseq1_t*, mem_alnreg_v*, int, const mem_aln_t*)’:
src/bwamem.c:1621:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
for (k = l = 0; k < a->n; ++k) {
~~^~~~~~
src/bwamem.c:1649:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
for (k = 0; k < aa.n; ++k)
~~^~~~~~
src/bwamem.c:1651:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
for (k = 0; k < aa.n; ++k)
~~^~~~~~
src/bwamem.c:1657:23: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
for (k = 0; k < a->n; ++k)
~~^~~~~~
src/bwamem.c: In function ‘void mem_gasal_fill(gpu_batch*, int, int, char*, int)’:
src/bwamem.c:1679:54: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
if (gpu_batch_arr[gpu_batch_arr_idx].n_query_batch < gpu_batch_arr[gpu_batch_arr_idx].gpu_storage->host_max_query_batch_bytes)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:1697:54: warning: comparison of integer expressions of different signedness: ‘int’ and ‘uint32_t’ {aka ‘unsigned int’} [-Wsign-compare]
if (gpu_batch_arr[gpu_batch_arr_idx].n_query_batch < gpu_batch_arr[gpu_batch_arr_idx].gpu_storage->host_max_query_batch_bytes)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c: In function ‘void mem_align1_core(const mem_opt_t*, const bwt_t*, const bntseq_t*, const uint8_t*, bseq1_t*, void*, int, int, mem_alnreg_v*, int, gasal_gpu_storage_v*)’:
src/bwamem.c:1803:31: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
for (i = 0; i < chn.n; ++i) {
~~^~~~~~~
src/bwamem.c:1851:16: warning: unused variable ‘cur’ [-Wunused-variable]
gpu_batch *cur = &gpu_batch_arr[gpu_batch_arr_idx];
^~~
src/bwamem.c:1857:33: warning: format ‘%d’ expects argument of type ‘int’, but argument 5 has type ‘size_t’ {aka ‘long unsigned int’} [-Wformat=]
fprintf(stderr, "Thread no. %d is here with internal batch size %d, regs.n %d \n", tid, internal_batch_size, regs.n);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~
In file included from src/bntseq.h:31,
from src/bwamem.h:5,
from src/bwamem.c:12:
src/bwamem.c:1865:38: warning: comparison of integer expressions of different signedness: ‘size_t’ {aka ‘long unsigned int’} and ‘int’ [-Wsign-compare]
assert(kv_size(regs_vec) == batch_processed);
src/bwamem.c:1902:91: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘size_t’ {aka ‘long unsigned int’} [-Wformat=]
if (gpu_batch_arr[internal_batch_idx].no_extend == 1) fprintf(stderr, "I am here too as well with regs.n %d\n", regs.n);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~
src/bwamem.c:1903:34: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
for(i = 0; i < regs.n; ++i){
~~^~~~~~~~
src/bwamem.c:1923:39: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
for (i = 0; i < regs.n; ++i) {
~~^~~~~~~~
src/bwamem.c:1928:35: warning: comparison of integer expressions of different signedness: ‘int’ and ‘size_t’ {aka ‘long unsigned int’} [-Wsign-compare]
for (i = 0; i < regs.n; ++i) {
~~^~~~~~~~
In file included from src/kstring.h:8,
from src/bwamem.c:11:
src/bwamem.c: In function ‘mem_aln_t mem_reg2aln(const mem_opt_t*, const bntseq_t*, const uint8_t*, int, const char*, const mem_alnreg_t*)’:
src/malloc_wrap.h:33:36: warning: invalid conversion from ‘void*’ to ‘uint8_t*’ {aka ‘unsigned char*’} [-fpermissive]
# define malloc(s) wrap_malloc( (s), __FILE__, __LINE__, __func__)
~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:1970:13: note: in expansion of macro ‘malloc’
query = malloc(l_query);
^~~~~~
src/malloc_wrap.h:38:37: warning: invalid conversion from ‘void*’ to ‘uint32_t*’ {aka ‘unsigned int*’} [-fpermissive]
# define realloc(p, s) wrap_realloc((p), (s), __FILE__, __LINE__, __func__)
~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:2027:19: note: in expansion of macro ‘realloc’
a.cigar = realloc(a.cigar, 4 * (a.n_cigar + 2) + l_MD);
^~~~~~~
src/bwamem.c: In function ‘void mem_process_seqs(const mem_opt_t*, const bwt_t*, const bntseq_t*, const uint8_t*, int64_t, int, bseq1_t*, const mem_pestat_t*)’:
src/malloc_wrap.h:33:36: warning: invalid conversion from ‘void*’ to ‘mem_alnreg_v*’ [-fpermissive]
# define malloc(s) wrap_malloc( (s), __FILE__, __LINE__, __func__)
~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:2104:14: note: in expansion of macro ‘malloc’
w.regs = malloc(n * sizeof(mem_alnreg_v));
^~~~~~
src/malloc_wrap.h:33:36: warning: invalid conversion from ‘void*’ to ‘smem_aux_t**’ [-fpermissive]
# define malloc(s) wrap_malloc( (s), __FILE__, __LINE__, __func__)
~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:2112:13: note: in expansion of macro ‘malloc’
w.aux = malloc(opt->n_threads * sizeof(smem_aux_t));
^~~~~~
src/bwamem.c:2116:28: warning: invalid conversion from ‘void (*)(void*, int, int, int, int, gasal_gpu_storage_v*)’ to ‘void (*)(void*, int, int, int, int)’ [-fpermissive]
kt_for(opt->n_threads, worker1, &w, /*(opt->flag & MEM_F_PE) ? n >> 1 : */n); // find mapping positions
^~~~~~~
In file included from src/bwamem.c:12:
src/bwamem.h:197:43: note: initializing argument 2 of ‘void kt_for(int, void (*)(void*, int, int, int, int), void*, int)’
extern void kt_for(int n_threads, void (*func)(void*, int, int, int, int), void *data, int n);
~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:2136:28: warning: invalid conversion from ‘void (*)(void*, int, int, int, int, gasal_gpu_storage_v*)’ to ‘void (*)(void*, int, int, int, int)’ [-fpermissive]
kt_for(opt->n_threads, worker2, &w, (opt->flag & MEM_F_PE) ? n >> 1 : n); // generate alignment
^~~~~~~
In file included from src/bwamem.c:12:
src/bwamem.h:197:43: note: initializing argument 2 of ‘void kt_for(int, void (*)(void*, int, int, int, int), void*, int)’
extern void kt_for(int n_threads, void (*func)(void*, int, int, int, int), void *data, int n);
~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
make: *** [Makefile:57: bwamem.o] Error 1
My system information is:
$uname -a
Linux TGD 5.8.0-48-generic #54~20.04.1-Ubuntu SMP Sat Mar 20 13:40:25 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
$gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/8/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 8.4.0-3ubuntu2' --with-bugurl=file:///usr/share/doc/gcc-8/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-8 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 8.4.0 (Ubuntu 8.4.0-3ubuntu2)
nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Sun_Jul_28_19:07:16_PDT_2019
Cuda compilation tools, release 10.1, V10.1.243
Hi all, I tried to build bwa-gasal2 on my system but I'm getting errors in the procedure.
I cloned the repo, built GASAL2 library for my platform (it seems to work), although I had to substitute this
g++ -std=c++11 -O3 -o test_prog.out -L/usr/local/cuda//targets/x86_64-linux/lib -L../lib test_prog.o -fopenmp -lcudart -lgasal
with this in the Makefile
nvcc -std=c++11 -O3 -o test_prog.out -L/usr/local/cuda//targets/x86_64-linux/lib -L../lib test_prog.o -lgomp -lcudart -lgasal
.
Nevertheless, when issuing make at bwa-gasal2 level, I have this error:
$ make
If you donot see anything below this line then there is nothing to "make"
g++ -c -g -Wall -Wno-unused-function -O2 -msse4.2 -std=c++11 -fpermissive -DHAVE_PTHREAD -DUSE_MALLOC_WRAPPERS -I./GASAL2/include/ -I/beegfs/scratch/ric.cosr/cittaro.davide/src/boost_1_74_0 src/bwamem.c -o ./obj/bwamem.o
Makefile:57: recipe for target 'bwamem.o' failed
In file included from src/bwamem.c:18:0:
src/vector_filter.h:12:36: error: ‘aligned’ was not declared in this scope
#define __aligned__ __attribute__((aligned(16)))
^
src/vector_filter.h:12:36: note: suggested alternative: ‘signed’
In file included from /usr/lib/gcc/x86_64-linux-gnu/7/include/xmmintrin.h:31:0,
from /usr/lib/gcc/x86_64-linux-gnu/7/include/emmintrin.h:31,
from /usr/lib/gcc/x86_64-linux-gnu/7/include/pmmintrin.h:31,
from /usr/lib/gcc/x86_64-linux-gnu/7/include/tmmintrin.h:31,
from /usr/lib/gcc/x86_64-linux-gnu/7/include/smmintrin.h:32,
from /usr/lib/gcc/x86_64-linux-gnu/7/include/nmmintrin.h:31,
from src/vector_filter.h:16,
from src/bwamem.c:18:
/usr/lib/gcc/x86_64-linux-gnu/7/include/mmintrin.h:45:85: error: expected ‘)’ before ‘(’ token
typedef int __m64_u __attribute__ ((__vector_size__ (8), __may_alias__, __aligned__ (1)));
^
/usr/lib/gcc/x86_64-linux-gnu/7/include/mmintrin.h:45:85: error: expected ‘)’ before ‘(’ token
In file included from src/bwamem.c:18:0:
src/vector_filter.h:12:36: error: ‘aligned’ was not declared in this scope
#define __aligned__ __attribute__((aligned(16)))
^
src/vector_filter.h:12:36: note: suggested alternative: ‘signed’
In file included from /usr/lib/gcc/x86_64-linux-gnu/7/include/emmintrin.h:31:0,
from /usr/lib/gcc/x86_64-linux-gnu/7/include/pmmintrin.h:31,
from /usr/lib/gcc/x86_64-linux-gnu/7/include/tmmintrin.h:31,
from /usr/lib/gcc/x86_64-linux-gnu/7/include/smmintrin.h:32,
from /usr/lib/gcc/x86_64-linux-gnu/7/include/nmmintrin.h:31,
from src/vector_filter.h:16,
from src/bwamem.c:18:
/usr/lib/gcc/x86_64-linux-gnu/7/include/xmmintrin.h:72:89: error: expected ‘)’ before ‘(’ token
typedef float __m128_u __attribute__ ((__vector_size__ (16), __may_alias__, __aligned__ (1)));
^
/usr/lib/gcc/x86_64-linux-gnu/7/include/xmmintrin.h:72:89: error: expected ‘)’ before ‘(’ token
In file included from src/bwamem.c:18:0:
src/vector_filter.h:12:36: error: ‘aligned’ was not declared in this scope
#define __aligned__ __attribute__((aligned(16)))
^
src/vector_filter.h:12:36: note: suggested alternative: ‘signed’
In file included from /usr/lib/gcc/x86_64-linux-gnu/7/include/pmmintrin.h:31:0,
from /usr/lib/gcc/x86_64-linux-gnu/7/include/tmmintrin.h:31,
from /usr/lib/gcc/x86_64-linux-gnu/7/include/smmintrin.h:32,
from /usr/lib/gcc/x86_64-linux-gnu/7/include/nmmintrin.h:31,
from src/vector_filter.h:16,
from src/bwamem.c:18:
/usr/lib/gcc/x86_64-linux-gnu/7/include/emmintrin.h:57:94: error: expected ‘)’ before ‘(’ token
typedef long long __m128i_u __attribute__ ((__vector_size__ (16), __may_alias__, __aligned__ (1)));
^
/usr/lib/gcc/x86_64-linux-gnu/7/include/emmintrin.h:57:94: error: expected ‘)’ before ‘(’ token
In file included from src/bwamem.c:18:0:
src/vector_filter.h:12:36: error: ‘aligned’ was not declared in this scope
#define __aligned__ __attribute__((aligned(16)))
^
src/vector_filter.h:12:36: note: suggested alternative: ‘signed’
In file included from /usr/lib/gcc/x86_64-linux-gnu/7/include/pmmintrin.h:31:0,
from /usr/lib/gcc/x86_64-linux-gnu/7/include/tmmintrin.h:31,
from /usr/lib/gcc/x86_64-linux-gnu/7/include/smmintrin.h:32,
from /usr/lib/gcc/x86_64-linux-gnu/7/include/nmmintrin.h:31,
from src/vector_filter.h:16,
from src/bwamem.c:18:
/usr/lib/gcc/x86_64-linux-gnu/7/include/emmintrin.h:58:91: error: expected ‘)’ before ‘(’ token
typedef double __m128d_u __attribute__ ((__vector_size__ (16), __may_alias__, __aligned__ (1)));
^
/usr/lib/gcc/x86_64-linux-gnu/7/include/emmintrin.h:58:91: error: expected ‘)’ before ‘(’ token
In file included from src/kstring.h:8:0,
from src/bwamem.c:11:
src/bwamem.c: In function ‘mem_opt_t* mem_opt_init()’:
src/malloc_wrap.h:28:36: warning: invalid conversion from ‘void*’ to ‘mem_opt_t*’ [-fpermissive]
# define calloc(n, s) wrap_calloc( (n), (s), __FILE__, __LINE__, __func__)
~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:52:6: note: in expansion of macro ‘calloc’
o = calloc(1, sizeof(mem_opt_t));
^~~~~~
src/bwamem.c: In function ‘smem_aux_t* smem_aux_init()’:
src/malloc_wrap.h:28:36: warning: invalid conversion from ‘void*’ to ‘smem_aux_t*’ [-fpermissive]
# define calloc(n, s) wrap_calloc( (n), (s), __FILE__, __LINE__, __func__)
~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:110:6: note: in expansion of macro ‘calloc’
a = calloc(1, sizeof(smem_aux_t));
^~~~~~
src/malloc_wrap.h:28:36: warning: invalid conversion from ‘void*’ to ‘bwtintv_v*’ [-fpermissive]
# define calloc(n, s) wrap_calloc( (n), (s), __FILE__, __LINE__, __func__)
~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:111:15: note: in expansion of macro ‘calloc’
a->tmpv[0] = calloc(1, sizeof(bwtintv_v));
^~~~~~
src/malloc_wrap.h:28:36: warning: invalid conversion from ‘void*’ to ‘bwtintv_v*’ [-fpermissive]
# define calloc(n, s) wrap_calloc( (n), (s), __FILE__, __LINE__, __func__)
~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:112:15: note: in expansion of macro ‘calloc’
a->tmpv[1] = calloc(1, sizeof(bwtintv_v));
^~~~~~
src/bwamem.c: In function ‘void mem_collect_intv(mem_opt_t*, const bwt_t*, int, const uint8_t*, smem_aux_t*)’:
src/bwamem.c:202:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (i = 0; i < a->mem1.n; ++i) {
~~^~~~~~~~~~~
src/bwamem.c:217:43: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if (end - start < split_len || p->x[2] > opt->split_width)
~~~~~~~~^~~~~~~~~~~~~~~~~~
src/bwamem.c:220:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (i = 0; i < a->mem1.n; ++i)
~~^~~~~~~~~~~
src/bwamem.c:221:66: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if ((uint32_t) a->mem1.a[i].info - (a->mem1.a[i].info >> 32) >= opt->min_seed_len)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
src/bwamem.c:236:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (i = 0; i < a->mem1.n; ++i)
~~^~~~~~~~~~~
src/bwamem.c:164:26: warning: unused variable ‘max’ [-Wunused-variable]
int i, k, x = 0, old_n, max, max_i;
^~~
src/bwamem.c:164:31: warning: unused variable ‘max_i’ [-Wunused-variable]
int i, k, x = 0, old_n, max, max_i;
^~~~~
src/bwamem.c:167:6: warning: unused variable ‘min_miss_match’ [-Wunused-variable]
int min_miss_match = 0;
^~~~~~~~~~~~~~
src/bwamem.c:168:19: warning: unused variable ‘w’ [-Wunused-variable]
bwt_mem_width_t *w;
^
In file included from src/kstring.h:8:0,
from src/bwamem.c:11:
src/bwamem.c: In function ‘int test_and_merge(const mem_opt_t*, int64_t, mem_chain_t*, const mem_seed_t*, int)’:
src/malloc_wrap.h:38:37: warning: invalid conversion from ‘void*’ to ‘mem_seed_t*’ [-fpermissive]
# define realloc(p, s) wrap_realloc((p), (s), __FILE__, __LINE__, __func__)
~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:374:16: note: in expansion of macro ‘realloc’
c->seeds = realloc(c->seeds, c->m * sizeof(mem_seed_t));
^~~~~~~
src/bwamem.c: In function ‘void mem_print_chain(const bntseq_t*, mem_chain_v*)’:
src/bwamem.c:409:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (i = 0; i < chn->n; ++i) {
~~^~~~~~~~
src/bwamem.c: In function ‘mem_chain_v mem_chain(const mem_opt_t*, const bwt_t*, const bntseq_t*, int, const uint8_t*, void*)’:
src/bwamem.c:438:42: warning: invalid conversion from ‘const mem_opt_t*’ to ‘mem_opt_t*’ [-fpermissive]
mem_collect_intv(opt, bwt, len, seq, aux);
^
src/bwamem.c:163:13: note: initializing argument 1 of ‘void mem_collect_intv(mem_opt_t*, const bwt_t*, int, const uint8_t*, smem_aux_t*)’
static void mem_collect_intv(mem_opt_t *opt, const bwt_t *bwt, int len, const uint8_t *seq, smem_aux_t *a) {
^~~~~~~~~~~~~~~~
src/bwamem.c:439:35: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (i = 0, b = e = l_rep = 0; i < aux->mem.n; ++i) { // compute frac_rep
~~^~~~~~~~~~~~
src/bwamem.c:442:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if (p->x[2] <= opt->max_occ)
~~~~~~~~^~~~~~~~~~~~~~~
src/bwamem.c:450:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (i = 0; i < aux->mem.n; ++i) {
~~^~~~~~~~~~~~
src/bwamem.c:455:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
step = p->x[2] > opt->max_occ ? p->x[2] / opt->max_occ : 1;
~~~~~~~~^~~~~~~~~~~~~~
src/bwamem.c:456:25: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (k = count = 0; k < p->x[2] && count < opt->max_occ; k += step, ++count) {
~~^~~~~~~~~
In file included from src/kstring.h:8:0,
from src/bwamem.c:11:
src/malloc_wrap.h:28:36: warning: invalid conversion from ‘void*’ to ‘mem_seed_t*’ [-fpermissive]
# define calloc(n, s) wrap_calloc( (n), (s), __FILE__, __LINE__, __func__)
~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:476:17: note: in expansion of macro ‘calloc’
tmp.seeds = calloc(tmp.m, sizeof(mem_seed_t));
^~~~~~
src/bwamem.c:493:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (i = 0; i < chain.n; ++i)
~~^~~~~~~~~
src/bwamem.c: In function ‘int mem_chain_flt(const mem_opt_t*, int, mem_chain_t*)’:
src/bwamem.c:536:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (k = 0; k < chains.n; ++k) {
~~^~~~~~~~~~
src/bwamem.c:555:10: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if (k == chains.n) {
~~^~~~~~~~~~~
src/bwamem.c:560:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (i = 0; i < chains.n; ++i) {
~~^~~~~~~~~~
src/bwamem.c: In function ‘void mem_mark_primary_se_core(const mem_opt_t*, int, mem_alnreg_t*, int_v*)’:
src/bwamem.c:717:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (k = 0; k < z->n; ++k) {
~~^~~~~~
src/bwamem.c:732:10: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if (k == z->n)
~~^~~~~~~
In file included from src/kstring.h:8:0,
from src/bwamem.c:11:
src/bwamem.c: In function ‘void mem_chain2aln(const mem_opt_t*, const bntseq_t*, const uint8_t*, int, const uint8_t*, const mem_chain_t*, mem_alnreg_v*, int*, int*, gpu_batch*)’:
src/malloc_wrap.h:33:36: warning: invalid conversion from ‘void*’ to ‘uint64_t* {aka long unsigned int*}’ [-fpermissive]
# define malloc(s) wrap_malloc( (s), __FILE__, __LINE__, __func__)
~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:1087:8: note: in expansion of macro ‘malloc’
srt = malloc(c->n * 8);
^~~~~~
src/bwamem.c:1098:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (i = 0; i < av->n; ++i) // test whether extension has been made before
~~^~~~~~~
src/bwamem.c:1119:9: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if (i < av->n)
~~^~~~~~~
src/bwamem.c:1226:40: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if (curr_gpu_batch->n_target_batch < curr_gpu_batch->gpu_storage->host_max_target_batch_bytes)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:1246:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if (curr_gpu_batch->n_seqs < curr_gpu_batch->gpu_storage->host_max_n_alns)
~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:1253:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if (curr_gpu_batch->n_seqs < curr_gpu_batch->gpu_storage->host_max_n_alns)
~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:1260:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if (curr_gpu_batch->n_seqs < curr_gpu_batch->gpu_storage->host_max_n_alns)
~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:1267:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if (curr_gpu_batch->n_seqs < curr_gpu_batch->gpu_storage->host_max_n_alns)
~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:1211:8: warning: unused variable ‘j’ [-Wunused-variable]
int j;
^
src/bwamem.c:1048:12: warning: unused variable ‘rid’ [-Wunused-variable]
int i, k, rid, max_off[2], aw[2]; // aw: actual bandwidth used in extension
^~~
src/bwamem.c:1048:17: warning: unused variable ‘max_off’ [-Wunused-variable]
int i, k, rid, max_off[2], aw[2]; // aw: actual bandwidth used in extension
^~~~~~~
src/bwamem.c:1049:39: warning: unused variable ‘tmp’ [-Wunused-variable]
int64_t l_pac = bns->l_pac, rmax[2], tmp, max = 0;
^~~
src/bwamem.c:1051:11: warning: unused variable ‘rseq’ [-Wunused-variable]
uint8_t *rseq = NULL;
^~~~
src/bwamem.c: In function ‘void mem_aln2sam(const mem_opt_t*, const bntseq_t*, kstring_t*, bseq1_t*, int, const mem_aln_t*, int, const mem_aln_t*)’:
src/bwamem.c:1563:25: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (i = tmp; i < str->l; ++i) // replace TAB in the comment to SPACE
~~^~~~~~~~
src/bwamem.c: In function ‘void mem_reg2sam(const mem_opt_t*, const bntseq_t*, const uint8_t*, bseq1_t*, mem_alnreg_v*, int, const mem_aln_t*)’:
src/bwamem.c:1621:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (k = l = 0; k < a->n; ++k) {
~~^~~~~~
src/bwamem.c:1649:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (k = 0; k < aa.n; ++k)
~~^~~~~~
src/bwamem.c:1651:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (k = 0; k < aa.n; ++k)
~~^~~~~~
src/bwamem.c:1657:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (k = 0; k < a->n; ++k)
~~^~~~~~
src/bwamem.c: In function ‘void mem_gasal_fill(gpu_batch*, int, int, char*, int)’:
src/bwamem.c:1679:54: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if (gpu_batch_arr[gpu_batch_arr_idx].n_query_batch < gpu_batch_arr[gpu_batch_arr_idx].gpu_storage->host_max_query_batch_bytes)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:1697:54: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
if (gpu_batch_arr[gpu_batch_arr_idx].n_query_batch < gpu_batch_arr[gpu_batch_arr_idx].gpu_storage->host_max_query_batch_bytes)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c: In function ‘void mem_align1_core(const mem_opt_t*, const bwt_t*, const bntseq_t*, const uint8_t*, bseq1_t*, void*, int, int, mem_alnreg_v*, int, gasal_gpu_storage_v*)’:
src/bwamem.c:1803:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (i = 0; i < chn.n; ++i) {
~~^~~~~~~
src/bwamem.c:1851:16: warning: unused variable ‘cur’ [-Wunused-variable]
gpu_batch *cur = &gpu_batch_arr[gpu_batch_arr_idx];
^~~
src/bwamem.c:1857:132: warning: format ‘%d’ expects argument of type ‘int’, but argument 5 has type ‘size_t {aka long unsigned int}’ [-Wformat=]
fprintf(stderr, "Thread no. %d is here with internal batch size %d, regs.n %d \n", tid, internal_batch_size, regs.n);
~~~~~~^
In file included from src/bntseq.h:31:0,
from src/bwamem.h:5,
from src/bwamem.c:12:
src/bwamem.c:1865:38: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
assert(kv_size(regs_vec) == batch_processed);
src/bwamem.c:1902:139: warning: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘size_t {aka long unsigned int}’ [-Wformat=]
if (gpu_batch_arr[internal_batch_idx].no_extend == 1) fprintf(stderr, "I am here too as well with regs.n %d\n", regs.n);
~~~~~~^
src/bwamem.c:1903:34: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(i = 0; i < regs.n; ++i){
~~^~~~~~~~
src/bwamem.c:1923:39: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (i = 0; i < regs.n; ++i) {
~~^~~~~~~~
src/bwamem.c:1928:35: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (i = 0; i < regs.n; ++i) {
~~^~~~~~~~
In file included from src/kstring.h:8:0,
from src/bwamem.c:11:
src/bwamem.c: In function ‘mem_aln_t mem_reg2aln(const mem_opt_t*, const bntseq_t*, const uint8_t*, int, const char*, const mem_alnreg_t*)’:
src/malloc_wrap.h:33:36: warning: invalid conversion from ‘void*’ to ‘uint8_t* {aka unsigned char*}’ [-fpermissive]
# define malloc(s) wrap_malloc( (s), __FILE__, __LINE__, __func__)
~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:1970:13: note: in expansion of macro ‘malloc’
query = malloc(l_query);
^~~~~~
src/malloc_wrap.h:38:37: warning: invalid conversion from ‘void*’ to ‘uint32_t* {aka unsigned int*}’ [-fpermissive]
# define realloc(p, s) wrap_realloc((p), (s), __FILE__, __LINE__, __func__)
~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:2027:19: note: in expansion of macro ‘realloc’
a.cigar = realloc(a.cigar, 4 * (a.n_cigar + 2) + l_MD);
^~~~~~~
src/bwamem.c: In function ‘void mem_process_seqs(const mem_opt_t*, const bwt_t*, const bntseq_t*, const uint8_t*, int64_t, int, bseq1_t*, const mem_pestat_t*)’:
src/malloc_wrap.h:33:36: warning: invalid conversion from ‘void*’ to ‘mem_alnreg_v*’ [-fpermissive]
# define malloc(s) wrap_malloc( (s), __FILE__, __LINE__, __func__)
~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:2104:14: note: in expansion of macro ‘malloc’
w.regs = malloc(n * sizeof(mem_alnreg_v));
^~~~~~
src/malloc_wrap.h:33:36: warning: invalid conversion from ‘void*’ to ‘smem_aux_t**’ [-fpermissive]
# define malloc(s) wrap_malloc( (s), __FILE__, __LINE__, __func__)
~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/bwamem.c:2112:13: note: in expansion of macro ‘malloc’
w.aux = malloc(opt->n_threads * sizeof(smem_aux_t));
^~~~~~
src/bwamem.c:2116:80: warning: invalid conversion from ‘void (*)(void*, int, int, int, int, gasal_gpu_storage_v*)’ to ‘void (*)(void*, int, int, int, int)’ [-fpermissive]
kt_for(opt->n_threads, worker1, &w, /*(opt->flag & MEM_F_PE) ? n >> 1 : */n); // find mapping positions
^
In file included from src/bwamem.c:12:0:
src/bwamem.h:197:14: note: initializing argument 2 of ‘void kt_for(int, void (*)(void*, int, int, int, int), void*, int)’
extern void kt_for(int n_threads, void (*func)(void*, int, int, int, int), void *data, int n);
^~~~~~
src/bwamem.c:2136:76: warning: invalid conversion from ‘void (*)(void*, int, int, int, int, gasal_gpu_storage_v*)’ to ‘void (*)(void*, int, int, int, int)’ [-fpermissive]
kt_for(opt->n_threads, worker2, &w, (opt->flag & MEM_F_PE) ? n >> 1 : n); // generate alignment
^
In file included from src/bwamem.c:12:0:
src/bwamem.h:197:14: note: initializing argument 2 of ‘void kt_for(int, void (*)(void*, int, int, int, int), void*, int)’
extern void kt_for(int n_threads, void (*func)(void*, int, int, int, int), void *data, int n);
^~~~~~
make: *** [bwamem.o] Error 1
Here's some system info:
$ uname -a
Linux dgx01 4.15.0-130-generic #134-Ubuntu SMP Tue Jan 5 20:46:26 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/7/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 7.5.0-3ubuntu1~18.04' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2020 NVIDIA Corporation
Built on Tue_Sep_15_19:10:02_PDT_2020
Cuda compilation tools, release 11.1, V11.1.74
Build cuda_11.1.TC455_06.29069683_0
Hi, I really appreciate your work. However, I just wonder why you don't integrate the globol alignment, which may lead to more acceleration to BWA.
I am looking forward to your reply.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.