TransferFunction::~TransferFunction() { if(compositeTex) CudaSafeCall(cudaDestroyTextureObject(compositeTex)); CudaSafeCall(cudaFreeArray(array)); }
void TransferFunction::onColorTFChanged() { //std::cout<<"Color changed"<<std::endl; if(compositeTex) { CudaSafeCall(cudaDestroyTextureObject(compositeTex)); compositeTex = 0; } colorTF->GetTable(0.0, 1.0, TABLE_SIZE, colorTable); size_t j = 0, k = 0; for(size_t i = 0; i < TABLE_SIZE; ++i) { compositeTable[j++] = colorTable[k++]; compositeTable[j++] = colorTable[k++]; compositeTable[j++] = colorTable[k++]; j++; } //CompositeTable(); CudaSafeCall(cudaMemcpyToArray(array, 0, 0, compositeTable, sizeof(float) * TABLE_SIZE * 4, cudaMemcpyHostToDevice)); CudaSafeCall(cudaCreateTextureObject(&compositeTex, &resourceDesc, &texDesc, NULL)); Changed(); }
void SingleParticle2dx::Methods::CUDAProjectionMethod::prepareForProjections(SingleParticle2dx::DataStructures::ParticleContainer& cont) { cudaSetDevice(getMyGPU()); cudaStreamCreate(&m_stream); cudaChannelFormatDesc channelDesc = cudaCreateChannelDesc(32, 0, 0, 0, cudaChannelFormatKindFloat); cudaExtent VS = make_cudaExtent(m_size, m_size, m_size); if( m_alloc_done == false ) { cudaMalloc3DArray(&m_cuArray, &channelDesc, VS); } SingleParticle2dx::real_array3d_type real_data( boost::extents[m_size][m_size][m_size] ); m_context->getRealSpaceData(real_data); unsigned int size = m_size*m_size*m_size*sizeof(float); if( m_alloc_done == false ) { res_data_h = (float*)malloc(m_size*m_size*sizeof(float)); cudaMalloc((void**)&res_data_d, m_size*m_size*sizeof(float)); m_alloc_done = true; } cudaMemcpy3DParms copyParams = {0}; copyParams.srcPtr = make_cudaPitchedPtr((void*)real_data.origin(), VS.width*sizeof(float), VS.width, VS.height); copyParams.dstArray = m_cuArray; copyParams.extent = VS; copyParams.kind = cudaMemcpyHostToDevice; // cudaMemcpy3D(©Params); cudaMemcpy3DAsync(©Params, m_stream); struct cudaResourceDesc resDesc; memset(&resDesc, 0, sizeof(resDesc)); resDesc.resType = cudaResourceTypeArray; resDesc.res.array.array = m_cuArray; struct cudaTextureDesc texDesc; memset(&texDesc, 0, sizeof(texDesc)); texDesc.addressMode[0] = cudaAddressModeClamp; texDesc.addressMode[1] = cudaAddressModeClamp; texDesc.addressMode[2] = cudaAddressModeClamp; texDesc.filterMode = cudaFilterModeLinear; texDesc.readMode = cudaReadModeElementType; texDesc.normalizedCoords = 0; if(m_alloc_done == true) { cudaDestroyTextureObject(m_texObj); } m_texObj = 0; cudaCreateTextureObject(&m_texObj, &resDesc, &texDesc, NULL); }
void cudaCloverField::destroyTexObject() { cudaDestroyTextureObject(evenTex); cudaDestroyTextureObject(oddTex); cudaDestroyTextureObject(evenInvTex); cudaDestroyTextureObject(oddInvTex); if (precision == QUDA_HALF_PRECISION) { cudaDestroyTextureObject(evenNormTex); cudaDestroyTextureObject(evenNormTex); cudaDestroyTextureObject(evenInvNormTex); cudaDestroyTextureObject(evenInvNormTex); } checkCudaError(); }
SingleParticle2dx::Methods::CUDAProjectionMethod::~CUDAProjectionMethod () { cudaDestroyTextureObject(m_texObj); cudaFreeArray(m_cuArray); cudaStreamDestroy(m_stream); delete[] m_matrix; delete m_t; free(res_data_h); cudaFree(res_data_d); }
__host__ ~Texture() { if (cc30) { // Use the texture object cudaDestroyTextureObject(this->texObj); } else { // Use the texture reference CvCudevTextureRef<T>::unbind(); } }
void cudaCloverField::destroyTexObject() { if (order == QUDA_FLOAT2_CLOVER_ORDER || order == QUDA_FLOAT4_CLOVER_ORDER) { cudaDestroyTextureObject(evenTex); cudaDestroyTextureObject(oddTex); cudaDestroyTextureObject(evenInvTex); cudaDestroyTextureObject(oddInvTex); if (precision == QUDA_HALF_PRECISION) { cudaDestroyTextureObject(evenNormTex); cudaDestroyTextureObject(oddNormTex); cudaDestroyTextureObject(evenInvNormTex); cudaDestroyTextureObject(oddInvNormTex); } checkCudaError(); } }
__host__ ~Texture() { cudaDestroyTextureObject(this->texObj); }
cuda_texture::~cuda_texture() { if (tex != 0) cudaDestroyTextureObject(tex); }
void deallocate(){ cudaDestroyTextureObject(texObj); cudaFreeArray(cuArray); }
Texture::~Texture() { if (_texture) { cudaDestroyTextureObject(_texture); } }
__host__ ~Texture() { // Use the texture object cudaDestroyTextureObject(this->texObj); }