HMSBEAGLE  1.0.0
libhmsbeagle/GPU/KernelResource.h
00001 /*
00002  *  KernelResource.h
00003  *  BEAGLE
00004  *
00005  * Copyright 2009 Phylogenetic Likelihood Working Group
00006  *
00007  * This file is part of BEAGLE.
00008  *
00009  * BEAGLE is free software: you can redistribute it and/or modify
00010  * it under the terms of the GNU Lesser General Public License as
00011  * published by the Free Software Foundation, either version 3 of
00012  * the License, or (at your option) any later version.
00013  *
00014  * BEAGLE is distributed in the hope that it will be useful,
00015  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00016  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00017  * GNU Lesser General Public License for more details.
00018  *
00019  * You should have received a copy of the GNU Lesser General Public
00020  * License along with BEAGLE.  If not, see
00021  * <http://www.gnu.org/licenses/>.
00022  *
00023  * @author Marc Suchard
00024  */
00025 
00026 #ifndef KERNELRESOURCE_H_
00027 #define KERNELRESOURCE_H_
00028 
00029 class KernelResource {
00030 public:
00031     KernelResource();
00032     
00033     KernelResource(
00034         int inPaddedStateCount,
00035         char* inKernelString,
00036         int inPatternBlockSize,
00037         int inMatrixBlockSize,
00038         int inBlockPeelingSize,
00039         int inSlowReweighing,
00040         int inMultiplyBlockSize,
00041         int inCategoryCount,
00042         int inPatternCount,
00043         long inFlags
00044         );
00045     
00046     KernelResource(const KernelResource& krIn,
00047                    char* inKernelCode);
00048     
00049     virtual ~KernelResource();
00050     
00051     int paddedStateCount;
00052     int categoryCount;
00053     int patternCount;
00054     char* kernelCode;
00055     int patternBlockSize;
00056     int matrixBlockSize;
00057     int blockPeelingSize;
00058     int isPowerOfTwo;
00059     int smallestPowerOfTwo;
00060     int slowReweighing;
00061     int multiplyBlockSize;
00062     long flags;
00063     
00064     KernelResource* copy();
00065 };
00066 
00067 #endif /* KERNELRESOURCE_H_ */