public static string Init(int[] inputs, uint span, uint blockSize) { _span = span; _block_size = blockSize; _area = _span * _span; _blocks_per_span = span / blockSize; _blockCount = _blocks_per_span * _blocks_per_span; d_indexRands = new IntPtr(); d_grid = new IntPtr(); _cudaArray = new CudaArray(); _gridProcs = new GridProcs(); _randoProcs = new RandoProcs(); var strRet = _cudaArray.ResetDevice(); strRet = strRet + _randoProcs.MakeGenerator32(SEED); strRet = strRet + _cudaArray.MallocIntsOnDevice(ref d_grid, _area); strRet = strRet + _cudaArray.MallocIntsOnDevice(ref d_energy, _area); strRet = strRet + _cudaArray.MallocIntsOnDevice(ref d_energyBlocks, _area / 1024); strRet = strRet + _cudaArray.CopyIntsToDevice(inputs, d_grid, _area); strRet = strRet + _cudaArray.MallocIntsOnDevice(ref d_indexRands, _blockCount); strRet = strRet + _cudaArray.MallocFloatsOnDevice(ref d_tempRands, _blockCount); strRet = strRet + _gridProcs.Runk_Energy4(d_energy, d_grid, _span); strRet = strRet + _cudaArray.MallocFloatsOnDevice(ref d_betas, 5); return(strRet); }
public static string Init(float[] temp_inputs, int[] flip_inputs, uint span, uint blockSize, int seed) { _span = span; _block_size = blockSize; _area = _span * _span; _blocks_per_span = span / blockSize; _blockCount = _blocks_per_span * _blocks_per_span; d_flipData = new IntPtr(); d_tempData = new IntPtr(); d_flipRands = new IntPtr(); d_indexRands = new IntPtr(); d_threshes = new IntPtr(); _cudaArray = new CudaArray(); _gridProcs = new GridProcs(); _randoProcs = new RandoProcs(); var strRet = _cudaArray.ResetDevice(); strRet = strRet + _randoProcs.MakeGenerator32(seed); strRet = strRet + _cudaArray.MallocFloatsOnDevice(ref d_tempData, _area); strRet = strRet + _cudaArray.MallocFloatsOnDevice(ref d_heatBlocks, _area / 1024); strRet = strRet + _cudaArray.MallocIntsOnDevice(ref d_flipData, _area); strRet = strRet + _cudaArray.MallocIntsOnDevice(ref d_indexRands, _blockCount); strRet = strRet + _cudaArray.MallocIntsOnDevice(ref d_flipRands, _blockCount); strRet = strRet + _cudaArray.MallocFloatsOnDevice(ref d_threshes, _allTempSteps); strRet = strRet + _cudaArray.CopyIntsToDevice(flip_inputs, d_flipData, _area); strRet = strRet + _cudaArray.CopyFloatsToDevice(temp_inputs, d_tempData, _area); var res9 = new int[_area]; strRet = strRet + _cudaArray.CopyIntsFromDevice(res9, d_flipData, _area); return(strRet); }