如何使用 thrust::host_vector 或 device_vector 存储文件数据?
How to store data of a file using thrust::host_vector or device_vector?
数据的格式是这样的:
TGCCACAGGTTCCACACAACGGGACTTGGTTGAAATATTGAGATCCTTGGGGGTCTGTTAATCGGAGACAGTATCTCAACCGCAATAAACCC
GTTCACGGGCCTCACGCAACGGGGCCTGGCCTAGATATTGAGGCACCCAACAGCTCTTGGCCTGAGAGTGTTGTCTCGATCACGACGCCAGT
TGCCACAGGTTCCACACAACGGGACTTGGTTGAAATATTGAGATCCTTGGGGGTCTGTTAATCGAAGACAGTATCTCAACCGCAATAAACCT
TGCCACAGGTTCCACACAACGGGACTTGGTTGAAATATTGAGATCCTTGGGGGTCTGTTAATCGAAGACAGTATCTCAACCGCAATAAACCT
每一行包含一个序列,我想做一对(key ,value),key是一个序列,value是1。然后用reduce_by_key
统计每个序列的个数。
但是我发现thrust::host_vector
只能存储一个序列,如果我push_back
第二个序列程序就崩溃了。
这是我的代码:
int main()
{
ifstream input_subset("subset.txt");
thrust::host_vector < string > h_output_subset;
string s;
while (getline(input_subset, s)) {
h_output_subset.push_back(s);
}
cout << h_output_subset.size() << endl;
return 0;
}
是否可以将所有数据存储在 host_vector
或 device_vector
中?或者有什么办法可以解决这个问题?
host_vector 段错误 confirmed 作为 thrust::uninitialised_copy
中的错误,已应用补丁修复它。
使用 device_vector
执行此操作的问题是 CUDA 的真正限制(没有 std::string 支持)并且无法避免。另一种方法是使用固定长度的 char[]
数组作为 device_vector
中的数据成员,或者使用单个大 device_vector
来保存所有字符串数据,第二个 device_vector
保存字符数组中每个子字符串的起始索引。
数据的格式是这样的:
TGCCACAGGTTCCACACAACGGGACTTGGTTGAAATATTGAGATCCTTGGGGGTCTGTTAATCGGAGACAGTATCTCAACCGCAATAAACCC
GTTCACGGGCCTCACGCAACGGGGCCTGGCCTAGATATTGAGGCACCCAACAGCTCTTGGCCTGAGAGTGTTGTCTCGATCACGACGCCAGT
TGCCACAGGTTCCACACAACGGGACTTGGTTGAAATATTGAGATCCTTGGGGGTCTGTTAATCGAAGACAGTATCTCAACCGCAATAAACCT
TGCCACAGGTTCCACACAACGGGACTTGGTTGAAATATTGAGATCCTTGGGGGTCTGTTAATCGAAGACAGTATCTCAACCGCAATAAACCT
每一行包含一个序列,我想做一对(key ,value),key是一个序列,value是1。然后用reduce_by_key
统计每个序列的个数。
但是我发现thrust::host_vector
只能存储一个序列,如果我push_back
第二个序列程序就崩溃了。
这是我的代码:
int main()
{
ifstream input_subset("subset.txt");
thrust::host_vector < string > h_output_subset;
string s;
while (getline(input_subset, s)) {
h_output_subset.push_back(s);
}
cout << h_output_subset.size() << endl;
return 0;
}
是否可以将所有数据存储在 host_vector
或 device_vector
中?或者有什么办法可以解决这个问题?
host_vector 段错误 confirmed 作为 thrust::uninitialised_copy
中的错误,已应用补丁修复它。
使用 device_vector
执行此操作的问题是 CUDA 的真正限制(没有 std::string 支持)并且无法避免。另一种方法是使用固定长度的 char[]
数组作为 device_vector
中的数据成员,或者使用单个大 device_vector
来保存所有字符串数据,第二个 device_vector
保存字符数组中每个子字符串的起始索引。