Я завершаю задачу по домашнему заданию по программированию на CUDA и пытаюсь прочитать большой набор данных. Я работаю удаленно через SSH на машине через мой университет.
Я имею дело с тремя столбцами данных и 2 ^ 25 строками в CSV-файле. Каждый раз, когда я запускаю свой код, я получаю чтение ошибки сегментации в данных около 900-й итерации моего цикла while, который сканирует CSV.
Я провел расширенный поиск по переполнению стека и попробовал несколько различных способов чтения данных.
static double inputs[2^25];
static double outputs[2^25];
static double txval[2^25];
FILE *input = fopen("coins.csv", "r");
int j = -99;
char buffer[1024];
char *field;
unsigned long k = 0;
if(input == NULL){
printf("Unable to open file\n");
return 1;
}
while(fgets(buffer, 1024, input) && k < 2^25){
// skip the first row with column titles
if(j == -99){
j = 0;
}
else{
field = strtok(buffer, ",");
inputs[k] = atof(field);
field = strtok(NULL, ",");
outputs[k] = atof(field);
field = strtok(NULL, ",");
txval[k] = atof(field);
k = k + 1;
}
}
fclose(input);
Ожидаемые результаты: весь файл будет считываться, поскольку буфер перезаписывается при каждом запуске цикла while.
Фактические результаты состоят в том, что каждый раз на 900-й итерации цикла while происходит ошибка сегментации.