 	dim3 dimBlockA(1, 1); // @TODO Optimierungspotential; groessere Werte sind kleinere Gridsize
 	dim3 dimGridA(MatrixA.cols / dimBlockA.x, MatrixAp.rows / dimBlockA.y);
 
+	cudaThreadSynchronize();
 
 	for(i = 1; i <= synth.blocksize; i++) {
 		
-		//MatrixMultiplyKernel<<<dimGridCA, dimBlockCA, 1, streams[0]>>>(device_MatrixC, *pointer_device_MatrixAp_read, *pointer_device_MatrixCA_line_write);
+		MatrixMultiplyKernel<<<dimGridCA, dimBlockCA, 1, streams[0]>>>(device_MatrixC, *pointer_device_MatrixAp_read, *pointer_device_MatrixCA_line_write);
 		// m_multiply(&MatrixC, pointer_MatrixAp, &MatrixCA_line);
 
 		MatrixMultiplyKernel<<<dimGridA, dimBlockA, 1, streams[2]>>>(*pointer_device_MatrixAp_read, device_MatrixA, *pointer_device_MatrixAp_write);


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

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

	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_state_read, 2 * synth.filters, 1);
	m_new(&device_state_write, 2 * synth.filters, 1);

