0
當我試圖編譯我的代碼在OpenACC的,它會報告:報告PGCC-S-0000-內部錯誤而沒有堆分配
PGCC-S-0000-Internal compiler error. Call in OpenACC region to support routine - _mp_malloc (/home/lisanhu/mine/ws/C/AccSeqC/as_align.cc: 92)
PGCC-S-0155-Compiler failed to translate accelerator region (see -Minfo messages) (/home/lisanhu/mine/ws/C/AccSeqC/as_align.cc: 92)
inexact_dfs_iter_search(const char *, long, long, const long *, const long *, long, const char *, const long *, const char *, acc_range *, int):
92, Generating acc routine seq
93, Accelerator restriction: unsupported call to support routine '_mp_malloc'
雖然報告功能定義如下:
int
inexact_dfs_iter_search(const char *query, const array_size q_length, array_size allowed_diffs,
const array_size *c, const array_size *o, array_size r_length,
const char *ref_bwt, const array_size *rev_o, const char *rev_bwt,
Range *res, int num_of_res) {
array_size d[q_length];
calculateD(query, q_length, r_length, c, rev_o, rev_bwt, d);
// for (int i = 0; i < q_length; ++i) {
// cout << d[i];
// }
// cout << endl;
// cout << strndup(query, q_length) << endl;
Profile p{q_length - 1, 1, r_length - 1, allowed_diffs};
int prof_size = 9 * q_length + 1;
Profile profs[prof_size];
Stack<Profile> profiles(profs, prof_size);
profiles.push(p);
Heap<Range> results(res, num_of_res);
while (!profiles.empty() && !results.full()) {
if (profiles.full()) {
return 1;
}
// p = profiles.peek();
p = profiles.pop();
inex_dfs_process_profile(query, p, c, o, ref_bwt, d, profiles, results);
}
return 0;
}
線92是5日線(函數定義它的一部分,所以怪)
我會很感激,如果有人可以幫我一下吧。
對不起,三胡李,但我們還不支持設備代碼中的VLA。當然,我們不應該給ICE,而應該給出錯誤信息。請向PGI客戶服務([email protected])發送一份說明,我們會進行調查。 –