CAMLprim value spoc_cublasDgemm(value transa, value transb, value m, value n, value k, value alpha, value a, value lda, value b, value ldb, value beta, value c, value ldc, value dev){ CAMLparam5(transa, transb, m, n, k); CAMLxparam5(alpha, a, lda, b, ldb); CAMLxparam4(beta, c, ldc, dev); CAMLlocal3(dev_vec_array, dev_vec, gi); CUdeviceptr d_A; CUdeviceptr d_B; CUdeviceptr d_C; int id; gi = Field(dev, 0); id = Int_val(Field(gi, 7)); GET_VEC(a, d_A); GET_VEC(b, d_B); GET_VEC(c, d_C); //CUBLAS_GET_CONTEXT; CUBLAS_GET_CONTEXT; cublasDgemm (Int_val(transa), Int_val(transb), Int_val(m), Int_val(n), Int_val(k), (double)Double_val(alpha), (double*) d_A, Int_val(lda), (double*) d_B, Int_val(ldb), (double) Double_val(beta), (double *)d_C, Int_val(ldc)); CUDA_RESTORE_CONTEXT; CAMLreturn(Val_unit); }
value f_i9_caml(value i0, value i1, value i2, value i3, value i4, value i5, value i6, value i7, value i8) { CAMLparam5(i0,i1,i2,i3,i4); CAMLxparam4(i5,i6,i7,i8); int ii0 = Int_val(i0); int ii1 = Int_val(i1); int ii2 = Int_val(i2); int ii3 = Int_val(i3); int ii4 = Int_val(i4); int ii5 = Int_val(i5); int ii6 = Int_val(i6); int ii7 = Int_val(i7); int ii8 = Int_val(i8); CAMLreturn(Val_int(f_i9(ii0,ii1,ii2,ii3,ii4,ii5,ii6,ii7,ii8))); }
value f_i14_caml(value i0, value i1, value i2, value i3, value i4, value i5, value i6, value i7, value i8, value i9, value i10, value i11, value i12, value i13) { CAMLparam5(i0,i1,i2,i3,i4); CAMLxparam5(i5,i6,i7,i8,i9); CAMLxparam4(i10,i11,i12,i13); int ii0 = Int_val(i0); int ii1 = Int_val(i1); int ii2 = Int_val(i2); int ii3 = Int_val(i3); int ii4 = Int_val(i4); int ii5 = Int_val(i5); int ii6 = Int_val(i6); int ii7 = Int_val(i7); int ii8 = Int_val(i8); int ii9 = Int_val(i9); int ii10= Int_val(i10); int ii11= Int_val(i11); int ii12= Int_val(i12); int ii13= Int_val(i13); CAMLreturn(Val_int(f_i14(ii0,ii1,ii2,ii3,ii4,ii5,ii6,ii7,ii8,ii9,ii10,ii11,ii12,ii13))); }
t_value ml_glteximage3dwithpixels_native ( value _target_3d, value level, value _internal_format, value width, value height, value depth, value _pixel_data_format, value _pixel_data_type, value pixels ) { CAMLparam5 (_target_3d, level, _internal_format, width, height); CAMLxparam4 (depth, _pixel_data_format, _pixel_data_type, pixels); GLenum pixel_data_format = conv_pixel_data_format_table[Int_val(_pixel_data_format)]; GLenum pixel_data_type = conv_pixel_data_type_table[Int_val(_pixel_data_type)]; GLenum target_3d = conv_target_3d_table[Int_val(_target_3d)]; GLint internal_format = conv_internal_format_table[Int_val(_internal_format)]; glTexImage3D( target_3d, Int_val(level), internal_format, Int_val(width), Int_val(height), Int_val(depth), 0, pixel_data_format, pixel_data_type, (const GLvoid *) Data_bigarray_val(pixels) ); CAMLreturn (Val_unit); }
value powell_3D_align (value sa, value sb, value sc, value ra, value rb, \ value rc, value mm, value go, value ge) { CAMLparam5(sa, sb, sc, mm, go); CAMLxparam4(ge, ra, rb, rc); struct seq *csa, *csb, *csc; struct seq *cra, *crb, *crc; misCost = Int_val(mm); startInsert = Int_val(go); continueInsert = Int_val(ge); startDelete = startInsert; continueDelete = continueInsert; Seq_custom_val(csa,sa); Seq_custom_val(csb,sb); Seq_custom_val(csc,sc); Seq_custom_val(cra,ra); Seq_custom_val(crb,rb); Seq_custom_val(crc,rc); assert(misCost != 0 && startInsert>=0 && continueInsert>0); copySequence (csa, Astr); copySequence (csb, Bstr); copySequence (csc, Cstr); Alen=strlen(Astr); Blen=strlen(Bstr); Clen=strlen(Cstr); setup(); CAMLreturn(Val_int(doUkk(cra, crb, crc))); }