 	int *allocPointer = reinterpret_cast<int *>(extraPointers[3]);
 	double *reductionPointer = reinterpret_cast<double *>(extraPointers[4]);
 
-	transformDoubleIndexes<<<1,launchDims.y,launchDims.z, *stream>>>(
+	transformDoubleIndexes<<<launchDims.x,launchDims.y,launchDims.z, *stream>>>(
 			opNum,
 			xPointer,
 			xShapeInfoPointer,

	int *allocPointer = reinterpret_cast<int *>(extraPointers[3]);
	double *reductionPointer = reinterpret_cast<double *>(extraPointers[4]);

	transformDouble<<<1,launchDims.y,launchDims.z, *stream>>>(
			opNum,
			n,
			xPointer,

	int *allocPointer = reinterpret_cast<int *>(extraPointers[3]);
	double *reductionPointer = reinterpret_cast<double *>(extraPointers[4]);

	// simple trick to get workaround over reductions into scalar
	if (shape::isVector((int *)&extraPointers[0]) && opNum >= 38 && opNum <= 41) {
		transformDouble <<<1, launchDims.y, launchDims.z, *stream >>> (
				opNum,
				xPointer,
				xShapeInfoPointer,
				extraParamsPointer,
				resultPointer, resultShapeInfoPointer, allocPointer, reductionPointer);
	} else {
		transformDouble <<<launchDims.x, launchDims.y, launchDims.z, *stream >>> (
				opNum,
				xPointer,
				xShapeInfoPointer,
				extraParamsPointer,
				resultPointer, resultShapeInfoPointer, allocPointer, reductionPointer);
	}
	checkCudaErrors(cudaStreamSynchronize(*stream));
}

