 	m_new(&output_chunk_write, synth.blocksize,1);
 	m_new(&device_output_chunk_read, synth.blocksize,1);
 	m_new(&device_output_chunk_write, synth.blocksize,1);
-	m_new(&device_MatrixCA, synth.blocksize, MatrixA.cols);
-	m_new(&device_MatrixAp, MatrixA.rows, MatrixA.cols); // BLOCKDIAGMATRIX
 	m_new(&device_state_read, 2 * synth.filters, 1);
 	m_new(&device_state_write, 2 * synth.filters, 1);
 

		m_swap(&pointer_device_MatrixAp_write, &pointer_device_MatrixAp_read);
		m_swap(&pointer_device_MatrixCA_line_write, &pointer_device_MatrixCA_line_read);

		//CUDA_SAFE_CALL(cudaMemcpyAsync(&device_MatrixCA.elements[(i-1) * MatrixCA.cols], pointer_device_MatrixCA_line_read->elements, m_size(&device_MatrixCA_line_read), cudaMemcpyDeviceToDevice, streams[1]));
	}

	cudaThreadSynchronize();


	dim3 dimBlockA(1, 1); // @TODO Optimierungspotential; groessere Werte sind kleinere Gridsize
	dim3 dimGridA(state.cols / dimBlockA.x, MatrixAp.rows / dimBlockA.y);

	cudaThreadSynchronize();

	for(i = -synth.blocksize; i < synth.samples;) {
		/*
