Ejemplo n.º 1
0
void test_da(){
    int i, j, k, p, q;
    int mini_batch = 20;
    int epcho, n_epcho = 15;
    int train_set_size = 50000, validate_set_size = 10000;
    dataset_blas train_set, validate_set; 
    da m;

    srand(1234);
    load_mnist_dataset_blas(&train_set, &validate_set);
    init_da(&m, 28*28, 500);

    for(i = 0; i < MAX_BATCH_SIZE * MAX_SIZE; i++)
        Ivec[i] = 1.0;

    train_da(&m, &train_set, &train_set, mini_batch, n_epcho, "da_blas_weight_origin.txt");

    //print_dataset_blas(&train_set);

    free_dataset_blas(&train_set);
    free_dataset_blas(&validate_set);
    free_da(&m);
}
Ejemplo n.º 2
0
int main(int argc, char *argv[]) {
	int freq;
	double setpoint;
	uintptr_t ctrlHandle;
	char buf[20], file[10];
	coefs coefficients;
	filter_data data={
		{0,0,0},
		{0,0,0}
	};

	// Read initial configuration from the user
	printf("log file? (9 chars max)\r\n");
	scanf("%s", file);
	printf("p:\r\n");
	scanf("%lf", &coefficients.p);
	printf("i:\r\n");
	scanf("%lf", &coefficients.i);
	printf("d:\r\n");
	scanf("%lf", &coefficients.d);
	printf("setpoint:\r\n");
	scanf("%lf", &setpoint);
	printf("Sample freq?\r\n");
	scanf("%d",&freq);

	// Open the log file
	sprintf(buf,"/tmp/%s.csv",file);

	FILE * f = fopen(buf, "w+");

	// Increase permissions for access to hardware
	if (ThreadCtl(_NTO_TCTL_IO, NULL) == -1){
		perror("Failed to get I/O access permission");
		return 1;
	}

	// Get a handle to write to hardware ATD and DAC
	ctrlHandle = mmap_device_io(IO_PORT_SIZE, CTRL_ADDRESS);
	if (ctrlHandle == MAP_DEVICE_FAILED) {
		perror("Failed to map control register");
		return 2;
	}

	// Create and initialize semaphores
	sem_t filter_sem, DAC_sem, write_lock;

	sem_init(&filter_sem,0,0);
	sem_init(&DAC_sem,0,0);
	sem_init(&write_lock,0,0);

	//set up args for our threads
	adc_args adcargs = {
		ctrlHandle, 	// uintptr_t handle
		&data, 			// filter_data * data
		&filter_sem, 	// sem_t * filter_sem
		&DAC_sem, 		// sem_t * DAC_sem
		&setpoint, 		// double * setpoint
		f 				// FILE * f
	};
	
	filter_args filtargs = {
		&data, 			// filter_data * data
		&coefficients, 	// coefs * coefficients
		&filter_sem, 	// sem_t * filter_sem
		&write_lock, 	// sem_t * write_lock
		&DAC_sem, 		// sem_t * DAC_sem
		f 				// FILE * f
	};
	
	dac_args dacargs = {
		&data, 			// filter_data * data
		ctrlHandle, 	// uintptr_t handle
		&DAC_sem, 		// sem_t DAC_sem
		f 				// FILE * f
	};

	input_thread_args inputargs = {
		&write_lock, 	// sem_t * write_lock
		&coefficients, 	// coefs * coefficient_struct
		&setpoint 		// double * setpoint
	};

	// Initialize hardware
	init_da(ctrlHandle);

	// Start the system
	scheduleATD(1000000000/freq,ctrlHandle,&adcargs);

	pthread_t filter_pthread, DAC_pthread, input_pthread;

	pthread_create(&filter_pthread,NULL,&filter_thread,(void*)&filtargs);
	pthread_create(&DAC_pthread,NULL,&DAC_thread,(void*)&dacargs);
	pthread_create(&input_pthread,NULL, &start_input_thread, (void*)&inputargs);

	// Wait for the threads to finish (won't happen, run forever)
	pthread_join(filter_pthread,NULL);
	pthread_join(DAC_pthread,NULL);
	pthread_join(input_pthread,NULL);

	return EXIT_SUCCESS;
}