extern "C" void cuda_fft(float *d_data, int Lx, int Ny, void *stream) { cufftHandle plan; cufftPlan1d(&plan, Lx, CUFFT_C2C, Ny); cufftSetStream(plan, (cudaStream_t)stream); cufftExecC2C(plan, (cufftComplex*)d_data, (cufftComplex*)d_data,CUFFT_FORWARD); cufftDestroy(plan); }
extern "C" void cuda_fft(double *d_data, int Lx, int Ny, void *stream) { cufftHandle plan; cufftPlan1d(&plan, Lx, CUFFT_Z2Z, Ny); cufftSetStream(plan, (cudaStream_t)stream); cufftExecZ2Z(plan, (cufftDoubleComplex*)d_data, (cufftDoubleComplex*)d_data,CUFFT_FORWARD); cufftDestroy(plan); }
void fft3dGPU(T1* d_data, int nx, int ny, int nz, void* stream) { cufftHandle plan; cufftSetCompatibilityMode(plan, CUFFT_COMPATIBILITY_FFTW_ALL); if (cufftPlan3d(&plan, nz, ny, nx, CUFFT_C2C)!=CUFFT_SUCCESS) { fprintf(stderr, "CUFFT error: Plan creation failed"); } cufftSetStream(plan, (cudaStream_t) stream); cufftExecC2C(plan, (cufftComplex*) d_data, (cufftComplex*) d_data, CUFFT_FORWARD); cufftDestroy(plan); }
void fft3dGPU(T1* d_data, int nx, int ny, int nz, void* stream) { //printf("Running 3d forward xform \n"); cufftHandle plan; cufftSetCompatibilityMode(plan, CUFFT_COMPATIBILITY_FFTW_ALL); if (cufftPlan3d(&plan, nz, ny, nx, CUFFT_Z2Z)!=CUFFT_SUCCESS) { printf("CUFFT error: Plan creation failed\n"); } //printf("Built plan \n"); cufftSetStream(plan, (cudaStream_t) stream); if (cufftExecZ2Z(plan, (cufftDoubleComplex*) d_data, (cufftDoubleComplex*) d_data, CUFFT_FORWARD)!=CUFFT_SUCCESS) { printf("CUFFT error: Plan execution failed\n"); }; cufftDestroy(plan); }
/* * Class: jcuda_jcufft_JCufft * Method: cufftSetStreamNative * Signature: (Ljcuda/jcufft/cufftHandle;Ljcuda/runtime/cudaStream_t;)I */ JNIEXPORT jint JNICALL Java_jcuda_jcufft_JCufft_cufftSetStreamNative (JNIEnv *env, jclass cla, jobject handle, jobject stream) { if (handle == NULL) { ThrowByName(env, "java/lang/NullPointerException", "Parameter 'handle' is null for cufftSetStream"); return JCUFFT_INTERNAL_ERROR; } if (stream == NULL) { ThrowByName(env, "java/lang/NullPointerException", "Parameter 'stream' is null for cufftSetStream"); return JCUFFT_INTERNAL_ERROR; } Logger::log(LOG_TRACE, "Executing cufftSetStream\n"); cufftHandle nativePlan = env->GetIntField(handle, cufftHandle_plan); cudaStream_t nativeStream = NULL; nativeStream = (cudaStream_t)getNativePointerValue(env, stream); cufftResult result = cufftSetStream(nativePlan, nativeStream); return result; }
cufftResult WINAPI wine_cufftSetStream( cufftHandle plan, cudaStream_t stream ){ WINE_TRACE("\n"); return cufftSetStream( plan, stream ); }