Enviado em 19/06/2017 - 05:23h
Olá! Tenho o seguinte código e preciso fazê-lo funcionar com um vetor de 1,6 milhão de posições, mas quando tento recebo o mensagem "Segmentation fault (core dumped)". Como proceder?#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<omp.h>
#define MAX 1600000
void intercalar(int array[], int aux[], int ini1, int ini2, int fim2);
void mergeSort(int array[], int temp[], int esq, int dir);
int main() {
int array[MAX];
int cont;
srand(time(NULL));
for (cont = 0; cont < MAX; cont++) {
array[cont] = rand() % MAX + MAX;
}
FILE *salvatxt;
salvatxt = fopen("ordenado.txt", "w");
fprintf(salvatxt, "Desordenado: \n");
for (cont = 0; cont < MAX; cont++) {
fprintf(salvatxt, "%d, ",array[cont]);
}
int aux[MAX];
#pragma omp parallel
{
mergeSort(array, aux, 0, MAX);
int cont;
int divide = MAX / 32;
#pragma omp for schedule(dynamic,divide) nowait
for (cont = 0; cont < MAX; cont++)
printf("%d, ", array[cont]);
}
fprintf(salvatxt, "\nMerge Sort aplicado:");
for (cont = 0; cont < MAX; cont++) {
fprintf(salvatxt, "%d, ", array[cont]);
}
return 0;
}
void intercalar(int array[], int aux[], int ini1, int ini2, int fim2) {
#pragma omp parallel
{
int in1 = ini1, in2 = ini2, fim1 = in2 - 1, au = 0, cont;
int tid = omp_get_thread_num();
#pragma omp sections
{
#pragma omp section
{
while (in1 <= fim1 && in2 <= fim2) {
if (array[in1] < array[in2]) {
aux[au++] = array[in1++];
} else {
aux[au++] = array[in2++];
}
}
}
#pragma omp section
{
while (in1 <= fim1) {
aux[au++] = array[in1++];
}
}
#pragma omp section
{
while (in2 <= fim2) {
aux[au++] = array[in2++];
}
}
#pragma omp section
{
for (cont = 0; cont < au; cont++) {
array[cont + ini1] = aux[cont];
}
}
}
}
}
void mergeSort(int array[], int temp[], int esq, int dir) {
int meio;
if (esq < dir) {
#pragma omp parallel sections
{
#pragma omp section
{
meio = (esq + dir) / 2;
}
#pragma omp section
{
mergeSort(array, temp, esq, meio);
mergeSort(array, temp, meio + 1, dir);
intercalar(array, temp, esq, meio + 1, dir);
}
}
}
}
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Como mudsr a resolução da tela de login no KDE? (2)
Como ordenar datas corretamente usando o Calc? (3)